#!/bin/sh set -e B="$(dirname $0)" BASE=arch.config OVERLAY=overlay.config if [ "$1" = "virt" ]; then BASE= OVERLAY=virt.config fi ################################################################################# # First just deploy base configuration (provided or just kernel default) if [ -n "$BASE" ]; then cp "$B/$BASE" .config else make defconfig fi # We are done if no overlay is specified [ -n "$OVERLAY" ] || exit 0 # 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" # 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" exit $EC