commit: 89b7e3eb081fc7c0f53c1e4646d161febc40fc40
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 1 19:47:35 2025 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sat Nov 1 19:48:56 2025 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=89b7e3eb
Merge remote-tracking branch 'origin/master' into prefix
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
.github/workflows/ci.yml | 11 +-
.pre-commit-config.yaml | 2 +-
NEWS | 244 ++++++++++-
bin/eapi.sh | 8 +-
bin/ebuild | 9 +-
bin/ebuild-helpers/domo | 7 +-
bin/ebuild-ipc.py | 9 +-
bin/ebuild.sh | 125 +++---
bin/egencache | 65 +--
bin/emaint | 10 +-
bin/emerge | 10 +-
bin/emerge-webrsync | 282 ++++++-------
bin/estrip | 74 ++--
bin/etc-update | 2 +-
bin/install-qa-check.d/60pkgconfig | 2 +-
bin/isolated-functions.sh | 260 ++++++------
bin/misc-functions.sh | 61 ++-
bin/phase-functions.sh | 138 +++----
bin/phase-helpers.sh | 384 ++++++++++-------
bin/portageq | 14 +-
bin/save-ebuild-env.sh | 372 ++++++++++++-----
bin/{eapi7-ver-funcs.sh => version-functions.sh} | 47 ++-
cnf/make.globals | 2 +-
cnf/repos.conf | 1 +
doc/config/sets.docbook | 4 +
lib/_emerge/BinpkgExtractorAsync.py | 4 +-
lib/_emerge/EbuildFetcher.py | 9 +-
lib/_emerge/JobStatusDisplay.py | 6 -
lib/_emerge/MetadataRegen.py | 57 ++-
lib/_emerge/actions.py | 38 +-
lib/_emerge/depgraph.py | 6 +-
lib/_emerge/emergelog.py | 2 -
lib/_emerge/is_valid_package_atom.py | 2 +-
lib/_emerge/main.py | 6 +
lib/_emerge/post_emerge.py | 3 +
lib/_emerge/resolver/output.py | 4 -
lib/_emerge/resolver/output_helpers.py | 5 +-
lib/portage/__init__.py | 3 +-
lib/portage/const.py | 1 -
lib/portage/cvstree.py | 4 +-
lib/portage/dbapi/__init__.py | 2 +-
lib/portage/dbapi/bintree.py | 453 ++++++++++++---------
lib/portage/dbapi/porttree.py | 113 ++---
lib/portage/dbapi/vartree.py | 37 +-
lib/portage/dep/__init__.py | 155 +++----
lib/portage/eapi.py | 10 +-
lib/portage/elog/mod_save_summary.py | 5 -
lib/portage/getbinpkg.py | 6 +-
lib/portage/gpkg.py | 29 +-
lib/portage/output.py | 4 +
.../package/ebuild/_config/special_env_vars.py | 4 +-
.../ebuild/_parallel_manifest/ManifestScheduler.py | 65 ++-
.../ebuild/_parallel_manifest/ManifestTask.py | 9 +-
lib/portage/package/ebuild/config.py | 44 +-
lib/portage/package/ebuild/doebuild.py | 30 +-
lib/portage/package/ebuild/fetch.py | 4 +
lib/portage/process.py | 59 ++-
lib/portage/repository/config.py | 28 +-
lib/portage/sync/syncbase.py | 15 +-
lib/portage/tests/bin/meson.build | 2 +-
.../{test_eapi7_ver_funcs.py => test_ver_funcs.py} | 8 +-
lib/portage/tests/dbapi/test_bintree.py | 8 +-
lib/portage/tests/dep/test_atom.py | 11 +
lib/portage/tests/ebuild/test_ipc_daemon.py | 7 +-
lib/portage/tests/emerge/test_actions.py | 2 +-
lib/portage/tests/locks/test_asynchronous_lock.py | 9 -
lib/portage/tests/locks/test_lock_nonblock.py | 15 +-
lib/portage/tests/resolver/ResolverPlayground.py | 8 +-
.../futures/asyncio/test_event_loop_in_fork.py | 32 +-
.../tests/util/futures/asyncio/test_pipe_closed.py | 20 +-
.../futures/asyncio/test_run_until_complete.py | 37 +-
.../util/futures/asyncio/test_subprocess_exec.py | 18 +-
lib/portage/tests/util/futures/test_retry.py | 20 +-
lib/portage/util/__init__.py | 2 +-
lib/portage/util/_async/ForkProcess.py | 90 ++--
lib/portage/util/_urlopen.py | 18 +-
lib/portage/util/file_copy.py | 18 +-
lib/portage/util/meson.build | 2 +
lib/portage/util/movefile.py | 11 +-
lib/portage/util/portage_lru_cache.py | 42 ++
lib/portage/util/time.py | 15 +
lib/portage/versions.py | 18 +-
lib/portage/xml/metadata.py | 12 +-
man/ebuild.5 | 55 ++-
man/emerge.1 | 39 +-
man/make.conf.5 | 24 +-
man/portage.5 | 31 +-
meson.build | 2 +-
misc/emerge-delta-webrsync | 2 +-
pylintrc | 4 -
90 files changed, 2431 insertions(+), 1516 deletions(-)
diff --cc bin/emerge-webrsync
index 5007e1c498,cca63ebb35..0e65598da9
--- a/bin/emerge-webrsync
+++ b/bin/emerge-webrsync
@@@ -640,14 -645,9 +645,14 @@@ portage_vars=
https_proxy
)
- eval "$("${portageq}" envvar -v "${portage_vars[@]}")"
+ eval "$("${path_of[portageq]}" envvar -v "${portage_vars[@]}")"
export http_proxy https_proxy ftp_proxy
+# PREFIX LOCAL: use Prefix servers, just because we want this and infra
+# can't support us yet
+GENTOO_MIRRORS="http://rsync.prefix.bitzolder.nl"
+# END PREFIX LOCAL
+
source "${PORTAGE_BIN_PATH:?}"/isolated-functions.sh || exit
# The implementation of die() from isolated-functions.sh is over-engineered
and
diff --cc bin/phase-functions.sh
index 61123cd29d,98b2784c96..e4c94feb78
--- a/bin/phase-functions.sh
+++ b/bin/phase-functions.sh
@@@ -167,15 -165,18 +165,19 @@@ __filter_readonly_variables()
:
elif [[ "${EMERGE_FROM}" = binary ]]; then
# Preserve additional variables from build time, while
- # excluding untrusted variables.
- filtered_vars+=( "${binpkg_untrusted_vars[@]}" )
+ # excluding some variables that are untrusted, due to the
+ # possible application of package renames to binpkgs.
+ filtered_vars+=( CATEGORY PVR PF PN PR PV P )
else
- read -rd '' -a words <<<"${PORTAGE_SAVED_READONLY_VARS}
${PORTAGE_MUTABLE_FILTERED_VARS}"
- filtered_vars+=( "${words[@]}" )
+ # Allow for the option to have its full effect.
+ filtered_vars+=(
+ "${portage_mutable_filtered_vars[@]}"
+ "${portage_saved_readonly_vars[@]}"
+ )
fi
- "${PORTAGE_PYTHON:-/usr/bin/python}"
"${PORTAGE_BIN_PATH}"/filter-bash-environment.py "${filtered_vars[*]}" \
+ # PREFIX LOCAL: use Prefix Python fallback
+ "${PORTAGE_PYTHON:-@PREFIX_PORTAGE_PYTHON@}"
"${PORTAGE_BIN_PATH}"/filter-bash-environment.py "${filtered_vars[*]}" \
|| die "filter-bash-environment.py failed"
}
diff --cc bin/save-ebuild-env.sh
index 5d5d25bbd7,ace7e41f9c..ace7e41f9c
mode 100755,100644..100755
--- a/bin/save-ebuild-env.sh
+++ b/bin/save-ebuild-env.sh
diff --cc lib/portage/package/ebuild/_config/special_env_vars.py
index d7b4e29886,e4cfc727fc..a51dc54e4d
--- a/lib/portage/package/ebuild/_config/special_env_vars.py
+++ b/lib/portage/package/ebuild/_config/special_env_vars.py
@@@ -265,20 -264,8 +264,21 @@@ environ_filter = frozenset
"INFOPATH",
"MANPATH",
"USER",
+ # BEGIN PREFIX LOCAL
+ "HOST",
+ "GROUP",
+ "LOGNAME",
+ "MAIL",
+ "REMOTEHOST",
+ "SECURITYSESSIONID",
+ "TERMINFO",
+ "TERM_PROGRAM",
+ "TERM_PROGRAM_VERSION",
+ "VENDOR",
+ "__CF_USER_TEXT_ENCODING",
+ # END PREFIX LOCAL
# variables that break bash
+ "GLOBSORT",
"HISTFILE",
"POSIXLY_CORRECT",
# portage config variables and variables set directly by portage
diff --cc man/emerge.1
index dff2c8c539,03799b6266..118ff05c23
--- a/man/emerge.1
+++ b/man/emerge.1
@@@ -1441,12 -1432,28 +1432,34 @@@ add this to \fBmake.conf\fR(5)
Tools such as dispatch\-conf, cfg\-update, and etc\-update are also available
to aid in the merging of these files. They provide interactive merging and can
auto\-merge trivial changes.
+.LP
+When an offset prefix (\fBEPREFIX\fR) is active, all paths in
+\fBCONFIG_PROTECT\fR and \fBCONFIG_PROTECT_MASK\fR are prefixed with the
+offset by Portage before they are considered. Hence, these paths never
+contain the offset prefix, and the variables can be defined in
+offset-unaware locations, such as the profiles.
+ .SH "PORTAGE DEVELOPMENT FEATURES"
+ This section describes features that are of interest when developing
+ Portage. They allow for introspection, debugging, and performance
+ analysis. Portage provides no stability guarantee; any feature may
+ disappear in the future, and the output format may change without
+ prior notice.
+ .TP
+ .BR PORTAGE_SHOW_LRU_CACHE_INFO
+ If this environment variable is set, then Portage will display
+ statistics about its internal LRU caches.
+ .TP
+ .BR PORTAGE_SHOW_HTTP_TRACE
+ If this environment variable is set, then Portage will show
+ a trace of all HTTP request.
+ .TP
+ .BR PORTAGE_DO_NOT_EXPORT_PMS_VARS
+ If this environment variable is set, then Portage will not export PMS
+ variables regardless of the EAPI. The variables are still available
+ to ebuilds; however, they are not exported and therefore not available
+ to child processes of the ebuild. Since EAPI 9, Portage will never
+ export PMS variables. This setting allows testing EAPI < 9 ebuilds
+ with the new behavior.
.SH "REPORTING BUGS"
Please report any bugs you encounter through our website:
.LP