commit: 547207d7db8c6ab5418cb09b6da3afbed0b6e146
Author: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Thu Nov 21 00:00:45 2019 +0000
Commit: Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sun Nov 24 19:59:16 2019 +0000
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=547207d7
gen_compile.sh: determine_busybox_config_file(): Move --busybox-config
validation to determine_real_args()
This will allow us to fail early.
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>
gen_compile.sh | 83 ++++++++++++++++++++--------------------------------
gen_determineargs.sh | 19 ++++++++++++
2 files changed, 50 insertions(+), 52 deletions(-)
diff --git a/gen_compile.sh b/gen_compile.sh
index c782f9b..9c6b6f0 100755
--- a/gen_compile.sh
+++ b/gen_compile.sh
@@ -342,68 +342,47 @@ compile_kernel() {
}
determine_busybox_config_file() {
- print_info 2 "$(get_indent 2)busybox: >> Checking for suitable busybox
configuration ..."
-
- if [ -n "${CMD_BUSYBOX_CONFIG}" ]
+ if [ -n "${BUSYBOX_CONFIG}" ]
then
- BUSYBOX_CONFIG=$(expand_file "${CMD_BUSYBOX_CONFIG}")
- if [ -z "${BUSYBOX_CONFIG}" ]
- then
- error_msg="No busybox .config: Cannot use
'${CMD_BUSYBOX_CONFIG}' value. "
- error_msg+="Check --busybox-config value or unset "
- error_msg+="to use default busybox config provided by
genkernel."
- gen_die "${error_msg}"
- fi
- else
- local -a bbconfig_candidates=()
- local busybox_version=$(get_gkpkg_version busybox)
+ print_info 2 "$(get_indent 2)busybox: >> Using user-specified
busybox configuration from '${BUSYBOX_CONFIG}' ..."
+ return
+ fi
- if isTrue "${NETBOOT}"
- then
- bbconfig_candidates+=( "$(arch_replace
"${GK_SHARE}/arch/%%ARCH%%/netboot-busy-config-${busybox_version}")" )
- bbconfig_candidates+=( "$(arch_replace
"${GK_SHARE}/arch/%%ARCH%%/netboot-busy-config")" )
- bbconfig_candidates+=(
"${GK_SHARE}/netboot/busy-config-${busybox_version}" )
- bbconfig_candidates+=(
"${GK_SHARE}/netboot/busy-config" )
- fi
- bbconfig_candidates+=( "$(arch_replace
"${GK_SHARE}/arch/%%ARCH%%/busy-config-${busybox_version}")" )
- bbconfig_candidates+=( "$(arch_replace
"${GK_SHARE}/arch/%%ARCH%%/busy-config")" )
- bbconfig_candidates+=(
"${GK_SHARE}/defaults/busy-config-${busybox_version}" )
- bbconfig_candidates+=( "${GK_SHARE}/defaults/busy-config" )
+ print_info 2 "$(get_indent 2)busybox: >> Checking for suitable busybox
configuration ..."
- local f
- for f in "${bbconfig_candidates[@]}"
- do
- [ -z "${f}" ] && continue
+ local -a bbconfig_candidates=()
+ local busybox_version=$(get_gkpkg_version busybox)
- if [ -f "${f}" ]
- then
- BUSYBOX_CONFIG="$f"
- break
- else
- print_info 3 "$(get_indent 3)- '${f}' not
found; Skipping ..."
- fi
- done
-
- if [ -z "${BUSYBOX_CONFIG}" ]
- then
- gen_die 'No busybox .config specified, or file not
found!'
- fi
+ if isTrue "${NETBOOT}"
+ then
+ bbconfig_candidates+=( "$(arch_replace
"${GK_SHARE}/arch/%%ARCH%%/netboot-busy-config-${busybox_version}")" )
+ bbconfig_candidates+=( "$(arch_replace
"${GK_SHARE}/arch/%%ARCH%%/netboot-busy-config")" )
+ bbconfig_candidates+=(
"${GK_SHARE}/netboot/busy-config-${busybox_version}" )
+ bbconfig_candidates+=( "${GK_SHARE}/netboot/busy-config" )
fi
+ bbconfig_candidates+=( "$(arch_replace
"${GK_SHARE}/arch/%%ARCH%%/busy-config-${busybox_version}")" )
+ bbconfig_candidates+=( "$(arch_replace
"${GK_SHARE}/arch/%%ARCH%%/busy-config")" )
+ bbconfig_candidates+=(
"${GK_SHARE}/defaults/busy-config-${busybox_version}" )
+ bbconfig_candidates+=( "${GK_SHARE}/defaults/busy-config" )
- BUSYBOX_CONFIG="$(readlink -f "${BUSYBOX_CONFIG}")"
+ local f
+ for f in "${bbconfig_candidates[@]}"
+ do
+ [ -z "${f}" ] && continue
- # Validate the symlink result if any
- if [ -z "${BUSYBOX_CONFIG}" -o ! -f "${BUSYBOX_CONFIG}" ]
- then
- if [ -n "${CMD_BUSYBOX_CONFIG}" ]
+ if [ -f "${f}" ]
then
- error_msg="No busybox .config: File
'${CMD_BUSYBOX_CONFIG}' not found! "
- error_msg+="Check --busybox-config value or unset "
- error_msg+="to use default busybox config provided by
genkernel."
- gen_die "${error_msg}"
+ BUSYBOX_CONFIG="$f"
+ break
else
- gen_die "No busybox .config: symlinked file
'${BUSYBOX_CONFIG}' not found!"
+ print_info 3 "$(get_indent 3)- '${f}' not found;
Skipping ..."
fi
+ done
+
+ if [ -z "${BUSYBOX_CONFIG}" ]
+ then
+ # Sanity check
+ gen_die 'No busybox .config specified or file not found!'
fi
}
diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index 5bbe33f..2b68a8a 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -923,6 +923,25 @@ determine_real_args() {
fi
done
unset FEATURE_REQUIRING_BUSYBOX
FEATURES_REQUIRING_BUSYBOX
+ elif [ -n "${CMD_BUSYBOX_CONFIG}" ]
+ then
+ local BUSYBOX_CONFIG=$(expand_file
"${CMD_BUSYBOX_CONFIG}")
+ if [ -z "${BUSYBOX_CONFIG}" ]
+ then
+ gen_die "--busybox-config value
'${CMD_BUSYBOX_CONFIG}' failed to expand!"
+ elif [ ! -e "${BUSYBOX_CONFIG}" ]
+ then
+ gen_die "--busybox-config file
'${BUSYBOX_CONFIG}' does not exist!"
+ fi
+
+ if ! grep -qE '^CONFIG_.*=' "${BUSYBOX_CONFIG}"
&>/dev/null
+ then
+ gen_die "--busybox-config file
'${BUSYBOX_CONFIG}' does not look like a valid busybox config: File does not
contain any CONFIG_* value!"
+ elif ! grep -qE '^CONFIG_STATIC=y$' "${BUSYBOX_CONFIG}"
&>/dev/null
+ then
+ # We cannot check all required options but
check at least for CONFIG_STATIC...
+ gen_die "--busybox-config file
'${BUSYBOX_CONFIG}' does not contain CONFIG_STATIC=y. This busybox config will
not work with genkernel!"
+ fi
fi
DU_COMMAND="$(which du 2>/dev/null)"