savedconfig.eclass: Only check config file candidate once
authorThomas Deutschmann <whissi@gentoo.org>
Sat, 3 Aug 2019 12:43:17 +0000 (14:43 +0200)
committerThomas Deutschmann <whissi@gentoo.org>
Thu, 8 Aug 2019 19:47:43 +0000 (21:47 +0200)
Due to the injection of $CTARGET and $CHOST in file path
we could end up with an already checked config file candidate
if $CTARGET or $CHOST isn't used.

This commit will make sure that we don't check the same file twice.

Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
eclass/savedconfig.eclass

index 1ea464271affb2e3cca5a5bc4d29b3ebb642fb55..b2be715630af8a605f2fc7b0d4de82b79eaea482 100644 (file)
@@ -113,20 +113,24 @@ restore_config() {
 
        use savedconfig || return
 
-       local found check configfile
+       local found check checked configfile
        local base=${PORTAGE_CONFIGROOT%/}/etc/portage/savedconfig
        for check in {${CATEGORY}/${PF},${CATEGORY}/${P},${CATEGORY}/${PN}}; do
-               configfile=${base}/${CTARGET}/${check}
-               [[ -r ${configfile} ]] || configfile=${base}/${CHOST}/${check}
+               configfile=${base}/${CTARGET:+"${CTARGET}/"}${check}
+               [[ -r ${configfile} ]] || configfile=${base}/${CHOST:+"${CHOST}/"}${check}
                [[ -r ${configfile} ]] || configfile=${base}/${check}
-               einfo "Checking existence of ${configfile} ..."
+               [[ "${checked}" == *"${configfile} "* ]] && continue
+               einfo "Checking existence of \"${configfile}\" ..."
                if [[ -r "${configfile}" ]] ; then
                        einfo "Found \"${configfile}\""
                        found=${configfile}
                        _SAVEDCONFIG_CONFIGURATION_FILE=${configfile#${base}/}
                        break
                fi
+
+               checked+="${configfile} "
        done
+
        if [[ -f ${found} ]]; then
                elog "Building using saved configfile \"${found}\""
                if [ $# -gt 0 ]; then