savedconfig.eclass: Only check config file candidate once

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>
This commit is contained in:
Thomas Deutschmann
2019-08-03 14:43:17 +02:00
parent 8191665432
commit 59e3009e88

View 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