Bug: https://bugs.gentoo.org/373349
Bug: https://bugs.gentoo.org/373351
---
 bin/eapi.sh                            |  4 ++++
 bin/phase-functions.sh                 |  6 ++++--
 pym/portage/eapi.py                    | 11 +++++++++++
 pym/portage/package/ebuild/doebuild.py | 14 ++++++++++----
 4 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/bin/eapi.sh b/bin/eapi.sh
index 3e837f19d..9fa96548b 100644
--- a/bin/eapi.sh
+++ b/bin/eapi.sh
@@ -38,6 +38,10 @@ ___eapi_has_RDEPEND_DEPEND_fallback() {
        [[ ${1-${EAPI-0}} =~ ^(0|1|2|3)$ ]]
 }
 
+___eapi_has_PORTDIR_ECLASSDIR() {
+       [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-python|4-slot-abi|5|5-progress|6)$ ]]
+}
+
 # HELPERS PRESENCE
 
 ___eapi_has_dohard() {
diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
index d95012d6b..017dc132b 100644
--- a/bin/phase-functions.sh
+++ b/bin/phase-functions.sh
@@ -12,7 +12,7 @@ PORTAGE_READONLY_METADATA="DEFINED_PHASES DEPEND DESCRIPTION
        PDEPEND PROVIDE RDEPEND REPOSITORY RESTRICT SLOT SRC_URI"
 
 PORTAGE_READONLY_VARS="D EBUILD EBUILD_PHASE EBUILD_PHASE_FUNC \
-       EBUILD_SH_ARGS ECLASSDIR EMERGE_FROM FILESDIR MERGE_TYPE \
+       EBUILD_SH_ARGS 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 \
@@ -30,7 +30,6 @@ PORTAGE_READONLY_VARS="D EBUILD EBUILD_PHASE 
EBUILD_PHASE_FUNC \
        PORTAGE_SAVED_READONLY_VARS PORTAGE_SIGPIPE_STATUS \
        PORTAGE_TMPDIR PORTAGE_UPDATE_ENV PORTAGE_USERNAME \
        PORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTAGE_XATTR_EXCLUDE \
-       PORTDIR \
        REPLACING_VERSIONS REPLACED_BY_VERSION T WORKDIR \
        __PORTAGE_HELPER __PORTAGE_TEST_HARDLINK_LOCKS"
 
@@ -106,6 +105,9 @@ __filter_readonly_variables() {
        if ___eapi_has_prefix_variables; then
                filtered_vars+=" ED EPREFIX EROOT"
        fi
+       if ___eapi_has_PORTDIR_ECLASSDIR; then
+               filtered_vars+=" PORTDIR ECLASSDIR"
+       fi
 
        if has --filter-sandbox $* ; then
                filtered_vars="${filtered_vars} SANDBOX_.*"
diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py
index 092780ded..5613fb5d2 100644
--- a/pym/portage/eapi.py
+++ b/pym/portage/eapi.py
@@ -47,6 +47,14 @@ def eapi_exports_replace_vars(eapi):
 def eapi_exports_EBUILD_PHASE_FUNC(eapi):
        return eapi not in ("0", "1", "2", "3", "4", "4-python", "4-slot-abi")
 
+def eapi_exports_PORTDIR(eapi):
+       return eapi in ("0", "1", "2", "3", "4", "4-python", "4-slot-abi",
+                       "5", "5-progress", "6")
+
+def eapi_exports_ECLASSDIR(eapi):
+       return eapi in ("0", "1", "2", "3", "4", "4-python", "4-slot-abi",
+                       "5", "5-progress", "6")
+
 def eapi_exports_REPOSITORY(eapi):
        return eapi in ("4-python", "5-progress")
 
@@ -105,6 +113,7 @@ def eapi_empty_groups_always_true(eapi):
 
 _eapi_attrs = collections.namedtuple('_eapi_attrs',
        'dots_in_PN dots_in_use_flags exports_EBUILD_PHASE_FUNC '
+       'exports_PORTDIR exports_ECLASSDIR '
        'feature_flag_test feature_flag_targetroot '
        'hdepend iuse_defaults iuse_effective posixish_locale '
        'repo_deps required_use required_use_at_most_one_of slot_operator 
slot_deps '
@@ -134,6 +143,8 @@ def _get_eapi_attrs(eapi):
                dots_in_use_flags = (eapi is None or 
eapi_allows_dots_in_use_flags(eapi)),
                empty_groups_always_true = (eapi is not None and 
eapi_empty_groups_always_true(eapi)),
                exports_EBUILD_PHASE_FUNC = (eapi is None or 
eapi_exports_EBUILD_PHASE_FUNC(eapi)),
+               exports_PORTDIR = (eapi is not None and 
eapi_exports_PORTDIR(eapi)),
+               exports_ECLASSDIR = (eapi is not None and 
eapi_exports_ECLASSDIR(eapi)),
                feature_flag_test = True,
                feature_flag_targetroot = (eapi is not None and 
eapi_has_targetroot(eapi)),
                hdepend = (eapi is not None and eapi_has_hdepend(eapi)),
diff --git a/pym/portage/package/ebuild/doebuild.py 
b/pym/portage/package/ebuild/doebuild.py
index 8c8f373bf..92db04868 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -57,10 +57,11 @@ from portage.data import portage_gid, portage_uid, secpass, 
\
 from portage.dbapi.porttree import _parse_uri_map
 from portage.dep import Atom, check_required_use, \
        human_readable_required_use, paren_enclose, use_reduce
-from portage.eapi import eapi_exports_KV, eapi_exports_merge_type, \
-       eapi_exports_replace_vars, eapi_exports_REPOSITORY, \
-       eapi_has_required_use, eapi_has_src_prepare_and_src_configure, \
-       eapi_has_pkg_pretend, _get_eapi_attrs
+from portage.eapi import (eapi_exports_KV, eapi_exports_merge_type,
+       eapi_exports_replace_vars, eapi_exports_REPOSITORY,
+       eapi_has_required_use, eapi_has_src_prepare_and_src_configure,
+       eapi_has_pkg_pretend, _get_eapi_attrs,
+       eapi_exports_PORTDIR, eapi_exports_ECLASSDIR)
 from portage.elog import elog_process, _preload_elog_modules
 from portage.elog.messages import eerror, eqawarn
 from portage.exception import (DigestException, FileNotFound,
@@ -446,6 +447,11 @@ def doebuild_environment(myebuild, mydo, myroot=None, 
settings=None,
        if eapi_exports_REPOSITORY(eapi) and "PORTAGE_REPO_NAME" in 
mysettings.configdict["pkg"]:
                mysettings.configdict["pkg"]["REPOSITORY"] = 
mysettings.configdict["pkg"]["PORTAGE_REPO_NAME"]
 
+       if not eapi_exports_PORTDIR(eapi):
+               del mysettings["PORTDIR"]
+       if not eapi_exports_ECLASSDIR(eapi):
+               del mysettings["ECLASSDIR"]
+
        if mydo != "depend":
                if hasattr(mydbapi, "getFetchMap") and \
                        ("A" not in mysettings.configdict["pkg"] or \
-- 
2.16.2


Reply via email to