sys-apps/portage: Sync with Gentoo's latest stable

This commit is contained in:
David Michael 2018-06-28 17:49:27 +00:00
parent 74f66bbb36
commit a045b19aae
10 changed files with 81 additions and 816 deletions

View File

@ -1,3 +1,3 @@
DIST portage-2.2.28.tar.bz2 969138 SHA256 da8148a1a9275c87f535679e41b1bb3a1380ba0f903b80510017517e4c5229d0 SHA512 d21bf7e7dcc0a779a13df6a959e5d4291492fce2a5525b67e9a4705888021f9c08b8d78cd32b2eb930ac5428c40383e4e46da5a7b1ed5c9c9c42314c0f1c6a0b WHIRLPOOL 1b9584b0243b46c70d0778aad57df2d3ea99e19f243280e542c29e6fed0634b72de6b203a3c296c2977d1a6e5e5250b910574176c692d2c7c27c0938528bb43d
DIST portage-2.3.3.tar.bz2 920984 SHA256 beec3923e14fb98d9992ede0b7718df594c50f366c3e58c2f0ba10102e77271f SHA512 7dec90a980ce6bb1266bb9c9c9979bc6cb8bdb4f37d8908c78cddf053979aef44424be86ea1fe16a072f6ed21b26233df84f6dd22d6f0c9435816090c675b53c WHIRLPOOL cc4a7e63b797766cc99ab712902b96e38fe22a482d7eeb3e29843a6070f6601b8bbe9c435b0a9c3cc1947e49c23291f1064f3d01c010d822dcb2686a103b4c3d
DIST portage-2.3.8.tar.bz2 938062 SHA256 19b73658dca848d215c5527d1d020c8106352007a84d7675e5efd0a7b9b48a8a SHA512 4b4b2de20323799b9b0f7a8812f939aa9a96d2744a0f65ad5287ba49744c491b55169cdb21f2885317a6a7c960d2070775ffd798f247b44eebc677c33c271eb8 WHIRLPOOL 0c576bbd8aaf8b27fa1746c863ac02b2a5f361d9011d17250ffbe4b830a8a6bf10a0aee48b5181a8aa6c55d8ad81ad411195da2a6253e9b324d3c7397053fe29
DIST portage-2.3.40-bug-656942-bug-657436-937d0156aa06.patch 15214 BLAKE2B 0351f82cd46aa1523eb0f70109551009a422546f2fbde1beee7a18dad4ecbfc6465b3b3052a25720196950f7da81adeb66d87940f2b477fbeca27afba56fa18e SHA512 b0482b8dac8af97b841ded426001872c1c708f649dc7774bd3c7003179888fd4d126ece33d001d127b643d88b8a70b9af75bbeb36beeaca7b8ad308f92ff72e7
DIST portage-2.3.40-bug-657436-937d0156aa06-1fc628eead43.patch 4131 BLAKE2B 1b051097ef4fb073d22b9ef3472077b4845190ec3839886f462cacbee0996dc4c036549c4beab09025e1bb42f421e5032144e90197e3aa5de08dd7d8d1c50fbb SHA512 5910469816b69afb7a0078dd3b35a5304e2c806ac03ff3949603cf4162900fd9dd1df15661b91a2181528e8406679e525308822a0f6ddf4799c79fa9652c27a9
DIST portage-2.3.40.tar.bz2 995122 BLAKE2B 3bfadee6cf57dace32bb4a365850650e13664202f3b16bf75821ff6226e85da823785ac87875fa82bd5cf1b953d638773819495f73f471c06ffd6926518df1ac SHA512 ded128c1941664fab6bc95f05115ec08900fddaedd1b6f12afa48da024531ee8939134d49759e09995c76a95e41beafdbf5528a5b62d3bf21c826ab1ac0cd1c5

View File

@ -1,51 +0,0 @@
From 1b8ccc0e487a523aa6d974b3ebe26548ad6502b6 Mon Sep 17 00:00:00 2001
From: Alex Crawford <alex.crawford@coreos.com>
Date: Mon, 14 Apr 2014 12:43:56 -0700
Subject: [PATCH 1/4] portage/repository/config.py: add disabled attribute to
repos.conf
This flag allows a repos.conf file to disable a previously-defined repository.
---
pym/portage/repository/config.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/pym/portage/repository/config.py b/pym/portage/repository/config.py
index a884156..a2f1a5a 100644
--- a/pym/portage/repository/config.py
+++ b/pym/portage/repository/config.py
@@ -80,7 +80,7 @@ class RepoConfig(object):
"""Stores config of one repository"""
__slots__ = ('aliases', 'allow_missing_manifest', 'allow_provide_virtual',
- 'auto_sync', 'cache_formats', 'create_manifest', 'disable_manifest',
+ 'auto_sync', 'cache_formats', 'create_manifest', 'disabled', 'disable_manifest',
'eapi', 'eclass_db', 'eclass_locations', 'eclass_overrides',
'find_invalid_path_char', 'force', 'format', 'local_config', 'location',
'main_repo', 'manifest_hashes', 'masters', 'missing_repo_name',
@@ -194,6 +194,11 @@ class RepoConfig(object):
location = None
self.location = location
+ disabled = repo_opts.get('disabled')
+ if disabled is not None:
+ disabled = disabled.strip().lower() == 'true'
+ self.disabled = disabled or False
+
missing = True
self.name = name
if self.location is not None:
@@ -654,7 +659,10 @@ class RepoConfigLoader(object):
# Do this before expanding aliases, so that location_map and
# treemap consistently map unaliased names whenever available.
for repo_name, repo in list(prepos.items()):
- if repo.location is None:
+ if repo.disabled:
+ del prepos[repo_name]
+ continue
+ elif repo.location is None:
if repo_name != 'DEFAULT':
# Skip this warning for repoman (bug #474578).
if settings.local_config and paths:
--
2.0.5

View File

@ -13,12 +13,13 @@ diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
index def2080..f4b5a8d 100644
--- a/bin/phase-functions.sh
+++ b/bin/phase-functions.sh
@@ -101,10 +101,13 @@ __filter_readonly_variables() {
filtered_vars="$readonly_bash_vars $bash_misc_vars
$PORTAGE_READONLY_VARS $misc_garbage_vars"
@@ -106,10 +106,14 @@ __filter_readonly_variables() {
if ___eapi_has_SYSROOT; then
filtered_vars+=" SYSROOT"
fi
- # Don't filter/interfere with prefix variables unless they are
- # supported by the current EAPI.
+
+ # Always filter EROOT to ensure it is redefined based on ROOT
+ filtered_vars+=" EROOT"
+
@ -27,9 +28,9 @@ index def2080..f4b5a8d 100644
if ___eapi_has_prefix_variables; then
- filtered_vars+=" ED EPREFIX EROOT"
+ filtered_vars+=" ED EPREFIX"
if ___eapi_has_SYSROOT; then
filtered_vars+=" ESYSROOT"
fi
if has --filter-sandbox $* ; then
--
2.0.5

View File

@ -1,42 +0,0 @@
diff --git a/pym/_emerge/BinpkgExtractorAsync.py b/pym/_emerge/BinpkgExtractorAsync.py
index e85f4ecac..07ba2a1b7 100644
--- a/pym/_emerge/BinpkgExtractorAsync.py
+++ b/pym/_emerge/BinpkgExtractorAsync.py
@@ -74,21 +74,27 @@ class BinpkgExtractorAsync(SpawnProcess):
self._async_wait()
return
- # Add -q to decomp_cmd opts, in order to avoid "trailing garbage
- # after EOF ignored" warning messages due to xpak trailer.
+ pkg_xpak = portage.xpak.tbz2(self.pkg_path)
+ pkg_xpak.scan()
+
# SIGPIPE handling (128 + SIGPIPE) should be compatible with
# assert_sigpipe_ok() that's used by the ebuild unpack() helper.
self.args = [self._shell_binary, "-c",
- ("%s -cq -- %s | tar -xp %s -C %s -f - ; " + \
- "p=(${PIPESTATUS[@]}) ; " + \
- "if [[ ${p[0]} != 0 && ${p[0]} != %d ]] ; then " % (128 + signal.SIGPIPE) + \
- "echo bzip2 failed with status ${p[0]} ; exit ${p[0]} ; fi ; " + \
- "if [ ${p[1]} != 0 ] ; then " + \
- "echo tar failed with status ${p[1]} ; exit ${p[1]} ; fi ; " + \
+ ("cmd0=(head -c-%d -- %s) cmd1=(%s) cmd2=(tar -xp %s -C %s -f -); " + \
+ '"${cmd0[@]}" | "${cmd1[@]}" | "${cmd2[@]}"; ' + \
+ "p=(${PIPESTATUS[@]}) ; for i in {0..2}; do " + \
+ "if [[ ${p[$i]} != 0 && ${p[$i]} != %d ]] ; then " + \
+ "echo command $(eval \"echo \\\"'\\${cmd$i[*]}'\\\"\") " + \
+ "failed with status ${p[$i]} ; exit ${p[$i]} ; fi ; done; " + \
+ "if [ ${p[$i]} != 0 ] ; then " + \
+ "echo command $(eval \"echo \\\"'\\${cmd$i[*]}'\\\"\") " + \
+ "failed with status ${p[$i]} ; exit ${p[$i]} ; fi ; " + \
"exit 0 ;") % \
- (decomp_cmd,
+ (pkg_xpak.xpaksize,
portage._shell_quote(self.pkg_path),
+ decomp_cmd,
tar_options,
- portage._shell_quote(self.image_dir))]
+ portage._shell_quote(self.image_dir),
+ 128 + signal.SIGPIPE)]
SpawnProcess._start(self)

View File

@ -1,23 +0,0 @@
Add support for new file command output.
--- bin/ebuild-helpers/prepstrip
+++ bin/ebuild-helpers/prepstrip
@@ -346,7 +346,7 @@
${STRIP} -g "${x}"
fi
fi
- elif [[ ${f} == *"SB executable"* || ${f} == *"SB shared object"* ]] ; then
+ elif [[ ${f} == *"SB executable"* || ${f} == *"SB pie executable"* || ${f} == *"SB shared object"* ]] ; then
process_elf "${x}" "${inode_link}" ${PORTAGE_STRIP_FLAGS}
elif [[ ${f} == *"SB relocatable"* ]] ; then
process_elf "${x}" "${inode_link}" ${SAFE_STRIP_FLAGS}
--- bin/install-qa-check.d/10ignored-flags
+++ bin/install-qa-check.d/10ignored-flags
@@ -33,6 +33,7 @@
f=$(file "${x}") || continue
[[ -z ${f} ]] && continue
if [[ ${f} == *"SB executable"* ||
+ ${f} == *"SB pie executable"* ||
${f} == *"SB shared object"* ]] ; then
echo "${x}" >> "${T}"/scanelf-ignored-CFLAGS.log
fi

View File

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

View File

@ -6,15 +6,27 @@
<changelog>https://gitweb.gentoo.org/proj/portage.git/plain/RELEASE-NOTES</changelog>
<doc>https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/Portage</doc>
</upstream>
<maintainer>
<maintainer type="project">
<email>dev-portage@gentoo.org</email>
</maintainer>
<use>
<flag name="epydoc">Build html API documentation with epydoc.</flag>
<flag name="ipc">Use inter-process communication between portage and running ebuilds.</flag>
<flag name="pypy2_0">Use pypy-c2.0 as Python interpreter.</flag>
<flag name="python2">Use python2 as Python interpreter.</flag>
<flag name="python3">Use python3 as Python interpreter.</flag>
<flag name="xattr">Preserve extended attributes (filesystem-stored metadata) when installing files. Usually only required for hardened systems.</flag>
<flag name="gentoo-dev">Enable features required for Gentoo ebuild development.</flag>
<flag name="ipc">Use inter-process communication between portage and
running ebuilds.
</flag>
<flag name="native-extensions">
Compiles native "C" extensions (speedups, instead of using python
backup code). Currently includes libc-locales.
This should only be temporarily disabled for some bootstrapping
operations. Cross-compilation is not supported.
</flag>
<flag name="rsync-verify">
Enable full-tree cryptographic verification of Gentoo repository
rsync checkouts using <pkg>app-portage/gemato</pkg>.
</flag>
<flag name="xattr">Preserve extended attributes (filesystem-stored metadata)
when installing files. Usually only required for hardened systems.
</flag>
</use>
</pkgmetadata>

View File

@ -1,375 +0,0 @@
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=5
PYTHON_COMPAT=(
pypy
python3_4 python3_5 python3_6
python2_7
)
PYTHON_REQ_USE='bzip2(+)'
inherit distutils-r1 multilib
DESCRIPTION="Portage is the package management and distribution system for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
LICENSE="GPL-2"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
SLOT="0"
IUSE="build doc epydoc +ipc linguas_ru selinux xattr"
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 )
epydoc? ( >=dev-python/epydoc-2.0[$(python_gen_usedep 'python2*')] )"
# Require sandbox-2.2 for bug #288863.
# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
# quite slow, so it's not considered in the dependencies as an alternative to
# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
# for now, don't pull in xattr deps for other kernels.
# For whirlpool hash, require python[ssl] (bug #425046).
# For compgen, require bash[readline] (bug #445576).
RDEPEND="
>=app-arch/tar-1.27
dev-lang/python-exec:2
!build? (
>=sys-apps/sed-4.0.5
app-shells/bash:0[readline]
>=app-admin/eselect-1.2
)
elibc_FreeBSD? ( sys-freebsd/freebsd-bin )
elibc_glibc? ( >=sys-apps/sandbox-2.2 )
elibc_uclibc? ( >=sys-apps/sandbox-2.2 )
>=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
$(python_gen_cond_dep 'dev-python/pyxattr[${PYTHON_USEDEP}]' \
python2_7 pypy)
) )
!<app-admin/logrotate-3.8.0"
PDEPEND="
!build? (
>=net-misc/rsync-2.6.4
userland_GNU? ( >=sys-apps/coreutils-6.4 )
)"
# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
# NOTE: FEATURES=installsources requires debugedit and rsync
REQUIRED_USE="epydoc? ( $(python_gen_useflags 'python2*') )"
SRC_ARCHIVES="https://dev.gentoo.org/~dolsen/releases/portage"
prefix_src_archives() {
local x y
for x in ${@}; do
for y in ${SRC_ARCHIVES}; do
echo ${y}/${x}
done
done
}
TARBALL_PV=${PV}
SRC_URI="mirror://gentoo/${PN}-${TARBALL_PV}.tar.bz2
$(prefix_src_archives ${PN}-${TARBALL_PV}.tar.bz2)"
PATCHES=(
"${FILESDIR}/${PN}-2.2.18-0001-portage-repository-config.py-add-disabled-attribute-.patch"
"${FILESDIR}/${PN}-2.2.18-0002-environment-Filter-EROOT-for-all-EAPIs.patch"
"${FILESDIR}/${PN}-2.2.18-0003-depgraph-ensure-slot-rebuilds-happen-in-the-correct-.patch"
)
pkg_setup() {
use epydoc && DISTUTILS_ALL_SUBPHASE_IMPLS=( python2.7 )
}
python_prepare_all() {
distutils-r1_python_prepare_all
# CoreOS does not use the gentoo repo, silence oodles of errors about it:
echo "# no defaults, configuration is in /etc" > cnf/repos.conf
if ! use ipc ; then
einfo "Disabling ipc..."
sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
-i pym/_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 [[ -n ${EPREFIX} ]] ; then
einfo "Setting portage.const.EPREFIX ..."
sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
-i pym/portage/const.py || \
die "Failed to patch portage.const.EPREFIX"
einfo "Prefixing shebangs ..."
while read -r -d $'\0' ; do
local shebang=$(head -n1 "$REPLY")
if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
die "sed failed"
fi
done < <(find . -type f -print0)
einfo "Adjusting make.globals ..."
sed -e "s|\(/usr/portage\)|${EPREFIX}\\1|" \
-e "s|^\(PORTAGE_TMPDIR=\"\)\(/var/tmp\"\)|\\1${EPREFIX}\\2|" \
-i cnf/make.globals || die "sed failed"
einfo "Adjusting repos.conf ..."
sed -e "s|^\(main-repo = \).*|\\1gentoo_prefix|" \
-e "s|^\\[gentoo\\]|[gentoo_prefix]|" \
-e "s|^\(location = \)\(/usr/portage\)|\\1${EPREFIX}\\2|" \
-e "s|^\(sync-uri = \).*|\\1rsync://prefix.gentooexperimental.org/gentoo-portage-prefix|" \
-i cnf/repos.conf || die "sed failed"
einfo "Adding FEATURES=force-prefix to make.globals ..."
echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
|| die "failed to append to make.globals"
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 epydoc && targets+=( epydoc )
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 )
use epydoc && targets+=( install_epydoc )
# install docs
if [[ ${targets[@]} ]]; then
esetup.py "${targets[@]}"
fi
# 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() {
# comment out sanity test until it is fixed to work
# with the new PORTAGE_PYM_PATH
#if [[ $ROOT == / ]] ; then
## Run some minimal tests as a sanity check.
#local test_runner=$(find "${ED}" -name runTests)
#if [[ -n $test_runner && -x $test_runner ]] ; then
#einfo "Running preinst sanity tests..."
#"$test_runner" || die "preinst sanity tests failed"
#fi
#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.1.13" || \
{
has_version ">=${CATEGORY}/${PN}-2.2_rc0" && \
has_version "<${CATEGORY}/${PN}-2.2.0_alpha189"
} ; then
USERPRIV_UPGRADE=true
USERSYNC_UPGRADE=true
REPOS_CONF_UPGRADE=true
REPOS_CONF_SYNC=
type -P portageq >/dev/null 2>&1 && \
REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC)
else
USERPRIV_UPGRADE=false
USERSYNC_UPGRADE=false
REPOS_CONF_UPGRADE=false
fi
}
get_ownership() {
case ${USERLAND} in
BSD)
stat -f '%Su:%Sg' "${1}"
;;
*)
stat -c '%U:%G' "${1}"
;;
esac
}
new_config_protect() {
# Generate a ._cfg file even if the target file
# does not exist, ensuring that the user will
# notice the config change.
local basename=${1##*/}
local dirname=${1%/*}
local i=0
while true ; do
local filename=$(
echo -n "${dirname}/._cfg"
printf "%04d" ${i}
echo -n "_${basename}"
)
[[ -e ${filename} ]] || break
(( i++ ))
done
echo "${filename}"
}
pkg_postinst() {
if ${REPOS_CONF_UPGRADE} ; then
einfo "Generating repos.conf"
local repo_name=
[[ -f ${PORTDIR}/profiles/repo_name ]] && \
repo_name=$(< "${PORTDIR}/profiles/repo_name")
if [[ -z ${REPOS_CONF_SYNC} ]] ; then
REPOS_CONF_SYNC=$(grep "^sync-uri =" "${EROOT:-${ROOT}}usr/share/portage/config/repos.conf")
REPOS_CONF_SYNC=${REPOS_CONF_SYNC##* }
fi
local sync_type=
[[ ${REPOS_CONF_SYNC} == git://* ]] && sync_type=git
if [[ ${REPOS_CONF_SYNC} == cvs://* ]]; then
sync_type=cvs
REPOS_CONF_SYNC=${REPOS_CONF_SYNC#cvs://}
fi
cat <<-EOF > "${T}/repos.conf"
[DEFAULT]
main-repo = ${repo_name:-gentoo}
[${repo_name:-gentoo}]
location = ${PORTDIR:-${EPREFIX}/usr/portage}
sync-type = ${sync_type:-rsync}
sync-uri = ${REPOS_CONF_SYNC}
EOF
[[ ${sync_type} == cvs ]] && echo "sync-cvs-repo = $(<"${PORTDIR}/CVS/Repository")" >> "${T}/repos.conf"
local dest=${EROOT:-${ROOT}}etc/portage/repos.conf
if [[ ! -f ${dest} ]] && mkdir -p "${dest}" 2>/dev/null ; then
dest=${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf
fi
# Don't install the config update if the desired repos.conf directory
# and config file exist, since users may accept it blindly and break
# their config (bug #478726).
[[ -e ${EROOT:-${ROOT}}etc/portage/repos.conf/${repo_name:-gentoo}.conf ]] || \
mv "${T}/repos.conf" "$(new_config_protect "${dest}")"
if [[ ${PORTDIR} == ${EPREFIX}/usr/portage ]] ; then
einfo "Generating make.conf PORTDIR setting for backward compatibility"
for dest in "${EROOT:-${ROOT}}etc/make.conf" "${EROOT:-${ROOT}}etc/portage/make.conf" ; do
[[ -e ${dest} ]] && break
done
[[ -d ${dest} ]] && dest=${dest}/portdir.conf
rm -rf "${T}/make.conf"
[[ -f ${dest} ]] && cat "${dest}" > "${T}/make.conf"
cat <<-EOF >> "${T}/make.conf"
# Set PORTDIR for backward compatibility with various tools:
# gentoo-bashcomp - bug #478444
# euse - bug #474574
# euses and ufed - bug #478318
PORTDIR="${EPREFIX}/usr/portage"
EOF
mkdir -p "${dest%/*}"
mv "${T}/make.conf" "$(new_config_protect "${dest}")"
fi
fi
local distdir=${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}
if ${USERSYNC_UPGRADE} && \
[[ -d ${PORTDIR} && -w ${PORTDIR} ]] ; then
local ownership=$(get_ownership "${PORTDIR}")
if [[ -n ${ownership} ]] ; then
einfo "Adjusting PORTDIR permissions for usersync"
find "${PORTDIR}" -path "${distdir%/}" -prune -o \
! \( -user "${ownership%:*}" -a -group "${ownership#*:}" \) \
-exec chown "${ownership}" {} +
fi
fi
# Do this last, since it could take a long time if there
# are lots of live sources, and the user may be tempted
# to kill emerge while it is running.
if ${USERPRIV_UPGRADE} && \
[[ -d ${distdir} && -w ${distdir} ]] ; then
local ownership=$(get_ownership "${distdir}")
if [[ ${ownership#*:} == portage ]] ; then
einfo "Adjusting DISTDIR permissions for userpriv"
find "${distdir}" -mindepth 1 -maxdepth 1 -type d -uid 0 \
-exec chown -R portage:portage {} +
fi
fi
einfo ""
einfo "This release of portage contains the new repoman code base"
einfo "This code base is still being developed. So its API's are"
einfo "not to be considered stable and are subject to change."
einfo "The code released has been tested and considered ready for use."
einfo "This however does not guarantee it to be completely bug free."
einfo "Please report any bugs you may encounter."
einfo ""
}

View File

@ -1,286 +0,0 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=5
PYTHON_COMPAT=(
pypy
python3_3 python3_4 python3_5 python3_6
python2_7
)
PYTHON_REQ_USE='bzip2(+),threads(+)'
inherit distutils-r1 multilib
DESCRIPTION="Portage is the package management and distribution system for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
LICENSE="GPL-2"
KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
SLOT="0"
IUSE="build doc epydoc +ipc linguas_ru +native-extensions selinux xattr"
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 )
epydoc? ( >=dev-python/epydoc-2.0[$(python_gen_usedep 'python2*')] )"
# Require sandbox-2.2 for bug #288863.
# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
# quite slow, so it's not considered in the dependencies as an alternative to
# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
# for now, don't pull in xattr deps for other kernels.
# For whirlpool hash, require python[ssl] (bug #425046).
# For compgen, require bash[readline] (bug #445576).
RDEPEND="
>=app-arch/tar-1.27
dev-lang/python-exec:2
!build? (
>=sys-apps/sed-4.0.5
app-shells/bash:0[readline]
>=app-admin/eselect-1.2
)
elibc_FreeBSD? ( sys-freebsd/freebsd-bin )
elibc_glibc? ( >=sys-apps/sandbox-2.2 )
elibc_musl? ( >=sys-apps/sandbox-2.2 )
elibc_uclibc? ( >=sys-apps/sandbox-2.2 )
>=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
$(python_gen_cond_dep 'dev-python/pyxattr[${PYTHON_USEDEP}]' \
python2_7 pypy)
) )
!<app-admin/logrotate-3.8.0"
PDEPEND="
!build? (
>=net-misc/rsync-2.6.4
userland_GNU? ( >=sys-apps/coreutils-6.4 )
)"
# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
# NOTE: FEATURES=installsources requires debugedit and rsync
REQUIRED_USE="epydoc? ( $(python_gen_useflags 'python2*') )"
SRC_ARCHIVES="https://dev.gentoo.org/~dolsen/releases/portage"
prefix_src_archives() {
local x y
for x in ${@}; do
for y in ${SRC_ARCHIVES}; do
echo ${y}/${x}
done
done
}
TARBALL_PV=${PV}
SRC_URI="mirror://gentoo/${PN}-${TARBALL_PV}.tar.bz2
$(prefix_src_archives ${PN}-${TARBALL_PV}.tar.bz2)"
PATCHES=(
"${FILESDIR}/${PN}-2.2.18-0001-portage-repository-config.py-add-disabled-attribute-.patch"
"${FILESDIR}/${PN}-2.2.18-0002-environment-Filter-EROOT-for-all-EAPIs.patch"
"${FILESDIR}/${PN}-2.2.18-0003-depgraph-ensure-slot-rebuilds-happen-in-the-correct-.patch"
)
pkg_setup() {
use epydoc && DISTUTILS_ALL_SUBPHASE_IMPLS=( python2.7 )
}
python_prepare_all() {
distutils-r1_python_prepare_all
# CoreOS does not use the gentoo repo, silence oodles of errors about it:
echo "# no defaults, configuration is in /etc" > cnf/repos.conf
if use native-extensions; 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 pym/_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 [[ -n ${EPREFIX} ]] ; then
einfo "Setting portage.const.EPREFIX ..."
sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
-i pym/portage/const.py || \
die "Failed to patch portage.const.EPREFIX"
einfo "Prefixing shebangs ..."
while read -r -d $'\0' ; do
local shebang=$(head -n1 "$REPLY")
if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
die "sed failed"
fi
done < <(find . -type f -print0)
einfo "Adjusting make.globals ..."
sed -e "s|\(/usr/portage\)|${EPREFIX}\\1|" \
-e "s|^\(PORTAGE_TMPDIR=\"\)\(/var/tmp\"\)|\\1${EPREFIX}\\2|" \
-i cnf/make.globals || die "sed failed"
einfo "Adjusting repos.conf ..."
sed -e "s|^\(main-repo = \).*|\\1gentoo_prefix|" \
-e "s|^\\[gentoo\\]|[gentoo_prefix]|" \
-e "s|^\(location = \)\(/usr/portage\)|\\1${EPREFIX}\\2|" \
-e "s|^\(sync-uri = \).*|\\1rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix|" \
-i cnf/repos.conf || die "sed failed"
einfo "Adding FEATURES=force-prefix to make.globals ..."
echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
|| die "failed to append to make.globals"
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 epydoc && targets+=( epydoc )
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 )
use epydoc && targets+=( install_epydoc )
# install docs
if [[ ${targets[@]} ]]; then
esetup.py "${targets[@]}"
fi
# 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() {
# comment out sanity test until it is fixed to work
# with the new PORTAGE_PYM_PATH
#if [[ $ROOT == / ]] ; then
## Run some minimal tests as a sanity check.
#local test_runner=$(find "${ED}" -name runTests)
#if [[ -n $test_runner && -x $test_runner ]] ; then
#einfo "Running preinst sanity tests..."
#"$test_runner" || die "preinst sanity tests failed"
#fi
#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.1" && \
has_version "<${CATEGORY}/${PN}-2.3.3"; then
SYNC_DEPTH_UPGRADE=true
else
SYNC_DEPTH_UPGRADE=false
fi
}
get_ownership() {
case ${USERLAND} in
BSD)
stat -f '%Su:%Sg' "${1}"
;;
*)
stat -c '%U:%G' "${1}"
;;
esac
}
new_config_protect() {
# Generate a ._cfg file even if the target file
# does not exist, ensuring that the user will
# notice the config change.
local basename=${1##*/}
local dirname=${1%/*}
local i=0
while true ; do
local filename=$(
echo -n "${dirname}/._cfg"
printf "%04d" ${i}
echo -n "_${basename}"
)
[[ -e ${filename} ]] || break
(( i++ ))
done
echo "${filename}"
}
pkg_postinst() {
if ${SYNC_DEPTH_UPGRADE}; then
ewarn "Please note that this release no longer respects sync-depth for"
ewarn "git repositories. There have been too many problems and"
ewarn "performance issues. See bugs 552814, 559008"
fi
einfo ""
einfo "This release of portage NO LONGER contains the repoman code base."
einfo "Repoman has its own ebuild and release package."
einfo "For repoman functionality please emerge app-portage/repoman"
einfo "Please report any bugs you may encounter."
einfo ""
}

View File

@ -1,4 +1,4 @@
# Copyright 1999-2017 Gentoo Foundation
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=5
@ -10,15 +10,15 @@ PYTHON_COMPAT=(
)
PYTHON_REQ_USE='bzip2(+),threads(+)'
inherit distutils-r1
inherit distutils-r1 eutils systemd
DESCRIPTION="Portage is the package management and distribution system for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
LICENSE="GPL-2"
KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~mips ppc ppc64 s390 sparc x86 ~amd64-fbsd"
SLOT="0"
IUSE="build doc epydoc +ipc linguas_ru +native-extensions selinux xattr"
IUSE="build doc epydoc gentoo-dev +ipc +native-extensions +rsync-verify selinux xattr"
DEPEND="!build? ( $(python_gen_impl_dep 'ssl(+)') )
>=app-arch/tar-1.27
@ -33,6 +33,8 @@ DEPEND="!build? ( $(python_gen_impl_dep 'ssl(+)') )
# for now, don't pull in xattr deps for other kernels.
# 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="
>=app-arch/tar-1.27
dev-lang/python-exec:2
@ -40,6 +42,13 @@ RDEPEND="
>=sys-apps/sed-4.0.5
app-shells/bash:0[readline]
>=app-admin/eselect-1.2
$(python_gen_cond_dep 'dev-python/pyblake2[${PYTHON_USEDEP}]' \
python{2_7,3_4,3_5} pypy)
rsync-verify? (
>=app-portage/gemato-12.1[${PYTHON_USEDEP}]
app-crypt/openpgp-keys-gentoo-release
>=app-crypt/gnupg-2.2.4-r2[ssl(-)]
)
)
elibc_FreeBSD? ( sys-freebsd/freebsd-bin )
elibc_glibc? ( >=sys-apps/sandbox-2.2 )
@ -76,20 +85,9 @@ prefix_src_archives() {
TARBALL_PV=${PV}
SRC_URI="mirror://gentoo/${PN}-${TARBALL_PV}.tar.bz2
$(prefix_src_archives ${PN}-${TARBALL_PV}.tar.bz2)"
PATCHES=(
# fixed upstream in 2.3.12 and up. Backports upstream commits b4b0e6b0aa and 26c0a0e31b.
"${FILESDIR}/${PN}-2.3.8-0002-backport-decompression-fixes.patch"
# upstream bug: https://bugs.gentoo.org/507284
"${FILESDIR}/${PN}-2.3.8-0001-portage-repository-config.py-add-disabled-attribute-.patch"
# upstream bug: https://bugs.gentoo.org/490014
"${FILESDIR}/${PN}-2.2.18-0002-environment-Filter-EROOT-for-all-EAPIs.patch"
# upstream bug:
"${FILESDIR}/${PN}-2.2.18-0003-depgraph-ensure-slot-rebuilds-happen-in-the-correct-.patch"
# support new file command output (this can be dropped when upgrading)
"${FILESDIR}/${P}-file-update.patch"
)
$(prefix_src_archives ${PN}-${TARBALL_PV}.tar.bz2)
https://github.com/gentoo/portage/compare/b7f94fccf4163364ab7b4c4f0dcd42b8847f03e0...937d0156aa060bdba9095313dedbb62e0a993aea.patch -> ${P}-bug-656942-bug-657436-937d0156aa06.patch
https://github.com/gentoo/portage/compare/937d0156aa060bdba9095313dedbb62e0a993aea...1fc628eead43fa5da4b142479aa004ded8acceab.patch -> ${P}-bug-657436-937d0156aa06-1fc628eead43.patch"
pkg_setup() {
use epydoc && DISTUTILS_ALL_SUBPHASE_IMPLS=( python2.7 )
@ -98,8 +96,23 @@ pkg_setup() {
python_prepare_all() {
distutils-r1_python_prepare_all
# CoreOS does not use the gentoo repo, silence oodles of errors about it:
echo "# no defaults, configuration is in /etc" > cnf/repos.conf
epatch "${DISTDIR}/${P}-bug-656942-bug-657436-937d0156aa06.patch" \
"${DISTDIR}/${P}-bug-657436-937d0156aa06-1fc628eead43.patch"
# apply 4fb5ef2ce2cb
sed -i "s:\\((self._poll_obj, 'close'\\)):\\1, None):" \
pym/portage/util/_eventloop/EventLoop.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 pym/_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; then
printf "[build_ext]\nportage-ext-modules=true\n" >> \
@ -119,6 +132,11 @@ python_prepare_all() {
|| die "failed to append to make.globals"
fi
if use build || ! use rsync-verify; then
sed -e '/^sync-rsync-verify-metamanifest/s|yes|no|' \
-i cnf/repos.conf || die "sed failed"
fi
if [[ -n ${EPREFIX} ]] ; then
einfo "Setting portage.const.EPREFIX ..."
sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
@ -146,8 +164,9 @@ python_prepare_all() {
einfo "Adjusting repos.conf ..."
sed -e "s|^\(location = \)\(/usr/portage\)|\\1${EPREFIX}\\2|" \
-e "s|^\(sync-openpgp-key-path = \)\(.*\)|\\1${EPREFIX}\\2|" \
-i cnf/repos.conf || die "sed failed"
if prefix-guest ; then
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|" \
@ -203,14 +222,22 @@ python_install_all() {
distutils-r1_python_install_all
local targets=()
use doc && targets+=( install_docbook )
use epydoc && targets+=( install_epydoc )
use doc && targets+=(
install_docbook
--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
)
use epydoc && targets+=(
install_epydoc
--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
)
# install docs
if [[ ${targets[@]} ]]; then
esetup.py "${targets[@]}"
fi
systemd_dotmpfilesd "${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'