Signed-off-by: Michał Górny <mgo...@gentoo.org> --- bin/ebuild.sh | 13 +++++++------ lib/_emerge/EbuildMetadataPhase.py | 15 +++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 32995d95b..381bcb5c8 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -754,10 +754,11 @@ if [[ $EBUILD_PHASE = depend ]] ; then export SANDBOX_ON="0" set -f - auxdbkeys="DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE + metadata_keys=( + DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE DESCRIPTION KEYWORDS INHERITED IUSE REQUIRED_USE PDEPEND BDEPEND - EAPI PROPERTIES DEFINED_PHASES IDEPEND UNUSED_04 - UNUSED_03 UNUSED_02 UNUSED_01" + EAPI PROPERTIES DEFINED_PHASES IDEPEND + ) if ! ___eapi_has_BDEPEND; then unset BDEPEND @@ -767,10 +768,10 @@ if [[ $EBUILD_PHASE = depend ]] ; then fi # The extra $(echo) commands remove newlines. - for f in ${auxdbkeys} ; do - eval "echo \$(echo \${!f}) 1>&${PORTAGE_PIPE_FD}" || exit $? + for f in "${metadata_keys[@]}" ; do + echo "${f}=$(echo ${!f})" >&${PORTAGE_PIPE_FD} || exit $? done - eval "exec ${PORTAGE_PIPE_FD}>&-" + exec {PORTAGE_PIPE_FD}>&- set +f else # Note: readonly variables interfere with __preprocess_ebuild_env(), so diff --git a/lib/_emerge/EbuildMetadataPhase.py b/lib/_emerge/EbuildMetadataPhase.py index d00f194c2..5fd0e8a4d 100644 --- a/lib/_emerge/EbuildMetadataPhase.py +++ b/lib/_emerge/EbuildMetadataPhase.py @@ -151,13 +151,16 @@ class EbuildMetadataPhase(SubProcess): metadata_lines = _unicode_decode(b''.join(self._raw_metadata), encoding=_encodings['repo.content'], errors='replace').splitlines() + metadata = {} metadata_valid = True - if len(portage.auxdbkeys) != len(metadata_lines): - # Don't trust bash's returncode if the - # number of lines is incorrect. - metadata_valid = False - else: - metadata = dict(zip(portage.auxdbkeys, metadata_lines)) + for l in metadata_lines: + if '=' not in l: + metadata_valid = False + break + key, value = l.split('=', 1) + metadata[key] = value + + if metadata_valid: parsed_eapi = self._eapi if parsed_eapi is None: parsed_eapi = "0" -- 2.33.0