From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 201FA1388C0 for ; Sun, 21 Feb 2016 09:10:24 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 910D321C04C; Sun, 21 Feb 2016 09:10:22 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 1A80521C04C for ; Sun, 21 Feb 2016 09:10:21 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id B44C9340845 for ; Sun, 21 Feb 2016 09:10:20 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 0E88F8E9 for ; Sun, 21 Feb 2016 09:10:19 +0000 (UTC) From: "Fabian Groffen" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Fabian Groffen" Message-ID: <1456045805.e88a4cfdbc8bcebbfd0e6052d09612cac5b69815.grobian@gentoo> Subject: [gentoo-commits] repo/proj/prefix:master commit in: sys-apps/portage/ X-VCS-Repository: repo/proj/prefix X-VCS-Files: sys-apps/portage/Manifest sys-apps/portage/portage-2.2.10.1-r1.ebuild sys-apps/portage/portage-2.2.10.1.ebuild sys-apps/portage/portage-2.2.14.ebuild sys-apps/portage/portage-2.2.27.ebuild X-VCS-Directories: sys-apps/portage/ X-VCS-Committer: grobian X-VCS-Committer-Name: Fabian Groffen X-VCS-Revision: e88a4cfdbc8bcebbfd0e6052d09612cac5b69815 X-VCS-Branch: master Date: Sun, 21 Feb 2016 09:10:19 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 4daae289-77cf-4fe1-a394-36be3aed966d X-Archives-Hash: b31466917980f028efae90cfb1efa60b commit: e88a4cfdbc8bcebbfd0e6052d09612cac5b69815 Author: Fabian Groffen gentoo org> AuthorDate: Sun Feb 21 09:10:05 2016 +0000 Commit: Fabian Groffen gentoo org> CommitDate: Sun Feb 21 09:10:05 2016 +0000 URL: https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=e88a4cfd sys-apps/portage: version bump, ebuild now uses python-based install (non-autotools) Package-Manager: portage-2.2.27 RepoMan-Options: --force sys-apps/portage/Manifest | 3 +- sys-apps/portage/portage-2.2.10.1-r1.ebuild | 592 ---------------------------- sys-apps/portage/portage-2.2.10.1.ebuild | 586 --------------------------- sys-apps/portage/portage-2.2.14.ebuild | 582 --------------------------- sys-apps/portage/portage-2.2.27.ebuild | 247 ++++++++++++ 5 files changed, 248 insertions(+), 1762 deletions(-) diff --git a/sys-apps/portage/Manifest b/sys-apps/portage/Manifest index 6ec2906..96d1ec6 100644 --- a/sys-apps/portage/Manifest +++ b/sys-apps/portage/Manifest @@ -1,3 +1,2 @@ -DIST prefix-portage-2.2.10.1.tar.bz2 1116228 SHA256 c0b3960b466098dc1913890e6aacc6b64e0f1bb97fbf18c96ab2f648a6daa1e9 SHA512 4d824119707936b6c73ec90a4dff8916a59d0d339e94dddbb9d0b241b550e1a982b475ca8708badf413aaca0aceab2b37f7dfeb62fa90eef7e27c91e41a61cec WHIRLPOOL 9910b2486c513d5b61a8985acf7318d6801d2b425bb3e79759c1d7e692762b02f8489275bb9d361fe5be01e8847cbc540d9dd157afa7a27bbfa9aec9f5834bc5 -DIST prefix-portage-2.2.14.tar.bz2 1133962 SHA256 5e7aa542f99fbad1bd371d9e6b5ba5ebaeb8b613a8730dd8966a1be5c9dabf72 SHA512 a107f603139c484caef11eade196876679a79c3800cce1aac58e958aff62a28df734e30d0e66b2f14f4622c6111106610e7527d59ed7677ced2c475f17768ea1 WHIRLPOOL bb857797d0db06e7dead010346887be36ed066979298efba3598361aca06df3cb19a5da924fae65a0ace7a6ad25b9d59d757e058d0c97036a10fb43ac2698b33 DIST prefix-portage-2.2.20.tar.bz2 1205876 SHA256 8c32e08af042384e7793a4580cbde892a66ec9ea2ad3bae739b2a9e476ac10cc SHA512 e219ca4b0dcfc6f6a4d221ebfb7e951f6676b739609e8f2d6651ac120d250797eb6fa8bde16ee0fd373403d09a7fd1c59b7e9de7b001da83300492d953ccd1a2 WHIRLPOOL 4ec1fca787e587097088009950165a1117e425365583e6f6952cabc2587bea8c7d8bb88ed8a038be41ffb33cba1a374e99d2e01707a5749449d4a246a43be1b4 +DIST prefix-portage-2.2.27.tar.bz2 1230727 SHA256 51bf3f427b23dfd1d050a2071895b5134cf7f515eb00612e0f57adf645a38299 SHA512 bb528ee059c7fc06702882eaa9aad33962ad2eff7e468aa51a8b185e8b3e4ba3eaf88b2ee0f61df9c38493f0f37028e471ba2cc766fa53086ad6b975ead9b332 WHIRLPOOL b0601462462d6dd322ffd9e806c92fd425483fc769a8c6b36c5874a4a28e21e250386ce16479e238577754ab4b194ce700bca7a0407dca919d59fd6ada87970c diff --git a/sys-apps/portage/portage-2.2.10.1-r1.ebuild b/sys-apps/portage/portage-2.2.10.1-r1.ebuild deleted file mode 100644 index 570635f..0000000 --- a/sys-apps/portage/portage-2.2.10.1-r1.ebuild +++ /dev/null @@ -1,592 +0,0 @@ -# Copyright 1999-2014 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: portage-2.2.01.16270.ebuild 58665 2010-09-05 19:54:38Z grobian $ - -# Require EAPI 2 since we now require at least python-2.6 (for python 3 -# syntax support) which also requires EAPI 2. -EAPI=3 -PYTHON_COMPAT=( - pypy1_9 pypy2_0 - python3_1 python3_2 python3_3 python3_4 - python2_6 python2_7 -) -inherit eutils multilib - -DESCRIPTION="Prefix branch of the Portage Package Manager, used in Gentoo Prefix" -HOMEPAGE="http://www.gentoo.org/proj/en/gentoo-alt/prefix/" -LICENSE="GPL-2" -KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" -SLOT="0" -IUSE="build doc epydoc +ipc linguas_ru pypy2_0 python2 python3 selinux xattr prefix-chaining" - -for _pyimpl in ${PYTHON_COMPAT[@]} ; do - IUSE+=" python_targets_${_pyimpl}" -done -unset _pyimpl - -# Import of the io module in python-2.6 raises ImportError for the -# thread module if threading is disabled. -python_dep_ssl="python3? ( =dev-lang/python-3*[ssl] ) - !pypy2_0? ( !python2? ( !python3? ( - || ( >=dev-lang/python-2.7[ssl] dev-lang/python:2.6[threads,ssl] ) - ) ) ) - pypy2_0? ( !python2? ( !python3? ( dev-python/pypy:2.0[bzip2,ssl] ) ) ) - python2? ( !python3? ( || ( dev-lang/python:2.7[ssl] dev-lang/python:2.6[ssl,threads] ) ) )" -python_dep="${python_dep_ssl//\[ssl\]}" -python_dep="${python_dep//,ssl}" -python_dep="${python_dep//ssl,}" - -python_dep="${python_dep} - python_targets_pypy1_9? ( dev-python/pypy:1.9 ) - python_targets_pypy2_0? ( dev-python/pypy:2.0 ) - python_targets_python2_6? ( dev-lang/python:2.6 ) - python_targets_python2_7? ( dev-lang/python:2.7 ) - python_targets_python3_1? ( dev-lang/python:3.1 ) - python_targets_python3_2? ( dev-lang/python:3.2 ) - python_targets_python3_3? ( dev-lang/python:3.3 ) - python_targets_python3_4? ( dev-lang/python:3.4 ) -" - -# The pysqlite blocker is for bug #282760. -# make-3.82 is for bug #455858 -DEPEND="${python_dep} - >=sys-devel/make-3.82 - >=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 !<=dev-python/pysqlite-2.4.1 )" -# 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] or python-mhash (bug #425046). -# For compgen, require bash[readline] (bug #445576). -# bash-4.1 necessary for redirect_alloc_fd, which fails on non-Linux if bash -# doesn't have a builtin for finding a random filedescriptor -RDEPEND="${python_dep} - !build? ( >=sys-apps/sed-4.0.5 - || ( >=app-shells/bash-4.2_p37[readline] ( =app-shells/bash-4.1 ) ) - >=app-admin/eselect-1.2 - || ( ${python_dep_ssl} dev-python/python-mhash ) - ) - elibc_FreeBSD? ( !prefix? ( sys-freebsd/freebsd-bin ) ) - elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) ) - elibc_uclibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) ) - kernel_linux? ( >=app-misc/pax-utils-0.1.17 ) - kernel_SunOS? ( >=app-misc/pax-utils-0.1.17 ) - kernel_FreeBSD? ( >=app-misc/pax-utils-0.1.17 ) - kernel_Darwin? ( >=app-misc/pax-utils-0.1.18 ) - kernel_HPUX? ( !hppa-hpux? ( >=app-misc/pax-utils-0.1.19 ) ) - kernel_AIX? ( >=sys-apps/aix-miscutils-0.1.1634 ) - xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) ) - selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] = 0x2060000 and "good" or "bad")') = good ]] -} - -current_python_has_xattr() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - local PYTHON=${EPREFIX}/usr/bin/${EPYTHON} - [[ $("${PYTHON}" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \ - "${PYTHON}" -c 'import xattr' 2>/dev/null -} - -call_with_python_impl() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - env EPYTHON=${EPYTHON} "$@" -} - -get_python_interpreter() { - [ $# -eq 1 ] || die "expected 1 argument, got $#: $*" - local impl=$1 python - case "${impl}" in - python*) - python=${impl/_/.} - ;; - pypy*) - python=${impl/_/.} - python=${python/pypy/pypy-c} - ;; - *) - die "Unrecognized python target: ${impl}" - esac - echo ${python} -} - -get_python_sitedir() { - [ $# -eq 1 ] || die "expected 1 argument, got $#: $*" - local impl=$1 - local site_dir=/usr/$(get_libdir)/${impl/_/.}/site-packages - [[ -d ${EROOT}${site_dir} ]] || \ - ewarn "site-packages dir missing for ${impl}: ${EROOT}${site_dir}" - echo "${site_dir}" -} - -python_compileall() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - local d=${EPREFIX}$1 PYTHON=${EPREFIX}/usr/bin/${EPYTHON} - local d_image=${D}${d#/} - [[ -d ${d_image} ]] || die "directory does not exist: ${d_image}" - case "${EPYTHON}" in - python*) - "${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die - # Note: Using -OO breaks emaint, since it requires __doc__, - # and __doc__ is None when -OO is used. - "${PYTHON}" -O -m compileall -q -f -d "${d}" "${d_image}" || die - ;; - pypy*) - "${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die - ;; - *) - die "Unrecognized EPYTHON value: ${EPYTHON}" - esac -} - -pkg_setup() { - if use python2 && use python3 ; then - ewarn "Both python2 and python3 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python3." - fi - if use pypy2_0 && use python3 ; then - ewarn "Both pypy2_0 and python3 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python3." - fi - if use pypy2_0 && use python2 ; then - ewarn "Both pypy2_0 and python2 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python2" - fi - if ! use pypy2_0 && ! use python2 && ! use python3 && \ - ! compatible_python_is_selected ; then - ewarn "Attempting to select a compatible default python interpreter" - local x success=0 - for x in "${EPREFIX}"/usr/bin/python2.* ; do - x=${x#${EPREFIX}/usr/bin/python2.} - if [[ $x -ge 6 ]] 2>/dev/null ; then - eselect python set python2.$x - if compatible_python_is_selected ; then - elog "Default python interpreter is now set to python-2.$x" - success=1 - break - fi - fi - done - if [ $success != 1 ] ; then - eerror "Unable to select a compatible default python interpreter!" - die "This version of portage requires at least python-2.6 to be selected as the default python interpreter (see \`eselect python --help\`)." - fi - fi - - # We use EPYTHON to designate the active python interpreter, - # but we only export when needed, via call_with_python_impl. - EPYTHON=python - export -n EPYTHON - if use python3; then - EPYTHON=python3 - elif use python2; then - EPYTHON=python2 - elif use pypy2_0; then - EPYTHON=pypy-c2.0 - fi -} - -src_prepare() { - if [ -n "${PATCHVER}" ] ; then - if [[ -L $S/bin/ebuild-helpers/portageq ]] ; then - rm "$S/bin/ebuild-helpers/portageq" \ - || die "failed to remove portageq helper symlink" - fi - epatch "${WORKDIR}/${PN}-${PATCHVER}.patch" - fi - - use prefix-chaining && epatch "${FILESDIR}"/${PN}-2.2.00.15801-prefix-chaining.patch - epatch "${FILESDIR}"/${PN}-2.2.8-ebuildshell.patch # 155161 - # use pool of servers - sed -i \ - -e 's/prefix.gentooexperimental.org/rsync.prefix.bitzolder.nl/' \ - bin/emerge-webrsync cnf/make.conf.example cnf/repos.conf - - # temp workaround to be able to upgrade to 2.2.14 - epatch "${FILESDIR}"/${P}-case-insensitive-fs.patch # 524236 - sed -i \ - -e 's/force-prefix/force-prefix case-insensitive-fs/' \ - cnf/make.globals - - 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 - - local set_shebang= - if use python3; then - set_shebang=python3 - elif use python2; then - set_shebang=python2 - elif use pypy2_0; then - set_shebang=pypy-c2.0 - fi - if [[ -n ${set_shebang} ]] ; then - einfo "Converting shebangs for ${set_shebang}..." - while read -r -d $'\0' ; do - local shebang=$(head -n1 "$REPLY") - if [[ ${shebang} == "#!${EPREFIX}/usr/bin/python"* ]] ; then - sed -i -e "1s:python:${set_shebang}:" "$REPLY" || \ - die "sed failed" - fi - done < <(find . -type f -print0) - fi - - # "native" Prefix still uses configure - if use !prefix && [[ -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 "Adding FEATURES=force-prefix to make.globals ..." - echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \ - || die "failed to append to make.globals" - fi - - if use !prefix ; then - cd "${S}/cnf" || die - if [ -f "make.conf.${ARCH}".diff ]; then - patch make.conf "make.conf.${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 -} - -src_configure() { - if use prefix ; then - local extrapath="/usr/bin:/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 - # lazy check, but works for now - if [[ ${PORTAGE_ROOT_USER} == "root" ]] ; then - # we need this for e.g. mtree on FreeBSD (and Darwin) which is in - # /usr/sbin - extrapath="/usr/sbin:/usr/bin:/sbin:/bin" - fi - - econf \ - --with-portage-user="${PORTAGE_USER:-portage}" \ - --with-portage-group="${PORTAGE_GROUP:-portage}" \ - --with-root-user="${PORTAGE_ROOT_USER}" \ - --with-offset-prefix="${EPREFIX}" \ - --with-extra-path="${extrapath}" \ - || die "econf failed" - else - default - fi -} - -src_compile() { - if use prefix ; then - emake || die "emake failed" - fi - - if use doc; then - call_with_python_impl \ - emake docbook || die - fi - - if use epydoc; then - einfo "Generating api docs" - call_with_python_impl \ - emake epydoc || die - fi -} - -src_test() { - # make files executable, in case they were created by patch - find bin -type f | xargs chmod +x - call_with_python_impl \ - emake test || die -} - -src_install() { - local portage_base="/usr/lib/portage" - - emake DESTDIR="${D}" install || die "make install failed." - dodir /usr/lib/portage/bin - - if use userland_GNU; then - rm "${ED}"${portage_base}/bin/ebuild-helpers/bsd/sed || die "Failed to remove sed wrapper" - fi - - use doc && dohtml -r "${S}"/doc/* - use epydoc && dohtml -r "${WORKDIR}"/api - dodir /etc/portage - keepdir /etc/portage - - # Use dodoc for compression, since the Makefile doesn't do that. - dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die - - # Allow external portage API consumers to import portage python modules - # (this used to be done with PYTHONPATH setting in /etc/env.d). - # For each of PYTHON_TARGETS, install a tree of *.py symlinks in - # site-packages, and compile with the corresponding interpreter. - local impl files mod_dir dest_mod_dir python relative_path x - for impl in "${PYTHON_COMPAT[@]}" ; do - use "python_targets_${impl}" || continue - if use build && [[ ${ROOT} == / && - ! -x ${EPREFIX}/usr/bin/$(get_python_interpreter ${impl}) ]] ; then - # Tolerate --nodeps at beginning of stage1 for catalyst - ewarn "skipping python_targets_${impl}, interpreter not found" - continue - fi - while read -r mod_dir ; do - cd "${ED}/usr/lib/portage/pym/${mod_dir}" || die - files=$(echo *.py) - if [ -z "${files}" ] || [ "${files}" = "*.py" ]; then - # __pycache__ directories contain no py files - continue - fi - dest_mod_dir=$(get_python_sitedir ${impl})/${mod_dir} - dodir "${dest_mod_dir}" || die - relative_path=../../../lib/portage/pym/${mod_dir} - x=/${mod_dir} - while [ -n "${x}" ] ; do - relative_path=../${relative_path} - x=${x%/*} - done - for x in ${files} ; do - dosym "${relative_path}/${x}" \ - "${dest_mod_dir}/${x}" || die - done - done < <(cd "${ED}"/usr/lib/portage/pym || die ; find * -type d ! -path "portage/tests*") - cd "${S}" || die - EPYTHON=$(get_python_interpreter ${impl}) \ - python_compileall "$(get_python_sitedir ${impl})" - done - - # Compile /usr/lib/portage/pym with the active interpreter, since portage - # internal commands force this directory to the beginning of sys.path. - python_compileall /usr/lib/portage/pym -} - -pkg_preinst() { - 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 - - if use xattr && ! current_python_has_xattr ; then - ewarn "For optimal performance in xattr handling, install" - ewarn "dev-python/pyxattr, or install >=dev-lang/python-3.3 and" - ewarn "enable USE=python3 for $CATEGORY/$PN." - fi - - has_version "<=${CATEGORY}/${PN}-2.2.00.13346" - EAPIPREFIX_UPGRADE=$? - - if has_version "<${CATEGORY}/${PN}-2.2.7-r1" ; then - REPOS_CONF_UPGRADE=true - REPOS_CONF_SYNC= - type -P portageq >/dev/null 2>&1 && \ - REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC) - fi -} - -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 [[ -n ${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 - - pushd "${EROOT}var/db/pkg" > /dev/null - local didwork= - [[ ! -e "${EROOT}"var/lib/portage/preserved_libs_registry ]] && for cpv in */*/NEEDED ; do - if [[ ${CHOST} == *-darwin* && ! -f ${cpv}.MACHO.3 ]] ; then - while read line; do - scanmacho -BF "%a;%F;%S;%n" ${line% *} >> "${cpv}".MACHO.3 - done < "${cpv}" - [[ -z ${didwork} ]] \ - && didwork=yes \ - || didwork=already - elif [[ ${CHOST} != *-darwin* && ${CHOST} != *-interix* && ! -f ${cpv}.ELF.2 ]] ; then - while read line; do - filename=${line% *} - needed=${line#* } - newline=$(scanelf -BF "%a;%F;%S;$needed;%r" $filename) - echo "${newline:3}" >> "${cpv}".ELF.2 - done < "${cpv}" - [[ -z ${didwork} ]] \ - && didwork=yes \ - || didwork=already - fi - [[ ${didwork} == yes ]] && \ - einfo "converting NEEDED files to new syntax, please wait" - done - popd > /dev/null - - if [[ ${EAPIPREFIX_UPGRADE} == 0 ]] ; then - local eapi - einfo 'removing EAPI="prefix" legacy from your vdb, please wait' - pushd "${EROOT}var/db/pkg" > /dev/null - for cpv in */* ; do - [[ ${cpv##*/} == "-MERGING-"* ]] && continue - # remove "prefix" from EAPI file - eapi=$(<"${cpv}"/EAPI) - eapi=${eapi/prefix/} - eapi=${eapi# } - eapi=${eapi:-0} - echo ${eapi} > "${cpv}"/EAPI - # remove "prefix" from EAPI in stored environment - bzcat "${cpv}"/environment.bz2 \ - | sed -e "s/EAPI=\([\"']\)prefix [0-9][\"']/EAPI=\1${eapi}\1/" \ - | bzip2 -9 > "${cpv}"/environment2.bz2 \ - && mv -f "${cpv}"/environment{2,}.bz2 - # remove "prefix" from the stored ebuild - sed -i -e "s/^EAPI=.*$/EAPI=${eapi}/" "${cpv}/${cpv##*/}.ebuild" - done - popd > /dev/null - fi -} diff --git a/sys-apps/portage/portage-2.2.10.1.ebuild b/sys-apps/portage/portage-2.2.10.1.ebuild deleted file mode 100644 index 8431971..0000000 --- a/sys-apps/portage/portage-2.2.10.1.ebuild +++ /dev/null @@ -1,586 +0,0 @@ -# Copyright 1999-2014 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: portage-2.2.01.16270.ebuild 58665 2010-09-05 19:54:38Z grobian $ - -# Require EAPI 2 since we now require at least python-2.6 (for python 3 -# syntax support) which also requires EAPI 2. -EAPI=3 -PYTHON_COMPAT=( - pypy1_9 pypy2_0 - python3_1 python3_2 python3_3 python3_4 - python2_6 python2_7 -) -inherit eutils multilib - -DESCRIPTION="Prefix branch of the Portage Package Manager, used in Gentoo Prefix" -HOMEPAGE="http://www.gentoo.org/proj/en/gentoo-alt/prefix/" -LICENSE="GPL-2" -KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" -SLOT="0" -IUSE="build doc epydoc +ipc linguas_ru pypy2_0 python2 python3 selinux xattr prefix-chaining" - -for _pyimpl in ${PYTHON_COMPAT[@]} ; do - IUSE+=" python_targets_${_pyimpl}" -done -unset _pyimpl - -# Import of the io module in python-2.6 raises ImportError for the -# thread module if threading is disabled. -python_dep_ssl="python3? ( =dev-lang/python-3*[ssl] ) - !pypy2_0? ( !python2? ( !python3? ( - || ( >=dev-lang/python-2.7[ssl] dev-lang/python:2.6[threads,ssl] ) - ) ) ) - pypy2_0? ( !python2? ( !python3? ( dev-python/pypy:2.0[bzip2,ssl] ) ) ) - python2? ( !python3? ( || ( dev-lang/python:2.7[ssl] dev-lang/python:2.6[ssl,threads] ) ) )" -python_dep="${python_dep_ssl//\[ssl\]}" -python_dep="${python_dep//,ssl}" -python_dep="${python_dep//ssl,}" - -python_dep="${python_dep} - python_targets_pypy1_9? ( dev-python/pypy:1.9 ) - python_targets_pypy2_0? ( dev-python/pypy:2.0 ) - python_targets_python2_6? ( dev-lang/python:2.6 ) - python_targets_python2_7? ( dev-lang/python:2.7 ) - python_targets_python3_1? ( dev-lang/python:3.1 ) - python_targets_python3_2? ( dev-lang/python:3.2 ) - python_targets_python3_3? ( dev-lang/python:3.3 ) - python_targets_python3_4? ( dev-lang/python:3.4 ) -" - -# The pysqlite blocker is for bug #282760. -# make-3.82 is for bug #455858 -DEPEND="${python_dep} - >=sys-devel/make-3.82 - >=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 !<=dev-python/pysqlite-2.4.1 )" -# 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] or python-mhash (bug #425046). -# For compgen, require bash[readline] (bug #445576). -# bash-4.1 necessary for redirect_alloc_fd, which fails on non-Linux if bash -# doesn't have a builtin for finding a random filedescriptor -RDEPEND="${python_dep} - !build? ( >=sys-apps/sed-4.0.5 - || ( >=app-shells/bash-4.2_p37[readline] ( =app-shells/bash-4.1 ) ) - >=app-admin/eselect-1.2 - || ( ${python_dep_ssl} dev-python/python-mhash ) - ) - elibc_FreeBSD? ( !prefix? ( sys-freebsd/freebsd-bin ) ) - elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) ) - elibc_uclibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) ) - kernel_linux? ( >=app-misc/pax-utils-0.1.17 ) - kernel_SunOS? ( >=app-misc/pax-utils-0.1.17 ) - kernel_FreeBSD? ( >=app-misc/pax-utils-0.1.17 ) - kernel_Darwin? ( >=app-misc/pax-utils-0.1.18 ) - kernel_HPUX? ( !hppa-hpux? ( >=app-misc/pax-utils-0.1.19 ) ) - kernel_AIX? ( >=sys-apps/aix-miscutils-0.1.1634 ) - xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) ) - selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] = 0x2060000 and "good" or "bad")') = good ]] -} - -current_python_has_xattr() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - local PYTHON=${EPREFIX}/usr/bin/${EPYTHON} - [[ $("${PYTHON}" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \ - "${PYTHON}" -c 'import xattr' 2>/dev/null -} - -call_with_python_impl() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - env EPYTHON=${EPYTHON} "$@" -} - -get_python_interpreter() { - [ $# -eq 1 ] || die "expected 1 argument, got $#: $*" - local impl=$1 python - case "${impl}" in - python*) - python=${impl/_/.} - ;; - pypy*) - python=${impl/_/.} - python=${python/pypy/pypy-c} - ;; - *) - die "Unrecognized python target: ${impl}" - esac - echo ${python} -} - -get_python_sitedir() { - [ $# -eq 1 ] || die "expected 1 argument, got $#: $*" - local impl=$1 - local site_dir=/usr/$(get_libdir)/${impl/_/.}/site-packages - [[ -d ${EROOT}${site_dir} ]] || \ - ewarn "site-packages dir missing for ${impl}: ${EROOT}${site_dir}" - echo "${site_dir}" -} - -python_compileall() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - local d=${EPREFIX}$1 PYTHON=${EPREFIX}/usr/bin/${EPYTHON} - local d_image=${D}${d#/} - [[ -d ${d_image} ]] || die "directory does not exist: ${d_image}" - case "${EPYTHON}" in - python*) - "${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die - # Note: Using -OO breaks emaint, since it requires __doc__, - # and __doc__ is None when -OO is used. - "${PYTHON}" -O -m compileall -q -f -d "${d}" "${d_image}" || die - ;; - pypy*) - "${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die - ;; - *) - die "Unrecognized EPYTHON value: ${EPYTHON}" - esac -} - -pkg_setup() { - if use python2 && use python3 ; then - ewarn "Both python2 and python3 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python3." - fi - if use pypy2_0 && use python3 ; then - ewarn "Both pypy2_0 and python3 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python3." - fi - if use pypy2_0 && use python2 ; then - ewarn "Both pypy2_0 and python2 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python2" - fi - if ! use pypy2_0 && ! use python2 && ! use python3 && \ - ! compatible_python_is_selected ; then - ewarn "Attempting to select a compatible default python interpreter" - local x success=0 - for x in "${EPREFIX}"/usr/bin/python2.* ; do - x=${x#${EPREFIX}/usr/bin/python2.} - if [[ $x -ge 6 ]] 2>/dev/null ; then - eselect python set python2.$x - if compatible_python_is_selected ; then - elog "Default python interpreter is now set to python-2.$x" - success=1 - break - fi - fi - done - if [ $success != 1 ] ; then - eerror "Unable to select a compatible default python interpreter!" - die "This version of portage requires at least python-2.6 to be selected as the default python interpreter (see \`eselect python --help\`)." - fi - fi - - # We use EPYTHON to designate the active python interpreter, - # but we only export when needed, via call_with_python_impl. - EPYTHON=python - export -n EPYTHON - if use python3; then - EPYTHON=python3 - elif use python2; then - EPYTHON=python2 - elif use pypy2_0; then - EPYTHON=pypy-c2.0 - fi -} - -src_prepare() { - if [ -n "${PATCHVER}" ] ; then - if [[ -L $S/bin/ebuild-helpers/portageq ]] ; then - rm "$S/bin/ebuild-helpers/portageq" \ - || die "failed to remove portageq helper symlink" - fi - epatch "${WORKDIR}/${PN}-${PATCHVER}.patch" - fi - - use prefix-chaining && epatch "${FILESDIR}"/${PN}-2.2.00.15801-prefix-chaining.patch - epatch "${FILESDIR}"/${PN}-2.2.8-ebuildshell.patch # 155161 - # use pool of servers - sed -i \ - -e 's/prefix.gentooexperimental.org/rsync.prefix.bitzolder.nl/' \ - bin/emerge-webrsync cnf/make.conf.example 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 - - local set_shebang= - if use python3; then - set_shebang=python3 - elif use python2; then - set_shebang=python2 - elif use pypy2_0; then - set_shebang=pypy-c2.0 - fi - if [[ -n ${set_shebang} ]] ; then - einfo "Converting shebangs for ${set_shebang}..." - while read -r -d $'\0' ; do - local shebang=$(head -n1 "$REPLY") - if [[ ${shebang} == "#!${EPREFIX}/usr/bin/python"* ]] ; then - sed -i -e "1s:python:${set_shebang}:" "$REPLY" || \ - die "sed failed" - fi - done < <(find . -type f -print0) - fi - - # "native" Prefix still uses configure - if use !prefix && [[ -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 "Adding FEATURES=force-prefix to make.globals ..." - echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \ - || die "failed to append to make.globals" - fi - - if use !prefix ; then - cd "${S}/cnf" || die - if [ -f "make.conf.${ARCH}".diff ]; then - patch make.conf "make.conf.${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 -} - -src_configure() { - if use prefix ; then - local extrapath="/usr/bin:/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 - # lazy check, but works for now - if [[ ${PORTAGE_ROOT_USER} == "root" ]] ; then - # we need this for e.g. mtree on FreeBSD (and Darwin) which is in - # /usr/sbin - extrapath="/usr/sbin:/usr/bin:/sbin:/bin" - fi - - econf \ - --with-portage-user="${PORTAGE_USER:-portage}" \ - --with-portage-group="${PORTAGE_GROUP:-portage}" \ - --with-root-user="${PORTAGE_ROOT_USER}" \ - --with-offset-prefix="${EPREFIX}" \ - --with-extra-path="${extrapath}" \ - || die "econf failed" - else - default - fi -} - -src_compile() { - if use prefix ; then - emake || die "emake failed" - fi - - if use doc; then - call_with_python_impl \ - emake docbook || die - fi - - if use epydoc; then - einfo "Generating api docs" - call_with_python_impl \ - emake epydoc || die - fi -} - -src_test() { - # make files executable, in case they were created by patch - find bin -type f | xargs chmod +x - call_with_python_impl \ - emake test || die -} - -src_install() { - local portage_base="/usr/lib/portage" - - emake DESTDIR="${D}" install || die "make install failed." - dodir /usr/lib/portage/bin - - if use userland_GNU; then - rm "${ED}"${portage_base}/bin/ebuild-helpers/bsd/sed || die "Failed to remove sed wrapper" - fi - - use doc && dohtml -r "${S}"/doc/* - use epydoc && dohtml -r "${WORKDIR}"/api - dodir /etc/portage - keepdir /etc/portage - - # Use dodoc for compression, since the Makefile doesn't do that. - dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die - - # Allow external portage API consumers to import portage python modules - # (this used to be done with PYTHONPATH setting in /etc/env.d). - # For each of PYTHON_TARGETS, install a tree of *.py symlinks in - # site-packages, and compile with the corresponding interpreter. - local impl files mod_dir dest_mod_dir python relative_path x - for impl in "${PYTHON_COMPAT[@]}" ; do - use "python_targets_${impl}" || continue - if use build && [[ ${ROOT} == / && - ! -x ${EPREFIX}/usr/bin/$(get_python_interpreter ${impl}) ]] ; then - # Tolerate --nodeps at beginning of stage1 for catalyst - ewarn "skipping python_targets_${impl}, interpreter not found" - continue - fi - while read -r mod_dir ; do - cd "${ED}/usr/lib/portage/pym/${mod_dir}" || die - files=$(echo *.py) - if [ -z "${files}" ] || [ "${files}" = "*.py" ]; then - # __pycache__ directories contain no py files - continue - fi - dest_mod_dir=$(get_python_sitedir ${impl})/${mod_dir} - dodir "${dest_mod_dir}" || die - relative_path=../../../lib/portage/pym/${mod_dir} - x=/${mod_dir} - while [ -n "${x}" ] ; do - relative_path=../${relative_path} - x=${x%/*} - done - for x in ${files} ; do - dosym "${relative_path}/${x}" \ - "${dest_mod_dir}/${x}" || die - done - done < <(cd "${ED}"/usr/lib/portage/pym || die ; find * -type d ! -path "portage/tests*") - cd "${S}" || die - EPYTHON=$(get_python_interpreter ${impl}) \ - python_compileall "$(get_python_sitedir ${impl})" - done - - # Compile /usr/lib/portage/pym with the active interpreter, since portage - # internal commands force this directory to the beginning of sys.path. - python_compileall /usr/lib/portage/pym -} - -pkg_preinst() { - 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 - - if use xattr && ! current_python_has_xattr ; then - ewarn "For optimal performance in xattr handling, install" - ewarn "dev-python/pyxattr, or install >=dev-lang/python-3.3 and" - ewarn "enable USE=python3 for $CATEGORY/$PN." - fi - - has_version "<=${CATEGORY}/${PN}-2.2.00.13346" - EAPIPREFIX_UPGRADE=$? - - if has_version "<${CATEGORY}/${PN}-2.2.7-r1" ; then - REPOS_CONF_UPGRADE=true - REPOS_CONF_SYNC= - type -P portageq >/dev/null 2>&1 && \ - REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC) - fi -} - -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 [[ -n ${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 - - pushd "${EROOT}var/db/pkg" > /dev/null - local didwork= - [[ ! -e "${EROOT}"var/lib/portage/preserved_libs_registry ]] && for cpv in */*/NEEDED ; do - if [[ ${CHOST} == *-darwin* && ! -f ${cpv}.MACHO.3 ]] ; then - while read line; do - scanmacho -BF "%a;%F;%S;%n" ${line% *} >> "${cpv}".MACHO.3 - done < "${cpv}" - [[ -z ${didwork} ]] \ - && didwork=yes \ - || didwork=already - elif [[ ${CHOST} != *-darwin* && ${CHOST} != *-interix* && ! -f ${cpv}.ELF.2 ]] ; then - while read line; do - filename=${line% *} - needed=${line#* } - newline=$(scanelf -BF "%a;%F;%S;$needed;%r" $filename) - echo "${newline:3}" >> "${cpv}".ELF.2 - done < "${cpv}" - [[ -z ${didwork} ]] \ - && didwork=yes \ - || didwork=already - fi - [[ ${didwork} == yes ]] && \ - einfo "converting NEEDED files to new syntax, please wait" - done - popd > /dev/null - - if [[ ${EAPIPREFIX_UPGRADE} == 0 ]] ; then - local eapi - einfo 'removing EAPI="prefix" legacy from your vdb, please wait' - pushd "${EROOT}var/db/pkg" > /dev/null - for cpv in */* ; do - [[ ${cpv##*/} == "-MERGING-"* ]] && continue - # remove "prefix" from EAPI file - eapi=$(<"${cpv}"/EAPI) - eapi=${eapi/prefix/} - eapi=${eapi# } - eapi=${eapi:-0} - echo ${eapi} > "${cpv}"/EAPI - # remove "prefix" from EAPI in stored environment - bzcat "${cpv}"/environment.bz2 \ - | sed -e "s/EAPI=\([\"']\)prefix [0-9][\"']/EAPI=\1${eapi}\1/" \ - | bzip2 -9 > "${cpv}"/environment2.bz2 \ - && mv -f "${cpv}"/environment{2,}.bz2 - # remove "prefix" from the stored ebuild - sed -i -e "s/^EAPI=.*$/EAPI=${eapi}/" "${cpv}/${cpv##*/}.ebuild" - done - popd > /dev/null - fi -} diff --git a/sys-apps/portage/portage-2.2.14.ebuild b/sys-apps/portage/portage-2.2.14.ebuild deleted file mode 100644 index bad816d..0000000 --- a/sys-apps/portage/portage-2.2.14.ebuild +++ /dev/null @@ -1,582 +0,0 @@ -# Copyright 1999-2014 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: portage-2.2.01.16270.ebuild 58665 2010-09-05 19:54:38Z grobian $ - -# Require EAPI 2 since we now require at least python-2.6 (for python 3 -# syntax support) which also requires EAPI 2. -EAPI=3 -PYTHON_COMPAT=( - pypy1_9 pypy2_0 - python3_1 python3_2 python3_3 python3_4 - python2_6 python2_7 -) -inherit eutils multilib - -DESCRIPTION="Prefix branch of the Portage Package Manager, used in Gentoo Prefix" -HOMEPAGE="http://www.gentoo.org/proj/en/gentoo-alt/prefix/" -LICENSE="GPL-2" -KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" -SLOT="0" -IUSE="build doc epydoc +ipc linguas_ru pypy2_0 python2 python3 selinux xattr prefix-chaining" - -for _pyimpl in ${PYTHON_COMPAT[@]} ; do - IUSE+=" python_targets_${_pyimpl}" -done -unset _pyimpl - -# Import of the io module in python-2.6 raises ImportError for the -# thread module if threading is disabled. -python_dep_ssl="python3? ( =dev-lang/python-3*[ssl] ) - !pypy2_0? ( !python2? ( !python3? ( - || ( >=dev-lang/python-2.7[ssl] dev-lang/python:2.6[threads,ssl] ) - ) ) ) - pypy2_0? ( !python2? ( !python3? ( dev-python/pypy:2.0[bzip2,ssl] ) ) ) - python2? ( !python3? ( || ( dev-lang/python:2.7[ssl] dev-lang/python:2.6[ssl,threads] ) ) )" -python_dep="${python_dep_ssl//\[ssl\]}" -python_dep="${python_dep//,ssl}" -python_dep="${python_dep//ssl,}" - -python_dep="${python_dep} - python_targets_pypy1_9? ( dev-python/pypy:1.9 ) - python_targets_pypy2_0? ( dev-python/pypy:2.0 ) - python_targets_python2_6? ( dev-lang/python:2.6 ) - python_targets_python2_7? ( dev-lang/python:2.7 ) - python_targets_python3_1? ( dev-lang/python:3.1 ) - python_targets_python3_2? ( dev-lang/python:3.2 ) - python_targets_python3_3? ( dev-lang/python:3.3 ) - python_targets_python3_4? ( dev-lang/python:3.4 ) -" - -# The pysqlite blocker is for bug #282760. -# make-3.82 is for bug #455858 -DEPEND="${python_dep} - >=sys-devel/make-3.82 - >=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 !<=dev-python/pysqlite-2.4.1 )" -# 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] or python-mhash (bug #425046). -# For compgen, require bash[readline] (bug #445576). -# bash-4.1 necessary for redirect_alloc_fd, which fails on non-Linux if bash -# doesn't have a builtin for finding a random filedescriptor -RDEPEND="${python_dep} - !build? ( >=sys-apps/sed-4.0.5 - || ( >=app-shells/bash-4.2_p37[readline] ( =app-shells/bash-4.1 ) ) - >=app-admin/eselect-1.2 - || ( ${python_dep_ssl} dev-python/python-mhash ) - ) - elibc_FreeBSD? ( !prefix? ( sys-freebsd/freebsd-bin ) ) - elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) ) - elibc_uclibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) ) - kernel_linux? ( >=app-misc/pax-utils-0.1.17 ) - kernel_SunOS? ( >=app-misc/pax-utils-0.1.17 ) - kernel_FreeBSD? ( >=app-misc/pax-utils-0.1.17 ) - kernel_Darwin? ( >=app-misc/pax-utils-0.1.18 ) - kernel_HPUX? ( !hppa-hpux? ( >=app-misc/pax-utils-0.1.19 ) ) - kernel_AIX? ( >=sys-apps/aix-miscutils-0.1.1634 ) - xattr? ( kernel_linux? ( || ( >=dev-lang/python-3.3_pre20110902 dev-python/pyxattr ) ) ) - selinux? ( || ( >=sys-libs/libselinux-2.0.94[python] = 0x2060000 and "good" or "bad")') = good ]] -} - -current_python_has_xattr() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - local PYTHON=${EPREFIX}/usr/bin/${EPYTHON} - [[ $("${PYTHON}" -c 'import sys ; sys.stdout.write(sys.hexversion >= 0x3030000 and "yes" or "no")') = yes ]] || \ - "${PYTHON}" -c 'import xattr' 2>/dev/null -} - -call_with_python_impl() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - env EPYTHON=${EPYTHON} "$@" -} - -get_python_interpreter() { - [ $# -eq 1 ] || die "expected 1 argument, got $#: $*" - local impl=$1 python - case "${impl}" in - python*) - python=${impl/_/.} - ;; - pypy*) - python=${impl/_/.} - python=${python/pypy/pypy-c} - ;; - *) - die "Unrecognized python target: ${impl}" - esac - echo ${python} -} - -get_python_sitedir() { - [ $# -eq 1 ] || die "expected 1 argument, got $#: $*" - local impl=$1 - local site_dir=/usr/$(get_libdir)/${impl/_/.}/site-packages - [[ -d ${EROOT}${site_dir} ]] || \ - ewarn "site-packages dir missing for ${impl}: ${EROOT}${site_dir}" - echo "${site_dir}" -} - -python_compileall() { - [[ ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).' - local d=${EPREFIX}$1 PYTHON=${EPREFIX}/usr/bin/${EPYTHON} - local d_image=${D}${d#/} - [[ -d ${d_image} ]] || die "directory does not exist: ${d_image}" - case "${EPYTHON}" in - python*) - "${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die - # Note: Using -OO breaks emaint, since it requires __doc__, - # and __doc__ is None when -OO is used. - "${PYTHON}" -O -m compileall -q -f -d "${d}" "${d_image}" || die - ;; - pypy*) - "${PYTHON}" -m compileall -q -f -d "${d}" "${d_image}" || die - ;; - *) - die "Unrecognized EPYTHON value: ${EPYTHON}" - esac -} - -pkg_setup() { - if use python2 && use python3 ; then - ewarn "Both python2 and python3 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python3." - fi - if use pypy2_0 && use python3 ; then - ewarn "Both pypy2_0 and python3 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python3." - fi - if use pypy2_0 && use python2 ; then - ewarn "Both pypy2_0 and python2 USE flags are enabled, but only one" - ewarn "can be in the shebangs. Using python2" - fi - if ! use pypy2_0 && ! use python2 && ! use python3 && \ - ! compatible_python_is_selected ; then - ewarn "Attempting to select a compatible default python interpreter" - local x success=0 - for x in "${EPREFIX}"/usr/bin/python2.* ; do - x=${x#${EPREFIX}/usr/bin/python2.} - if [[ $x -ge 6 ]] 2>/dev/null ; then - eselect python set python2.$x - if compatible_python_is_selected ; then - elog "Default python interpreter is now set to python-2.$x" - success=1 - break - fi - fi - done - if [ $success != 1 ] ; then - eerror "Unable to select a compatible default python interpreter!" - die "This version of portage requires at least python-2.6 to be selected as the default python interpreter (see \`eselect python --help\`)." - fi - fi - - # We use EPYTHON to designate the active python interpreter, - # but we only export when needed, via call_with_python_impl. - EPYTHON=python - export -n EPYTHON - if use python3; then - EPYTHON=python3 - elif use python2; then - EPYTHON=python2 - elif use pypy2_0; then - EPYTHON=pypy-c2.0 - fi -} - -src_prepare() { - if [ -n "${PATCHVER}" ] ; then - if [[ -L $S/bin/ebuild-helpers/portageq ]] ; then - rm "$S/bin/ebuild-helpers/portageq" \ - || die "failed to remove portageq helper symlink" - fi - epatch "${WORKDIR}/${PN}-${PATCHVER}.patch" - fi - - use prefix-chaining && epatch "${FILESDIR}"/${PN}-2.2.00.15801-prefix-chaining.patch - epatch "${FILESDIR}"/${PN}-2.2.8-ebuildshell.patch # 155161 - - 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 - - local set_shebang= - if use python3; then - set_shebang=python3 - elif use python2; then - set_shebang=python2 - elif use pypy2_0; then - set_shebang=pypy-c2.0 - fi - if [[ -n ${set_shebang} ]] ; then - einfo "Converting shebangs for ${set_shebang}..." - while read -r -d $'\0' ; do - local shebang=$(head -n1 "$REPLY") - if [[ ${shebang} == "#!${EPREFIX}/usr/bin/python"* ]] ; then - sed -i -e "1s:python:${set_shebang}:" "$REPLY" || \ - die "sed failed" - fi - done < <(find . -type f -print0) - fi - - # "native" Prefix still uses configure - if use !prefix && [[ -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 "Adding FEATURES=force-prefix to make.globals ..." - echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \ - || die "failed to append to make.globals" - fi - - if use !prefix ; then - cd "${S}/cnf" || die - if [ -f "make.conf.${ARCH}".diff ]; then - patch make.conf "make.conf.${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 -} - -src_configure() { - if use prefix ; then - local extrapath="/usr/bin:/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 - # lazy check, but works for now - if [[ ${PORTAGE_ROOT_USER} == "root" ]] ; then - # we need this for e.g. mtree on FreeBSD (and Darwin) which is in - # /usr/sbin - extrapath="/usr/sbin:/usr/bin:/sbin:/bin" - fi - - econf \ - --with-portage-user="${PORTAGE_USER:-portage}" \ - --with-portage-group="${PORTAGE_GROUP:-portage}" \ - --with-root-user="${PORTAGE_ROOT_USER}" \ - --with-offset-prefix="${EPREFIX}" \ - --with-extra-path="${extrapath}" \ - || die "econf failed" - else - default - fi -} - -src_compile() { - if use prefix ; then - emake || die "emake failed" - fi - - if use doc; then - call_with_python_impl \ - emake docbook || die - fi - - if use epydoc; then - einfo "Generating api docs" - call_with_python_impl \ - emake epydoc || die - fi -} - -src_test() { - # make files executable, in case they were created by patch - find bin -type f | xargs chmod +x - call_with_python_impl \ - emake test || die -} - -src_install() { - local portage_base="/usr/lib/portage" - - emake DESTDIR="${D}" install || die "make install failed." - dodir /usr/lib/portage/bin - - if use userland_GNU; then - rm "${ED}"${portage_base}/bin/ebuild-helpers/bsd/sed || die "Failed to remove sed wrapper" - fi - - use doc && dohtml -r "${S}"/doc/* - use epydoc && dohtml -r "${WORKDIR}"/api - dodir /etc/portage - keepdir /etc/portage - - # Use dodoc for compression, since the Makefile doesn't do that. - dodoc "${S}"/{ChangeLog,NEWS,RELEASE-NOTES} || die - - # Allow external portage API consumers to import portage python modules - # (this used to be done with PYTHONPATH setting in /etc/env.d). - # For each of PYTHON_TARGETS, install a tree of *.py symlinks in - # site-packages, and compile with the corresponding interpreter. - local impl files mod_dir dest_mod_dir python relative_path x - for impl in "${PYTHON_COMPAT[@]}" ; do - use "python_targets_${impl}" || continue - if use build && [[ ${ROOT} == / && - ! -x ${EPREFIX}/usr/bin/$(get_python_interpreter ${impl}) ]] ; then - # Tolerate --nodeps at beginning of stage1 for catalyst - ewarn "skipping python_targets_${impl}, interpreter not found" - continue - fi - while read -r mod_dir ; do - cd "${ED}/usr/lib/portage/pym/${mod_dir}" || die - files=$(echo *.py) - if [ -z "${files}" ] || [ "${files}" = "*.py" ]; then - # __pycache__ directories contain no py files - continue - fi - dest_mod_dir=$(get_python_sitedir ${impl})/${mod_dir} - dodir "${dest_mod_dir}" || die - relative_path=../../../lib/portage/pym/${mod_dir} - x=/${mod_dir} - while [ -n "${x}" ] ; do - relative_path=../${relative_path} - x=${x%/*} - done - for x in ${files} ; do - dosym "${relative_path}/${x}" \ - "${dest_mod_dir}/${x}" || die - done - done < <(cd "${ED}"/usr/lib/portage/pym || die ; find * -type d ! -path "portage/tests*") - cd "${S}" || die - EPYTHON=$(get_python_interpreter ${impl}) \ - python_compileall "$(get_python_sitedir ${impl})" - done - - # Compile /usr/lib/portage/pym with the active interpreter, since portage - # internal commands force this directory to the beginning of sys.path. - python_compileall /usr/lib/portage/pym -} - -pkg_preinst() { - 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 - - if use xattr && ! current_python_has_xattr ; then - ewarn "For optimal performance in xattr handling, install" - ewarn "dev-python/pyxattr, or install >=dev-lang/python-3.3 and" - ewarn "enable USE=python3 for $CATEGORY/$PN." - fi - - has_version "<=${CATEGORY}/${PN}-2.2.00.13346" - EAPIPREFIX_UPGRADE=$? - - if has_version "<${CATEGORY}/${PN}-2.2.7-r1" ; then - REPOS_CONF_UPGRADE=true - REPOS_CONF_SYNC= - type -P portageq >/dev/null 2>&1 && \ - REPOS_CONF_SYNC=$("$(type -P portageq)" envvar SYNC) - fi -} - -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 [[ -n ${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 - - pushd "${EROOT}var/db/pkg" > /dev/null - local didwork= - [[ ! -e "${EROOT}"var/lib/portage/preserved_libs_registry ]] && for cpv in */*/NEEDED ; do - if [[ ${CHOST} == *-darwin* && ! -f ${cpv}.MACHO.3 ]] ; then - while read line; do - scanmacho -BF "%a;%F;%S;%n" ${line% *} >> "${cpv}".MACHO.3 - done < "${cpv}" - [[ -z ${didwork} ]] \ - && didwork=yes \ - || didwork=already - elif [[ ${CHOST} != *-darwin* && ${CHOST} != *-interix* && ! -f ${cpv}.ELF.2 ]] ; then - while read line; do - filename=${line% *} - needed=${line#* } - newline=$(scanelf -BF "%a;%F;%S;$needed;%r" $filename) - echo "${newline:3}" >> "${cpv}".ELF.2 - done < "${cpv}" - [[ -z ${didwork} ]] \ - && didwork=yes \ - || didwork=already - fi - [[ ${didwork} == yes ]] && \ - einfo "converting NEEDED files to new syntax, please wait" - done - popd > /dev/null - - if [[ ${EAPIPREFIX_UPGRADE} == 0 ]] ; then - local eapi - einfo 'removing EAPI="prefix" legacy from your vdb, please wait' - pushd "${EROOT}var/db/pkg" > /dev/null - for cpv in */* ; do - [[ ${cpv##*/} == "-MERGING-"* ]] && continue - # remove "prefix" from EAPI file - eapi=$(<"${cpv}"/EAPI) - eapi=${eapi/prefix/} - eapi=${eapi# } - eapi=${eapi:-0} - echo ${eapi} > "${cpv}"/EAPI - # remove "prefix" from EAPI in stored environment - bzcat "${cpv}"/environment.bz2 \ - | sed -e "s/EAPI=\([\"']\)prefix [0-9][\"']/EAPI=\1${eapi}\1/" \ - | bzip2 -9 > "${cpv}"/environment2.bz2 \ - && mv -f "${cpv}"/environment{2,}.bz2 - # remove "prefix" from the stored ebuild - sed -i -e "s/^EAPI=.*$/EAPI=${eapi}/" "${cpv}/${cpv##*/}.ebuild" - done - popd > /dev/null - fi -} diff --git a/sys-apps/portage/portage-2.2.27.ebuild b/sys-apps/portage/portage-2.2.27.ebuild new file mode 100644 index 0000000..50bb724 --- /dev/null +++ b/sys-apps/portage/portage-2.2.27.ebuild @@ -0,0 +1,247 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +PYTHON_COMPAT=( + pypy + python3_3 python3_4 python3_5 + python2_7 +) +PYTHON_REQ_USE='bzip2(+)' + +inherit eutils distutils-r1 multilib + +DESCRIPTION="Portage package manager used in Gentoo Prefix" +HOMEPAGE="http://prefix.gentoo.org/" +LICENSE="GPL-2" +KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" +SLOT="0" +IUSE="build doc epydoc +ipc linguas_ru selinux xattr prefix-chaining" + +DEPEND="!build? ( $(python_gen_impl_dep 'ssl(+)') ) + >=sys-devel/make-3.82 + >=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? ( !prefix? ( sys-freebsd/freebsd-bin ) ) + elibc_glibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) ) + elibc_uclibc? ( !prefix? ( >=sys-apps/sandbox-2.2 ) ) + kernel_linux? ( >=app-misc/pax-utils-0.1.17 ) + kernel_SunOS? ( >=app-misc/pax-utils-0.1.17 ) + kernel_FreeBSD? ( >=app-misc/pax-utils-0.1.17 ) + kernel_Darwin? ( >=app-misc/pax-utils-0.1.18 ) + kernel_HPUX? ( !hppa-hpux? ( >=app-misc/pax-utils-0.1.19 ) ) + kernel_AIX? ( >=sys-apps/aix-miscutils-0.1.1634 ) + 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) + ) ) + !prefix? ( !> cnf/make.globals \ + || die "failed to append to make.globals" + fi + + if [[ -n ${EPREFIX} ]] ; then + # PREFIX LOCAL: only hack const_autotool + local extrapath="/usr/bin:/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 + # lazy check, but works for now + if [[ ${PORTAGE_ROOT_USER} == "root" ]] ; then + # we need this for e.g. mtree on FreeBSD (and Darwin) which is in + # /usr/sbin + extrapath="/usr/sbin:/usr/bin:/sbin:/bin" + fi + local defaultpath="${EPREFIX}/usr/sbin:${EPREFIX}/usr/bin:${EPREFIX}/sbin:${EPREFIX}/bin" + + einfo "Adjusting sources for ${EPREFIX}" + find . -type f -exec \ + sed -e "s|@PORTAGE_EPREFIX@|${EPREFIX}|" \ + -e "s|@PORTAGE_BASE@|${EPREFIX}/usr/lib/portage/${EPYTHON}|" \ + -e "s|@PORTAGE_MV@|$(type -P mv)|" \ + -e "s|@PORTAGE_BASH@|${BASH}|" \ + -e "s|@PREFIX_PORTAGE_PYTHON@|$(type -P python)|" \ + -e "s|@DEFAULT_PATH@|${defaultpath}|" \ + -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|" \ + -i '{}' + || \ + die "Failed to patch sources" + + # remove Makefiles, or else they will get installed + find . -name "Makefile.*" -delete + + 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) + # 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.${ARCH}".diff ]; then + patch make.conf "make.conf.${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 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_USER}:${PORTAGE_GROUP} "${ED}"var/log/portage{,/elog} 2>/dev/null ; then + chmod g+s,ug+rwx "${ED}"var/log/portage{,/elog} + fi +}