commit:     cd8fcd4fa6ec236a71d5dec7469db3e1072ef0a3
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 29 13:43:14 2019 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Mon Jul 29 20:02:20 2019 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=cd8fcd4f

gen_compile.sh: Refactor populate_binpkg() function

- Use nameref instead of manually created references

- Fix quoting of BINPKGs

- Pass delimiter-separated BINPKG deps value to gkbuild()

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 gen_compile.sh            | 20 ++++++++++++++------
 worker_modules/gkbuild.sh |  3 +--
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/gen_compile.sh b/gen_compile.sh
index dd2e7d7..0cf6114 100755
--- a/gen_compile.sh
+++ b/gen_compile.sh
@@ -437,8 +437,7 @@ populate_binpkg() {
 
        local 
REQUIRED_BINPKGS_PARENT_VARNAME="CHECK_L${CHECK_LEVEL_PARENT}_REQUIRED_BINPKGS"
        local 
REQUIRED_BINPKGS_CURRENT_VARNAME="CHECK_L${CHECK_LEVEL_CURRENT}_REQUIRED_BINPKGS"
-       local 
REQUIRED_BINPKGS_CURRENT_VARNAME_SEPARATE_WORD="${REQUIRED_BINPKGS_CURRENT_VARNAME}[@]"
-       local 
REQUIRED_BINPKGS_CURRENT_VARNAME_SINGLE_WORD="${REQUIRED_BINPKGS_CURRENT_VARNAME}[*]"
+       local -n 
REQUIRED_BINPKGS_CURRENT_VARNAME_ref="${REQUIRED_BINPKGS_CURRENT_VARNAME}"
 
        # Make sure we start with an empty array just in case ...
        eval declare -ga ${REQUIRED_BINPKGS_CURRENT_VARNAME}=\(\)
@@ -523,7 +522,7 @@ populate_binpkg() {
        if [[ -f "${BINPKG}" ]]
        then
                local required_binpkg=
-               for required_binpkg in 
"${!REQUIRED_BINPKGS_CURRENT_VARNAME_SEPARATE_WORD}"
+               for required_binpkg in 
"${REQUIRED_BINPKGS_CURRENT_VARNAME_ref[@]}"
                do
                        # Create shorter variable value so we do not clutter 
output
                        local required_binpkg_filename=$(basename 
"${required_binpkg}")
@@ -537,7 +536,7 @@ populate_binpkg() {
 
                        print_info 3 "${CHECK_LEVEL_PREFIX}Existing ${P} binpkg 
is newer than '${required_binpkg_filename}'; Skipping ..."
                done
-               unset required_binpkg 
REQUIRED_BINPKGS_CURRENT_VARNAME_SEPARATE_WORD required_binpkg_filename
+               unset required_binpkg required_binpkg_filename
        fi
 
        if [[ -f "${BINPKG}" ]]
@@ -562,13 +561,22 @@ populate_binpkg() {
        if [[ ! -f "${BINPKG}" ]]
        then
                print_info 3 "${CHECK_LEVEL_PREFIX}Binpkg '${BINPKG}' does NOT 
exist; Need to build ${P} ..."
+
+               local required_binpkgs=
+               local required_binpkg=
+               for required_binpkg in 
"${REQUIRED_BINPKGS_CURRENT_VARNAME_ref[@]}"
+               do
+                       required_binpkgs+="${required_binpkg};"
+               done
+               unset required_binpkg required_binpkg_filename
+
                gkbuild \
                        ${PN} \
                        ${PV} \
                        $(get_gkpkg_srcdir "${PN}") \
                        $(get_gkpkg_srctar "${PN}") \
                        "${BINPKG}" \
-                       "${!REQUIRED_BINPKGS_CURRENT_VARNAME_SINGLE_WORD}"
+                       "${required_binpkgs}"
        else
                print_info 3 "${CHECK_LEVEL_PREFIX}Can keep using existing ${P} 
binpkg from '${BINPKG}'!"
                [[ ${CHECK_LEVEL_CURRENT} -eq 0 ]] && print_info 2 
"$(get_indent 2)${PN}: >> Using ${P} binpkg ..."
@@ -581,7 +589,7 @@ populate_binpkg() {
                unset CHECK_L${CHECK_LEVEL_PARENT}_REQUIRED_BINPKGS
        else
                print_info 3 "${CHECK_LEVEL_PREFIX}Binpkg of ${P} is ready; 
Adding to list '${REQUIRED_BINPKGS_PARENT_VARNAME}' ..."
-               eval ${REQUIRED_BINPKGS_PARENT_VARNAME}+=\( "${BINPKG}" \)
+               eval ${REQUIRED_BINPKGS_PARENT_VARNAME}+=\( \"${BINPKG}\" \)
        fi
 
        # REQUIRED_BINPKGS_CURRENT_VARNAME

diff --git a/worker_modules/gkbuild.sh b/worker_modules/gkbuild.sh
index 41d2791..e6b90b2 100644
--- a/worker_modules/gkbuild.sh
+++ b/worker_modules/gkbuild.sh
@@ -284,8 +284,7 @@ _initialize() {
 
        if [[ -n "${GKPKG_DEPS}" ]]
        then
-               # GKPKG_DEPS is ${ARRAY[*]} value (single word), not 
${ARRAY[@]} (separate word)!
-               GKPKG_DEPS=( ${GKPKG_DEPS} )
+               IFS=';' read -r -a GKPKG_DEPS <<< "${GKPKG_DEPS}"
                local GKPKG_DEP=
                for GKPKG_DEP in "${GKPKG_DEPS[@]}"
                do

Reply via email to