commit: df3f7a7261e2cee3808dcce85f90668b79ad3d81 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org> AuthorDate: Sat Nov 22 19:31:19 2025 +0000 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org> CommitDate: Sat Nov 22 19:31:19 2025 +0000 URL: https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=df3f7a72
sys-apps/portage-3.0.72: version bump Closes: https://bugs.gentoo.org/966267 Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org> sys-apps/portage/Manifest | 2 +- .../portage/files/portage-3.0.30-ebuildshell.patch | 349 --------------------- .../files/portage-3.0.30-prefix-stack.patch | 81 ----- ...portage-3.0.70.ebuild => portage-3.0.72.ebuild} | 29 +- 4 files changed, 19 insertions(+), 442 deletions(-) diff --git a/sys-apps/portage/Manifest b/sys-apps/portage/Manifest index bc958da6b6..931d367a99 100644 --- a/sys-apps/portage/Manifest +++ b/sys-apps/portage/Manifest @@ -1,3 +1,3 @@ DIST prefix-portage-3.0.62.tar.bz2 1540010 BLAKE2B 5228459672b9928881fcce58b01c30af4974cf56c5227f6b9a83ae14579821a65b5914a2c538ce3a2e6805a2abde226fb4a9c6b8fb4c8035a5b8a931e813e5b9 SHA512 07bb343c243ada777dd606318b49fb76b436c189d02f086ce069d6a1dbb4ce9fe5539b26c8bb0bb223ea981acaa92397ec43b21a669a8fcea89b4f4fc94d0b1d DIST prefix-portage-3.0.63.tar.bz2 1501121 BLAKE2B 4d9ec570e958dca53b8adf7057d2f2b88083bfd7570b75594d54513e7bb3a4641b7d1f4b87689a863e092215f764f8609d53bc8becdbdb91108b9801a8ccc1ca SHA512 df63d040d91912d81dbc15373618e6b2c043641bd93afd035c3739999c38d2616d3dcc87591e45eceeed17095ccddef90502684460e20f73ee451aa65bdac761 -DIST prefix-portage-3.0.70.tar.bz2 1544606 BLAKE2B e0d27e497f0f869a6b2c7c43e825e09a14122064a29809ebd1b77db19478c1e19fa44936c3d2c6d8b1cacec78705d3c57e5b8773bb6cd4ec40cc31c43ec0e91a SHA512 393f0c451a8867dd14137209aaab45b5a76e79df85443603848c3abff4c1b8775d91494da3c39a4e599226ff300291d9b17c42cf059984e471e400b705598107 +DIST prefix-portage-3.0.72.tar.bz2 1533963 BLAKE2B 3e97a868841819d3ac96efdb16fc1e09f3d25c3640971e9844fe34b677c162d0afcd4d8f8cfb51a047b161154153804414cb9eba38fd9b1a31750a99c7da6c5b SHA512 50b145d4c6f10c3b0d00fa9b0bbf8cbb1fb6e6a1b33bfbf2df498de287aa76da477302b27b997f6c23aefe6a7f154539fb47c9a25b1e86a71d7b8e22bb973d6d diff --git a/sys-apps/portage/files/portage-3.0.30-ebuildshell.patch b/sys-apps/portage/files/portage-3.0.30-ebuildshell.patch deleted file mode 100644 index 20f0aab813..0000000000 --- a/sys-apps/portage/files/portage-3.0.30-ebuildshell.patch +++ /dev/null @@ -1,349 +0,0 @@ -From 8c6b115fa0325b5bed2e1a9c4c8e8af45cdecc2e Mon Sep 17 00:00:00 2001 -From: Michael Haubenwallner <[email protected]> -Date: Wed, 6 Nov 2013 12:40:05 +0100 -Subject: [PATCH 1/2] Add ebuildshell feature, bug#155161. - ---- - bin/ebuild.sh | 146 ++++++++++++++++++++++++++++++++++- - bin/filter-bash-environment.py | 55 +++++++++---- - bin/save-ebuild-env.sh | 2 +- - man/make.conf.5 | 6 ++ - lib/_emerge/AbstractEbuildProcess.py | 1 + - lib/portage/const.py | 1 + - 6 files changed, 194 insertions(+), 17 deletions(-) - -diff --git a/bin/ebuild.sh b/bin/ebuild.sh -index f76a48d8e..683a4e9c1 100755 ---- a/bin/ebuild.sh -+++ b/bin/ebuild.sh -@@ -121,7 +121,7 @@ __qa_source() { - __qa_call() { - local shopts=$(shopt) OLDIFS="$IFS" - local retval -- "$@" -+ __call-ebuildshell "$@" - retval=$? - set +e - [[ $shopts != $(shopt) ]] && -@@ -547,6 +547,150 @@ if [[ -n ${QA_INTERCEPTORS} ]] ; then - unset BIN_PATH BIN BODY FUNC_SRC - fi - -+__call-ebuildshell() { -+ if ! has ebuildshell ${FEATURES}; then -+ "$@" -+ return $? -+ fi -+ local __ebuildshell_args=( "$@" ) -+ # These are the variables I have seen 'bash -i' maintaining the values for: -+ local __ebuildshell_bash_i_vars="__ebuildshell_.* -+ _ BASH_ARGC BASH_ARGV BASH_COMMAND BASH_LINENO BASH_SOURCE -+ BASH_VERSINFO BASH_SUBSHELL BASHOPTS BASHPID COMP_WORDBREAKS -+ DIRSTACK EUID FUNCNAME GROUPS HISTCMD HISTFILE LINENO PIPESTATUS -+ PPID PS1 PS2 PS3 PS4 PWD RANDOM SECONDS SHELLOPTS UID" -+ # Allow recursive ebuildshell, for use in multibuild.eclass and similar: -+ local __ebuildshell_pid=${BASHPID:-$(__bashpid)} -+ local __ebuildshell_tmpf="${T}/ebuildshell.${__ebuildshell_pid}" -+ rm -f "${__ebuildshell_tmpf}."{ebuild,return}-{env,rovars} -+ ( -+ cat <<-EOE -+ # local variables of functions using recursive ebuildshell are -+ # visible to the EXIT trap of that recursive ebuildshell. To -+ # keep them local, we have to filter them from that recursive -+ # ebuildshell's return-env. As 'declare -p' is unable to tell -+ # local-ity of variables, we abuse the trace attribute for local -+ # variables to filter them from the return-env. So we need the -+ # local alias active before declaring any functions. -+ # On a sidehand, this allows for copy&paste of function body -+ # lines including the local keyword. -+ alias local='declare -t' -+ shopt -s expand_aliases -+ EOE -+ ( -+ declare -p -+ declare -fp -+ shopt -p -+ [[ ${BASH_VERSINFO[0]} == 3 ]] && export -+ ) | -+ ( -+ # we need everything but the bash vars after 'env -i' -+ 2>"${__ebuildshell_tmpf}.ebuild-rovars" \ -+ "${PORTAGE_PYTHON:-/tools/haubi/gentoo/s01en24/usr/bin/python}" \ -+ "${PORTAGE_BIN_PATH}"/filter-bash-environment.py \ -+ --report-readonly-variables \ -+ --preserve-readonly-attribute \ -+ "${__ebuildshell_bash_i_vars}" \ -+ || die "filter-bash-environment.py failed" -+ ) -+ # 'declare -g' is available since bash-4.2, -+ # https://bugs.gentoo.org/show_bug.cgi?id=155161#c35 -+ if (( ${BASH_VERSINFO[0]} > 4 )) || -+ (( ${BASH_VERSINFO[0]} == 4 && ${BASH_VERSINFO[1]} >= 2 )) -+ then -+ __ebuildshell_bash42_true= -+ __ebuildshell_bash42_false='#bash-4.2#' -+ else -+ __ebuildshell_bash42_true='#bash-4.2#' -+ __ebuildshell_bash42_false= -+ fi -+ # The already readonly variables, without bash maintained ones: -+ __ebuildshell_ro_ebuild_vars=$(<"${__ebuildshell_tmpf}.ebuild-rovars") -+ cat <<-EOE -+ # properly quote the function arguments -+ $(declare -p __ebuildshell_args) -+ set -- "\${__ebuildshell_args[@]}" -+ unset __ebuildshell_args -+ # be informative about what to do -+ PS1="EBUILD ${PN} $1 \$ " -+ type $1 -+ ${__ebuildshell_bash42_false}echo 'warning: preserving variables across phases requires bash-4.2' -+ echo "WANTED: \$@" -+ echo "or use: \"\\\$@\"" -+ # use bash history, but not the 'user's real one -+ HISTFILE=~/.bash_history -+ # but do not use history-expansion with '!', -+ # for copy&paste of function body lines containing: ! -+ set +H -+ # this is a debugging shell already -+ shopt -u extdebug -+ trap - DEBUG -+ # at exit, dump the current environment -+ trap " -+ unalias local -+ unset -f __call-ebuildshell -+ rm -f '${__ebuildshell_tmpf}.return-'* -+ ( -+ ( -+ # declare -p does not tell the -g flag, -+ # so we add it by aliasing declare. -+ ${__ebuildshell_bash42_true}echo \"alias declare='declare -g'\" -+ declare -p -+ ${__ebuildshell_bash42_true}echo \"unalias declare\" -+ declare -fp -+ shopt -p | grep -v '\\(expand_aliases\\|extdebug\\)$' -+ $([[ ${BASH_VERSINFO[0]} == 3 ]] && echo export) -+ ) | -+ ( -+ # We may have more readonly variables now, yet we -+ # need to filter variables that were readonly before. -+ # And filter local variables by their trace attribute. -+ 2>'${__ebuildshell_tmpf}.return-rovars' \\ -+ '${PORTAGE_PYTHON:-/tools/haubi/gentoo/s01en24/usr/bin/python}' \\ -+ '${PORTAGE_BIN_PATH}'/filter-bash-environment.py \\ -+ --report-readonly-variables \\ -+ --preserve-readonly-attribute \\ -+ --filter-traced-variables \\ -+ '${__ebuildshell_bash_i_vars} \ -+ ${__ebuildshell_ro_ebuild_vars}' \\ -+ || die 'filter-bash-environment.py failed' -+ ) -+ ) > '${__ebuildshell_tmpf}.return-env' -+ " EXIT -+ # can do some cleanup right now -+ rm -f '${__ebuildshell_tmpf}.ebuild-'* -+ EOE -+ ) > "${__ebuildshell_tmpf}.ebuild-env" -+ -+ # pre-fill the history with "$@" -+ echo '"$@"' >> ~/.bash_history -+ chown ${PORTAGE_USER:-portage}:${PORTAGE_GROUP:-portage} ~/.bash_history &>/dev/null -+ -+ env -i HOME=~ ${BASH} --rcfile "${__ebuildshell_tmpf}.ebuild-env" -i -+ -+ # The environment- and exit-status handling after leaving the ebuildshell -+ # prompt is expected to be identical as without the ebuildshell prompt. -+ local __ebuildshell_status=$? -+ -+ # We might be in a recursive ebuildshell, but do not want -+ # any aliases being active while sourcing the return-env. -+ local __ebuildshell_orig_aliases=$(alias) -+ unalias -a -+ source "${__ebuildshell_tmpf}.return-env" -+ unalias -a -+ eval "${__ebuildshell_orig_aliases}" -+ -+ # Portage has a whitelist of readonly variables: If an ebuild defines -+ # additional readonly variables, their readonly attribute is removed -+ # across ebuild phases. If we ever want to preserve the readonly -+ # attribute of additional ebuild-defined variables across phases, -+ # when returning from the ebuildshell their names are in -+ # "${__ebuildshell_tmpf}.return-rovars" -+ rm -f "${__ebuildshell_tmpf}."{ebuild,return}-{env,rovars} -+ -+ return ${__ebuildshell_status} -+} -+ - # Subshell/helper die support (must export for the die helper). - export EBUILD_MASTER_PID=${BASHPID:-$(__bashpid)} - trap 'exit 1' SIGTERM -diff --git a/bin/filter-bash-environment.py b/bin/filter-bash-environment.py -index 06cac7214..5590dbfc4 100755 ---- a/bin/filter-bash-environment.py -+++ b/bin/filter-bash-environment.py -@@ -14,7 +14,8 @@ - br'(^|^declare\s+-\S+\s+|^declare\s+|^export\s+)([^=\s]+)=("|\')?.*$' - ) - close_quote_re = re.compile(br'(\\"|"|\')\s*$') --readonly_re = re.compile(br"^declare\s+-(\S*)r(\S*)\s+") -+readonly_re = re.compile(br"^declare\s+-(\S*)r(\S*)\s+([^=\s]+)") -+trace_re = re.compile(br"^declare\s+-\S*t\S*\s+") - # declare without assignment - var_declare_re = re.compile(br"^declare(\s+-\S+)?\s+([^=\s]+)\s*$") - -@@ -30,7 +31,7 @@ - return close_quote_match is not None and close_quote_match.group(1) == quote - - --def filter_declare_readonly_opt(line): -+def filter_declare_readonly_opt(line, options): - readonly_match = readonly_re.match(line) - if readonly_match is not None: - declare_opts = b"" -@@ -38,14 +39,19 @@ - group = readonly_match.group(i) - if group is not None: - declare_opts += group -+ var = readonly_match.group(3) -+ if '--report-readonly-variables' in options: -+ getattr(sys.stderr, 'buffer', sys.stderr).write(var + b'\n') -+ if '--preserve-readonly-attribute' in options: -+ declare_opts += b'r' - if declare_opts: -- line = b"declare -" + declare_opts + b" " + line[readonly_match.end() :] -+ line = b"declare -" + declare_opts + b" " + var + line[readonly_match.end() :] - else: -- line = b"declare " + line[readonly_match.end() :] -+ line = b"declare " + var + line[readonly_match.end() :] - return line - - --def filter_bash_environment(pattern, file_in, file_out): -+def filter_bash_environment(pattern, file_in, file_out, options): - # Filter out any instances of the \1 character from variable values - # since this character multiplies each time that the environment - # is saved (strange bash behavior). This can eventually result in -@@ -68,6 +74,8 @@ - if var_assign_match is not None: - quote = var_assign_match.group(3) - filter_this = pattern.match(var_assign_match.group(2)) is not None -+ if not filter_this and '--filter-traced-variables' in options: -+ filter_this = trace_re.match(line) is not None - # Exclude the start quote when searching for the end quote, - # to ensure that the start quote is not misidentified as the - # end quote (happens if there is a newline immediately after -@@ -78,7 +86,7 @@ - multi_line_quote = quote - multi_line_quote_filter = filter_this - if not filter_this: -- line = filter_declare_readonly_opt(line) -+ line = filter_declare_readonly_opt(line, options) - file_out.write(line.replace(b"\1", b"")) - continue - else: -@@ -86,8 +94,10 @@ - if declare_match is not None: - # declare without assignment - filter_this = pattern.match(declare_match.group(2)) is not None -+ if not filter_this and '--filter-traced-variables' in options: -+ filter_this = trace_re.match(line) is not None - if not filter_this: -- line = filter_declare_readonly_opt(line) -+ line = filter_declare_readonly_opt(line, options) - file_out.write(line) - continue - -@@ -127,8 +137,28 @@ - + "intact. The PATTERN is a space separated list of variable names" - + " and it supports python regular expression syntax." - ) -- usage = "usage: %s PATTERN" % os.path.basename(sys.argv[0]) -- args = sys.argv[1:] -+ usage = "usage: %s [-h|OPTIONS] PATTERN" % os.path.basename(sys.argv[0]) -+ args = [] -+ known_options = { -+ '--report-readonly-variables': -+ "Write names of readonly variables to stderr.", -+ '--preserve-readonly-attribute': -+ "Preserve the '-r' flag in 'declare -r'.", -+ '--filter-traced-variables': -+ "Filter out variables declared with '-t' attribute." -+ } -+ options = {} -+ for arg in sys.argv[1:]: -+ if arg in known_options.keys(): -+ options[arg] = True -+ continue -+ if '-h' == arg or '--help' == arg: -+ sys.stdout.write(usage + "\n\nKnown <options>:\n\n") -+ for option, descr in known_options.items(): -+ sys.stdout.write(" " + option + "\t" + descr + "\n") -+ sys.stdout.flush() -+ sys.exit(os.EX_OK) -+ args.append(arg) - - if "-h" in args or "--help" in args: - sys.stdout.write(usage + "\n") -@@ -150,5 +180,5 @@ - var_pattern.append(br".*\W.*") - - var_pattern = b"^(" + b"|".join(var_pattern) + b")$" -- filter_bash_environment(re.compile(var_pattern), file_in, file_out) -+ filter_bash_environment(re.compile(var_pattern), file_in, file_out, options) - file_out.flush() -diff --git a/bin/save-ebuild-env.sh b/bin/save-ebuild-env.sh -index bb17382d4..af35a3327 100755 ---- a/bin/save-ebuild-env.sh -+++ b/bin/save-ebuild-env.sh -@@ -53,7 +53,7 @@ - einfo einfon ewarn eerror ebegin __eend eend KV_major \ - KV_minor KV_micro KV_to_int get_KV has \ - __has_phase_defined_up_to \ -- hasv hasq __qa_source __qa_call \ -+ hasv hasq __qa_source __qa_call __call-ebuildshell \ - addread addwrite adddeny addpredict __sb_append_var \ - use usev useq has_version portageq \ - best_version use_with use_enable register_die_hook \ -diff --git a/man/make.conf.5 b/man/make.conf.5 -index b0c1aa4f2..568f350a0 100644 ---- a/man/make.conf.5 -+++ b/man/make.conf.5 -@@ -408,6 +408,12 @@ exist). Also see the related \fIunmerge\-backup\fR feature. - Use locks to ensure that unsandboxed ebuild phases never execute - concurrently. Also see \fIparallel\-install\fR. - .TP -+.B ebuildshell -+Drop into an interactive shell for each phase function, meant for -+debugging. Because the shell would normally be used to execute the -+phase function, commands like src_unpack or epatch are available in the -+interactive shell. Use `die` to terminate the merge. -+.TP - .B fail\-clean - Clean up temporary files after a build failure. This is particularly useful - if you have \fBPORTAGE_TMPDIR\fR on tmpfs. If this feature is enabled, you -diff --git a/lib/_emerge/AbstractEbuildProcess.py b/lib/_emerge/AbstractEbuildProcess.py -index 370cac529..a521596e5 100644 ---- a/lib/_emerge/AbstractEbuildProcess.py -+++ b/lib/_emerge/AbstractEbuildProcess.py -@@ -234,6 +234,7 @@ - null_fd = None - if ( - 0 not in self.fd_pipes -+ and "ebuildshell" not in self.settings.features - and self.phase not in self._phases_interactive_whitelist - and "interactive" not in self.settings.get("PROPERTIES", "").split() - ): -diff --git a/lib/portage/const.py b/lib/portage/const.py -index 3c23c85ed..d9c57f300 100644 ---- a/lib/portage/const.py -+++ b/lib/portage/const.py -@@ -172,6 +172,7 @@ - "distlocks", - "downgrade-backup", - "ebuild-locks", -+ "ebuildshell", - "fail-clean", - "fakeroot", - "fixlafiles", --- -2.16.1 - diff --git a/sys-apps/portage/files/portage-3.0.30-prefix-stack.patch b/sys-apps/portage/files/portage-3.0.30-prefix-stack.patch deleted file mode 100644 index c49c473ea3..0000000000 --- a/sys-apps/portage/files/portage-3.0.30-prefix-stack.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 1fe30e79c368ce71e024d70c3ec07a6aed3ef262 Mon Sep 17 00:00:00 2001 -From: Michael Haubenwallner <[email protected]> -Date: Fri, 22 Mar 2019 17:52:05 +0100 -Subject: [PATCH] from FEATURES=stacked-prefix to USE=prefix-stack - -Rather than telling the base prefix' portage to support stacked prefix, -be explicit in the stacked prefix about to USE that feature. -Bug: https://bugs.gentoo.org/658572 ---- - bin/install-qa-check.d/05prefix | 10 +++------- - bin/phase-helpers.sh | 12 ++++-------- - lib/portage/const.py | 1 - - 3 files changed, 7 insertions(+), 16 deletions(-) - -diff --git a/bin/install-qa-check.d/05prefix b/bin/install-qa-check.d/05prefix -index 03da3bbce..4f48e4216 100644 ---- a/bin/install-qa-check.d/05prefix -+++ b/bin/install-qa-check.d/05prefix -@@ -36,16 +36,12 @@ install_qa_check_prefix() { - local WHITELIST=" /usr/bin/env " - # shebang can be an absolutised path, bug #342929 - local eprefix=$(canonicalize ${EPREFIX}) -- # Without the stacked-prefix feature, tests using BPREFIX -- # are redundant to EPREFIX, but run only if we will fail. -+ # Without USE=prefix-stack, tests using BPREFIX are -+ # redundant to EPREFIX, but run only if we will fail. - # Otherways, BPREFIX really is BROOT (the EAPI 7 one). - local BPREFIX=${EPREFIX} - local bprefix=${eprefix} -- if has stacked-prefix ${FEATURES} && -- [[ -z ${ROOT%/} ]] && -- [[ ${CBUILD} == ${CHOST} ]] && -- [[ ${EPREFIX} != ${BROOT-${PORTAGE_OVERRIDE_EPREFIX}} ]] && -- :; then -+ if has prefix-stack ${USE} ; then - BPREFIX=${BROOT-${PORTAGE_OVERRIDE_EPREFIX}} - bprefix=$(canonicalize ${BPREFIX}) - fi -diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh -index 606b1cdfd..c64f1106b 100644 ---- a/bin/phase-helpers.sh -+++ b/bin/phase-helpers.sh -@@ -932,18 +932,14 @@ ___best_version_and_has_version_common() { - fi ;; - esac - -- # PREFIX LOCAL: stacked-prefix feature -+ # PREFIX LOCAL: prefix-stack feature - if ___eapi_has_prefix_variables && - has "${root_arg}" '--host-root' '-b' && -- has stacked-prefix ${FEATURES} && -+ has prefix-stack ${USE} && - [[ -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. -+ # When we merge into "stacked" EPREFIX, but not into some ROOT, build -+ # tools found in EPREFIX perfectly work for current build environment. - "${FUNCNAME[1]}" "${atom}" && return 0 - fi - # END PREFIX LOCAL -diff --git a/lib/portage/const.py b/lib/portage/const.py -index eddce377d..db02cbc56 100644 ---- a/lib/portage/const.py -+++ b/lib/portage/const.py -@@ -207,8 +207,6 @@ SUPPORTED_FEATURES = frozenset([ - "usersync", - "webrsync-gpg", - "xattr", -- # PREFIX LOCAL -- "stacked-prefix", - ] - ) - --- -2.19.2 - diff --git a/sys-apps/portage/portage-3.0.70.ebuild b/sys-apps/portage/portage-3.0.72.ebuild similarity index 90% rename from sys-apps/portage/portage-3.0.70.ebuild rename to sys-apps/portage/portage-3.0.72.ebuild index 35594c0fae..5d1000df01 100644 --- a/sys-apps/portage/portage-3.0.70.ebuild +++ b/sys-apps/portage/portage-3.0.72.ebuild @@ -126,12 +126,17 @@ src_prepare() { -i cnf/repos.conf || die "sed failed" # PREFIX LOCAL: only hack const_autotool - # ok, we can't rely on PORTAGE_ROOT_USER being there yet, as people - # tend not to update that often, as long as we are a separate ebuild - # we can assume when unset, it's time for some older trick - if [[ -z ${PORTAGE_ROOT_USER} ]] ; then - PORTAGE_ROOT_USER=$(python -c 'from portage.const import rootuser; print rootuser') - fi + PORTAGE_GROUP=${PORTAGE_GRPNAME} + PORTAGE_USER=${PORTAGE_USERNAME} + PORTAGE_ROOT_USER=$(python -c 'from portage.const import rootuser; print(rootuser)') + [[ -z ${PORTAGE_GROUP} ]] && \ + PORTAGE_GROUP=$(python -c 'from portage.const import portagegroup; print(portagegroup)') + [[ -z ${PORTAGE_USER} ]] && \ + PORTAGE_USER=$(python -c 'from portage.const import portageuser; print(portageuser)') + [[ -z ${PORTAGE_ROOT_USER} ]] && PORTAGE_ROOT_USER=root + [[ -z ${PORTAGE_GROUP} ]] && PORTAGE_GROUP=portage + [[ -z ${PORTAGE_USER} ]] && PORTAGE_USER=portage + # We need to probe for bash in the Prefix, because it may not # exist, in which case we fall back to the currently in use # bash. This logic is necessary in particular during bootstrap, @@ -143,12 +148,14 @@ src_prepare() { sed -e "s|@PORTAGE_EPREFIX@|${EPREFIX}|" \ -e "s|@PORTAGE_MV@|$(type -P mv)|" \ -e "s|@PORTAGE_BASH@|${bash}|" \ - -e "s|@portagegroup@|${PORTAGE_GROUP:-portage}|" \ - -e "s|@portageuser@|${PORTAGE_USER:-portage}|" \ - -e "s|@rootuser@|${PORTAGE_ROOT_USER:-root}|" \ - -e "s|@rootuid@|$(id -u ${PORTAGE_ROOT_USER:-root})|" \ - -e "s|@rootgid@|$(id -g ${PORTAGE_ROOT_USER:-root})|" \ + -e "s|@portagegroup@|${PORTAGE_GROUP}|" \ + -e "s|@portageuser@|${PORTAGE_USER}|" \ + -e "s|@rootuser@|${PORTAGE_ROOT_USER}|" \ + -e "s|@rootuid@|$(id -u ${PORTAGE_ROOT_USER})|" \ + -e "s|@rootgid@|$(id -g ${PORTAGE_ROOT_USER})|" \ -e "s|@sysconfdir@|${EPREFIX}/etc|" \ + -e "s|@portageuser@|${PORTAGE_USER}|" \ + -e "s|@portagegroup@|${PORTAGE_GROUP}|" \ -i \ lib/portage/const_autotool.py cnf/make.globals \ || die "Failed to patch sources"
