commit: ce515e60309e2e2c51577410b111209eec5754d0 Author: Michael Haubenwallner <haubi <AT> gentoo <DOT> org> AuthorDate: Wed Jun 20 12:02:37 2018 +0000 Commit: Michael Haubenwallner <haubi <AT> gentoo <DOT> org> CommitDate: Wed Jun 20 12:02:37 2018 +0000 URL: https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=ce515e60
bootstrap-prefix.sh: apply 'stacked-prefix' patch Introducing the 'stacked-prefix' portage FEATURE via temporary patch, subject to be dropped from bootstrap-prefix.sh script once integrated. This replaces commit 8207d9c59468ff32600463033821eec20197ca0f. Closes: https://bugs.gentoo.org/655326 Closes: https://bugs.gentoo.org/655414 scripts/bootstrap-prefix.sh | 71 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/scripts/bootstrap-prefix.sh b/scripts/bootstrap-prefix.sh index 9c1daa7775..8ba7586747 100755 --- a/scripts/bootstrap-prefix.sh +++ b/scripts/bootstrap-prefix.sh @@ -627,6 +627,72 @@ bootstrap_portage() { S="${S}/prefix-portage-${PV}" cd "${S}" + # patch temporary included here: fail when it should be dropped + mkdir -p "${ROOT}"/etc/portage/patches/sys-apps/portage || return 1 + cat > "${ROOT}"/etc/portage/patches/sys-apps/portage/0001-introduce-the-stacked-prefix-FEATURE.patch <<'EOP' +From 902fad63990eb4516d3e3815994b2dcbd16155fd Mon Sep 17 00:00:00 2001 +From: Michael Haubenwallner <[email protected]> +Date: Tue, 19 Jun 2018 16:39:12 +0200 +Subject: [PATCH] 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 c32533fb3..fea2362cf 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 a3d927c3b..ed54425b5 100644 +--- a/pym/portage/const.py ++++ b/pym/portage/const.py +@@ -204,6 +204,7 @@ SUPPORTED_FEATURES = frozenset([ + "splitdebug", + "split-elog", + "split-log", ++ "stacked-prefix", + "strict", + "strict-keepdir", + "stricter", +-- +2.16.1 + +EOP + [[ $? -eq 0 ]] || return 1 + patch -p1 < "${ROOT}"/etc/portage/patches/sys-apps/portage/0001-introduce-the-stacked-prefix-FEATURE.patch || return 1 + # >=2.3 [[ -r bin/repoman ]] || sed -i -e '/repoman/d' {man,bin}/Makefile.in @@ -1645,7 +1711,7 @@ bootstrap_stage3() { # needed with host portage. PREROOTPATH="${ROOT}"$(echo /{,tmp/}{usr/,}{,lib/llvm/{10,9,8,7,6,5}/}{s,}bin | sed "s, ,:${ROOT},g") \ EPREFIX="${ROOT}" PORTAGE_TMPDIR="${PORTAGE_TMPDIR}" \ - FEATURES="${FEATURES} force-prefix" \ + FEATURES="${FEATURES} force-prefix stacked-prefix" \ EMERGE_LOG_DIR="${ROOT}"/var/log \ do_emerge_pkgs "$@" } @@ -1812,6 +1878,9 @@ bootstrap_stage3() { USE="ssl" \ emerge_pkgs "" "${pkgs[@]}" || return 1 + # patch temporary included here: fail when it should be dropped + rm "${ROOT}"/etc/portage/patches/sys-apps/portage/0001-introduce-the-stacked-prefix-FEATURE.patch || return 1 + # Switch to the proper portage. hash -r
