workaround

This commit is contained in:
Gerben Jan Dijkman 2024-02-09 00:39:54 +01:00
parent 1090746c89
commit 61f10e319c
7 changed files with 386 additions and 0 deletions

View File

@ -0,0 +1,5 @@
DIST portage-3.0.49.tar.bz2 1152449 BLAKE2B a47f951a35828ba9c8fc88c2eab5222c98ed20240c736c366d8f2e4f4aef773a140bf0e150448cc3796a7adb7471ce006aae4de1816bbbaae6dd83dcf28f52b0 SHA512 f07950d10c01bda0915aa30c5c0b6ce2864754fe7dea38b5341336cd7665dcabfdc219969f1a3d2803db59bc23fc4284bc96b4087a596cb27a5d9eb075735469
DIST portage-3.0.57.tar.bz2 1173286 BLAKE2B 793a150c94c939672783d7556e5fce80f7ff8895a616726d7adf92d6f8da99768c55db8a685f2dd548ab0bb09c29fd7548ee6fc1dfc51b55c530119690b92265 SHA512 4c5348e0dfc966db5ca1c08cc3fafc72dd2b3b402972b99b411f61f7a288190ecd9e5ac597dc62ee96eacc378818a4cac65b0fd040c9ff557e7cbe057a934829
DIST portage-3.0.59.tar.bz2 1175098 BLAKE2B dbb8a22fd9417a74e60aa24ff064e9da5b4c54bd4936a0a1a4fdb0cd30d8568ca2424ef2a484883b538685a291a85009d942defdbb5cfa4e0072e9d977f238cd SHA512 8c86e0663327125e7cb36150d4aca1d7fcd2bf7ae25634ed916c2ee444809404aafb094adacacc0408509600f447d62d9c53e7bc25dd8c71c61e8758ac674638
DIST portage-3.0.60.tar.bz2 1177524 BLAKE2B 1928e448e8f319e4f000e795587fa043155cf54871a14631f06cf96d0ff2372049d54da2196c878bd9c09b7db0578eaba72b15d85edc9c7b1514cc58f6ab24c3 SHA512 20b6af1778aff8ab7db64861393290ce57ef5ee4c9c1659d31ecd45374f10e230e6e9029d883c0647ab8f9e0d9b9fb0a22ddf70cb2281e4bcac949b7e4751428
DIST portage-3.0.61.tar.bz2 1178151 BLAKE2B bad3140735b12a18a3108e91cc88146fc5c64ad3e3e056707eec7629927f718483a3e1ccf09f74de510ee7733b4d856c3c53692a6cc0f5fc1a7babf88fd7f06b SHA512 1401392a7bd2bf18e698e82af25a39db2aa9d8d9e8d9c07dea11ba5d5c866d2d3f8a3eccc8568b081aeaf6f668466921c61f58adbdd9dd5ffd9cf632bff2bdbd

View File

@ -0,0 +1,2 @@
Please see https://wiki.gentoo.org/wiki/Project:Portage/Fixing_broken_portage
for a recovery guide for a broken portage installation.

View File

@ -0,0 +1,43 @@
From b199d0307b47f9fb06dbe533d7e24926a561c238 Mon Sep 17 00:00:00 2001
From: Oskari Pirhonen <xxc3ncoredxx@gmail.com>
Date: Sun, 9 Jul 2023 00:08:27 -0500
Subject: [PATCH] depgraph.py: fix "no ebuilds/binpkgs" message
The "there are no binary packages to satisfy" was being unconditionally
output for packages that could not be found. Fix the logic for choosing
between the "binary packages" and "ebuilds" form of the message.
This is a temporary stopgap as alluded to by me in the bug, but the
tl;dr is that some entries in the `myopts` dict have "y"/"n" values
whereas some are True/unset, and this discrepancy should be sorted out.
[sam: Add NEWS and Fixes, although the change in that commit _shouldn't_
have been wrong, it is because of a quirk for now...]
[oskari: remove NEWS for backport]
Bug: https://bugs.gentoo.org/909853
Signed-off-by: Oskari Pirhonen <xxc3ncoredxx@gmail.com>
Closes: https://github.com/gentoo/portage/pull/1065
Fixes: 0b21a5a392bd84c07b94373991f59108fbe98516
Signed-off-by: Sam James <sam@gentoo.org>
---
lib/_emerge/depgraph.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py
index a36ab6351..1aeae6257 100644
--- a/lib/_emerge/depgraph.py
+++ b/lib/_emerge/depgraph.py
@@ -6456,7 +6456,7 @@ class depgraph:
cp_exists = True
break
- if self._frozen_config.myopts.get("--usepkgonly", "y"):
+ if self._frozen_config.myopts.get("--usepkgonly", False):
writemsg(
f"\nemerge: there are no binary packages to satisfy {green(xinfo)}.\n",
noiselevel=-1,
--
2.41.0

View File

@ -0,0 +1,29 @@
https://gitweb.gentoo.org/proj/portage.git/commit/?id=6066bb766f43ca06a5b0f08baa5946ff678f0c29
From 6066bb766f43ca06a5b0f08baa5946ff678f0c29 Mon Sep 17 00:00:00 2001
From: Benda Xu <orv@debian.org>
Date: Sun, 25 Jun 2023 17:03:00 +0800
Subject: bin/install-qa-check.d/05prefix: prefixify init-script shebangs.
Init scripts in /etc/init.d have OpenRC shebangs "#!/sbin/openrc-run".
They should be prefixified like a executable script in a Prefix.
Signed-off-by: Benda Xu <heroxbd@gentoo.org>
Bug: https://bugs.gentoo.org/640658
Closes: https://github.com/gentoo/portage/pull/1061
Signed-off-by: Sam James <sam@gentoo.org>
--- a/bin/install-qa-check.d/05prefix
+++ b/bin/install-qa-check.d/05prefix
@@ -76,8 +76,8 @@ install_qa_check_prefix() {
fi
continue
fi
- # unprefixed shebang, is the script directly in ${PATH}?
- if [[ ":${PATH}:" == *":${fp}:"* ]] ; then
+ # unprefixed shebang, is the script directly in ${PATH} or an init script?
+ if [[ ":${PATH}:${EPREFIX}/etc/init.d:" == *":${fp}:"* ]] ; then
if [[ -e ${EROOT}${line[0]} || -e ${ED}${line[0]} ]] ; then
# is it unprefixed, but we can just fix it because a
# prefixed variant exists
--
cgit v1.2.3-18-g5258

View File

@ -0,0 +1,2 @@
# Prevent ccache files from being cleaned
x /var/tmp/ccache

View File

@ -0,0 +1,2 @@
d /var/tmp/portage 0775 portage portage
d /tmp/portage 0775 portage portage

View File

@ -0,0 +1,303 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DISTUTILS_EXT=1
PYTHON_COMPAT=( pypy3 python3_{10..12} )
PYTHON_REQ_USE='bzip2(+),threads(+)'
SETUPTOOLS_USE_DISTUTILS=local
TMPFILES_OPTIONAL=1
inherit distutils-r1 linux-info toolchain-funcs tmpfiles prefix
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"
RESTRICT="!test? ( test )"
BDEPEND="
dev-python/setuptools[${PYTHON_USEDEP}]
test? ( dev-vcs/git )
"
DEPEND="
>=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/xmlto
~app-text/docbook-xml-dtd-4.4
)
"
# 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="
acct-user/portage
app-arch/zstd
>=app-arch/tar-1.27
dev-lang/python-exec:2
>=sys-apps/baselayout-2.9
sys-apps/findutils
!build? (
>=app-admin/eselect-1.2
>=app-shells/bash-5.0:0[readline]
>=sys-apps/sed-4.0.5
>=sec-keys/openpgp-keys-gentoo-release-20230329
rsync-verify? (
>=app-portage/gemato-14.5[${PYTHON_USEDEP}]
>=app-crypt/gnupg-2.2.4-r2[ssl(-)]
)
)
elibc_glibc? ( >=sys-apps/sandbox-2.2 )
elibc_musl? ( >=sys-apps/sandbox-2.2 )
kernel_linux? ( sys-apps/util-linux )
>=app-misc/pax-utils-0.1.17
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=(
# message patch used in 3.0.48.1 and 3.0.49 (bug 909853)
"${FILESDIR}/depgraph.py-fix-no-ebuilds-binpkgs-message.patch"
# backport from master to help Prefix bootstraps (bug #640658)
"${FILESDIR}/portage-3.0.49-prefixify-init-script-shebangs.patch"
)
distutils_enable_tests pytest
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() {
distutils-r1_python_prepare_all
if [[ ${PV} != 9999 ]] ; then
sed -e "s:^VERSION = \"HEAD\"$:VERSION = \"${PV}\":" -i lib/portage/__init__.py || die
fi
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 warn-on-large-env"' \
>> 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
einfo "Setting portage.const.EPREFIX ..."
hprefixify -e "s|^(EPREFIX[[:space:]]*=[[:space:]]*\").*|\1${EPREFIX}\"|" \
-w "/_BINARY/" lib/portage/const.py
einfo "Prefixing shebangs ..."
> "${T}/shebangs" || die
while read -r -d $'\0' ; do
local shebang=$(head -n1 "$REPLY")
if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
echo "${REPLY}" >> "${T}/shebangs" || die
fi
done < <(find . -type f -executable ! -name etc-update -print0)
if [[ -s ${T}/shebangs ]]; then
xargs sed -i -e "1s:^#!:#!${EPREFIX}:" < "${T}/shebangs" || die "sed failed"
fi
einfo "Adjusting make.globals, repos.conf and etc-update ..."
hprefixify cnf/{make.globals,repos.conf} bin/etc-update
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
fi
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
}
python_compile_all() {
local targets=()
use doc && targets+=( docbook )
use apidoc && targets+=( apidoc )
if [[ ${targets[@]} ]]; then
esetup.py "${targets[@]}"
fi
}
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,tmpdir}.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: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
}