From 1548e9005455464de5304bb44d74a7d2d1cd4d3b Mon Sep 17 00:00:00 2001 From: Brian Harring Date: Sat, 28 May 2011 01:45:29 -0700 Subject: [PATCH] suppress EMERGE_FROM in EAPIs that don't need it --- bin/ebuild.sh | 21 +++++++++++++------ bin/isolated-functions.sh | 2 +- pym/_emerge/Binpkg.py | 2 +- pym/_emerge/EbuildBuild.py | 2 +- pym/_emerge/Scheduler.py | 4 +- .../package/ebuild/_config/special_env_vars.py | 6 ++-- pym/portage/package/ebuild/doebuild.py | 4 +- 7 files changed, 24 insertions(+), 17 deletions(-) diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 37a3084..273d2b2 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -690,9 +690,16 @@ ebuild_phase() { ebuild_phase_with_hooks() { local x phase_name=${1} - for x in {pre_,,post_}${phase_name} ; do - ebuild_phase ${x} - done + + # only export EMERGE_FROM to eapi's lack MERGE_TYPE, but export + # it to hooks in full + EMERGE_FROM="${PORTAGE_EMERGE_FROM}" ebuild_phase pre_${phase_name} + if has ${EAPI} 0 1 2 3; then + EMERGE_FROM="${PORTAGE_EMERGE_FROM}" ebuild_phase ${phase_name} + else + ebuild_phase ${phase_name} + fi + EMERGE_FROM="${PORTAGE_EMERGE_FROM}" ebuild_phase post_${phase_name} } dyn_pretend() { @@ -785,12 +792,12 @@ dyn_clean() { rm -rf "${PORTAGE_BUILDDIR}/image" "${PORTAGE_BUILDDIR}/homedir" rm -f "${PORTAGE_BUILDDIR}/.installed" - if [[ $EMERGE_FROM = binary ]] || \ + if [[ $PORTAGE_EMERGE_FROM = binary ]] || \ ! hasq keeptemp $FEATURES && ! hasq keepwork $FEATURES ; then rm -rf "${T}" fi - if [[ $EMERGE_FROM = binary ]] || ! hasq keepwork $FEATURES; then + if [[ $PORTAGE_EMERGE_FROM = binary ]] || ! hasq keepwork $FEATURES; then rm -f "$PORTAGE_BUILDDIR"/.{ebuild_changed,logid,pretended,setuped,unpacked,prepared} \ "$PORTAGE_BUILDDIR"/.{configured,compiled,tested,packaged} \ "$PORTAGE_BUILDDIR"/.die_hooks \ @@ -1362,7 +1369,7 @@ inherit() { if [ "${EBUILD_PHASE}" != "depend" ] && \ [[ ${EBUILD_PHASE} != *rm ]] && \ - [[ ${EMERGE_FROM} != "binary" ]] ; then + [[ ${PORTAGE_EMERGE_FROM} != "binary" ]] ; then # This is disabled in the *rm phases because they frequently give # false alarms due to INHERITED in /var/db/pkg being outdated # in comparison the the eclasses from the portage tree. @@ -1743,7 +1750,7 @@ PORTAGE_READONLY_METADATA="DEFINED_PHASES DEPEND DESCRIPTION PDEPEND PROVIDE RDEPEND RESTRICT SLOT SRC_URI" PORTAGE_READONLY_VARS="D EBUILD EBUILD_PHASE \ - EBUILD_SH_ARGS ECLASSDIR EMERGE_FROM FILESDIR MERGE_TYPE \ + EBUILD_SH_ARGS ECLASSDIR PORTAGE_EMERGE_FROM FILESDIR MERGE_TYPE \ PM_EBUILD_HOOK_DIR \ PORTAGE_ACTUAL_DISTDIR PORTAGE_ARCHLIST PORTAGE_BASHRC \ PORTAGE_BINPKG_FILE PORTAGE_BINPKG_TAR_OPTS PORTAGE_BINPKG_TMPFILE \ diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index 24443ac..857fbcb 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -182,7 +182,7 @@ die() { eerror " ${x}" done fi - if [ "${EMERGE_FROM}" != "binary" ] && \ + if [ "${PORTAGE_EMERGE_FROM}" != "binary" ] && \ ! hasq ${EBUILD_PHASE} prerm postrm && \ [ "${EBUILD#${PORTDIR}/}" == "${EBUILD}" ] ; then local overlay=${EBUILD%/*} diff --git a/pym/_emerge/Binpkg.py b/pym/_emerge/Binpkg.py index 1ed5c1f..cb38942 100644 --- a/pym/_emerge/Binpkg.py +++ b/pym/_emerge/Binpkg.py @@ -55,7 +55,7 @@ class Binpkg(CompositeTask): (dir_path, self.settings['PORTAGE_BUILDDIR'])) self._build_dir = EbuildBuildDir( scheduler=self.scheduler, settings=settings) - settings.configdict["pkg"]["EMERGE_FROM"] = "binary" + settings.configdict["pkg"]["PORTAGE_EMERGE_FROM"] = "binary" settings.configdict["pkg"]["MERGE_TYPE"] = "binary" if eapi_exports_replace_vars(settings["EAPI"]): diff --git a/pym/_emerge/EbuildBuild.py b/pym/_emerge/EbuildBuild.py index a678ede..fbab823 100644 --- a/pym/_emerge/EbuildBuild.py +++ b/pym/_emerge/EbuildBuild.py @@ -42,7 +42,7 @@ class EbuildBuild(CompositeTask): self._tree = tree portdb = root_config.trees[tree].dbapi settings.setcpv(pkg) - settings.configdict["pkg"]["EMERGE_FROM"] = "ebuild" + settings.configdict["pkg"]["PORTAGE_EMERGE_FROM"] = "ebuild" if self.opts.buildpkgonly: settings.configdict["pkg"]["MERGE_TYPE"] = "buildonly" else: diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index b10439a..5bca447 100644 --- a/pym/_emerge/Scheduler.py +++ b/pym/_emerge/Scheduler.py @@ -1011,7 +1011,7 @@ class Scheduler(PollScheduler): os.makedirs(infloc) portage.xpak.tbz2(tbz2_file).unpackinfo(infloc) ebuild_path = os.path.join(infloc, x.pf + ".ebuild") - settings.configdict["pkg"]["EMERGE_FROM"] = "binary" + settings.configdict["pkg"]["PORTAGE_EMERGE_FROM"] = "binary" settings.configdict["pkg"]["MERGE_TYPE"] = "binary" else: @@ -1020,7 +1020,7 @@ class Scheduler(PollScheduler): ebuild_path = portdb.findname(x.cpv, myrepo=x.repo) if ebuild_path is None: raise AssertionError("ebuild not found for '%s'" % x.cpv) - settings.configdict["pkg"]["EMERGE_FROM"] = "ebuild" + settings.configdict["pkg"]["PORTAGE_EMERGE_FROM"] = "ebuild" if self._build_opts.buildpkgonly: settings.configdict["pkg"]["MERGE_TYPE"] = "buildonly" else: diff --git a/pym/portage/package/ebuild/_config/special_env_vars.py b/pym/portage/package/ebuild/_config/special_env_vars.py index 0214c86..64f7275 100644 --- a/pym/portage/package/ebuild/_config/special_env_vars.py +++ b/pym/portage/package/ebuild/_config/special_env_vars.py @@ -13,8 +13,8 @@ import re # configuration files. env_blacklist = frozenset(( "A", "AA", "CATEGORY", "DEPEND", "DESCRIPTION", "EAPI", - "EBUILD_PHASE", "ED", "EMERGE_FROM", "EPREFIX", "EROOT", - "HOMEPAGE", "INHERITED", "IUSE", + "EBUILD_PHASE", "ED", "PORTAGE_EMERGE_FROM", "EMERGE_FROM", "EPREFIX", + "EROOT", "HOMEPAGE", "INHERITED", "IUSE", "KEYWORDS", "LICENSE", "MERGE_TYPE", "PDEPEND", "PF", "PKGUSE", "PORTAGE_BACKGROUND", "PORTAGE_BACKGROUND_UNMERGE", "PORTAGE_BUILDIR_LOCKED", @@ -39,7 +39,7 @@ environ_whitelist += [ "DISTDIR", "DOC_SYMLINKS_DIR", "EAPI", "EBUILD", "EBUILD_FORCE_TEST", "EBUILD_PHASE", "ECLASSDIR", "ECLASS_DEPTH", "ED", - "EMERGE_FROM", "EPREFIX", "EROOT", + "PORTAGE_EMERGE_FROM", "EPREFIX", "EROOT", "FEATURES", "FILESDIR", "HOME", "MERGE_TYPE", "NOCOLOR", "PATH", "PKGDIR", "PKGUSE", "PKG_LOGDIR", "PKG_TMPDIR", diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py index 4cdd765..e68908a 100644 --- a/pym/portage/package/ebuild/doebuild.py +++ b/pym/portage/package/ebuild/doebuild.py @@ -695,10 +695,10 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=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"]["PORTAGE_EMERGE_FROM"] = "ebuild" mysettings.configdict["pkg"]["MERGE_TYPE"] = "source" elif tree == "bintree": - mysettings.configdict["pkg"]["EMERGE_FROM"] = "binary" + mysettings.configdict["pkg"]["PORTAGE_EMERGE_FROM"] = "binary" mysettings.configdict["pkg"]["MERGE_TYPE"] = "binary" if eapi_exports_replace_vars(mysettings["EAPI"]) and \ -- 1.7.4.1