sys-apps/portage: Sync with Gentoo

It's from Gentoo commit 494238302ed420a4f5ac9c217fd29e689f8a4e7b.

Signed-off-by: Flatcar Buildbot <buildbot@flatcar-linux.org>
This commit is contained in:
Flatcar Buildbot 2026-02-02 07:30:56 +00:00
parent ac695c22f6
commit e64812a8ab
14 changed files with 641 additions and 88 deletions

View File

@ -1,6 +1,7 @@
DIST portage-3.0.67.tar.bz2 1196776 BLAKE2B 4a9056d388b012a0fa343d6fc50c9c3b455cb3a4d356210accf86c4ff4434a2d8cb4d23c3f58f3e23ab8bb4a4e9ee244bd1ec1203d5f72fa6f0e0a2caa92e757 SHA512 e725a471dcadaac771aa7f910524232e237efbb944d3e175825ad659b5190d631a91d4c188089c278a79b4709d4a8d6a6e53c55524c4b1c8d1c43580506e0d1c
DIST portage-3.0.68.tar.bz2 1198758 BLAKE2B fbe3a14babbe5687d075c7e691027d04e7a34a35c3199c981e176bae365242e1dc7d4122f2d7a385444798b9413c415ca40801825a9dd9c99c3590efca8087e6 SHA512 4ed6d0945ad94ee19260996dd2ba9fa5e013560a50de887eb7e8df87a3649552316cbc62ee8ef9b4a025d9d98fb74e85ee7734b7a8fe7416450b8d6818fdcfab
DIST portage-3.0.69.3.tar.bz2 1207066 BLAKE2B 81786a02052cc8dac2e0dc1875c3e1dba37e84e32ad6620cddb5b4a2595ae4c924b9c222cfced9dbc0c7efdcac2efb2459f5b16cfa9d5df226aef7e27041e03b SHA512 7a71e98c6a2b76dfe6e38b96d34107e5fd26193b3116cc585ecb333129dc6995bde1db0fd7435435e737cd81b019b76e104b1e02b0dda93efd22f37b7defebe0
DIST portage-3.0.70.tar.bz2 1208010 BLAKE2B f927de1c536cdae2a63061e124d95919d08a8f0bce06d91290750caa0be5d8bf04314240e6e2a38968f4c6adb33e85a9716c314e806c3f2b7ac197763dae225c SHA512 182e6d4651487d6320ca767c0177b323e98a0a464d10e3b4ef13e10eea16006f5303cb2289144a9f076741a759ba7de648950e4be1d0d266ca9995fa2a36af1b
DIST portage-3.0.71.tar.bz2 1208040 BLAKE2B 65a163171f8ceda60eb88f81255d8452eb2d974bc3cb1230561e65e53cbc5fbc53e978096d3073cb0ddfd0e1670fdbc78af48626b04a9c26d77e610c1d20f135 SHA512 6a23cc7e90fc6912d8115755654cf1fe2a4dd4cb3f58901c8ab98189d21a75e372b712c299e3389fb3e684ac7b332f39be716cfdc208ba30101f19220f2be7b2
DIST portage-3.0.72.tar.bz2 1211406 BLAKE2B ccf702bc56bab905d6ec9b99175bb86be95709761d370afeeb8edf9aa563869d8d8c98256224a054697a996a7b97dc9a3dfc8e993760aeec13a0ac4705dc78c5 SHA512 c58f5216b3587e1cfcf1998e719f847e1ba1938b7aeb4fcd9fb4e22e1cba68a9e3b98125c1c1386fc03954fc90559d2647a3a00ae2ab4b74692ee6a1d81eea66
DIST portage-3.0.73.tar.bz2 1214430 BLAKE2B 2ef6a6e559570dc99b277874e52664d8f8b5be41882cee63e95f8bdf85d81ba9100c565b309144e6077d80d255a40904340af395b9cb3d1134e9c80a4420737d SHA512 e2f38ab22f1470ebe58f7dfcedebf72d4c104b0f17481f7a90b1c22c95042bc05eac913fdc334f509f8940c4a530f4f8d9ba606676f3193ac61d890303670ed8
DIST portage-3.0.74.tar.bz2 1219291 BLAKE2B f5e9ac4e916590a5f5492174c53749c7b7fadf017c364415410a450c62eb4544cba0adf93fa2bbe68c99d9e14d715bc4faabf1ca2d478a5fe0fac42ffbadec65 SHA512 7cb08313db3fa1e61a2d3d5440f603eeb46ee317e6a94c3d70104c60a23b9fac1f5e95be2b271abff47722df3132706e4c43db6bf7645ca5c7c7a9447954ef33
DIST portage-3.0.75.tar.bz2 1221419 BLAKE2B 79f9e5ac480015e863585873697ec71f18288ed654d8ebfd0af140c32ccb81a47a1449b68906f122550917941c42c886d74536d184942a42beeb456b655013a0 SHA512 da11557e6d472f4c3c8aa5dcc8a23d2fe08b16fe5772ddb07dab3ff6b5593d6c8f8c762bdcca0e3905fd252b747cead36d1a3fa2b381fc84a0c9b0b8adcc48bf
DIST portage-3.0.76.tar.bz2 1221999 BLAKE2B 7560d6d812d60c0ce38184f5d9f3f39504b79ded5673d88cf8e51c2b54d58b2ea7fdab69cbeb3964fb0981af204f329c9d353fac9c8958bd7f5795af445ce747 SHA512 4751d6bc230897783cdb84c17c9a2516b7a587e958abdc3ec7e5ee11773365e035b91db59edf3a49daba3ab377f573bd2e35b2f0f3a2ed2a2a1cf96eda63ad0a
DIST portage-3.0.77.tar.bz2 1222765 BLAKE2B 062b99059582caf323001b14e74d5ad762aeb4ece9750dcd548b4eddacabea60044dbb8006911c458c2550b7f1f86a5e91c5f0f67b37a3c839a1d7bac751376c SHA512 bae4d30d53473402a90c21923c71e81463e0f1afc1300f194d67b1af109eca71bd52ca82a1c17881871b9c30a64d584eb0392daab81b38c622cb2384afd195b7

View File

@ -0,0 +1,77 @@
From d7d6fd54f1c936e89c5e4467c6c1f33b217325ca Mon Sep 17 00:00:00 2001
Message-ID: <d7d6fd54f1c936e89c5e4467c6c1f33b217325ca.1766045192.git.sam@gentoo.org>
From: Sam James <sam@gentoo.org>
Date: Tue, 16 Dec 2025 09:36:27 +0000
Subject: [PATCH] bin: emerge, ebuild: don't define signal handlers in global
scope
This breaks when `emerge` is frozen. Do what we do in `egencache`. We
do need to use the same boilerplate in all bin/* though...
Bug: https://bugs.gentoo.org/941956
Bug: https://bugs.gentoo.org/967199
Signed-off-by: Sam James <sam@gentoo.org>
---
bin/ebuild | 10 +++++-----
bin/emerge | 10 +++++-----
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/bin/ebuild b/bin/ebuild
index 0c6369e016..3fc6e334cb 100755
--- a/bin/ebuild
+++ b/bin/ebuild
@@ -22,11 +22,6 @@ def debug_signal(_signum, _frame):
pdb.set_trace()
-# Prevent "[Errno 32] Broken pipe" exceptions when writing to a pipe.
-signal.signal(signal.SIGPIPE, signal.SIG_DFL)
-signal.signal(signal.SIGTERM, signal_interrupt)
-signal.signal(signal.SIGUSR1, debug_signal)
-
import argparse
from os import path as osp
import shlex
@@ -61,6 +56,11 @@ from _emerge.RootConfig import RootConfig
def main():
+ # Prevent "[Errno 32] Broken pipe" exceptions when writing to a pipe.
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+ signal.signal(signal.SIGTERM, signal_interrupt)
+ signal.signal(signal.SIGUSR1, debug_signal)
+
portage.process.sanitize_fds()
description = "See the ebuild(1) man page for more info"
usage = "Usage: ebuild <ebuild file> <command> [command] ..."
diff --git a/bin/emerge b/bin/emerge
index 9e5d59cb04..d4f50fa9a3 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -22,11 +22,6 @@ def debug_signal(_signum, _frame):
pdb.set_trace()
-# Prevent "[Errno 32] Broken pipe" exceptions when writing to a pipe.
-signal.signal(signal.SIGPIPE, signal.SIG_DFL)
-signal.signal(signal.SIGTERM, signal_interrupt)
-signal.signal(signal.SIGUSR1, debug_signal)
-
from os import path as osp
if osp.isfile(
@@ -46,6 +41,11 @@ from _emerge.main import emerge_main
def main():
+ # Prevent "[Errno 32] Broken pipe" exceptions when writing to a pipe.
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+ signal.signal(signal.SIGTERM, signal_interrupt)
+ signal.signal(signal.SIGUSR1, debug_signal)
+
portage.process.sanitize_fds()
try:
retval = emerge_main()
--
2.52.0

View File

@ -0,0 +1,59 @@
From cf604f442d2a2aebfbaab1c2d8419c7dada0de7a Mon Sep 17 00:00:00 2001
Message-ID: <cf604f442d2a2aebfbaab1c2d8419c7dada0de7a.1769013270.git.sam@gentoo.org>
From: Sam James <sam@gentoo.org>
Date: Wed, 21 Jan 2026 16:12:07 +0000
Subject: [PATCH] doebuild: fix unexported_env_vars chown call
With PORTAGE_USERNAME and PORTAGE_GRPNAME set, we try to chown a tmpdir
in /tmp to portage and fail:
```
Exception in callback EbuildMetadataPhase._async_start_done(<Task finishe...t permitted')>)
handle: <Handle EbuildMetadataPhase._async_start_done(<Task finishe...t permitted')>)>
Traceback (most recent call last):
File "/usr/lib/python3.12/asyncio/events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "/usr/lib/python3.12/site-packages/_emerge/EbuildMetadataPhase.py", line 162, in _async_start_done
future.cancelled() or future.result()
^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_emerge/EbuildMetadataPhase.py", line 129, in _async_start
retval = doebuild(
^^^^^^^^^
File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py", line 1117, in doebuild
return _spawn_phase(
^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py", line 309, in _spawn_phase
return _doebuild_spawn(
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py", line 292, in _doebuild_spawn
return spawn(cmd, settings, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/portage/package/ebuild/doebuild.py", line 2251, in spawn
os.chown(_emerge_tmpdir, -1, int(portage_gid))
PermissionError: [Errno 1] Operation not permitted: '/tmp/portage-tmpdir-717664-garvzxqz'
Sandboxed process killed by signal: Broken pipe
Sandboxed process killed by signal: Broken pipe
```
Use the Portage build gid instead.
Signed-off-by: Sam James <sam@gentoo.org>
---
lib/portage/package/ebuild/doebuild.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/portage/package/ebuild/doebuild.py b/lib/portage/package/ebuild/doebuild.py
index e55a56e7cb..c0c9f17db4 100644
--- a/lib/portage/package/ebuild/doebuild.py
+++ b/lib/portage/package/ebuild/doebuild.py
@@ -2248,7 +2248,7 @@ def spawn(
prefix=f"portage-tmpdir-{portage.getpid()}-"
)
os.chmod(_emerge_tmpdir, 0o1775)
- os.chown(_emerge_tmpdir, -1, int(portage_gid))
+ os.chown(_emerge_tmpdir, -1, int(portage_build_gid))
portage.process.atexit_register(shutil.rmtree, _emerge_tmpdir)
ebuild_extra_source_fd, ebuild_extra_source_path = tempfile.mkstemp(
prefix=f"portage-ebuild-extra-source-{phase}-",
--
2.52.0

View File

@ -1,55 +0,0 @@
https://gitweb.gentoo.org/proj/portage.git/commit/?id=c9a982117e07bbbfc4cd84fedc1c02623cf8e51e
From c9a982117e07bbbfc4cd84fedc1c02623cf8e51e Mon Sep 17 00:00:00 2001
From: Michał Górny <mgorny@gentoo.org>
Date: Thu, 10 Apr 2025 12:20:08 +0200
Subject: isolated-functions.sh: Output package in einfo during depend phase
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Output a banner containing the package name and version, When the einfo
family of functions is used during the depend phase. Before, these
messages would be printed out of context, requiring the caller to
explicitly include the package name.
The result is, for example:
```
Calculating dependencies \
Messages from dev-python/protobuf-4.23.3::gentoo:
* distutils_enable_tests setup.py is deprecated and will be removed.
* Please use unittest or pytest instead.
|
Messages from dev-python/protobuf-4.22.5::gentoo:
* distutils_enable_tests setup.py is deprecated and will be removed.
* Please use unittest or pytest instead.
-
```
Closes: https://github.com/gentoo/portage/pull/1433
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
bin/isolated-functions.sh | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh
index d4248366d..40d2132be 100644
--- a/bin/isolated-functions.sh
+++ b/bin/isolated-functions.sh
@@ -259,6 +259,13 @@ __vecho() {
# Internal logging function, don't use this in ebuilds
__elog_base() {
local messagetype
+ if [[ ${EBUILD_PHASE} == depend && -z ${__PORTAGE_ELOG_BANNER_OUTPUT} ]]; then
+ # in depend phase, we want to output a banner indicating which
+ # package emitted the message
+ echo >&2
+ echo "Messages for package ${PORTAGE_COLOR_INFO}${CATEGORY}/${PF}::${PORTAGE_REPO_NAME}${PORTAGE_COLOR_NORMAL}:" >&2
+ __PORTAGE_ELOG_BANNER_OUTPUT=1
+ fi
[[ -z "${1}" || -z "${T}" || ! -d "${T}/logging" ]] && return 1
case "${1}" in
INFO|WARN|ERROR|LOG|QA)
--
cgit v1.2.3-65-gdbad

View File

@ -16,7 +16,7 @@
</flag>
<flag name="rsync-verify">
Enable full-tree cryptographic verification of Gentoo repository
rsync checkouts using <pkg>app-portage/gemato</pkg>.
git or rsync checkouts using <pkg>app-portage/gemato</pkg>.
</flag>
<flag name="xattr">
Preserve extended attributes (filesystem-stored metadata)

View File

@ -4,7 +4,7 @@
EAPI=8
# py3.14: bug #957070
PYTHON_COMPAT=( pypy3_11 python3_{11..13} )
PYTHON_COMPAT=( python3_{12..13} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
@ -92,6 +92,7 @@ PDEPEND="
PATCHES=(
"${FILESDIR}"/0001-emerge-webrsync-restore-the-missing-option-arg-for-c.patch
"${FILESDIR}"/0001-bin-emerge-ebuild-don-t-define-signal-handlers-in-gl.patch
)
pkg_pretend() {

View File

@ -1,9 +1,9 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
PYTHON_COMPAT=( pypy3_11 python3_{11..13} )
PYTHON_COMPAT=( python3_{12..14} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
@ -67,7 +67,7 @@ RDEPEND="
>=sec-keys/openpgp-keys-gentoo-release-20240703
>=sys-apps/sed-4.0.5
rsync-verify? (
>=app-crypt/gnupg-2.2.4-r2[ssl(-)]
app-alternatives/gpg[ssl(-)]
>=app-portage/gemato-14.5[${PYTHON_USEDEP}]
)
)
@ -90,7 +90,7 @@ PDEPEND="
"
PATCHES=(
"${FILESDIR}"/${PN}-3.0.67-nicer-depend-phase-output.patch
"${FILESDIR}"/0001-bin-emerge-ebuild-don-t-define-signal-handlers-in-gl.patch
)
pkg_pretend() {

View File

@ -0,0 +1,235 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
inherit meson linux-info python-r1 tmpfiles
DESCRIPTION="The package management and distribution system for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="
https://anongit.gentoo.org/git/proj/portage.git
https://github.com/gentoo/portage.git
"
inherit git-r3
else
SRC_URI="https://gitweb.gentoo.org/proj/portage.git/snapshot/${P}.tar.bz2"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="apidoc build doc gentoo-dev +ipc +native-extensions +rsync-verify selinux test xattr"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RESTRICT="!test? ( test )"
BDEPEND="
${PYTHON_DEPS}
>=app-arch/tar-1.27
>=dev-build/meson-1.3.0-r1
>=sys-apps/sed-4.0.5
sys-devel/patch
!build? ( $(python_gen_impl_dep 'ssl(+)') )
apidoc? (
dev-python/sphinx[${PYTHON_USEDEP}]
dev-python/sphinx-epytext[${PYTHON_USEDEP}]
)
doc? (
~app-text/docbook-xml-dtd-4.4
app-text/xmlto
)
test? (
dev-python/pytest-xdist[${PYTHON_USEDEP}]
dev-vcs/git
)
"
# Require sandbox-2.2 for bug #288863.
# For whirlpool hash, require python[ssl] (bug #425046).
RDEPEND="
${PYTHON_DEPS}
acct-user/portage
>=app-arch/tar-1.27
app-arch/zstd
>=app-misc/pax-utils-0.1.17
dev-lang/python-exec:2
>=sys-apps/baselayout-2.9
>=sys-apps/findutils-4.9
!build? (
>=app-admin/eselect-1.2
app-portage/getuto
>=app-shells/bash-5.3:0
>=sec-keys/openpgp-keys-gentoo-release-20240703
>=sys-apps/sed-4.0.5
rsync-verify? (
app-alternatives/gpg[ssl(-)]
>=app-portage/gemato-14.5[${PYTHON_USEDEP}]
)
)
elibc_glibc? ( >=sys-apps/sandbox-2.2 )
elibc_musl? ( >=sys-apps/sandbox-2.2 )
kernel_linux? ( sys-apps/util-linux )
selinux? ( >=sys-libs/libselinux-2.0.94[python,${PYTHON_USEDEP}] )
xattr? ( kernel_linux? (
>=sys-apps/install-xattr-0.3
) )
"
# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
# NOTE: FEATURES=installsources requires debugedit and rsync
PDEPEND="
!build? (
>=net-misc/rsync-2.6.4
>=sys-apps/coreutils-6.4
>=sys-apps/file-5.44-r3
)
"
PATCHES=(
"${FILESDIR}"/0001-bin-emerge-ebuild-don-t-define-signal-handlers-in-gl.patch
)
pkg_pretend() {
local CONFIG_CHECK="~IPC_NS ~PID_NS ~NET_NS ~UTS_NS"
check_extra_config
}
src_prepare() {
default
if use prefix-guest; then
sed -e "s|^\(main-repo = \).*|\\1gentoo_prefix|" \
-e "s|^\\[gentoo\\]|[gentoo_prefix]|" \
-e "s|^\(sync-uri = \).*|\\1rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix|" \
-i cnf/repos.conf || die "sed failed"
fi
}
src_configure() {
local code_only=false
python_foreach_impl my_src_configure
}
my_src_configure() {
local emesonargs=(
-Dcode-only=${code_only}
-Deprefix="${EPREFIX}"
-Dportage-bindir="${EPREFIX}/usr/lib/portage/${EPYTHON}"
-Ddocdir="${EPREFIX}/usr/share/doc/${PF}"
$(meson_use doc)
$(meson_use apidoc)
$(meson_use gentoo-dev)
$(meson_use ipc)
$(meson_use xattr)
)
if use native-extensions && [[ "${EPYTHON}" != pypy3* ]] ; then
emesonargs+=( -Dnative-extensions=true )
else
emesonargs+=( -Dnative-extensions=false )
fi
if use build; then
emesonargs+=( -Drsync-verify=false )
else
emesonargs+=( $(meson_use rsync-verify) )
fi
meson_src_configure
code_only=true
}
src_compile() {
python_foreach_impl meson_src_compile
}
src_test() {
local EPYTEST_XDIST=1
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
python_foreach_impl epytest
}
src_install() {
python_foreach_impl my_src_install
dotmpfiles "${FILESDIR}"/portage-{ccache,tmpdir}.conf
local scripts
mapfile -t scripts < <(awk '/^#!.*python/ {print FILENAME} {nextfile}' "${ED}"/usr/{bin,sbin}/* || die)
python_replicate_script "${scripts[@]}"
}
my_src_install() {
local pydirs=(
"${D}$(python_get_sitedir)"
"${ED}/usr/lib/portage/${EPYTHON}"
)
meson_src_install
python_fix_shebang "${pydirs[@]}"
python_optimize "${pydirs[@]}"
}
pkg_preinst() {
if ! use build && [[ -z ${ROOT} ]]; then
python_setup
local sitedir=$(python_get_sitedir)
[[ -d ${D}${sitedir} ]] || die "${D}${sitedir}: No such directory"
env -u DISTDIR \
-u PORTAGE_OVERRIDE_EPREFIX \
-u PORTAGE_REPOSITORIES \
-u PORTDIR \
-u PORTDIR_OVERLAY \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
ED="${ED}" \
"${PYTHON}" -m portage._compat_upgrade.default_locations || die
env -u BINPKG_COMPRESS -u PORTAGE_REPOSITORIES \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
ED="${ED}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_compression || die
env -u FEATURES -u PORTAGE_REPOSITORIES \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
ED="${ED}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_multi_instance || die
env -u BINPKG_FORMAT \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
ED="${ED}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_format || die
fi
# elog dir must exist to avoid logrotate error for bug #415911.
# This code runs in preinst in order to bypass the mapping of
# portage:portage to root:root which happens after src_install.
keepdir /var/log/portage/elog
# This is allowed to fail if the user/group are invalid for prefix users.
if chown portage:portage "${ED}"/var/log/portage{,/elog} 2>/dev/null ; then
chmod g+s,ug+rwx "${ED}"/var/log/portage{,/elog}
fi
if has_version "<${CATEGORY}/${PN}-2.3.77"; then
elog "The emerge --autounmask option is now disabled by default, except for"
elog "portions of behavior which are controlled by the --autounmask-use and"
elog "--autounmask-license options. For backward compatibility, previous"
elog "behavior of --autounmask=y and --autounmask=n is entirely preserved."
elog "Users can get the old behavior simply by adding --autounmask to the"
elog "make.conf EMERGE_DEFAULT_OPTS variable. For the rationale for this"
elog "change, see https://bugs.gentoo.org/658648."
fi
}
pkg_postinst() {
# Warn about obsolete "enotice" script, bug #867010
local bashrc=${EROOT}/etc/portage/profile/profile.bashrc
if [[ -e ${bashrc} ]] && grep -q enotice "${bashrc}"; then
eerror "Obsolete 'enotice' script detected!"
eerror "Please remove this from ${bashrc} to avoid problems."
eerror "See bug 867010 for more details."
fi
}

View File

@ -1,9 +1,9 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
PYTHON_COMPAT=( python3_{12..14} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
@ -63,7 +63,7 @@ RDEPEND="
!build? (
>=app-admin/eselect-1.2
app-portage/getuto
>=app-shells/bash-5.0:0
>=app-shells/bash-5.3:0
>=sec-keys/openpgp-keys-gentoo-release-20240703
>=sys-apps/sed-4.0.5
rsync-verify? (

View File

@ -1,9 +1,9 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
PYTHON_COMPAT=( python3_{12..14} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
@ -53,7 +53,7 @@ BDEPEND="
# For whirlpool hash, require python[ssl] (bug #425046).
RDEPEND="
${PYTHON_DEPS}
acct-user/portage
>=acct-user/portage-0-r4
>=app-arch/tar-1.27
app-arch/zstd
>=app-misc/pax-utils-0.1.17
@ -63,7 +63,7 @@ RDEPEND="
!build? (
>=app-admin/eselect-1.2
app-portage/getuto
>=app-shells/bash-5.0:0
>=app-shells/bash-5.3:0
>=sec-keys/openpgp-keys-gentoo-release-20240703
>=sys-apps/sed-4.0.5
rsync-verify? (

View File

@ -0,0 +1,235 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{12..14} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
inherit meson linux-info python-r1 tmpfiles
DESCRIPTION="The package management and distribution system for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
if [[ ${PV} == 9999 ]] ; then
EGIT_REPO_URI="
https://anongit.gentoo.org/git/proj/portage.git
https://github.com/gentoo/portage.git
"
inherit git-r3
else
SRC_URI="https://gitweb.gentoo.org/proj/portage.git/snapshot/${P}.tar.bz2"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="apidoc build doc gentoo-dev +ipc +native-extensions +rsync-verify selinux test xattr"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RESTRICT="!test? ( test )"
BDEPEND="
${PYTHON_DEPS}
>=app-arch/tar-1.27
>=dev-build/meson-1.3.0-r1
>=sys-apps/sed-4.0.5
sys-devel/patch
!build? ( $(python_gen_impl_dep 'ssl(+)') )
apidoc? (
dev-python/sphinx[${PYTHON_USEDEP}]
dev-python/sphinx-epytext[${PYTHON_USEDEP}]
)
doc? (
~app-text/docbook-xml-dtd-4.4
app-text/xmlto
)
test? (
dev-python/pytest-xdist[${PYTHON_USEDEP}]
dev-vcs/git
)
"
# Require sandbox-2.2 for bug #288863.
# For whirlpool hash, require python[ssl] (bug #425046).
RDEPEND="
${PYTHON_DEPS}
>=acct-user/portage-0-r4
>=app-arch/tar-1.27
app-arch/zstd
>=app-misc/pax-utils-0.1.17
dev-lang/python-exec:2
>=sys-apps/baselayout-2.9
>=sys-apps/findutils-4.9
!build? (
>=app-admin/eselect-1.2
app-portage/getuto
>=app-shells/bash-5.3:0
>=sec-keys/openpgp-keys-gentoo-release-20240703
>=sys-apps/sed-4.0.5
rsync-verify? (
app-alternatives/gpg[ssl(-)]
>=app-portage/gemato-14.5[${PYTHON_USEDEP}]
)
)
elibc_glibc? ( >=sys-apps/sandbox-2.2 )
elibc_musl? ( >=sys-apps/sandbox-2.2 )
kernel_linux? ( sys-apps/util-linux )
selinux? ( >=sys-libs/libselinux-2.0.94[python,${PYTHON_USEDEP}] )
xattr? ( kernel_linux? (
>=sys-apps/install-xattr-0.3
) )
"
# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
# NOTE: FEATURES=installsources requires debugedit and rsync
PDEPEND="
!build? (
>=net-misc/rsync-2.6.4
>=sys-apps/coreutils-6.4
>=sys-apps/file-5.44-r3
)
"
PATCHES=(
"${FILESDIR}"/0001-doebuild-fix-unexported_env_vars-chown-call.patch
)
pkg_pretend() {
local CONFIG_CHECK="~IPC_NS ~PID_NS ~NET_NS ~UTS_NS"
check_extra_config
}
src_prepare() {
default
if use prefix-guest; then
sed -e "s|^\(main-repo = \).*|\\1gentoo_prefix|" \
-e "s|^\\[gentoo\\]|[gentoo_prefix]|" \
-e "s|^\(sync-uri = \).*|\\1rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix|" \
-i cnf/repos.conf || die "sed failed"
fi
}
src_configure() {
local code_only=false
python_foreach_impl my_src_configure
}
my_src_configure() {
local emesonargs=(
-Dcode-only=${code_only}
-Deprefix="${EPREFIX}"
-Dportage-bindir="${EPREFIX}/usr/lib/portage/${EPYTHON}"
-Ddocdir="${EPREFIX}/usr/share/doc/${PF}"
$(meson_use doc)
$(meson_use apidoc)
$(meson_use gentoo-dev)
$(meson_use ipc)
$(meson_use xattr)
)
if use native-extensions && [[ "${EPYTHON}" != pypy3* ]] ; then
emesonargs+=( -Dnative-extensions=true )
else
emesonargs+=( -Dnative-extensions=false )
fi
if use build; then
emesonargs+=( -Drsync-verify=false )
else
emesonargs+=( $(meson_use rsync-verify) )
fi
meson_src_configure
code_only=true
}
src_compile() {
python_foreach_impl meson_src_compile
}
src_test() {
local EPYTEST_XDIST=1
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
python_foreach_impl epytest
}
src_install() {
python_foreach_impl my_src_install
dotmpfiles "${FILESDIR}"/portage-{ccache,tmpdir}.conf
local scripts
mapfile -t scripts < <(awk '/^#!.*python/ {print FILENAME} {nextfile}' "${ED}"/usr/{bin,sbin}/* || die)
python_replicate_script "${scripts[@]}"
}
my_src_install() {
local pydirs=(
"${D}$(python_get_sitedir)"
"${ED}/usr/lib/portage/${EPYTHON}"
)
meson_src_install
python_fix_shebang "${pydirs[@]}"
python_optimize "${pydirs[@]}"
}
pkg_preinst() {
if ! use build && [[ -z ${ROOT} ]]; then
python_setup
local sitedir=$(python_get_sitedir)
[[ -d ${D}${sitedir} ]] || die "${D}${sitedir}: No such directory"
env -u DISTDIR \
-u PORTAGE_OVERRIDE_EPREFIX \
-u PORTAGE_REPOSITORIES \
-u PORTDIR \
-u PORTDIR_OVERLAY \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
ED="${ED}" \
"${PYTHON}" -m portage._compat_upgrade.default_locations || die
env -u BINPKG_COMPRESS -u PORTAGE_REPOSITORIES \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
ED="${ED}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_compression || die
env -u FEATURES -u PORTAGE_REPOSITORIES \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
ED="${ED}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_multi_instance || die
env -u BINPKG_FORMAT \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
ED="${ED}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_format || die
fi
# elog dir must exist to avoid logrotate error for bug #415911.
# This code runs in preinst in order to bypass the mapping of
# portage:portage to root:root which happens after src_install.
keepdir /var/log/portage/elog
# This is allowed to fail if the user/group are invalid for prefix users.
if chown portage:portage "${ED}"/var/log/portage{,/elog} 2>/dev/null ; then
chmod g+s,ug+rwx "${ED}"/var/log/portage{,/elog}
fi
if has_version "<${CATEGORY}/${PN}-2.3.77"; then
elog "The emerge --autounmask option is now disabled by default, except for"
elog "portions of behavior which are controlled by the --autounmask-use and"
elog "--autounmask-license options. For backward compatibility, previous"
elog "behavior of --autounmask=y and --autounmask=n is entirely preserved."
elog "Users can get the old behavior simply by adding --autounmask to the"
elog "make.conf EMERGE_DEFAULT_OPTS variable. For the rationale for this"
elog "change, see https://bugs.gentoo.org/658648."
fi
}
pkg_postinst() {
# Warn about obsolete "enotice" script, bug #867010
local bashrc=${EROOT}/etc/portage/profile/profile.bashrc
if [[ -e ${bashrc} ]] && grep -q enotice "${bashrc}"; then
eerror "Obsolete 'enotice' script detected!"
eerror "Please remove this from ${bashrc} to avoid problems."
eerror "See bug 867010 for more details."
fi
}

View File

@ -1,9 +1,9 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
PYTHON_COMPAT=( python3_{12..14} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
@ -53,7 +53,7 @@ BDEPEND="
# For whirlpool hash, require python[ssl] (bug #425046).
RDEPEND="
${PYTHON_DEPS}
acct-user/portage
>=acct-user/portage-0-r4
>=app-arch/tar-1.27
app-arch/zstd
>=app-misc/pax-utils-0.1.17
@ -63,7 +63,7 @@ RDEPEND="
!build? (
>=app-admin/eselect-1.2
app-portage/getuto
>=app-shells/bash-5.0:0
>=app-shells/bash-5.3:0
>=sec-keys/openpgp-keys-gentoo-release-20240703
>=sys-apps/sed-4.0.5
rsync-verify? (

View File

@ -1,9 +1,9 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
PYTHON_COMPAT=( pypy3_11 python3_{11..13} )
PYTHON_COMPAT=( python3_{12..14} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
@ -20,7 +20,7 @@ if [[ ${PV} == 9999 ]] ; then
inherit git-r3
else
SRC_URI="https://gitweb.gentoo.org/proj/portage.git/snapshot/${P}.tar.bz2"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
fi
LICENSE="GPL-2"
@ -53,7 +53,7 @@ BDEPEND="
# For whirlpool hash, require python[ssl] (bug #425046).
RDEPEND="
${PYTHON_DEPS}
acct-user/portage
>=acct-user/portage-0-r4
>=app-arch/tar-1.27
app-arch/zstd
>=app-misc/pax-utils-0.1.17
@ -63,11 +63,11 @@ RDEPEND="
!build? (
>=app-admin/eselect-1.2
app-portage/getuto
>=app-shells/bash-5.0:0
>=app-shells/bash-5.3:0
>=sec-keys/openpgp-keys-gentoo-release-20240703
>=sys-apps/sed-4.0.5
rsync-verify? (
>=app-crypt/gnupg-2.2.4-r2[ssl(-)]
app-alternatives/gpg[ssl(-)]
>=app-portage/gemato-14.5[${PYTHON_USEDEP}]
)
)

View File

@ -1,9 +1,9 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
PYTHON_COMPAT=( python3_{12..14} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
@ -53,7 +53,7 @@ BDEPEND="
# For whirlpool hash, require python[ssl] (bug #425046).
RDEPEND="
${PYTHON_DEPS}
acct-user/portage
>=acct-user/portage-0-r4
>=app-arch/tar-1.27
app-arch/zstd
>=app-misc/pax-utils-0.1.17
@ -63,7 +63,7 @@ RDEPEND="
!build? (
>=app-admin/eselect-1.2
app-portage/getuto
>=app-shells/bash-5.0:0
>=app-shells/bash-5.3:0
>=sec-keys/openpgp-keys-gentoo-release-20240703
>=sys-apps/sed-4.0.5
rsync-verify? (