diff --git a/build_configs.sh b/build_configs.sh deleted file mode 100755 index 140511f19..000000000 --- a/build_configs.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/bin/bash -# -# This script merges together the hierarchy of CONFIG_* files under generic -# and debug to form the necessary $PACKAGE_NAME--.config -# files for building RHEL kernels, based on the contents of a control file - -PACKAGE_NAME=kernel # defines the package name used - -set errexit -set nounset - -control_file="config_generation" - -function combine_config_layer() -{ - dir=$1 - file="config-$(echo $dir | sed -e 's|/|-|g')" - - if [ $(ls $dir/ | grep -c "^CONFIG_") -eq 0 ]; then - touch $file - return - fi - - cat $dir/CONFIG_* > $file -} - -function merge_configs() -{ - archvar=$1 - arch=$(echo "$archvar" | cut -f1 -d"-") - configs=$2 - name=$PACKAGE_NAME-$archvar.config - echo -n "Building $name ... " - touch config-merging config-merged - for config in $(echo $configs | sed -e 's/:/ /g') - do - perl merge.pl config-$config config-merging > config-merged - if [ ! $? -eq 0 ]; then - exit - fi - mv config-merged config-merging - done - if [ "x$arch" == "xaarch64" ]; then - echo "# arm64" > $name - elif [ "x$arch" == "xppc64" ]; then - echo "# powerpc" > $name - elif [ "x$arch" == "xppc64le" ]; then - echo "# powerpc" > $name - elif [ "x$arch" == "xs390x" ]; then - echo "# s390" > $name - elif [ "x$arch" == "xarmv7hl" ]; then - echo "# arm" > $name - elif [ "x$arch" == "xi686" ]; then - echo "# i386" > $name - else - echo "# $arch" > $name - fi - sort config-merging >> $name - rm -f config-merged config-merging - echo "done" -} - -glist=$(find baseconfig -type d) -dlist=$(find debugconfig -type d) - -for d in $glist $dlist -do - combine_config_layer $d -done - -while read line -do - if [ $(echo "$line" | grep -c "^#") -ne 0 ]; then - continue - elif [ $(echo "$line" | grep -c "^$") -ne 0 ]; then - continue - else - arch=$(echo "$line" | cut -f1 -d"=") - configs=$(echo "$line" | cut -f2 -d"=") - - if [ -n "$SUBARCH" -a "$SUBARCH" != "$arch" ]; then - continue - fi - - merge_configs $arch $configs - fi -done < $control_file - -rm -f config-* diff --git a/build_configs.sh b/build_configs.sh new file mode 120000 index 000000000..655abb2b0 --- /dev/null +++ b/build_configs.sh @@ -0,0 +1 @@ +configs/build_configs.sh \ No newline at end of file diff --git a/config_generation b/config_generation deleted file mode 100644 index 64ae444f4..000000000 --- a/config_generation +++ /dev/null @@ -1,36 +0,0 @@ -# config-variant=config:config:config -# kernel.config files are build on the fly based on this config, -# the first arg is arch and variant, the second is a hierarchy of -# config options, lowest priority to highest - -# x86_64 -x86_64=baseconfig:baseconfig-x86:baseconfig-x86-x86_64 -x86_64-debug=baseconfig:baseconfig-x86:baseconfig-x86-x86_64:debugconfig:debugconfig-x86:debugconfig-x86-x86_64 - -# i686 -i686=baseconfig:baseconfig-x86:baseconfig-x86-i686 -i686-debug=baseconfig:baseconfig-x86:baseconfig-x86-i686:debugconfig:debugconfig-x86 -i686-PAE=baseconfig:baseconfig-x86:baseconfig-x86-i686PAE -i686-PAEdebug=baseconfig:baseconfig-x86:baseconfig-x86-i686PAE:debugconfig:debugconfig-x86 - -# ppc64 -ppc64=baseconfig:baseconfig-powerpc:baseconfig-powerpc-powerpc64 -ppc64-debug=baseconfig:baseconfig-powerpc:baseconfig-powerpc-powerpc64:debugconfig - -# ppc64le -ppc64le=baseconfig:baseconfig-powerpc:baseconfig-powerpc-powerpc64le -ppc64le-debug=baseconfig:baseconfig-powerpc:baseconfig-powerpc-powerpc64le:debugconfig - -# s390x -s390x=baseconfig:baseconfig-s390x -s390x-debug=baseconfig:baseconfig-s390x:debugconfig - -# aarch64 -aarch64=baseconfig:baseconfig-arm:baseconfig-arm-arm64 -aarch64-debug=baseconfig:baseconfig-arm:baseconfig-arm-arm64:debugconfig:debugconfig-arm - -# arm -armv7hl=baseconfig:baseconfig-arm:baseconfig-arm-armv7:baseconfig-arm-armv7-armv7 -armv7hl-debug=baseconfig:baseconfig-arm:baseconfig-arm-armv7:baseconfig-arm-armv7-armv7:debugconfig:debugconfig-arm -armv7hl-lpae=baseconfig:baseconfig-arm:baseconfig-arm-armv7:baseconfig-arm-armv7-lpae -armv7hl-lpae-debug=baseconfig:baseconfig-arm:baseconfig-arm-armv7:baseconfig-arm-armv7-lpae:debugconfig:debugconfig-arm diff --git a/config_generation b/config_generation new file mode 120000 index 000000000..af7ab4c62 --- /dev/null +++ b/config_generation @@ -0,0 +1 @@ +configs/config_generation \ No newline at end of file diff --git a/configs/build_configs.sh b/configs/build_configs.sh new file mode 100755 index 000000000..140511f19 --- /dev/null +++ b/configs/build_configs.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# +# This script merges together the hierarchy of CONFIG_* files under generic +# and debug to form the necessary $PACKAGE_NAME--.config +# files for building RHEL kernels, based on the contents of a control file + +PACKAGE_NAME=kernel # defines the package name used + +set errexit +set nounset + +control_file="config_generation" + +function combine_config_layer() +{ + dir=$1 + file="config-$(echo $dir | sed -e 's|/|-|g')" + + if [ $(ls $dir/ | grep -c "^CONFIG_") -eq 0 ]; then + touch $file + return + fi + + cat $dir/CONFIG_* > $file +} + +function merge_configs() +{ + archvar=$1 + arch=$(echo "$archvar" | cut -f1 -d"-") + configs=$2 + name=$PACKAGE_NAME-$archvar.config + echo -n "Building $name ... " + touch config-merging config-merged + for config in $(echo $configs | sed -e 's/:/ /g') + do + perl merge.pl config-$config config-merging > config-merged + if [ ! $? -eq 0 ]; then + exit + fi + mv config-merged config-merging + done + if [ "x$arch" == "xaarch64" ]; then + echo "# arm64" > $name + elif [ "x$arch" == "xppc64" ]; then + echo "# powerpc" > $name + elif [ "x$arch" == "xppc64le" ]; then + echo "# powerpc" > $name + elif [ "x$arch" == "xs390x" ]; then + echo "# s390" > $name + elif [ "x$arch" == "xarmv7hl" ]; then + echo "# arm" > $name + elif [ "x$arch" == "xi686" ]; then + echo "# i386" > $name + else + echo "# $arch" > $name + fi + sort config-merging >> $name + rm -f config-merged config-merging + echo "done" +} + +glist=$(find baseconfig -type d) +dlist=$(find debugconfig -type d) + +for d in $glist $dlist +do + combine_config_layer $d +done + +while read line +do + if [ $(echo "$line" | grep -c "^#") -ne 0 ]; then + continue + elif [ $(echo "$line" | grep -c "^$") -ne 0 ]; then + continue + else + arch=$(echo "$line" | cut -f1 -d"=") + configs=$(echo "$line" | cut -f2 -d"=") + + if [ -n "$SUBARCH" -a "$SUBARCH" != "$arch" ]; then + continue + fi + + merge_configs $arch $configs + fi +done < $control_file + +rm -f config-* diff --git a/configs/config_generation b/configs/config_generation new file mode 100644 index 000000000..64ae444f4 --- /dev/null +++ b/configs/config_generation @@ -0,0 +1,36 @@ +# config-variant=config:config:config +# kernel.config files are build on the fly based on this config, +# the first arg is arch and variant, the second is a hierarchy of +# config options, lowest priority to highest + +# x86_64 +x86_64=baseconfig:baseconfig-x86:baseconfig-x86-x86_64 +x86_64-debug=baseconfig:baseconfig-x86:baseconfig-x86-x86_64:debugconfig:debugconfig-x86:debugconfig-x86-x86_64 + +# i686 +i686=baseconfig:baseconfig-x86:baseconfig-x86-i686 +i686-debug=baseconfig:baseconfig-x86:baseconfig-x86-i686:debugconfig:debugconfig-x86 +i686-PAE=baseconfig:baseconfig-x86:baseconfig-x86-i686PAE +i686-PAEdebug=baseconfig:baseconfig-x86:baseconfig-x86-i686PAE:debugconfig:debugconfig-x86 + +# ppc64 +ppc64=baseconfig:baseconfig-powerpc:baseconfig-powerpc-powerpc64 +ppc64-debug=baseconfig:baseconfig-powerpc:baseconfig-powerpc-powerpc64:debugconfig + +# ppc64le +ppc64le=baseconfig:baseconfig-powerpc:baseconfig-powerpc-powerpc64le +ppc64le-debug=baseconfig:baseconfig-powerpc:baseconfig-powerpc-powerpc64le:debugconfig + +# s390x +s390x=baseconfig:baseconfig-s390x +s390x-debug=baseconfig:baseconfig-s390x:debugconfig + +# aarch64 +aarch64=baseconfig:baseconfig-arm:baseconfig-arm-arm64 +aarch64-debug=baseconfig:baseconfig-arm:baseconfig-arm-arm64:debugconfig:debugconfig-arm + +# arm +armv7hl=baseconfig:baseconfig-arm:baseconfig-arm-armv7:baseconfig-arm-armv7-armv7 +armv7hl-debug=baseconfig:baseconfig-arm:baseconfig-arm-armv7:baseconfig-arm-armv7-armv7:debugconfig:debugconfig-arm +armv7hl-lpae=baseconfig:baseconfig-arm:baseconfig-arm-armv7:baseconfig-arm-armv7-lpae +armv7hl-lpae-debug=baseconfig:baseconfig-arm:baseconfig-arm-armv7:baseconfig-arm-armv7-lpae:debugconfig:debugconfig-arm diff --git a/merge.pl b/merge.pl deleted file mode 100755 index 8c318156a..000000000 --- a/merge.pl +++ /dev/null @@ -1,66 +0,0 @@ -#! /usr/bin/perl - -my @args=@ARGV; -my %configvalues; -my @configoptions; -my $configcounter = 0; - -# optionally print out the architecture as the first line of our output -my $arch = $args[2]; -if (defined $arch) { - print "# $arch\n"; -} - -# first, read the override file - -open (FILE,"$args[0]") || die "Could not open $args[0]"; -while () { - my $str = $_; - my $configname; - - if (/\# ([\w]+) is not set/) { - $configname = $1; - } elsif (/([\w]+)=/) { - $configname = $1; - } - - if (defined($configname) && !exists($configvalues{$configname})) { - $configvalues{$configname} = $str; - $configoptions[$configcounter] = $configname; - $configcounter ++; - } -}; - -# now, read and output the entire configfile, except for the overridden -# parts... for those the new value is printed. - -open (FILE2,"$args[1]") || die "Could not open $args[1]"; -while () { - my $configname; - - if (/\# ([\w]+) is not set/) { - $configname = $1; - } elsif (/([\w]+)=/) { - $configname = $1; - } - - if (defined($configname) && exists($configvalues{$configname})) { - print "$configvalues{$configname}"; - delete($configvalues{$configname}); - } else { - print "$_"; - } -} - -# now print the new values from the overridden configfile -my $counter = 0; - -while ($counter < $configcounter) { - my $configname = $configoptions[$counter]; - if (exists($configvalues{$configname})) { - print "$configvalues{$configname}"; - } - $counter++; -} - -1; diff --git a/merge.pl b/merge.pl new file mode 120000 index 000000000..b77225dd2 --- /dev/null +++ b/merge.pl @@ -0,0 +1 @@ +configs/merge.pl \ No newline at end of file