diff options
author | Don Zickus <dzickus@redhat.com> | 2017-12-13 16:19:06 -0500 |
---|---|---|
committer | Laura Abbott <labbott@redhat.com> | 2018-01-05 14:40:19 -0800 |
commit | 62496f789fcb014cda6fdc84a05e5b1e5c242861 (patch) | |
tree | e6deafda9d077a33c23275628b344d6bb5d7c183 /configs | |
parent | 4d6d8cc5c16bc5edff4ee564b8e9d4ace9c28469 (diff) | |
download | kernel-62496f789fcb014cda6fdc84a05e5b1e5c242861.tar.gz kernel-62496f789fcb014cda6fdc84a05e5b1e5c242861.tar.xz kernel-62496f789fcb014cda6fdc84a05e5b1e5c242861.zip |
configs: Update config generation script to use configs/fedora
The previous patch moved the configs/base-{generic,debug} to configs/fedora.
Now we update the scripts to reflect that change. Changing the scripts
was straightforward. Handling overrides that didn't use generic names
was a little trickier.
To handle random override names (well rhel), I added some extra logic
in the config_generation script called "ORDER". This tells the scripts
which configs to lay down first and which one overrides it.
Through some testing, I realized I could simplify things and just create
an outer 'order' loop. This removed some duplicated code.
The other change is the 'skip_if_missing' flag. The overrides directory
will not mimic the baseline directory layout 100%. Ensure the baseline
config files are all there, but allow the overrides to have missing files.
Tested on my Fedora and my RHEL tree with success.
Diffstat (limited to 'configs')
-rwxr-xr-x | configs/build_configs.sh | 62 | ||||
-rw-r--r-- | configs/config_generation | 5 |
2 files changed, 37 insertions, 30 deletions
diff --git a/configs/build_configs.sh b/configs/build_configs.sh index f345e2af7..15ab6b380 100755 --- a/configs/build_configs.sh +++ b/configs/build_configs.sh @@ -6,7 +6,7 @@ PACKAGE_NAME="${1:-kernel}" # defines the package name used KVERREL="${2:-}" -SUBARCH="${3:-}" # defines a specific arch for use with rh-configs-arch-prep target +SUBARCH="${3:-}" # defines a specific arch SCRIPT="$(readlink -f $0)" OUTPUT_DIR="$PWD" SCRIPT_DIR="$(dirname $SCRIPT)" @@ -49,29 +49,31 @@ function merge_configs() archvar=$1 arch=$(echo "$archvar" | cut -f1 -d"-") configs=$2 + order=$3 name=$OUTPUT_DIR/$PACKAGE_NAME-$archvar.config echo -n "Building $name ... " touch config-merging config-merged - # apply base first - for config in $(echo $configs | sed -e 's/:/ /g') + # apply based on order + skip_if_missing="" + for o in $order do - perl merge.pl config-base-$config config-merging > config-merged - if [ ! $? -eq 0 ]; then - die "Failed to merge base" - fi - mv config-merged config-merging - done - for config in $(echo $configs | sed -e 's/:/ /g') - do - # not all override files exist - test -e config-$config || continue - - perl merge.pl config-$config config-merging > config-merged - if [ ! $? -eq 0 ]; then - die "Failed to merge configs" - fi - mv config-merged config-merging + for config in $(echo $configs | sed -e 's/:/ /g') + do + cfile="config-$o-$config" + + test -n "$skip_if_missing" && test ! -e $cfile && continue + + perl merge.pl $cfile config-merging > config-merged + if [ ! $? -eq 0 ]; then + die "Failed to merge $cfile" + fi + mv config-merged config-merging + done + + # first configs in $order is baseline, all files should be + # there. second pass is overrides and can be missing. + skip_if_missing="1" done if [ "x$arch" == "xaarch64" ]; then echo "# arm64" > $name @@ -93,22 +95,22 @@ function merge_configs() echo "done" } -glist=$(find base-generic -type d) -dlist=$(find base-debug -type d) -gllist=$(test -d generic && find generic -type d) -dllist=$(test -d debug && find debug -type d) - -for d in $glist $dlist $gllist $dllist -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 + elif [ $(echo "$line" | grep -c "^ORDER") -ne 0 ]; then + order=$(echo "$line" | cut -f2 -d"=") + for o in $order + do + glist=$(find $o -type d) + for d in $glist + do + combine_config_layer $d + done + done else arch=$(echo "$line" | cut -f1 -d"=") configs=$(echo "$line" | cut -f2 -d"=") @@ -117,7 +119,7 @@ do continue fi - merge_configs $arch $configs + merge_configs $arch $configs "$order" fi done < $control_file diff --git a/configs/config_generation b/configs/config_generation index b88a5ea94..e8614c43f 100644 --- a/configs/config_generation +++ b/configs/config_generation @@ -3,6 +3,11 @@ # the first arg is arch and variant, the second is a hierarchy of # config options, lowest priority to highest +# tells the build_configs.sh which order to build the configs. +# this is useful when providing a separate overrides directory. +# do not use quotes and space separate the directories. +ORDER=fedora + # x86_64 x86_64=generic:generic-x86:generic-x86-x86_64 x86_64-debug=generic:generic-x86:generic-x86-x86_64:debug:debug-x86:debug-x86-x86_64 |