aboutsummaryrefslogtreecommitdiffstats
path: root/buildconfigs/create_config.sh
diff options
context:
space:
mode:
Diffstat (limited to 'buildconfigs/create_config.sh')
-rw-r--r--buildconfigs/create_config.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/buildconfigs/create_config.sh b/buildconfigs/create_config.sh
new file mode 100644
index 0000000000..7874f7e53c
--- /dev/null
+++ b/buildconfigs/create_config.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+set -e
+
+
+# Parse arguments
+#
+if [ $# -lt 1 -o $# -gt 4 ]; then
+ echo "Usage: $0 config-file EXTRAVERSION XEN_TARGET_ARCH XEN_SYSTYPE"
+ exit 1
+fi
+
+config_file=$1
+extraversion=$2
+target_arch=$3
+systype=$4
+
+
+# Start with initial config skeleton file, if any.
+# Derive from linux-defconfig_xen_x86_32 otherwise.
+#
+skeleton=buildconfigs/linux-defconfig_${extraversion}_${target_arch}${systype}
+[ -r $skeleton ] || skeleton=buildconfigs/linux-defconfig_xen_x86_32
+cp $skeleton $config_file
+
+
+# Update
+#
+filter_template="s/^#\{0,1\} *\(CONFIG[^= ]*\).*/\/^#\\\{0,1\\\} *\1[= ].*\/d/p"
+config_dirs="buildconfigs/conf.linux buildconfigs/conf.linux-${target_arch} buildconfigs/conf.linux-${extraversion} buildconfigs/conf.linux-${target_arch}-${extraversion}"
+
+for config_dir in $config_dirs
+do
+ if [ -d $config_dir ]; then
+ # processing is done in alphanumeric order
+ find $config_dir -type f | sort | while read update
+ do
+ # create the filter rules in a temp file
+ filter_rules=`mktemp -t xenupdateconf.XXXXXXXXXX`
+ sed -n "${filter_template}" < $update > $filter_rules
+
+ # filter the config file in place, removing any options that
+ # will be updated.
+ sed -f $filter_rules -i $config_file
+ cat $update >> $config_file
+
+ # clean up
+ rm -f $filter_rules
+ done
+ fi
+done