mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

59 lines
1.3 KiB

# $conffiles is a list of patters of the form
# ^[XO-] <pattern> [<value>]
# X means enable, O disable, and - removes it
# pattern can use '*' as a wildcard for [^ #]
# optionaly can set a value different that y
apply_conffiles() {
local f x;
rm -f /tmp/$$.sed
for f in $conffiles; do if [ -f "$f" ]; then
while read a c v; do
x="${c//\\*/[^ #]*}"
x="^\(# \)\?\($x\)[= ].*\$"
# value
if [ -z "$v" ]; then
v='y'
fi
case "$a" in
X) echo "apply_conffiles: rule $c=$v."
echo "s,$x,\2=$v,g" >> /tmp/$$.sed
;;
O) echo "apply_conffiles: rule unset $c."
echo "s,$x,# \2 is not set,g" >> /tmp/$$.sed
;;
-) echo "apply_conffiles: rule remove $c."
echo "s,$x,,g" >> /tmp/$$.sed
;;
*)
echo "apply_conffiles: bad rule $a $c $v"
;;
esac
done < <( cat $f );
fi ; done
sed -f /tmp/$$.sed .config > $1
rm /tmp/$$.sed
}
# get default config, and filter considering <n>
# levels, because new options can appear and other disappear
auto_config() {
local j=1 n="${1:-1}"
# defconfig
eval "$MAKE defconfig $makeopt"
cp -v .config .config.$j
j=2 ; for (( i=1 ; i<n ; i++, j++ )) {
apply_conffiles .config.$j
cp -v .config.$j .config
eval "$MAKE oldconfig $makeopt"
(( j++ )) ; cp -v .config .config.$j
}
# second round
apply_conffiles .config.$j
cp -v .config.$j .config
}