commit: 2c91f07c4a459efb6a8fbc11ec2525cc3020b96f
Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 20 15:33:44 2019 +0000
Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sun Jul 21 15:38:56 2019 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=2c91f07c
genkernel: Unset any already set non-empty variables named like a genkernel
option
This will ensure that we will always use genkernel's default value
like expected if option isn't set in genkernel config file or on
command-line.
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
genkernel | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/genkernel b/genkernel
index 6bc477b..ccd0820 100755
--- a/genkernel
+++ b/genkernel
@@ -24,15 +24,40 @@ do
[[ "${arg}" == --config=* ]] && CMD_GK_CONFIG=${arg#--config=}
done
-# Pull in our configuration
+# Pull in our configuration to get GK_SHARE only...
_GENKERNEL_CONF=${CMD_GK_CONFIG:-/etc/genkernel.conf}
-source "${_GENKERNEL_CONF}" || small_die "Could not read ${_GENKERNEL_CONF}"
+GK_SHARE=$(source "${_GENKERNEL_CONF}" &>/dev/null && echo ${GK_SHARE})
if [ -z "${GK_SHARE}" ]
then
small_die "GK_SHARE is not set. Please check used genkernel config file
at '${_GENKERNEL_CONF}'!"
fi
+# Make sure that we do not clash with the environment
+GK_DETERMINEARGS_FILE="${GK_SHARE}/gen_determineargs.sh"
+GK_SETTINGS=( $(awk '/[^#]set_config_with_override/ { print $3 }'
"${GK_DETERMINEARGS_FILE}" 2>/dev/null) )
+if [ ${#GK_SETTINGS[@]} -gt 0 ]
+then
+ for GK_SETTING in "${GK_SETTINGS[@]}"
+ do
+ for var_to_unset in ${GK_SETTING} CMD_${GK_SETTING}
+ do
+ if [ -n "${!var_to_unset}" ]
+ then
+ echo "WARNING: Will unset existing variable
'${var_to_unset}' to avoid clashing with genkernel config ..." >&2
+ unset ${var_to_unset} || small_die "Failed to
unset existing variable '${var_to_unset}'!"
+ fi
+ done
+ done
+
+ unset GK_DETERMINEARGS_FILE GK_SETTINGS GK_SETTING var_to_unset
+else
+ small_die "Failed to extract genkernel options from
'${GK_DETERMINEARGS_FILE}'!"
+fi
+
+# Now we can source our configuration...
+source "${_GENKERNEL_CONF}" || small_die "Could not read ${_GENKERNEL_CONF}"
+
# set default LOGLEVEL if uninitialized
LOGLEVEL=${LOGLEVEL:-1}