sys-apps/portage: Sync with Gentoo

It's from Gentoo commit 58243f1968d0b103fc87dbbccb79ebf4d6b7212f.
This commit is contained in:
Flatcar Buildbot 2024-07-01 07:18:25 +00:00 committed by Mathieu Tortuyaux
parent f2d0e0dc10
commit 6cd09d61e7
No known key found for this signature in database
GPG Key ID: AC5CCFB52545D9B8
7 changed files with 429 additions and 31 deletions

View File

@ -1,3 +1,4 @@
DIST portage-3.0.59.tar.bz2 1175098 BLAKE2B dbb8a22fd9417a74e60aa24ff064e9da5b4c54bd4936a0a1a4fdb0cd30d8568ca2424ef2a484883b538685a291a85009d942defdbb5cfa4e0072e9d977f238cd SHA512 8c86e0663327125e7cb36150d4aca1d7fcd2bf7ae25634ed916c2ee444809404aafb094adacacc0408509600f447d62d9c53e7bc25dd8c71c61e8758ac674638
DIST portage-3.0.61.tar.bz2 1178151 BLAKE2B bad3140735b12a18a3108e91cc88146fc5c64ad3e3e056707eec7629927f718483a3e1ccf09f74de510ee7733b4d856c3c53692a6cc0f5fc1a7babf88fd7f06b SHA512 1401392a7bd2bf18e698e82af25a39db2aa9d8d9e8d9c07dea11ba5d5c866d2d3f8a3eccc8568b081aeaf6f668466921c61f58adbdd9dd5ffd9cf632bff2bdbd
DIST portage-3.0.63.tar.bz2 1187961 BLAKE2B 10523150b0eabac97309004c57356c40fa94ebd59f8f76701ae63d13f9424b523ccee2a367174af3a52078d5d9e4338b94e144247f6709c2f7df4418c040b06f SHA512 323adc17254f92e58f22028dad12ebcaaafa25c82567c5d31cc9575c30e0d78224c8f9efe0fcbeee549b08b0797edffb4bbe9c6fbbd8943e3f9dcda25eedd699
DIST portage-3.0.64.tar.bz2 1187654 BLAKE2B 622cdda85315ab60ca3b1ae7cf1cb1fe479b69c945dafe14655030387d857ae89c0d8326b85fb3d3754ea95ecf2792ae60ba36f1ad9b18d1ac693fdabf9b235e SHA512 26a9fc9532aebd5965c6d62d78914d827ac48df100b5fc518934857881ca19b927e05b2cd9a2bb674b0e1bd5feff2058a083de9c8fb86af16efe8752325c7722
DIST portage-3.0.65.tar.bz2 1193321 BLAKE2B 4734b0a2b17cf0cdbd0bedac9efa6cecb5799460e1faa8b8ab137fa017e17d47d6d5da6382e75322f21d4be77a31acffbacd753c70b43b011613cc5a6332bc96 SHA512 c864bcb3bef11916128852a5f50b161d82529d7316ec970703a9ec948c46a51148419ef1dfde2906f72347dd41d0eebd49f5a1769a228d97145f5517c34dbff8

View File

@ -0,0 +1,89 @@
From 236a2c7081e2208c817f9a99f012bab0be3d70b2 Mon Sep 17 00:00:00 2001
From: Eli Schwartz <eschwartz93@gmail.com>
Date: Fri, 17 May 2024 01:52:53 -0400
Subject: [PATCH 1/2] install-qa-checks.d: suppress some gnulib implicit
configure declarations
These happen in tons of GNU packages because of using gnulib, which
pulls in macros that check for some functionality and spit out an
implicit function declaration error if they aren't supported, which is
*expected*.
Bug: https://bugs.gentoo.org/906027
Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
Closes: https://github.com/gentoo/portage/pull/1323
Signed-off-by: Sam James <sam@gentoo.org>
---
bin/install-qa-check.d/90config-impl-decl | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/bin/install-qa-check.d/90config-impl-decl b/bin/install-qa-check.d/90config-impl-decl
index 7969dff17..adea7d405 100644
--- a/bin/install-qa-check.d/90config-impl-decl
+++ b/bin/install-qa-check.d/90config-impl-decl
@@ -49,6 +49,15 @@ add_default_skips() {
res_ndestroy
statacl
)
+
+ QA_CONFIG_IMPL_DECL_SKIP+=(
+ # Available in c23, these gnulib checks are expected to fail
+ alignof
+ static_assert
+ unreachable
+ # also gnulib, but checks both linux/non-linux headers
+ MIN
+ )
}
find_log_targets() {
--
2.44.1
From e01d7fde23c4a0cc9f22e7b1ea28d3deff0331ae Mon Sep 17 00:00:00 2001
From: Eli Schwartz <eschwartz93@gmail.com>
Date: Tue, 21 May 2024 19:22:31 -0400
Subject: [PATCH 2/2] install-qa-checks.d: suppress some gnulib implicit decls
on musl
These happen in tons of GNU packages because of using gnulib's regex.m4
specifically, which pulls in a macro that checks for some functionality
and spit out many implicit function declaration errors if regex.h isn't
GNU's specifically.
The compile tests do fail either way, it's just very dirty in the logs.
Bug: https://bugs.gentoo.org/906027
Closes: https://github.com/gentoo/portage/pull/1327
Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
---
bin/install-qa-check.d/90config-impl-decl | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/bin/install-qa-check.d/90config-impl-decl b/bin/install-qa-check.d/90config-impl-decl
index adea7d405..8768c99c6 100644
--- a/bin/install-qa-check.d/90config-impl-decl
+++ b/bin/install-qa-check.d/90config-impl-decl
@@ -58,6 +58,18 @@ add_default_skips() {
# also gnulib, but checks both linux/non-linux headers
MIN
)
+ if [[ ${CHOST} = *musl* ]]; then
+ QA_CONFIG_IMPL_DECL_SKIP+=(
+ # gnulib checks for functions that aren't available on musl.
+
+ # regex.m4 always emits these warnings, but they are noisy to fix
+ # and the check will correctly fail due to missing macros anyway.
+ re_set_syntax
+ re_compile_pattern
+ re_search
+ re_match
+ )
+ fi
}
find_log_targets() {
--
2.44.1

View File

@ -0,0 +1,76 @@
https://github.com/gentoo/portage/commit/51f6ad158fc3de14df3f87d1242ff950b2189f05
From 51f6ad158fc3de14df3f87d1242ff950b2189f05 Mon Sep 17 00:00:00 2001
From: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca>
Date: Sat, 11 Mar 2023 12:27:23 -0500
Subject: [PATCH] estrip: Don't use splitdebug for .o files
As the process_ar comment explained, object files cannot be splitdebug.
Bug: https://bugs.gentoo.org/787623 ("www-client/firefox[clang]: .gnu_debuglink is busted when using LLD")
Fixes: 51579fb34c19 ("prepstrip: add support for elfutils strip")
Signed-off-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
Signed-off-by: Sam James <sam@gentoo.org>
--- a/bin/estrip
+++ b/bin/estrip
@@ -280,9 +280,6 @@ dedup_elf_debug() {
# Usage: save_elf_debug <src> <inode_debug> [splitdebug]
save_elf_debug() {
- ${FEATURES_splitdebug} || return 0
- ${PORTAGE_RESTRICT_splitdebug} && return 0
-
debug-print-function "${FUNCNAME}" "$@"
# NOTE: Debug files must be installed in
@@ -390,7 +387,7 @@ process_elf() {
if ${strip_this} ; then
# See if we can split & strip at the same time
- if [[ -n ${SPLIT_STRIP_FLAGS} ]] ; then
+ if ${splitdebug} && [[ -n ${SPLIT_STRIP_FLAGS} ]] ; then
local shortname="${x##*/}.debug"
local splitdebug="${tmpdir}/splitdebug/${shortname}.${BASHPID:-$(__bashpid)}"
@@ -401,7 +398,9 @@ process_elf() {
"${x}"
save_elf_debug "${x}" "${inode_link}_debug" "${splitdebug}"
else
- save_elf_debug "${x}" "${inode_link}_debug"
+ if ${splitdebug} ; then
+ save_elf_debug "${x}" "${inode_link}_debug"
+ fi
${already_stripped} || ${STRIP} ${strip_flags} "${x}"
fi
fi
@@ -431,7 +430,7 @@ process_ar() {
# There is no concept of splitdebug for objects not yet
# linked in (only for finally linked ELFs), so we have to
# retain the debug info in the archive itself.
- if ! ${FEATURES_splitdebug} || ${PORTAGE_RESTRICT_splitdebug} ; then
+ if ! ${splitdebug} ; then
${STRIP} -g "${x}" && ${RANLIB} "${x}"
fi
fi
@@ -542,6 +541,12 @@ do
set +o noglob
fi
+ if ${FEATURES_splitdebug} && ! ${PORTAGE_RESTRICT_splitdebug} ; then
+ splitdebug=true
+ else
+ splitdebug=false
+ fi
+
# In Prefix we are usually an unprivileged user, so we can't strip
# unwritable objects. Make them temporarily writable for the
# stripping.
@@ -564,6 +569,7 @@ do
${f} == *"SB shared object"* ]] ; then
process_elf "${x}" "${inode_link}" ${PORTAGE_STRIP_FLAGS}
elif [[ ${f} == *"SB relocatable"* ]] ; then
+ [[ ${x} == *.ko ]] || splitdebug=false
process_elf "${x}" "${inode_link}" ${SAFE_STRIP_FLAGS}
fi

View File

@ -108,6 +108,10 @@ PDEPEND="
)
"
PATCHES=(
"${FILESDIR}"/0001-install-qa-checks.d-suppress-some-gnulib-implicit-co.patch
)
pkg_pretend() {
local CONFIG_CHECK="~IPC_NS ~PID_NS ~NET_NS ~UTS_NS"

View File

@ -7,7 +7,7 @@ PYTHON_COMPAT=( pypy3 python3_{10..12} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
inherit meson linux-info multiprocessing python-r1 tmpfiles
inherit meson linux-info python-r1 tmpfiles
DESCRIPTION="The package management and distribution system for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
@ -35,6 +35,7 @@ RESTRICT="!test? ( test )"
# >=meson-1.2.1-r1 for bug #912051
BDEPEND="
${PYTHON_DEPS}
>=app-arch/tar-1.27
>=dev-build/meson-1.2.1-r1
|| (
>=dev-build/meson-1.3.0-r1
@ -43,15 +44,6 @@ BDEPEND="
$(python_gen_cond_dep '
dev-python/setuptools[${PYTHON_USEDEP}]
' python3_12)
test? (
dev-python/pytest-xdist[${PYTHON_USEDEP}]
dev-vcs/git
)
"
DEPEND="
${PYTHON_DEPS}
>=app-arch/tar-1.27
dev-lang/python-exec:2
>=sys-apps/sed-4.0.5
sys-devel/patch
!build? ( $(python_gen_impl_dep 'ssl(+)') )
@ -63,6 +55,10 @@ DEPEND="
~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).
@ -108,6 +104,11 @@ PDEPEND="
)
"
PATCHES=(
"${FILESDIR}"/${P}-clang-splitdebug.patch
"${FILESDIR}"/0001-install-qa-checks.d-suppress-some-gnulib-implicit-co.patch
)
pkg_pretend() {
local CONFIG_CHECK="~IPC_NS ~PID_NS ~NET_NS ~UTS_NS"
@ -164,9 +165,9 @@ src_compile() {
}
src_test() {
local -x PYTEST_ADDOPTS="-vv -ra -l -o console_output_style=count -n $(makeopts_jobs) --dist=worksteal"
python_foreach_impl meson_src_test --no-rebuild --verbose
local EPYTEST_XDIST=1
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
python_foreach_impl epytest
}
src_install() {

View File

@ -0,0 +1,242 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( pypy3 python3_{10..12} )
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 ~ia64 ~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 )"
# setuptools is still needed as a workaround for Python 3.12+ for now.
# https://github.com/mesonbuild/meson/issues/7702
#
# >=meson-1.2.1-r1 for bug #912051
BDEPEND="
${PYTHON_DEPS}
>=app-arch/tar-1.27
>=dev-build/meson-1.2.1-r1
|| (
>=dev-build/meson-1.3.0-r1
<dev-build/meson-1.3.0
)
$(python_gen_cond_dep '
dev-python/setuptools[${PYTHON_USEDEP}]
' python3_12)
>=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.0:0
>=sec-keys/openpgp-keys-gentoo-release-20230329
>=sys-apps/sed-4.0.5
rsync-verify? (
>=app-crypt/gnupg-2.2.4-r2[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
) )
!<app-admin/logrotate-3.8.0
!<app-portage/gentoolkit-0.4.6
!<app-portage/repoman-2.3.10
!~app-portage/repoman-3.0.0
"
# 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
)
"
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}}" \
"${PYTHON}" -m portage._compat_upgrade.default_locations || die
env -u BINPKG_COMPRESS -u PORTAGE_REPOSITORIES \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_compression || die
env -u FEATURES -u PORTAGE_REPOSITORIES \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
"${PYTHON}" -m portage._compat_upgrade.binpkg_multi_instance || die
env -u BINPKG_FORMAT \
PYTHONPATH="${D}${sitedir}${PYTHONPATH:+:${PYTHONPATH}}" \
"${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

@ -3,7 +3,7 @@
EAPI=7
PYTHON_COMPAT=( pypy3 python3_{10..12} )
PYTHON_COMPAT=( pypy3 python3_{10..13} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
TMPFILES_OPTIONAL=1
@ -29,21 +29,10 @@ IUSE="apidoc build doc gentoo-dev +ipc +native-extensions +rsync-verify selinux
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RESTRICT="!test? ( test )"
# setuptools is still needed as a workaround for Python 3.12+ for now.
# https://github.com/mesonbuild/meson/issues/7702
#
# >=meson-1.2.1-r1 for bug #912051
BDEPEND="
${PYTHON_DEPS}
>=app-arch/tar-1.27
>=dev-build/meson-1.2.1-r1
|| (
>=dev-build/meson-1.3.0-r1
<dev-build/meson-1.3.0
)
$(python_gen_cond_dep '
dev-python/setuptools[${PYTHON_USEDEP}]
' python3_12)
>=dev-build/meson-1.3.0-r1
>=sys-apps/sed-4.0.5
sys-devel/patch
!build? ( $(python_gen_impl_dep 'ssl(+)') )
@ -89,10 +78,6 @@ RDEPEND="
xattr? ( kernel_linux? (
>=sys-apps/install-xattr-0.3
) )
!<app-admin/logrotate-3.8.0
!<app-portage/gentoolkit-0.4.6
!<app-portage/repoman-2.3.10
!~app-portage/repoman-3.0.0
"
# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
# NOTE: FEATURES=installsources requires debugedit and rsync