commit: 58c27aec81262d6840e36f2f56c32bec68c414c1
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 29 23:35:47 2014 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Dec 2 18:29:35 2014 +0000
URL:
http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=58c27aec
ebuild.sh: fix pkg_setup env for binary packages (528274)
In commit 743b3337644fbb3ea461d3a9137c9ac85e163f03, support for binary
packages broke, since binary packages must load the environment from
$T/environment. This patch fixes the logic to handle binary packages
correctly.
Fixes: 743b3337644f ("ebuild.sh: force fresh env for pkg_setup (528274)")
X-Gentoo-Bug: 528274
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=528274
Acked-by: Brian Dolbec <dolsen <AT> gentoo.org>
---
bin/ebuild.sh | 6 ++++--
pym/portage/package/ebuild/config.py | 4 +++-
pym/portage/package/ebuild/doebuild.py | 7 +++++--
3 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index 232bf44..2ed1335 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -501,7 +501,8 @@ fi
export EBUILD_MASTER_PID=${BASHPID:-$(__bashpid)}
trap 'exit 1' SIGTERM
-if ! has "$EBUILD_PHASE" clean cleanrm depend setup && \
+if ! has "$EBUILD_PHASE" clean cleanrm depend && \
+ ! [[ $EMERGE_FROM = ebuild && $EBUILD_PHASE = setup ]] && \
[ -f "${T}"/environment ] ; then
# The environment may have been extracted from environment.bz2 or
# may have come from another version of ebuild.sh or something.
@@ -550,7 +551,8 @@ eval
"PORTAGE_ECLASS_LOCATIONS=(${PORTAGE_ECLASS_LOCATIONS})"
# Source the ebuild every time for FEATURES=noauto, so that ebuild
# modifications take effect immediately.
if ! has "$EBUILD_PHASE" clean cleanrm ; then
- if [[ $EBUILD_PHASE =~ ^(depend|setup)$ || ! -f $T/environment || \
+ if [[ $EBUILD_PHASE = setup && $EMERGE_FROM = ebuild ]] || \
+ [[ $EBUILD_PHASE = depend || ! -f $T/environment || \
-f $PORTAGE_BUILDDIR/.ebuild_changed || \
" ${FEATURES} " == *" noauto "* ]] ; then
# The bashrcs get an opportunity here to set aliases that will
be expanded
diff --git a/pym/portage/package/ebuild/config.py
b/pym/portage/package/ebuild/config.py
index ca15f81..59e239b 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -2663,9 +2663,11 @@ class config(object):
eapi = self.get('EAPI')
eapi_attrs = _get_eapi_attrs(eapi)
phase = self.get('EBUILD_PHASE')
+ emerge_from = self.get('EMERGE_FROM')
filter_calling_env = False
if self.mycpv is not None and \
- phase not in ('clean', 'cleanrm', 'depend', 'fetch',
'setup'):
+ not (emerge_from == 'ebuild' and phase == 'setup') and \
+ phase not in ('clean', 'cleanrm', 'depend', 'fetch'):
temp_dir = self.get('T')
if temp_dir is not None and \
os.path.exists(os.path.join(temp_dir,
'environment')):
diff --git a/pym/portage/package/ebuild/doebuild.py
b/pym/portage/package/ebuild/doebuild.py
index 6df3c69..bf97660 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -913,12 +913,15 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning,
settings=None, debug=0,
if eapi_exports_merge_type(mysettings["EAPI"]) and \
"MERGE_TYPE" not in mysettings.configdict["pkg"]:
if tree == "porttree":
- mysettings.configdict["pkg"]["EMERGE_FROM"] =
"ebuild"
mysettings.configdict["pkg"]["MERGE_TYPE"] =
"source"
elif tree == "bintree":
- mysettings.configdict["pkg"]["EMERGE_FROM"] =
"binary"
mysettings.configdict["pkg"]["MERGE_TYPE"] =
"binary"
+ if tree == "porttree":
+ mysettings.configdict["pkg"]["EMERGE_FROM"] = "ebuild"
+ elif tree == "bintree":
+ mysettings.configdict["pkg"]["EMERGE_FROM"] = "binary"
+
# NOTE: It's not possible to set REPLACED_BY_VERSION for prerm
# and postrm here, since we don't necessarily know what
# versions are being installed. This could be a problem