commit:     b69fe7bafe8c39c105de5545dc3903af76f233f4
Author:     Michael Haubenwallner <haubi <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 22 13:34:27 2018 +0000
Commit:     Michael Haubenwallner <haubi <AT> gentoo <DOT> org>
CommitDate: Fri Jun 22 13:45:09 2018 +0000
URL:        https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=b69fe7ba

sys-apps/portage: add the stacked-prefix patch (#658572)

Package-Manager: Portage-2.3.24, Repoman-2.3.6

 .../files/portage-2.3.40-stacked-prefix.patch      | 59 ++++++++++++++++++++++
 sys-apps/portage/portage-2.3.40.2.ebuild           |  3 +-
 2 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/sys-apps/portage/files/portage-2.3.40-stacked-prefix.patch 
b/sys-apps/portage/files/portage-2.3.40-stacked-prefix.patch
new file mode 100644
index 0000000000..d967d1faf7
--- /dev/null
+++ b/sys-apps/portage/files/portage-2.3.40-stacked-prefix.patch
@@ -0,0 +1,59 @@
+From 8a121d477a9a13569be3fb50eaeaa1162ed884bd Mon Sep 17 00:00:00 2001
+From: Michael Haubenwallner <[email protected]>
+Date: Tue, 19 Jun 2018 16:39:12 +0200
+Subject: [PATCH 1/2] introduce the 'stacked-prefix' FEATURE
+
+When we merge into another EPREFIX, but not into some ROOT,
+and CHOST is equal to CBUILD, build tools found in EPREFIX
+perfectly work for the current build environment.
+In a "stacked prefix" we explicitly utilize this situation.
+
+This is useful during prefix bootstrap (#655414, #655326), but also to
+build packages for targets unable to support the full portage toolchain
+(native Windows, MinGW), but otherwise do not require a full cross
+compilation setup.
+---
+ bin/phase-helpers.sh | 14 ++++++++++++++
+ pym/portage/const.py |  1 +
+ 2 files changed, 15 insertions(+)
+
+diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh
+index 75d92b407..c5a818db7 100644
+--- a/bin/phase-helpers.sh
++++ b/bin/phase-helpers.sh
+@@ -927,6 +927,20 @@ ___best_version_and_has_version_common() {
+                       fi ;;
+       esac
+ 
++      if ___eapi_has_prefix_variables         &&
++         has "${root_arg}" '--host-root' '-b' &&
++         has stacked-prefix ${FEATURES}       &&
++         [[ -z ${ROOT%/} ]]                   &&
++         [[ ${CBUILD} == ${CHOST} ]]          &&
++         [[ ${EPREFIX} != ${BROOT-${PORTAGE_OVERRIDE_EPREFIX}} ]] &&
++      :; then
++              # When we merge into another EPREFIX, but not into some ROOT,
++              # and CHOST is equal to CBUILD, build tools found in EPREFIX
++              # perfectly work for the current build environment.
++              # In a "stacked prefix" we explicitly utilize this situation.
++              "${FUNCNAME[1]}" "${atom}" && return 0
++      fi
++
+       if [[ -n $PORTAGE_IPC_DAEMON ]] ; then
+               cmd+=("${PORTAGE_BIN_PATH}"/ebuild-ipc "${FUNCNAME[1]}" 
"${root}" "${atom}")
+       else
+diff --git a/pym/portage/const.py b/pym/portage/const.py
+index d9c57f300..be7bf1036 100644
+--- a/pym/portage/const.py
++++ b/pym/portage/const.py
+@@ -203,6 +203,7 @@ SUPPORTED_FEATURES       = frozenset([
+       "splitdebug",
+       "split-elog",
+       "split-log",
++      "stacked-prefix",
+       "strict",
+       "strict-keepdir",
+       "stricter",
+-- 
+2.16.1
+

diff --git a/sys-apps/portage/portage-2.3.40.2.ebuild 
b/sys-apps/portage/portage-2.3.40.2.ebuild
index 8e6b1c32a5..63935aaa09 100644
--- a/sys-apps/portage/portage-2.3.40.2.ebuild
+++ b/sys-apps/portage/portage-2.3.40.2.ebuild
@@ -92,7 +92,8 @@ python_prepare_all() {
        distutils-r1_python_prepare_all
 
        epatch "${FILESDIR}"/${PN}-2.3.40-ebuildshell.patch # 155161
-       use prefix-chaining &&
+       epatch "${FILESDIR}"/${PN}-2.3.40-stacked-prefix.patch # 658572
+       use prefix-chaining && # maybe useful even with stacked-prefix
                epatch "${FILESDIR}"/${PN}-2.3.40-prefix-chaining.patch
 
        if use native-extensions; then

Reply via email to