[PATCH 2/2] configs: Update config generation script to use configs/fedora

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.
---
 configs/build_configs.sh  | 62 ++++++++++++++++++++++++-----------------------
 configs/config_generation |  5 ++++
 2 files changed, 37 insertions(+), 30 deletions(-)

diff --git a/configs/build_configs.sh b/configs/build_configs.sh
index f345e2af..15ab6b38 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 b88a5ea9..e8614c43 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
-- 
2.14.3
_______________________________________________
kernel mailing list -- kernel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to kernel-leave@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [USB]     [Asterisk PBX]

  Powered by Linux