summaryrefslogtreecommitdiff
path: root/sys-kernel/linux/files/config_prepare.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sys-kernel/linux/files/config_prepare.sh')
-rwxr-xr-xsys-kernel/linux/files/config_prepare.sh44
1 files changed, 44 insertions, 0 deletions
diff --git a/sys-kernel/linux/files/config_prepare.sh b/sys-kernel/linux/files/config_prepare.sh
new file mode 100755
index 0000000..0d3409f
--- /dev/null
+++ b/sys-kernel/linux/files/config_prepare.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -e
+
+B="$(dirname $0)"
+
+# First just deploy arch linux configuration (ah yes I stole it)
+cp "$B"/arch.config .config
+
+# And now apply changes from overlay.config
+while read L; do
+ echo "$L" | grep -qE "^[[:space:]]*$" && continue # ignore empty lines
+ echo "$L" | grep -qE "#.*" && continue # Ignore comments
+ # Remove lines with changed settings
+ OPTION="$(echo "$L" | grep -oE '^CONFIG_.*=')"
+ sed -i "#^$OPTION#d" .config
+ # Put config
+ echo "$L" >> .config
+done < "$B/overlay.config"
+
+# As next step run olddefconfig (note: stderr contains some output about overrided
+# options so I am ignoring it)
+make olddefconfig 2>/dev/null
+
+# Now let's check that configuration
+EC=0
+while read L; do
+ echo "$L" | grep -qE "^[[:space:]]*$" && continue # ignore empty lines
+ echo "$L" | grep -qE "#.*" && continue # Ignore comments
+ OPTION="$(echo "$L" | grep -oE '^CONFIG_.*=')"
+ VALUE="$(echo "$L" | grep -oE '=.*$')"
+ if [ "$VALUE" = "=n" ]; then
+ if grep -qE "^$OPTION=y" .config; then
+ EC=1
+ echo -e "\e[1;31mY:\e[0m$L"
+ fi
+ else
+ if ! grep -qE "^$L$" .config; then
+ EC=1
+ echo -e "\e[1;31mN:\e[0m$L"
+ fi
+ fi
+done < "$B/overlay.config"
+
+exit $EC