summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2024-02-22 08:54:45 +0100
committerFabian Groffen <grobian@gentoo.org>2024-02-22 08:54:45 +0100
commit468f5ff8c93f28533ca890a29998b4a6941b179c (patch)
treedd4e58506c30324219b5ff701b761e8b8627c19a /sys-apps
parentscripts/bootstrap-prefix: bump snapshot (diff)
downloadprefix-468f5ff8c93f28533ca890a29998b4a6941b179c.tar.gz
prefix-468f5ff8c93f28533ca890a29998b4a6941b179c.tar.bz2
prefix-468f5ff8c93f28533ca890a29998b4a6941b179c.zip
sys-apps/portage-3.0.62: version bump
Closes: https://bugs.gentoo.org/923644 Signed-off-by: Fabian Groffen <grobian@gentoo.org>
Diffstat (limited to 'sys-apps')
-rw-r--r--sys-apps/portage/Manifest2
-rw-r--r--sys-apps/portage/files/portage-2.3.62-prefix-stack.patch80
-rw-r--r--sys-apps/portage/portage-3.0.34.2.ebuild311
-rw-r--r--sys-apps/portage/portage-3.0.62.ebuild302
4 files changed, 303 insertions, 392 deletions
diff --git a/sys-apps/portage/Manifest b/sys-apps/portage/Manifest
index dbd547b19e..529b7d9c4f 100644
--- a/sys-apps/portage/Manifest
+++ b/sys-apps/portage/Manifest
@@ -1,3 +1,3 @@
-DIST prefix-portage-3.0.34.2.tar.bz2 1498499 BLAKE2B 47f53e4917bdf204eb23dadd9dc821c06da07d2e5c68cf0a3de908089e4121d45542e2120e57744db1c808a156595624915956e77f547ab671b1584b2c67cf0b SHA512 121dd885a73153e780e28c2e514d4b3babc44368aa6915b2009ed0b205051c2f6c37dd3ccfe8be5ea567e7bab2f9f9b0c5c5b81c49990fbac7360261721a5bb7
DIST prefix-portage-3.0.49.tar.bz2 1421955 BLAKE2B ac6e5b512f943826d0bf06225037885a138f3810db973a60c6dbca4f80d516e3aef3054b532f42a143b35702661a3d35ee59945f745b849dcd6fefbd4ff8f3cc SHA512 dee0035e048b1bfde5859b809bf6ffa3ca0674cd1d59d9cfcc14a279d87215223a6b4497274db7e443f27fd6dd05eadb043ae6872feb8fa8523994d9946b6879
DIST prefix-portage-3.0.56.tar.bz2 1461156 BLAKE2B 2b654c65c5b1e358789774f21e6ee0c6e0dfba0d3d7ca6159f89a6c3d99686f52bbcbace08456d679a4dce62e16547f8b3f85723924e41f0270c644fed16d32c SHA512 10fcf17813dcdf216ac2d31aac9097ca53f4b31a01440c48d53b6d46908fa1c47a31237988b5e583cb7cc26bb8689340f5cf7dc3db0f10e463ed8f6ab375de61
+DIST prefix-portage-3.0.62.tar.bz2 1540010 BLAKE2B 5228459672b9928881fcce58b01c30af4974cf56c5227f6b9a83ae14579821a65b5914a2c538ce3a2e6805a2abde226fb4a9c6b8fb4c8035a5b8a931e813e5b9 SHA512 07bb343c243ada777dd606318b49fb76b436c189d02f086ce069d6a1dbb4ce9fe5539b26c8bb0bb223ea981acaa92397ec43b21a669a8fcea89b4f4fc94d0b1d
diff --git a/sys-apps/portage/files/portage-2.3.62-prefix-stack.patch b/sys-apps/portage/files/portage-2.3.62-prefix-stack.patch
deleted file mode 100644
index b0bdf2a20e..0000000000
--- a/sys-apps/portage/files/portage-2.3.62-prefix-stack.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 1fe30e79c368ce71e024d70c3ec07a6aed3ef262 Mon Sep 17 00:00:00 2001
-From: Michael Haubenwallner <haubi@gentoo.org>
-Date: Fri, 22 Mar 2019 17:52:05 +0100
-Subject: [PATCH] from FEATURES=stacked-prefix to USE=prefix-stack
-
-Rather than telling the base prefix' portage to support stacked prefix,
-be explicit in the stacked prefix about to USE that feature.
-Bug: https://bugs.gentoo.org/658572
----
- bin/install-qa-check.d/05prefix | 10 +++-------
- bin/phase-helpers.sh | 12 ++++--------
- lib/portage/const.py | 1 -
- 3 files changed, 7 insertions(+), 16 deletions(-)
-
-diff --git a/bin/install-qa-check.d/05prefix b/bin/install-qa-check.d/05prefix
-index 03da3bbce..4f48e4216 100644
---- a/bin/install-qa-check.d/05prefix
-+++ b/bin/install-qa-check.d/05prefix
-@@ -36,16 +36,12 @@ install_qa_check_prefix() {
- local WHITELIST=" /usr/bin/env "
- # shebang can be an absolutised path, bug #342929
- local eprefix=$(canonicalize ${EPREFIX})
-- # Without the stacked-prefix feature, tests using BPREFIX
-- # are redundant to EPREFIX, but run only if we will fail.
-+ # Without USE=prefix-stack, tests using BPREFIX are
-+ # redundant to EPREFIX, but run only if we will fail.
- # Otherways, BPREFIX really is BROOT (the EAPI 7 one).
- local BPREFIX=${EPREFIX}
- local bprefix=${eprefix}
-- if has stacked-prefix ${FEATURES} &&
-- [[ -z ${ROOT%/} ]] &&
-- [[ ${CBUILD} == ${CHOST} ]] &&
-- [[ ${EPREFIX} != ${BROOT-${PORTAGE_OVERRIDE_EPREFIX}} ]] &&
-- :; then
-+ if has prefix-stack ${USE} ; then
- BPREFIX=${BROOT-${PORTAGE_OVERRIDE_EPREFIX}}
- bprefix=$(canonicalize ${BPREFIX})
- fi
-diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh
-index 606b1cdfd..c64f1106b 100644
---- a/bin/phase-helpers.sh
-+++ b/bin/phase-helpers.sh
-@@ -932,18 +932,14 @@ ___best_version_and_has_version_common() {
- fi ;;
- esac
-
-- # PREFIX LOCAL: stacked-prefix feature
-+ # PREFIX LOCAL: prefix-stack feature
- if ___eapi_has_prefix_variables &&
- has "${root_arg}" '--host-root' '-b' &&
-- has stacked-prefix ${FEATURES} &&
-+ has prefix-stack ${USE} &&
- [[ -z ${ROOT%/} ]] &&
-- [[ ${CBUILD} == ${CHOST} ]] &&
-- [[ ${EPREFIX} != ${BROOT-${PORTAGE_OVERRIDE_EPREFIX}} ]] &&
- :; then
-- # When we merge into another EPREFIX, but not into some ROOT,
-- # and CHOST is equal to CBUILD, build tools found in EPREFIX
-- # perfectly work for the current build environment.
-- # In a "stacked prefix" we explicitly utilize this situation.
-+ # When we merge into "stacked" EPREFIX, but not into some ROOT, build
-+ # tools found in EPREFIX perfectly work for current build environment.
- "${FUNCNAME[1]}" "${atom}" && return 0
- fi
- # END PREFIX LOCAL
-diff --git a/lib/portage/const.py b/lib/portage/const.py
-index eddce377d..db02cbc56 100644
---- a/lib/portage/const.py
-+++ b/lib/portage/const.py
-@@ -207,7 +207,6 @@ SUPPORTED_FEATURES = frozenset([
- "splitdebug",
- "split-elog",
- "split-log",
-- "stacked-prefix", # PREFIX LOCAL
- "strict",
- "strict-keepdir",
- "stricter",
---
-2.19.2
-
diff --git a/sys-apps/portage/portage-3.0.34.2.ebuild b/sys-apps/portage/portage-3.0.34.2.ebuild
deleted file mode 100644
index 148d1f4259..0000000000
--- a/sys-apps/portage/portage-3.0.34.2.ebuild
+++ /dev/null
@@ -1,311 +0,0 @@
-# Copyright 1999-2022 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( pypy3 python3_{9..11} )
-PYTHON_REQ_USE='bzip2(+),threads(+)'
-TMPFILES_OPTIONAL=1
-
-inherit distutils-r1 linux-info toolchain-funcs tmpfiles prefix
-
-DESCRIPTION="The package management system for Gentoo Prefix"
-HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
-SRC_URI="https://dev.gentoo.org/~grobian/distfiles/prefix-${P}.tar.bz2"
-
-LICENSE="GPL-2"
-KEYWORDS="~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
-SLOT="0"
-IUSE="apidoc build doc gentoo-dev +ipc +native-extensions rsync-verify selinux test xattr"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
- app-arch/xz-utils
- test? ( dev-vcs/git )"
-DEPEND="!build? ( $(python_gen_impl_dep 'ssl(+)') )
- >=app-arch/tar-1.27
- dev-lang/python-exec:2
- >=sys-apps/sed-4.0.5 sys-devel/patch
- doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 )
- apidoc? (
- dev-python/sphinx[${PYTHON_USEDEP}]
- dev-python/sphinx-epytext[${PYTHON_USEDEP}]
- )"
-# Require sandbox-2.2 for bug #288863.
-# For whirlpool hash, require python[ssl] (bug #425046).
-# For compgen, require bash[readline] (bug #445576).
-# app-portage/gemato goes without PYTHON_USEDEP since we're calling
-# the executable.
-RDEPEND="
- !prefix? ( acct-user/portage )
- app-arch/zstd
- >=app-arch/tar-1.27
- dev-lang/python-exec:2
- >=sys-apps/findutils-4.4
- !build? (
- >=sys-apps/sed-4.0.5
- >=app-shells/bash-5.0:0[readline]
- >=app-admin/eselect-1.2
- rsync-verify? (
- >=app-portage/gemato-14.5[${PYTHON_USEDEP}]
- >=sec-keys/openpgp-keys-gentoo-release-20180706
- >=app-crypt/gnupg-2.2.4-r2[ssl(-)]
- )
- )
- elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
- elibc_musl? ( >=sys-apps/sandbox-2.2 )
- kernel_linux? ( sys-apps/util-linux )
- >=app-misc/pax-utils-0.1.18
- 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"
-PDEPEND="
- !build? (
- >=net-misc/rsync-2.6.4
- >=sys-apps/file-5.41
- >=sys-apps/coreutils-6.4
- )"
-# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
-# NOTE: FEATURES=installsources requires debugedit and rsync
-
-S="${WORKDIR}"/prefix-${P}
-
-pkg_pretend() {
- local CONFIG_CHECK="~IPC_NS ~PID_NS ~NET_NS ~UTS_NS"
-
- if use native-extensions && tc-is-cross-compiler; then
- einfo "Disabling USE=native-extensions for cross-compilation (bug #612158)"
- fi
-
- check_extra_config
-}
-
-python_prepare_all() {
- local PATCHES=(
- # dropped in 3.0.34: is there anyone but haubi using this?
- # "${FILESDIR}"/${PN}-3.0.30-prefix-stack.patch # 658572
- # disabled in 3.0.24: does not apply, while useful, rarely used if ever
- # "${FILESDIR}"/${PN}-3.0.30-ebuildshell.patch # 155161
- "${FILESDIR}"/${PN}-3.0.30-interrevisions.patch # 832062
- )
-
- distutils-r1_python_prepare_all
-
- sed -e "s:^VERSION = \"HEAD\"$:VERSION = \"${PV}\":" -i lib/portage/__init__.py || die
-
- if use gentoo-dev; then
- einfo "Disabling --dynamic-deps by default for gentoo-dev..."
- sed -e 's:\("--dynamic-deps", \)\("y"\):\1"n":' \
- -i lib/_emerge/create_depgraph_params.py || \
- die "failed to patch create_depgraph_params.py"
-
- einfo "Enabling additional FEATURES for gentoo-dev..."
- echo 'FEATURES="${FEATURES} ipc-sandbox network-sandbox strict-keepdir"' \
- >> cnf/make.globals || die
- fi
-
- if use native-extensions && ! tc-is-cross-compiler; then
- printf "[build_ext]\nportage_ext_modules=true\n" >> \
- setup.cfg || die
- fi
-
- if ! use ipc ; then
- einfo "Disabling ipc..."
- sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
- -i lib/_emerge/AbstractEbuildProcess.py || \
- die "failed to patch AbstractEbuildProcess.py"
- fi
-
- if use xattr && use kernel_linux ; then
- einfo "Adding FEATURES=xattr to make.globals ..."
- echo -e '\nFEATURES="${FEATURES} xattr"' >> cnf/make.globals \
- || die "failed to append to make.globals"
- fi
-
- if use build || ! use rsync-verify; then
- sed -e '/^sync-rsync-verify-metamanifest/s|yes|no|' \
- -e '/^sync-webrsync-verify-signature/s|yes|no|' \
- -i cnf/repos.conf || die "sed failed"
- fi
-
- if [[ -n ${EPREFIX} ]] ; then
- # PREFIX LOCAL: only hack const_autotool
- local extrapath="/usr/sbin:/usr/bin:/sbin:/bin"
- # ok, we can't rely on PORTAGE_ROOT_USER being there yet, as people
- # tend not to update that often, as long as we are a separate ebuild
- # we can assume when unset, it's time for some older trick
- if [[ -z ${PORTAGE_ROOT_USER} ]] ; then
- PORTAGE_ROOT_USER=$(python -c 'from portage.const import rootuser; print rootuser')
- fi
- # We need to probe for bash in the Prefix, because it may not
- # exist, in which case we fall back to the currently in use
- # bash. This logic is necessary in particular during bootstrap,
- # where we pull ourselves out of a temporary place with tools
- local bash="${EPREFIX}/bin/bash"
- [[ ! -x ${bash} ]] && bash=${BASH}
-
- einfo "Adjusting sources for ${EPREFIX}"
- find . -type f -exec \
- sed -e "s|@PORTAGE_EPREFIX@|${EPREFIX}|" \
- -e "s|@PORTAGE_MV@|$(type -P mv)|" \
- -e "s|@PORTAGE_BASH@|${bash}|" \
- -e "s|@PREFIX_PORTAGE_PYTHON@|$(type -P python)|" \
- -e "s|@EXTRA_PATH@|${extrapath}|" \
- -e "s|@portagegroup@|${PORTAGE_GROUP:-portage}|" \
- -e "s|@portageuser@|${PORTAGE_USER:-portage}|" \
- -e "s|@rootuser@|${PORTAGE_ROOT_USER:-root}|" \
- -e "s|@rootuid@|$(id -u ${PORTAGE_ROOT_USER:-root})|" \
- -e "s|@rootgid@|$(id -g ${PORTAGE_ROOT_USER:-root})|" \
- -e "s|@sysconfdir@|${EPREFIX}/etc|" \
- -e "1s|/usr/bin/env |${EPREFIX}/usr/bin/|" \
- -i '{}' + || \
- die "Failed to patch sources"
- # We don't need the below, since setup.py deals with this (and
- # more) so we don't have to make this correct
- # -e "s|@PORTAGE_BASE@|${EPREFIX}/usr/lib/portage/${EPYTHON}|" \
-
- # remove Makefiles, or else they will get installed
- find . -name "Makefile.*" -delete
-
- einfo "Prefixing shebangs ..."
- find . -type f ! -name etc-update | \
- while read -r line; do
- [[ -x ${line} || ${line} == *".py" ]] || continue;
- local shebang=$(head -n1 "${line}")
- if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ;
- then
- sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "${line}" || \
- die "sed failed"
- fi
- done
-
- einfo "Setting gentoo_prefix as reponame for emerge-webrsync"
- sed -i -e 's/repo_name=gentoo/repo_name=gentoo_prefix/' \
- bin/emerge-webrsync || die
-
- einfo "Making absent gemato non-fatal"
- sed -i -e '/exitcode = 127/d' \
- lib/portage/sync/modules/rsync/rsync.py || die
- # END PREFIX LOCAL
- fi
-
- # PREFIX LOCAL: make.conf is written by bootstrap-prefix.sh
- if use !prefix ; then
- cd "${S}/cnf" || die
- if [ -f "make.conf.example.${ARCH}".diff ]; then
- patch make.conf.example "make.conf.example.${ARCH}".diff || \
- die "Failed to patch make.conf.example"
- else
- eerror ""
- eerror "Portage does not have an arch-specific configuration for this arch."
- eerror "Please notify the arch maintainer about this issue. Using generic."
- eerror ""
- fi
- fi
-}
-
-python_compile_all() {
- local targets=()
- use doc && targets+=( docbook )
- use apidoc && targets+=( apidoc )
-
- if [[ ${targets[@]} ]]; then
- esetup.py "${targets[@]}"
- fi
-}
-
-python_test() {
- esetup.py test
-}
-
-python_install() {
- # Install sbin scripts to bindir for python-exec linking
- # they will be relocated in pkg_preinst()
- distutils-r1_python_install \
- --system-prefix="${EPREFIX}/usr" \
- --bindir="$(python_get_scriptdir)" \
- --docdir="${EPREFIX}/usr/share/doc/${PF}" \
- --htmldir="${EPREFIX}/usr/share/doc/${PF}/html" \
- --portage-bindir="${EPREFIX}/usr/lib/portage/${EPYTHON}" \
- --sbindir="$(python_get_scriptdir)" \
- --sysconfdir="${EPREFIX}/etc" \
- "${@}"
-}
-
-python_install_all() {
- distutils-r1_python_install_all
-
- local targets=()
- use doc && targets+=(
- install_docbook
- --htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
- )
- use apidoc && targets+=(
- install_apidoc
- --htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
- )
-
- # install docs
- if [[ ${targets[@]} ]]; then
- esetup.py "${targets[@]}"
- fi
-
- dotmpfiles "${FILESDIR}"/portage-ccache.conf
-
- # Due to distutils/python-exec limitations
- # these must be installed to /usr/bin.
- local sbin_relocations='archive-conf dispatch-conf emaint env-update etc-update fixpackages regenworld'
- einfo "Moving admin scripts to the correct directory"
- dodir /usr/sbin
- for target in ${sbin_relocations}; do
- einfo "Moving /usr/bin/${target} to /usr/sbin/${target}"
- mv "${ED}/usr/bin/${target}" "${ED}/usr/sbin/${target}" || die "sbin scripts move failed!"
- done
-}
-
-pkg_preinst() {
- if ! use build; 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
- 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_USER}:${PORTAGE_GROUP} "${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
-}
diff --git a/sys-apps/portage/portage-3.0.62.ebuild b/sys-apps/portage/portage-3.0.62.ebuild
new file mode 100644
index 0000000000..7f20a5531f
--- /dev/null
+++ b/sys-apps/portage/portage-3.0.62.ebuild
@@ -0,0 +1,302 @@
+# Copyright 1999-2023 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 Prefix"
+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://dev.gentoo.org/~grobian/distfiles/prefix-${P}.tar.bz2"
+ KEYWORDS="~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+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
+ $(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}
+ !prefix? ( 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
+ !prefix? ( 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? ( !prefix? ( >=sys-apps/sandbox-2.2 ) )
+ elibc_musl? ( !prefix? ( >=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
+ )
+"
+
+S="${WORKDIR}"/prefix-${P}
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-3.0.55.1-interrevisions.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"
+
+ # PREFIX LOCAL: only hack const_autotool
+ # ok, we can't rely on PORTAGE_ROOT_USER being there yet, as people
+ # tend not to update that often, as long as we are a separate ebuild
+ # we can assume when unset, it's time for some older trick
+ if [[ -z ${PORTAGE_ROOT_USER} ]] ; then
+ PORTAGE_ROOT_USER=$(python -c 'from portage.const import rootuser; print rootuser')
+ fi
+ # We need to probe for bash in the Prefix, because it may not
+ # exist, in which case we fall back to the currently in use
+ # bash. This logic is necessary in particular during bootstrap,
+ # where we pull ourselves out of a temporary place with tools
+ local bash="${EPREFIX}/bin/bash"
+ [[ ! -x ${bash} ]] && bash=${BASH}
+
+ einfo "Adjusting sources for ${EPREFIX}"
+ sed -e "s|@PORTAGE_EPREFIX@|${EPREFIX}|" \
+ -e "s|@PORTAGE_MV@|$(type -P mv)|" \
+ -e "s|@PORTAGE_BASH@|${bash}|" \
+ -e "s|@portagegroup@|${PORTAGE_GROUP:-portage}|" \
+ -e "s|@portageuser@|${PORTAGE_USER:-portage}|" \
+ -e "s|@rootuser@|${PORTAGE_ROOT_USER:-root}|" \
+ -e "s|@rootuid@|$(id -u ${PORTAGE_ROOT_USER:-root})|" \
+ -e "s|@rootgid@|$(id -g ${PORTAGE_ROOT_USER:-root})|" \
+ -e "s|@sysconfdir@|${EPREFIX}/etc|" \
+ -i \
+ lib/portage/const_autotool.py cnf/make.globals \
+ || die "Failed to patch sources"
+
+ sed -e "s|@PREFIX_PORTAGE_PYTHON@|$(type -P python)|" \
+ -i \
+ bin/ebuild-helpers/dohtml bin/ebuild-pyhelper \
+ bin/misc-functions.sh bin/phase-functions.sh \
+ || die "Failed to patch sources"
+
+ # remove Makefiles, or else they will get installed
+ #find . -name "Makefile.*" -delete
+
+# einfo "Prefixing shebangs ..."
+# find . -type f ! -name etc-update | \
+# while read -r line; do
+# [[ -x ${line} || ${line} == *".py" ]] || continue;
+# local shebang=$(head -n1 "${line}")
+# if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ;
+# then
+# sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "${line}" || \
+# die "sed failed"
+# fi
+# done
+
+ einfo "Setting gentoo_prefix as reponame for emerge-webrsync"
+ sed -i -e 's/repo_name=gentoo/repo_name=gentoo_prefix/' \
+ bin/emerge-webrsync || die
+
+ einfo "Making absent gemato non-fatal"
+ sed -i -e '/exitcode = 127/d' \
+ lib/portage/sync/modules/rsync/rsync.py || die
+ # END PREFIX LOCAL
+ 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_optimize "${pydirs[@]}"
+ python_fix_shebang "${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
+ 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
+}