mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-09 22:16:58 +02:00
sys-apps/portage: Sync with Gentoo
It's from Gentoo commit 41f0306b7fb35e36b220c11532f4258b2c541818.
This commit is contained in:
parent
3bc9cb8aab
commit
00ebbc36cf
@ -1,6 +1,2 @@
|
||||
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
|
||||
DIST portage-3.0.66.1.tar.bz2 1198196 BLAKE2B 8dbd1bc17c1a9a3530425efa31a27efba39e1ef5f5457b4084875c64f7128453139aea447c25a642c124438e88ef484a43b1838cbd8c03748017571dd18f9921 SHA512 fcd3d4d3dcfdb67cbcdb0f4854860f073b4a9d41dadc97a3e6f890e3c75091aceec5622e97495741622b5c390309f05dec35b9e951d7ee7a78e28a9b3ed2939d
|
||||
DIST portage-3.0.66.tar.bz2 1198148 BLAKE2B 77012739f18dfbbf088533fc9ccb64fe870d849ef6dadfdd92855d16fbca5eec08b065f94067898016787c03fd1b338dbe06192d56a97f2ad62681bda37c3be8 SHA512 0b182a2078c1c2b7d2e7148834dd6f2b2ae09bf4c91454e0cae908406abd9ad221a46738869ead17c5595c988bb2c11c462ba29ffb022389b1f2e824f093c853
|
||||
|
@ -1,89 +0,0 @@
|
||||
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
|
||||
|
@ -1,76 +0,0 @@
|
||||
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
|
||||
|
||||
|
@ -1,246 +0,0 @@
|
||||
# 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 multiprocessing 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 )"
|
||||
|
||||
# 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}
|
||||
>=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)
|
||||
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(+)') )
|
||||
apidoc? (
|
||||
dev-python/sphinx[${PYTHON_USEDEP}]
|
||||
dev-python/sphinx-epytext[${PYTHON_USEDEP}]
|
||||
)
|
||||
doc? (
|
||||
~app-text/docbook-xml-dtd-4.4
|
||||
app-text/xmlto
|
||||
)
|
||||
"
|
||||
# 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-20240703
|
||||
>=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 -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
|
||||
}
|
||||
|
||||
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
|
||||
}
|
@ -1,250 +0,0 @@
|
||||
# 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 multiprocessing 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 )"
|
||||
|
||||
# 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}
|
||||
>=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)
|
||||
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(+)') )
|
||||
apidoc? (
|
||||
dev-python/sphinx[${PYTHON_USEDEP}]
|
||||
dev-python/sphinx-epytext[${PYTHON_USEDEP}]
|
||||
)
|
||||
doc? (
|
||||
~app-text/docbook-xml-dtd-4.4
|
||||
app-text/xmlto
|
||||
)
|
||||
"
|
||||
# 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-20240703
|
||||
>=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
|
||||
)
|
||||
"
|
||||
|
||||
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"
|
||||
|
||||
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 -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
|
||||
}
|
||||
|
||||
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
|
||||
}
|
@ -1,247 +0,0 @@
|
||||
# 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 ~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-20240703
|
||||
>=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
|
||||
)
|
||||
"
|
||||
|
||||
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"
|
||||
|
||||
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
|
||||
}
|
@ -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"
|
||||
|
@ -1,227 +0,0 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
PYTHON_COMPAT=( pypy3 python3_{10..13} )
|
||||
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.0: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-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
|
||||
)
|
||||
"
|
||||
|
||||
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
|
||||
}
|
@ -1,227 +0,0 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
PYTHON_COMPAT=( pypy3 python3_{10..13} )
|
||||
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.0: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-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
|
||||
)
|
||||
"
|
||||
|
||||
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
|
||||
}
|
Loading…
Reference in New Issue
Block a user