Merge pull request #212 from flatcar-linux/krnowak/python-transition

Initial steps for python3 transition
This commit is contained in:
Krzesimir Nowak 2021-09-27 14:56:35 +02:00 committed by GitHub
commit dcb3622206
26 changed files with 1738 additions and 3 deletions

View File

@ -0,0 +1,4 @@
DIST gentoolkit-0.4.6.tar.gz 3205641 BLAKE2B 7da91a313c8a9263eb7b4abd6207ece9dd602a5069a87f1e78ada13fc9f396e1f2afddaf0637c473445034cf57b5ca7631e209361a88fa3892d302b20f4cc986 SHA512 3aa3c9af7e994313400607943b9090fd813227ddd6d550b50fbcf7eeb4053da8bcdb41c9ef2579d957d2f279fdcc4e2f2ceca1091c5fd457df4204dd11792d6e
DIST gentoolkit-0.4.7.tar.gz 3205669 BLAKE2B e5f64b85546bc10ad16e7fa42d288965539177375e8796b40df699859efa13fb98bb86aec58e60363c955b2d5e4b2e6379a7597252ee4fdbeec49559de67b328 SHA512 0fab600b4323d23e12009eeb4ade595950880a88b05bcfbfeada1a9b9af615b96d31c568285629bf6e5de7b45ed857bdf98b6261dc54974fbaf70c924e093c76
DIST gentoolkit-0.4.8.tar.gz 3206070 BLAKE2B 7f689ae85136827b8af50401165ccd44bc824e12bec43dad786c7221ec78ee3c1f14d538d197e277a2fedc23f570440f4ec7c0cc707a146814315ff6de48c115 SHA512 689b4229c5d2b6f4440b7d3d57e4b9be5265eead53737890c17dbd0510df287f5c19f86b924735d4ad146d1a500c59a15869b718cbf805b894b0bf115b69f838
DIST gentoolkit-0.5.0.tar.gz 3206598 BLAKE2B a379dcbbaba9d52c241fea020b87c458384e44092539947909e14fd6c63fd9cc06d076b8081874edf17fc50e80fe48ceab3400c90046867dc409e7ac39c17231 SHA512 8a5c344f3a17c4c779abbcaa35b5e3f147106dbc61310d0d1a816ec8080914271fa45c311a8feeb1bfe14195af7cf34c0b29142d6e43e2de232dae96fbd00861

View File

@ -0,0 +1,43 @@
# https://github.com/gentoo/gentoolkit/pull/11
# https://bugs.gentoo.org/747034
diff --git a/pym/gentoolkit/metadata.py b/pym/gentoolkit/metadata.py
index 22c249e..c3dba98 100644
--- a/pym/gentoolkit/metadata.py
+++ b/pym/gentoolkit/metadata.py
@@ -73,8 +73,7 @@ class _Maintainer(object):
self.description = None
self.restrict = node.get('restrict')
self.status = node.get('status')
- maint_attrs = node.getchildren()
- for attr in maint_attrs:
+ for attr in node.iter():
setattr(self, attr.tag, attr.text)
def __repr__(self):
@@ -101,7 +100,7 @@ class _Useflag(object):
_desc = ''
if node.text:
_desc = node.text
- for child in node.getchildren():
+ for child in node.iter():
_desc += child.text if child.text else ''
_desc += child.tail if child.tail else ''
# This takes care of tabs and newlines left from the file
@@ -213,7 +212,7 @@ class MetaData(object):
if herd in ('no-herd', 'maintainer-wanted', 'maintainer-needed'):
return None
- for node in self._herdstree.getiterator('herd'):
+ for node in self._herdstree.iter('herd'):
if node.findtext('name') == herd:
return node.findtext('email')
@@ -283,7 +282,7 @@ class MetaData(object):
return self._useflags
self._useflags = []
- for node in self._xml_tree.getiterator('flag'):
+ for node in self._xml_tree.iter('flag'):
self._useflags.append(_Useflag(node))
return self._useflags

View File

@ -0,0 +1,34 @@
From f14b6198d1dd9cb7f4a83f3822e4a1782a5581e8 Mon Sep 17 00:00:00 2001
From: Brian Dolbec <dolsen@gentoo.org>
Date: Tue, 13 Oct 2020 10:04:07 -0400
Subject: [PATCH] metadata.py: Fix duplicated use flag text bug 748129
Regression from commit: 517581df206766
link: https://gitweb.gentoo.org/proj/gentoolkit.git/commit/?id=517581df206766fabf10273cde565e0a6dc62829
Gentoo bug: https://bugs.gentoo.org/748129
Signed-off-by: Brian Dolbec <dolsen@gentoo.org>
---
pym/gentoolkit/metadata.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/pym/gentoolkit/metadata.py b/pym/gentoolkit/metadata.py
index c3dba98..0b58392 100644
--- a/pym/gentoolkit/metadata.py
+++ b/pym/gentoolkit/metadata.py
@@ -101,8 +101,11 @@ class _Useflag(object):
if node.text:
_desc = node.text
for child in node.iter():
- _desc += child.text if child.text else ''
- _desc += child.tail if child.tail else ''
+ # prevent duplicate text
+ if child.text and child.text not in _desc:
+ _desc += child.text
+ if child.tail and not child.tail in _desc:
+ _desc += child.tail
# This takes care of tabs and newlines left from the file
self.description = re.sub(r'\s+', ' ', _desc)
--
libgit2 1.0.1

View File

@ -0,0 +1,75 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python3_{6,7} )
PYTHON_REQ_USE="xml(+),threads(+)"
inherit distutils-r1
DESCRIPTION="Collection of administration scripts for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage-Tools"
SRC_URI="https://gitweb.gentoo.org/proj/gentoolkit.git/snapshot/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
DEPEND="
sys-apps/portage[${PYTHON_USEDEP}]"
RDEPEND="${DEPEND}
sys-apps/gawk
sys-apps/gentoo-functions"
python_prepare_all() {
python_setup
echo VERSION="${PVR}" "${PYTHON}" setup.py set_version
VERSION="${PVR}" "${PYTHON}" setup.py set_version
distutils-r1_python_prepare_all
}
python_install_all() {
distutils-r1_python_install_all
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-0.4.0"; then
SHOW_GENTOOKIT_DEV_DEPRECATED_MSG=1
fi
}
pkg_postinst() {
# Create cache directory for revdep-rebuild
mkdir -p -m 0755 "${EROOT}"/var/cache
mkdir -p -m 0700 "${EROOT}"/var/cache/revdep-rebuild
if [[ ${SHOW_GENTOOKIT_DEV_DEPRECATED_MSG} ]]; then
elog "Starting with version 0.4.0, ebump, ekeyword and imlate are now"
elog "part of the gentoolkit package."
elog "The gentoolkit-dev package is now deprecated in favor of a single"
elog "gentoolkit package. The remaining tools from gentoolkit-dev"
elog "are now obsolete/unused with the git based tree."
fi
# Only show the elog information on a new install
if [[ ! ${REPLACING_VERSIONS} ]]; then
elog
elog "For further information on gentoolkit, please read the gentoolkit"
elog "guide: https://wiki.gentoo.org/wiki/Gentoolkit"
elog
elog "Another alternative to equery is app-portage/portage-utils"
elog
elog "Additional tools that may be of interest:"
elog
elog " app-admin/eclean-kernel"
elog " app-portage/diffmask"
elog " app-portage/flaggie"
elog " app-portage/install-mask"
elog " app-portage/portpeek"
elog " app-portage/smart-live-rebuild"
fi
}

View File

@ -0,0 +1,75 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python3_{6,7,8} pypy3 )
PYTHON_REQ_USE="xml(+),threads(+)"
inherit distutils-r1
DESCRIPTION="Collection of administration scripts for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage-Tools"
SRC_URI="https://gitweb.gentoo.org/proj/gentoolkit.git/snapshot/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
DEPEND="
sys-apps/portage[${PYTHON_USEDEP}]"
RDEPEND="${DEPEND}
sys-apps/gawk
sys-apps/gentoo-functions"
python_prepare_all() {
python_setup
echo VERSION="${PVR}" "${PYTHON}" setup.py set_version
VERSION="${PVR}" "${PYTHON}" setup.py set_version
distutils-r1_python_prepare_all
}
python_install_all() {
distutils-r1_python_install_all
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-0.4.0"; then
SHOW_GENTOOKIT_DEV_DEPRECATED_MSG=1
fi
}
pkg_postinst() {
# Create cache directory for revdep-rebuild
mkdir -p -m 0755 "${EROOT}"/var/cache
mkdir -p -m 0700 "${EROOT}"/var/cache/revdep-rebuild
if [[ ${SHOW_GENTOOKIT_DEV_DEPRECATED_MSG} ]]; then
elog "Starting with version 0.4.0, ebump, ekeyword and imlate are now"
elog "part of the gentoolkit package."
elog "The gentoolkit-dev package is now deprecated in favor of a single"
elog "gentoolkit package. The remaining tools from gentoolkit-dev"
elog "are now obsolete/unused with the git based tree."
fi
# Only show the elog information on a new install
if [[ ! ${REPLACING_VERSIONS} ]]; then
elog
elog "For further information on gentoolkit, please read the gentoolkit"
elog "guide: https://wiki.gentoo.org/wiki/Gentoolkit"
elog
elog "Another alternative to equery is app-portage/portage-utils"
elog
elog "Additional tools that may be of interest:"
elog
elog " app-admin/eclean-kernel"
elog " app-portage/diffmask"
elog " app-portage/flaggie"
elog " app-portage/install-mask"
elog " app-portage/portpeek"
elog " app-portage/smart-live-rebuild"
fi
}

View File

@ -0,0 +1,75 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python3_{6,7,8} pypy3 )
PYTHON_REQ_USE="xml(+),threads(+)"
inherit distutils-r1
DESCRIPTION="Collection of administration scripts for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage-Tools"
SRC_URI="https://gitweb.gentoo.org/proj/gentoolkit.git/snapshot/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
DEPEND="
sys-apps/portage[${PYTHON_USEDEP}]"
RDEPEND="${DEPEND}
sys-apps/gawk
sys-apps/gentoo-functions"
python_prepare_all() {
python_setup
echo VERSION="${PVR}" "${PYTHON}" setup.py set_version
VERSION="${PVR}" "${PYTHON}" setup.py set_version
distutils-r1_python_prepare_all
}
python_install_all() {
distutils-r1_python_install_all
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-0.4.0"; then
SHOW_GENTOOKIT_DEV_DEPRECATED_MSG=1
fi
}
pkg_postinst() {
# Create cache directory for revdep-rebuild
mkdir -p -m 0755 "${EROOT}"/var/cache
mkdir -p -m 0700 "${EROOT}"/var/cache/revdep-rebuild
if [[ ${SHOW_GENTOOKIT_DEV_DEPRECATED_MSG} ]]; then
elog "Starting with version 0.4.0, ebump, ekeyword and imlate are now"
elog "part of the gentoolkit package."
elog "The gentoolkit-dev package is now deprecated in favor of a single"
elog "gentoolkit package. The remaining tools from gentoolkit-dev"
elog "are now obsolete/unused with the git based tree."
fi
# Only show the elog information on a new install
if [[ ! ${REPLACING_VERSIONS} ]]; then
elog
elog "For further information on gentoolkit, please read the gentoolkit"
elog "guide: https://wiki.gentoo.org/wiki/Gentoolkit"
elog
elog "Another alternative to equery is app-portage/portage-utils"
elog
elog "Additional tools that may be of interest:"
elog
elog " app-admin/eclean-kernel"
elog " app-portage/diffmask"
elog " app-portage/flaggie"
elog " app-portage/install-mask"
elog " app-portage/portpeek"
elog " app-portage/smart-live-rebuild"
fi
}

View File

@ -0,0 +1,78 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 )
PYTHON_REQ_USE="xml(+),threads(+)"
inherit distutils-r1
DESCRIPTION="Collection of administration scripts for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage-Tools"
SRC_URI="https://gitweb.gentoo.org/proj/gentoolkit.git/snapshot/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
DEPEND="
sys-apps/portage[${PYTHON_USEDEP}]"
RDEPEND="${DEPEND}
sys-apps/gawk
sys-apps/gentoo-functions"
distutils_enable_tests setup.py
PATCHES=(
"${FILESDIR}"/${PN}-0.5.0-python3_9.patch
"${FILESDIR}"/${PN}-0.5.0-r1-python3_9.patch
)
python_prepare_all() {
python_setup
echo VERSION="${PVR}" "${PYTHON}" setup.py set_version
VERSION="${PVR}" "${PYTHON}" setup.py set_version
distutils-r1_python_prepare_all
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-0.4.0"; then
SHOW_GENTOOKIT_DEV_DEPRECATED_MSG=1
fi
}
pkg_postinst() {
# Create cache directory for revdep-rebuild
mkdir -p -m 0755 "${EROOT}"/var/cache
mkdir -p -m 0700 "${EROOT}"/var/cache/revdep-rebuild
if [[ ${SHOW_GENTOOKIT_DEV_DEPRECATED_MSG} ]]; then
elog "Starting with version 0.4.0, ebump, ekeyword and imlate are now"
elog "part of the gentoolkit package."
elog "The gentoolkit-dev package is now deprecated in favor of a single"
elog "gentoolkit package. The remaining tools from gentoolkit-dev"
elog "are now obsolete/unused with the git based tree."
fi
# Only show the elog information on a new install
if [[ ! ${REPLACING_VERSIONS} ]]; then
elog
elog "For further information on gentoolkit, please read the gentoolkit"
elog "guide: https://wiki.gentoo.org/wiki/Gentoolkit"
elog
elog "Another alternative to equery is app-portage/portage-utils"
elog
elog "Additional tools that may be of interest:"
elog
elog " app-admin/eclean-kernel"
elog " app-portage/diffmask"
elog " app-portage/flaggie"
elog " app-portage/install-mask"
elog " app-portage/portpeek"
elog " app-portage/smart-live-rebuild"
fi
}

View File

@ -0,0 +1,74 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DISTUTILS_USE_SETUPTOOLS=no
PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 )
PYTHON_REQ_USE="xml(+),threads(+)"
EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/gentoolkit.git"
inherit distutils-r1 git-r3
DESCRIPTION="Collection of administration scripts for Gentoo"
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage-Tools"
SRC_URI=""
LICENSE="GPL-2"
SLOT="0"
IUSE=""
KEYWORDS=""
DEPEND="
sys-apps/portage[${PYTHON_USEDEP}]"
RDEPEND="${DEPEND}
sys-apps/gawk
sys-apps/gentoo-functions"
distutils_enable_tests setup.py
python_prepare_all() {
python_setup
echo VERSION="${PVR}" "${PYTHON}" setup.py set_version
VERSION="${PVR}" "${PYTHON}" setup.py set_version
distutils-r1_python_prepare_all
}
pkg_preinst() {
if has_version "<${CATEGORY}/${PN}-0.4.0"; then
SHOW_GENTOOKIT_DEV_DEPRECATED_MSG=1
fi
}
pkg_postinst() {
# Create cache directory for revdep-rebuild
mkdir -p -m 0755 "${EROOT}"/var/cache
mkdir -p -m 0700 "${EROOT}"/var/cache/revdep-rebuild
if [[ ${SHOW_GENTOOKIT_DEV_DEPRECATED_MSG} ]]; then
elog "Starting with version 0.4.0, ebump, ekeyword and imlate are now"
elog "part of the gentoolkit package."
elog "The gentoolkit-dev package is now deprecated in favor of a single"
elog "gentoolkit package. The remaining tools from gentoolkit-dev"
elog "are now obsolete/unused with the git based tree."
fi
# Only show the elog information on a new install
if [[ ! ${REPLACING_VERSIONS} ]]; then
elog
elog "For further information on gentoolkit, please read the gentoolkit"
elog "guide: https://wiki.gentoo.org/wiki/Gentoolkit"
elog
elog "Another alternative to equery is app-portage/portage-utils"
elog
elog "Additional tools that may be of interest:"
elog
elog " app-admin/eclean-kernel"
elog " app-portage/diffmask"
elog " app-portage/flaggie"
elog " app-portage/install-mask"
elog " app-portage/portpeek"
elog " app-portage/smart-live-rebuild"
fi
}

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>tools-portage@gentoo.org</email>
<name>Gentoo Portage tools team</name>
</maintainer>
<longdescription>
Gentoolkit is a collection of useful adminstration scripts particular to
the Gentoo Linux distribution. It contains rough drafts and
implementations of features that may in time make it into Portage, or
into full-fledged tools in their own right.
</longdescription>
</pkgmetadata>

View File

@ -0,0 +1,2 @@
DIST setuptools-46.4.0.zip 865912 BLAKE2B 452d36132f5648c79c7e1616a93ff6a39ab2f64b2864ee397b4f57e7f72c47d418ff274f5decd35b0591b09800ad2a7cbd71c283550bd0e60a4d85744a57d4ec SHA512 31e58fd1d682089a45d23aa07c3c2c4c952ca016fa4c3416b2cba979d8b57369f80baef98ce857912e506e87d6cb456497a1ce1c75a0cdf1ee25d4e753b58726
DIST setuptools-50.3.0.zip 2169216 BLAKE2B 029ea0159de270af0078a4661c696b93681b33dcc475640c7626f5a40bf1bb4759e5915948696c03b76dca10bdc4e790e2e9ef9628f41abca9a6aa48adcb72f6 SHA512 f67a2b7d639e03bf8b3815133e128902a559baf689afdd5893844ddc7c83505d727a6bb30ced1f78c4d2719dd405d2f4c527576bfa14dd9cb50c8ec4a479683e

View File

@ -0,0 +1,14 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>python@gentoo.org</email>
<name>Python</name>
</maintainer>
<stabilize-allarches/>
<upstream>
<remote-id type="pypi">setuptools</remote-id>
<remote-id type="github">pypa/setuptools</remote-id>
<remote-id type="cpe">cpe:/a:python:setuptools</remote-id>
</upstream>
</pkgmetadata>

View File

@ -0,0 +1,85 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
# Set to 'manual' to avoid triggering install QA check
DISTUTILS_USE_SETUPTOOLS=manual
PYTHON_COMPAT=( python2_7 python3_{6,7,8,9} pypy3 )
PYTHON_REQ_USE="xml(+)"
inherit distutils-r1
DESCRIPTION="Collection of extensions to Distutils"
HOMEPAGE="https://github.com/pypa/setuptools https://pypi.org/project/setuptools/"
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.zip"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
BDEPEND="
app-arch/unzip
test? (
$(python_gen_cond_dep '
dev-python/mock[${PYTHON_USEDEP}]
dev-python/pip[${PYTHON_USEDEP}]
>=dev-python/pytest-3.7.0[${PYTHON_USEDEP}]
dev-python/pytest-fixture-config[${PYTHON_USEDEP}]
dev-python/pytest-virtualenv[${PYTHON_USEDEP}]
dev-python/wheel[${PYTHON_USEDEP}]
' -3)
)
"
# installing plugins apparently breaks stuff at runtime, so let's pull
# it early
PDEPEND="
>=dev-python/certifi-2016.9.26[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
dev-python/setuptools_scm[${PYTHON_USEDEP}]
' -3)"
# Force in-source build because build system modifies sources.
DISTUTILS_IN_SOURCE_BUILD=1
DOCS=( {CHANGES,README}.rst docs/{easy_install.txt,pkg_resources.txt,setuptools.txt} )
python_prepare_all() {
# silence the py2 warning that is awfully verbose and breaks some
# packages by adding unexpected output
# (also, we know!)
sed -i -e '/py2_warn/d' pkg_resources/__init__.py || die
# disable tests requiring a network connection
rm setuptools/tests/test_packageindex.py || die
# don't run integration tests
rm setuptools/tests/test_integration.py || die
# xpass-es for me on py3
sed -e '/xfail.*710/s:(:(six.PY2, :' \
-i setuptools/tests/test_archive_util.py || die
# avoid pointless dep on flake8
sed -i -e 's:--flake8::' pytest.ini || die
distutils-r1_python_prepare_all
}
python_test() {
if ! python_is_python3; then
einfo "Tests are skipped on py2 to untangle deps"
return
fi
distutils_install_for_testing
# test_easy_install raises a SandboxViolation due to ${HOME}/.pydistutils.cfg
# It tries to sandbox the test in a tempdir
HOME="${PWD}" pytest -vv ${PN} || die "Tests failed under ${EPYTHON}"
}
python_install() {
export DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT=1
distutils-r1_python_install
}

View File

@ -0,0 +1,73 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
# Set to 'manual' to avoid triggering install QA check
DISTUTILS_USE_SETUPTOOLS=manual
PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 )
PYTHON_REQ_USE="xml(+)"
inherit distutils-r1
DESCRIPTION="Collection of extensions to Distutils"
HOMEPAGE="https://github.com/pypa/setuptools https://pypi.org/project/setuptools/"
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.zip"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="test"
RESTRICT="!test? ( test )"
BDEPEND="
app-arch/unzip
test? (
dev-python/jaraco-envs[${PYTHON_USEDEP}]
dev-python/mock[${PYTHON_USEDEP}]
dev-python/pip[${PYTHON_USEDEP}]
>=dev-python/pytest-3.7.0[${PYTHON_USEDEP}]
dev-python/pytest-fixture-config[${PYTHON_USEDEP}]
dev-python/pytest-virtualenv[${PYTHON_USEDEP}]
dev-python/wheel[${PYTHON_USEDEP}]
)
"
PDEPEND="
>=dev-python/certifi-2016.9.26[${PYTHON_USEDEP}]
dev-python/setuptools_scm[${PYTHON_USEDEP}]"
# Force in-source build because build system modifies sources.
DISTUTILS_IN_SOURCE_BUILD=1
DOCS=( {CHANGES,README}.rst docs/{easy_install.txt,pkg_resources.txt,setuptools.txt} )
python_prepare_all() {
# disable tests requiring a network connection
rm setuptools/tests/test_packageindex.py || die
# don't run integration tests
rm setuptools/tests/test_integration.py || die
# xpass-es for me on py3
#sed -e '/xfail.*710/s:(:(six.PY2, :' \
# -i setuptools/tests/test_archive_util.py || die
# avoid pointless dep on flake8
sed -i -e 's:--flake8::' -e 's:--cov::' pytest.ini || die
# disable the code disabling non-existing coverage plugin
sed -i -e 's:cov = .*:return:' conftest.py || die
distutils-r1_python_prepare_all
}
python_test() {
distutils_install_for_testing
# test_easy_install raises a SandboxViolation due to ${HOME}/.pydistutils.cfg
# It tries to sandbox the test in a tempdir
HOME="${PWD}" pytest -vv ${PN} || die "Tests failed under ${EPYTHON}"
}
python_install() {
export DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT=1
distutils-r1_python_install
}

View File

@ -44,7 +44,7 @@ _PYTHON_ALL_IMPLS=(
jython2_7
pypy pypy3
python2_7
python3_5 python3_6 python3_7
python3_5 python3_6 python3_7 python3_8 python3_9 python3_10
)
readonly _PYTHON_ALL_IMPLS
@ -80,7 +80,7 @@ _python_impl_supported() {
# keep in sync with _PYTHON_ALL_IMPLS!
# (not using that list because inline patterns shall be faster)
case "${impl}" in
python2_7|python3_[567]|jython2_7)
python2_7|python3_[56789]|jython2_7|python3_10)
return 0
;;
pypy1_[89]|pypy2_0|python2_[56]|python3_[1234])
@ -176,7 +176,8 @@ _python_set_impls() {
# b) '-2' to indicate all Python 2 variants (= !python_is_python3)
# c) '-3' to indicate all Python 3 variants (= python_is_python3)
_python_impl_matches() {
[[ ${#} -ge 2 ]] || die "${FUNCNAME}: takes at least 2 parameters"
[[ ${#} -ge 1 ]] || die "${FUNCNAME}: takes at least 1 parameter"
[[ ${#} -eq 1 ]] && return 0
local impl=${1} pattern
shift

View File

@ -0,0 +1,4 @@
DIST coreutils-8.30-patches-01.tar.xz 5788 BLAKE2B a41511ce39ac570cb14b7f12d125eebef92217469a9490808719fa0665f5e5c0adb96fbd02c4bac4d280d1502295669575790a81dbc01afe2ca3a9d384cbefb0 SHA512 b1e1933637de4581d5f8c6ede4e80a012435d13f0cf5550a76ab5bbe9441e3c15ce19ef3f78a7ea3b8368d5e9a3bb17c1207c471d26171b59786f38adeba0454
DIST coreutils-8.30.tar.xz 5359532 BLAKE2B b66ccd112a6c2c8b90e58ff1c3371e7f5827937035769329885e5bdae197466189f3715720b8f8cf0b5047fe16d6c86984dcee994117c2d3c7b8dbd597027255 SHA512 25bc132c0d89ce71c33e417f04649c9fcfce6c5ef8b19f093b2e9e2851bfde9b5a31e20499d9c427332228ba54b88d445ddb445551e1944bb8f5cbff5ffa4eda
DIST coreutils-8.31.tar.xz 5410140 BLAKE2B e3ae6be8edbe9df9164b4c9ac8bf14dc23b147fa665f20669e18ac4c6e45ba839dc0dc99e05670eb006d22133475a4a717a5f40b00ebaedfd6e1fbab887674d5 SHA512 ef8941dae845bbf5ae5838bc49e44554a766302930601aada6fa594e8088f0fbad74e481ee392ff89633e68b99e4da3f761fcb5d31ee3b233d540fe2a2d4e1af
DIST coreutils-8.32.tar.xz 5547836 BLAKE2B 0ad99c176c19ec214fcfd0845523e5362f0151827707c759bd46c0fe8d2501c6ad1c29c5b71266f6525857bc0d56c472db0d7fe29953b6c65e2e6c76bdf3c515 SHA512 1c8f3584efd61b4b02e7ac5db8e103b63cfb2063432caaf1e64cb2dcc56d8c657d1133bbf10bd41468d6a1f31142e6caa81d16ae68fa3e6e84075c253613a145

View File

@ -0,0 +1,210 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
PYTHON_COMPAT=( python3_6 )
inherit eutils flag-o-matic python-any-r1 toolchain-funcs
PATCH_VER="01"
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
HOMEPAGE="https://www.gnu.org/software/coreutils/"
SRC_URI="mirror://gnu/${PN}/${P}.tar.xz
mirror://gentoo/${P}-patches-${PATCH_VER}.tar.xz
https://dev.gentoo.org/~polynomial-c/dist/${P}-patches-${PATCH_VER}.tar.xz"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 s390 sparc x86 ~x86-linux"
IUSE="acl caps gmp hostname kill multicall nls selinux +split-usr static test userland_BSD vanilla xattr"
RESTRICT="!test? ( test )"
LIB_DEPEND="acl? ( sys-apps/acl[static-libs] )
caps? ( sys-libs/libcap )
gmp? ( dev-libs/gmp:=[static-libs] )
xattr? ( !userland_BSD? ( sys-apps/attr[static-libs] ) )"
RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs]} )
selinux? ( sys-libs/libselinux )
nls? ( virtual/libintl )"
DEPEND="${RDEPEND}
static? ( ${LIB_DEPEND} )
app-arch/xz-utils
test? (
dev-lang/perl
dev-perl/Expect
!userland_BSD? (
dev-util/strace
)
${PYTHON_DEPS}
$(python_gen_any_dep 'dev-python/pyinotify[${PYTHON_USEDEP}]')
)"
RDEPEND+="
hostname? ( !sys-apps/net-tools[hostname] )
kill? (
!sys-apps/util-linux[kill]
!sys-process/procps[kill]
)
!app-misc/realpath
!<sys-apps/util-linux-2.13
!<sys-apps/sandbox-2.10-r4
!sys-apps/stat
!net-mail/base64
!sys-apps/mktemp
!<app-forensics/tct-1.18-r1
!<net-fs/netatalk-2.0.3-r4"
python_check_deps() {
has_version --host-root "dev-python/pyinotify[${PYTHON_USEDEP}]"
}
pkg_setup() {
if use test ; then
python-any-r1_pkg_setup
fi
}
src_prepare() {
if ! use vanilla ; then
eapply "${WORKDIR}"/patch/*.patch
fi
eapply_user
# Since we've patched many .c files, the make process will try to
# re-build the manpages by running `./bin --help`. When doing a
# cross-compile, we can't do that since 'bin' isn't a native bin.
# Also, it's not like we changed the usage on any of these things,
# so let's just update the timestamps and skip the help2man step.
set -- man/*.x
touch ${@/%x/1}
# Avoid perl dep for compiled in dircolors default #348642
if ! has_version dev-lang/perl ; then
touch src/dircolors.h
touch ${@/%x/1}
fi
}
src_configure() {
local myconf=(
--with-packager="Gentoo"
--with-packager-version="${PVR} (p${PATCH_VER:-0})"
--with-packager-bug-reports="https://bugs.gentoo.org/"
--enable-install-program="arch,$(usev hostname),$(usev kill)"
--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
--enable-largefile
$(usex caps '' --disable-libcap)
$(use_enable nls)
$(use_enable acl)
$(use_enable multicall single-binary)
$(use_enable xattr)
$(use_with gmp)
)
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
export fu_cv_sys_stat_statfs2_bsize=yes #311569
export gl_cv_func_realpath_works=yes #416629
fi
export gl_cv_func_mknod_works=yes #409919
use static && append-ldflags -static && sed -i '/elf_sys=yes/s:yes:no:' configure #321821
use selinux || export ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no #301782
use userland_BSD && myconf+=( -program-prefix=g --program-transform-name=s/stat/nustat/ )
# kill/uptime - procps
# groups/su - shadow
# hostname - net-tools
econf "${myconf[@]}"
}
src_test() {
# Known to fail with FEATURES=usersandbox (bug #439574):
# - tests/du/long-from-unreadable.sh} (bug #413621)
# - tests/rm/deep-2.sh (bug #413621)
# - tests/dd/no-allocate.sh (bug #629660)
if has usersandbox $FEATURES ; then
ewarn "You are emerging ${P} with 'usersandbox' enabled." \
"Expect some test failures or emerge with 'FEATURES=-usersandbox'!"
fi
# Non-root tests will fail if the full path isn't
# accessible to non-root users
chmod -R go-w "${WORKDIR}"
chmod a+rx "${WORKDIR}"
# coreutils tests like to do `mount` and such with temp dirs
# so make sure /etc/mtab is writable #265725
# make sure /dev/loop* can be mounted #269758
mkdir -p "${T}"/mount-wrappers
mkwrap() {
local w ww
for w in "$@" ; do
ww="${T}/mount-wrappers/${w}"
cat <<-EOF > "${ww}"
#!${EPREFIX}/bin/sh
exec env SANDBOX_WRITE="\${SANDBOX_WRITE}:/etc/mtab:/dev/loop" $(type -P $w) "\$@"
EOF
chmod a+rx "${ww}"
done
}
mkwrap mount umount
addwrite /dev/full
#export RUN_EXPENSIVE_TESTS="yes"
#export FETISH_GROUPS="portage wheel"
env PATH="${T}/mount-wrappers:${PATH}" \
emake -j1 -k check
}
src_install() {
default
insinto /etc
newins src/dircolors.hin DIR_COLORS
if [[ ${USERLAND} == "GNU" ]] ; then
cd "${ED%/}"/usr/bin || die
dodir /bin
# move critical binaries into /bin (required by FHS)
local fhs="cat chgrp chmod chown cp date dd df echo false ln ls
mkdir mknod mv pwd rm rmdir stty sync true uname"
mv ${fhs} ../../bin/ || die "could not move fhs bins"
if use hostname; then
mv hostname ../../bin/ || die
fi
if use kill; then
mv kill ../../bin/ || die
fi
if use split-usr ; then
# move critical binaries into /bin (common scripts)
local com="basename chroot cut dir dirname du env expr head mkfifo
mktemp readlink seq sleep sort tail touch tr tty vdir wc yes"
mv ${com} ../../bin/ || die "could not move common bins"
# create a symlink for uname in /usr/bin/ since autotools require it
local x
for x in ${com} uname ; do
dosym ../../bin/${x} /usr/bin/${x}
done
fi
else
# For now, drop the man pages, collides with the ones of the system.
rm -rf "${ED%/}"/usr/share/man
fi
}
pkg_postinst() {
ewarn "Make sure you run 'hash -r' in your active shells."
ewarn "You should also re-source your shell settings for LS_COLORS"
ewarn " changes, such as: source /etc/profile"
# Help out users using experimental filesystems
if grep -qs btrfs "${EROOT%/}"/etc/fstab /proc/mounts ; then
case $(uname -r) in
2.6.[12][0-9]|2.6.3[0-7]*)
ewarn "You are running a system with a buggy btrfs driver."
ewarn "Please upgrade your kernel to avoid silent corruption."
ewarn "See: https://bugs.gentoo.org/353907"
;;
esac
fi
}

View File

@ -0,0 +1,190 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
PYTHON_COMPAT=( python3_{6,7} )
inherit eutils flag-o-matic python-any-r1 toolchain-funcs
PATCH="${PN}-8.30-patches-01"
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
HOMEPAGE="https://www.gnu.org/software/coreutils/"
SRC_URI="mirror://gnu/${PN}/${P}.tar.xz
mirror://gentoo/${PATCH}.tar.xz
https://dev.gentoo.org/~polynomial-c/dist/${PATCH}.tar.xz"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x86-linux"
IUSE="acl caps gmp hostname kill multicall nls selinux +split-usr static test vanilla xattr"
RESTRICT="!test? ( test )"
LIB_DEPEND="acl? ( sys-apps/acl[static-libs] )
caps? ( sys-libs/libcap )
gmp? ( dev-libs/gmp:=[static-libs] )
xattr? ( sys-apps/attr[static-libs] )"
RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs]} )
selinux? ( sys-libs/libselinux )
nls? ( virtual/libintl )"
DEPEND="${RDEPEND}
static? ( ${LIB_DEPEND} )
app-arch/xz-utils
test? (
dev-lang/perl
dev-perl/Expect
dev-util/strace
${PYTHON_DEPS}
)"
RDEPEND+="
hostname? ( !sys-apps/net-tools[hostname] )
kill? (
!sys-apps/util-linux[kill]
!sys-process/procps[kill]
)
!app-misc/realpath
!<sys-apps/util-linux-2.13
!<sys-apps/sandbox-2.10-r4
!sys-apps/stat
!net-mail/base64
!sys-apps/mktemp
!<app-forensics/tct-1.18-r1
!<net-fs/netatalk-2.0.3-r4"
pkg_setup() {
if use test ; then
python-any-r1_pkg_setup
fi
}
src_prepare() {
if ! use vanilla ; then
eapply "${WORKDIR}"/patch/*.patch
eapply "${FILESDIR}"/${PN}-8.31-sandbox-env-test.patch
fi
eapply_user
# Since we've patched many .c files, the make process will try to
# re-build the manpages by running `./bin --help`. When doing a
# cross-compile, we can't do that since 'bin' isn't a native bin.
# Also, it's not like we changed the usage on any of these things,
# so let's just update the timestamps and skip the help2man step.
set -- man/*.x
touch ${@/%x/1}
# Avoid perl dep for compiled in dircolors default #348642
if ! has_version dev-lang/perl ; then
touch src/dircolors.h
touch ${@/%x/1}
fi
}
src_configure() {
local myconf=(
--with-packager="Gentoo"
--with-packager-version="${PVR} (p${PATCH_VER:-0})"
--with-packager-bug-reports="https://bugs.gentoo.org/"
--enable-install-program="arch,$(usev hostname),$(usev kill)"
--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
--enable-largefile
$(usex caps '' --disable-libcap)
$(use_enable nls)
$(use_enable acl)
$(use_enable multicall single-binary)
$(use_enable xattr)
$(use_with gmp)
)
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
export fu_cv_sys_stat_statfs2_bsize=yes #311569
export gl_cv_func_realpath_works=yes #416629
fi
export gl_cv_func_mknod_works=yes #409919
use static && append-ldflags -static && sed -i '/elf_sys=yes/s:yes:no:' configure #321821
use selinux || export ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no #301782
# kill/uptime - procps
# groups/su - shadow
# hostname - net-tools
econf "${myconf[@]}"
}
src_test() {
# Known to fail with FEATURES=usersandbox (bug #439574):
# - tests/du/long-from-unreadable.sh} (bug #413621)
# - tests/rm/deep-2.sh (bug #413621)
# - tests/dd/no-allocate.sh (bug #629660)
if has usersandbox ${FEATURES} ; then
ewarn "You are emerging ${P} with 'usersandbox' enabled." \
"Expect some test failures or emerge with 'FEATURES=-usersandbox'!"
fi
# Non-root tests will fail if the full path isn't
# accessible to non-root users
chmod -R go-w "${WORKDIR}"
chmod a+rx "${WORKDIR}"
# coreutils tests like to do `mount` and such with temp dirs
# so make sure /etc/mtab is writable #265725
# make sure /dev/loop* can be mounted #269758
mkdir -p "${T}"/mount-wrappers || die
mkwrap() {
local w ww
for w in "${@}" ; do
ww="${T}/mount-wrappers/${w}"
cat <<-EOF > "${ww}"
#!${EPREFIX}/bin/sh
exec env SANDBOX_WRITE="\${SANDBOX_WRITE}:/etc/mtab:/dev/loop" $(type -P ${w}) "\$@"
EOF
chmod a+rx "${ww}"
done
}
mkwrap mount umount
addwrite /dev/full
#export RUN_EXPENSIVE_TESTS="yes"
#export FETISH_GROUPS="portage wheel"
env PATH="${T}/mount-wrappers:${PATH}" \
emake -j1 -k check
}
src_install() {
default
insinto /etc
newins src/dircolors.hin DIR_COLORS
if use split-usr ; then
cd "${ED%/}"/usr/bin || die
dodir /bin
# move critical binaries into /bin (required by FHS)
local fhs="cat chgrp chmod chown cp date dd df echo false ln ls
mkdir mknod mv pwd rm rmdir stty sync true uname"
mv ${fhs} ../../bin/ || die "could not move fhs bins"
if use hostname; then
mv hostname ../../bin/ || die
fi
if use kill; then
mv kill ../../bin/ || die
fi
# move critical binaries into /bin (common scripts)
# Why are these required for booting?
local com="basename chroot cut dir dirname du env expr head mkfifo
mktemp readlink seq sleep sort tail touch tr tty vdir wc yes"
mv ${com} ../../bin/ || die "could not move common bins"
# create a symlink for uname in /usr/bin/ since autotools require it
# Other than uname, we need to figure out why we are
# creating symlinks for these in /usr/bin instead of leaving
# the files there in the first place.
local x
for x in ${com} uname ; do
dosym ../../bin/${x} /usr/bin/${x}
done
fi
}
pkg_postinst() {
ewarn "Make sure you run 'hash -r' in your active shells."
ewarn "You should also re-source your shell settings for LS_COLORS"
ewarn " changes, such as: source /etc/profile"
}

View File

@ -0,0 +1,201 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6,7,8} )
inherit eutils flag-o-matic python-any-r1 toolchain-funcs
PATCH="${PN}-8.30-patches-01"
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
HOMEPAGE="https://www.gnu.org/software/coreutils/"
SRC_URI="mirror://gnu/${PN}/${P}.tar.xz
!vanilla? (
mirror://gentoo/${PATCH}.tar.xz
https://dev.gentoo.org/~polynomial-c/dist/${PATCH}.tar.xz
)
"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x86-linux"
IUSE="acl caps gmp hostname kill multicall nls selinux +split-usr static test vanilla xattr"
RESTRICT="!test? ( test )"
LIB_DEPEND="acl? ( sys-apps/acl[static-libs] )
caps? ( sys-libs/libcap )
gmp? ( dev-libs/gmp:=[static-libs] )
xattr? ( sys-apps/attr[static-libs] )"
RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs]} )
selinux? ( sys-libs/libselinux )
nls? ( virtual/libintl )"
DEPEND="
${RDEPEND}
static? ( ${LIB_DEPEND} )
"
BDEPEND="
app-arch/xz-utils
test? (
dev-lang/perl
dev-perl/Expect
dev-util/strace
${PYTHON_DEPS}
)
"
RDEPEND+="
hostname? ( !sys-apps/net-tools[hostname] )
kill? (
!sys-apps/util-linux[kill]
!sys-process/procps[kill]
)
!app-misc/realpath
!<sys-apps/util-linux-2.13
!<sys-apps/sandbox-2.10-r4
!sys-apps/stat
!net-mail/base64
!sys-apps/mktemp
!<app-forensics/tct-1.18-r1
!<net-fs/netatalk-2.0.3-r4"
pkg_setup() {
if use test ; then
python-any-r1_pkg_setup
fi
}
src_prepare() {
local PATCHES=(
"${FILESDIR}"/coreutils-8.32-ls-restore-8.31-behavior.patch
)
if ! use vanilla ; then
PATCHES+=( "${WORKDIR}"/patch )
PATCHES+=( "${FILESDIR}"/${PN}-8.32-sandbox-env-test.patch )
fi
default
# Since we've patched many .c files, the make process will try to
# re-build the manpages by running `./bin --help`. When doing a
# cross-compile, we can't do that since 'bin' isn't a native bin.
# Also, it's not like we changed the usage on any of these things,
# so let's just update the timestamps and skip the help2man step.
set -- man/*.x
touch ${@/%x/1}
# Avoid perl dep for compiled in dircolors default #348642
if ! has_version dev-lang/perl ; then
touch src/dircolors.h
touch ${@/%x/1}
fi
}
src_configure() {
local myconf=(
--with-packager="Gentoo"
--with-packager-version="${PVR} (p${PATCH_VER:-0})"
--with-packager-bug-reports="https://bugs.gentoo.org/"
--enable-install-program="arch,$(usev hostname),$(usev kill)"
--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
--enable-largefile
$(usex caps '' --disable-libcap)
$(use_enable nls)
$(use_enable acl)
$(use_enable multicall single-binary)
$(use_enable xattr)
$(use_with gmp)
)
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
export fu_cv_sys_stat_statfs2_bsize=yes #311569
export gl_cv_func_realpath_works=yes #416629
fi
export gl_cv_func_mknod_works=yes #409919
use static && append-ldflags -static && sed -i '/elf_sys=yes/s:yes:no:' configure #321821
use selinux || export ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no #301782
# kill/uptime - procps
# groups/su - shadow
# hostname - net-tools
econf "${myconf[@]}"
}
src_test() {
# Known to fail with FEATURES=usersandbox (bug #439574):
# - tests/du/long-from-unreadable.sh} (bug #413621)
# - tests/rm/deep-2.sh (bug #413621)
# - tests/dd/no-allocate.sh (bug #629660)
if has usersandbox ${FEATURES} ; then
ewarn "You are emerging ${P} with 'usersandbox' enabled." \
"Expect some test failures or emerge with 'FEATURES=-usersandbox'!"
fi
# Non-root tests will fail if the full path isn't
# accessible to non-root users
chmod -R go-w "${WORKDIR}"
chmod a+rx "${WORKDIR}"
# coreutils tests like to do `mount` and such with temp dirs
# so make sure /etc/mtab is writable #265725
# make sure /dev/loop* can be mounted #269758
mkdir -p "${T}"/mount-wrappers || die
mkwrap() {
local w ww
for w in "${@}" ; do
ww="${T}/mount-wrappers/${w}"
cat <<-EOF > "${ww}"
#!${EPREFIX}/bin/sh
exec env SANDBOX_WRITE="\${SANDBOX_WRITE}:/etc/mtab:/dev/loop" $(type -P ${w}) "\$@"
EOF
chmod a+rx "${ww}"
done
}
mkwrap mount umount
addwrite /dev/full
#export RUN_EXPENSIVE_TESTS="yes"
#export FETISH_GROUPS="portage wheel"
env PATH="${T}/mount-wrappers:${PATH}" \
emake -j1 -k check
}
src_install() {
default
insinto /etc
newins src/dircolors.hin DIR_COLORS
if use split-usr ; then
cd "${ED}"/usr/bin || die
dodir /bin
# move critical binaries into /bin (required by FHS)
local fhs="cat chgrp chmod chown cp date dd df echo false ln ls
mkdir mknod mv pwd rm rmdir stty sync true uname"
mv ${fhs} ../../bin/ || die "could not move fhs bins"
if use hostname; then
mv hostname ../../bin/ || die
fi
if use kill; then
mv kill ../../bin/ || die
fi
# move critical binaries into /bin (common scripts)
# Why are these required for booting?
local com="basename chroot cut dir dirname du env expr head mkfifo
mktemp readlink seq sleep sort tail touch tr tty vdir wc yes"
mv ${com} ../../bin/ || die "could not move common bins"
# create a symlink for uname in /usr/bin/ since autotools require it
# Other than uname, we need to figure out why we are
# creating symlinks for these in /usr/bin instead of leaving
# the files there in the first place.
local x
for x in ${com} uname ; do
dosym ../../bin/${x} /usr/bin/${x}
done
fi
}
pkg_postinst() {
ewarn "Make sure you run 'hash -r' in your active shells."
ewarn "You should also re-source your shell settings for LS_COLORS"
ewarn " changes, such as: source /etc/profile"
}

View File

@ -0,0 +1,52 @@
Skip tests known to fail when running under Gentoo sandbox.
--- a/tests/du/long-from-unreadable.sh
+++ b/tests/du/long-from-unreadable.sh
@@ -29,6 +29,9 @@
# unnecessarily to using FTS_NOCHDIR mode in this corner case.
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+# Avoid #413621 until #548250 is resolved
+test -n "$SANDBOX_ACTIVE" && skip_ "Gentoo: Test known bad under sandbox (#413621)"
+
print_ver_ du
require_perl_
--- a/tests/ls/stat-free-symlinks.sh
+++ b/tests/ls/stat-free-symlinks.sh
@@ -17,6 +17,9 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+# Avoid #413621 until #548250 is resolved
+test -n "$SANDBOX_ACTIVE" && skip_ "Gentoo: Test known bad under sandbox (#413621)"
+
print_ver_ ls
require_strace_ stat
--- a/tests/misc/env-S.pl
+++ b/tests/misc/env-S.pl
@@ -30,6 +30,11 @@ $env = $1;
# Turn off localization of executable's output.
@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+# Skip if sandbox is enabled
+if ($ENV{SANDBOX_ACTIVE}) {
+ CuSkip::skip "Gentoo: Test known bad under sandbox (#675802)\n";
+}
+
my @Tests =
(
# Test combination of -S and regular arguments
--- a/tests/rm/deep-2.sh
+++ b/tests/rm/deep-2.sh
@@ -17,6 +17,9 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+# Avoid #413621 until #548250 is resolved
+test -n "$SANDBOX_ACTIVE" && skip_ "Gentoo: Test known bad under sandbox (#413621)"
+
print_ver_ rm
require_perl_

View File

@ -0,0 +1,94 @@
From 10fcb97bd728f09d4a027eddf8ad2900f0819b0a Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Thu, 5 Mar 2020 17:25:29 -0800
Subject: ls: restore 8.31 behavior on removed directories
* src/ls.c: Do not include <sys/sycall.h>
(print_dir): Don't worry about whether the directory is removed.
* tests/ls/removed-directory.sh: Adjust to match new (i.e., old)
behavior.
diff --git a/src/ls.c b/src/ls.c
index 24b983287..4acf5f44d 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -49,10 +49,6 @@
# include <sys/ptem.h>
#endif
-#ifdef __linux__
-# include <sys/syscall.h>
-#endif
-
#include <stdio.h>
#include <assert.h>
#include <setjmp.h>
@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
struct dirent *next;
uintmax_t total_blocks = 0;
static bool first = true;
- bool found_any_entries = false;
errno = 0;
dirp = opendir (name);
@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
next = readdir (dirp);
if (next)
{
- found_any_entries = true;
if (! file_ignored (next->d_name))
{
enum filetype type = unknown;
@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
if (errno != EOVERFLOW)
break;
}
-#ifdef __linux__
- else if (! found_any_entries)
- {
- /* If readdir finds no directory entries at all, not even "." or
- "..", then double check that the directory exists. */
- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1
- && errno != EINVAL)
- {
- /* We exclude EINVAL as that pertains to buffer handling,
- and we've passed NULL as the buffer for simplicity.
- ENOENT is returned if appropriate before buffer handling. */
- file_failure (command_line_arg, _("reading directory %s"), name);
- }
- break;
- }
-#endif
else
break;
diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh
index e8c835dab..fe8f929a1 100755
--- a/tests/ls/removed-directory.sh
+++ b/tests/ls/removed-directory.sh
@@ -26,20 +26,14 @@ case $host_triplet in
*) skip_ 'non linux kernel' ;;
esac
-LS_FAILURE=2
-
-cat <<\EOF >exp-err || framework_failure_
-ls: reading directory '.': No such file or directory
-EOF
-
cwd=$(pwd)
mkdir d || framework_failure_
cd d || framework_failure_
rmdir ../d || framework_failure_
-returns_ $LS_FAILURE ls >../out 2>../err || fail=1
+ls >../out 2>../err || fail=1
cd "$cwd" || framework_failure_
compare /dev/null out || fail=1
-compare exp-err err || fail=1
+compare /dev/null err || fail=1
Exit $fail
--
cgit v1.2.1

View File

@ -0,0 +1,64 @@
Skip tests known to fail when running under Gentoo sandbox.
--- a/tests/du/long-from-unreadable.sh
+++ b/tests/du/long-from-unreadable.sh
@@ -29,6 +29,9 @@
# unnecessarily to using FTS_NOCHDIR mode in this corner case.
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+# Avoid #413621 until #548250 is resolved
+test -n "$SANDBOX_ACTIVE" && skip_ "Gentoo: Test known bad under sandbox (#413621)"
+
print_ver_ du
require_perl_
--- a/tests/ls/removed-directory.sh
+++ b/tests/ls/removed-directory.sh
@@ -19,6 +19,9 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+# Avoid #413621 until #548250 is resolved
+test -n "$SANDBOX_ACTIVE" && skip_ "Gentoo: Test known bad under sandbox (#413621)"
+
print_ver_ ls
case $host_triplet in
--- a/tests/ls/stat-free-symlinks.sh
+++ b/tests/ls/stat-free-symlinks.sh
@@ -17,6 +17,9 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+# Avoid #413621 until #548250 is resolved
+test -n "$SANDBOX_ACTIVE" && skip_ "Gentoo: Test known bad under sandbox (#413621)"
+
print_ver_ ls
require_strace_ stat
--- a/tests/misc/env-S.pl
+++ b/tests/misc/env-S.pl
@@ -30,6 +30,11 @@ $env = $1;
# Turn off localization of executable's output.
@ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3;
+# Skip if sandbox is enabled
+if ($ENV{SANDBOX_ACTIVE}) {
+ CuSkip::skip "Gentoo: Test known bad under sandbox (#675802)\n";
+}
+
my @Tests =
(
# Test combination of -S and regular arguments
--- a/tests/rm/deep-2.sh
+++ b/tests/rm/deep-2.sh
@@ -17,6 +17,9 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
+# Avoid #413621 until #548250 is resolved
+test -n "$SANDBOX_ACTIVE" && skip_ "Gentoo: Test known bad under sandbox (#413621)"
+
print_ver_ rm
require_perl_

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
<longdescription>Standard GNU file utilities (chmod, cp, dd, dir, ls, ...), text utilities (sort, tr, head, wc, ...), and shell utilities (whoami, who, ...)
</longdescription>
<use>
<flag name="caps">Add Linux capabilities support in output of file utilities (ls, dir, ...) via <pkg>sys-libs/libcap</pkg></flag>
<flag name="hostname">Build the hostname program</flag>
<flag name="kill">Build the kill program</flag>
<flag name="multicall">Build all tools into a single `coreutils` program akin to busybox to save space</flag>
<flag name="split-usr">Enable this if /bin and /usr/bin are separate directories</flag>
</use>
<upstream>
<remote-id type="cpe">cpe:/a:gnu:coreutils</remote-id>
</upstream>
</pkgmetadata>

View File

@ -0,0 +1,2 @@
DIST talloc-2.3.1.tar.gz 638878 BLAKE2B 3d014a47639434c65f5dda2c51da3c6c28d5d60dbc9afdaca27b8ec903cde3433a8fa4ca33305750ff60911f7e43171d0d932d98c2d30ea38494aa532d6d9626 SHA512 064fc39a9aaace6e0209f3251c8ff198d8a318b4cf4198006ff9892ca6e15e7d817b2fda43e0444fbbf04d2c3e70d06523dff5d57cbb796d27317ef4759e062e
DIST talloc-2.3.2.tar.gz 661344 BLAKE2B 957eedc4a367051cb99fa4d2edb8e778de8e0187bb5c0d84a1afef20aab122a8b7310d10c694e15ddd6a0a45194889fe3d26dae0ceb8e406d51512af95a23014 SHA512 c851a6f43025720453a3bff8734bfcfff0e29fb7cf2ffcc6c03b6ab8589098daf01d668deec61aa2f238d4df3eb3c47bd080e26eec760cf04a70e1afcad5c5e1

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>patrick@gentoo.org</email>
<name>Patrick Lauer</name>
</maintainer>
<maintainer type="project">
<email>samba@gentoo.org</email>
<name>Samba</name>
</maintainer>
<use>
<flag name="compat">Enable extra compatibility stuff</flag>
</use>
</pkgmetadata>

View File

@ -0,0 +1,118 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6..9} )
PYTHON_REQ_USE="threads(+)"
inherit waf-utils python-single-r1 multilib multilib-minimal
DESCRIPTION="Samba talloc library"
HOMEPAGE="https://talloc.samba.org/"
SRC_URI="https://www.samba.org/ftp/${PN}/${P}.tar.gz"
LICENSE="GPL-3 LGPL-3+ LGPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~x64-macos ~sparc-solaris ~x64-solaris"
IUSE="compat +python"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RESTRICT="test"
RDEPEND="
!elibc_FreeBSD? (
!elibc_SunOS? (
!elibc_Darwin? (
dev-libs/libbsd[${MULTILIB_USEDEP}]
)
)
)
python? ( ${PYTHON_DEPS} )
!!<sys-libs/talloc-2.0.5
"
DEPEND="${RDEPEND}"
BDEPEND="${PYTHON_DEPS}
dev-libs/libxslt
sys-devel/gettext
"
WAF_BINARY="${S}/buildtools/bin/waf"
MULTILIB_WRAPPED_HEADERS=(
# python goes only for native
/usr/include/pytalloc.h
)
pkg_setup() {
# try to turn off distcc and ccache for people that have a problem with it
export DISTCC_DISABLE=1
export CCACHE_DISABLE=1
python-single-r1_pkg_setup
}
src_prepare() {
default
if [[ ${CHOST} == *-darwin* ]] ; then
# Drop irritating ABI names (e.g. cpython-37m)
# We're only installing one implementation anyway
sed -i "s/+ conf.all_envs\['default'\]\['PYTHON_SO_ABI_FLAG'\]//" wscript || die
sed -i "s/name = bld.pyembed_libname('pytalloc-util')/name = 'pytalloc-util'/" wscript || die
fi
# what would you expect of waf? i won't even waste time trying.
multilib_copy_sources
}
multilib_src_configure() {
local extra_opts=(
$(usex compat --enable-talloc-compat1 '')
$(multilib_native_usex python '' --disable-python)
$([[ ${CHOST} == *-solaris* ]] && echo '--disable-symbol-versions')
)
waf-utils_src_configure "${extra_opts[@]}"
}
multilib_src_compile() {
waf-utils_src_compile
}
multilib_src_install() {
waf-utils_src_install
# waf is stupid, and no, we can't fix the build-system, since it's provided
# as a brilliant binary blob thats decompressed on the fly
if [[ ${CHOST} == *-darwin* ]] ; then
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libtalloc.2.dylib \
"${ED}"/usr/$(get_libdir)/libtalloc.${PV}.dylib || die
if use python ; then
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libpytalloc-util.2.dylib \
"${ED}"/usr/$(get_libdir)/libpytalloc-util.${PV}.dylib || die
install_name_tool \
-change "${BUILD_DIR}/bin/default/libtalloc.dylib" \
"${EPREFIX}"/usr/$(get_libdir)/libtalloc.2.dylib \
"${ED}"/usr/$(get_libdir)/libpytalloc-util.${PV}.dylib || die
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libpytalloc-util.dylib \
"${ED}"/usr/$(get_libdir)/libpytalloc-util.dylib || die
install_name_tool \
-change "${BUILD_DIR}/bin/default/libtalloc.dylib" \
"${EPREFIX}"/usr/$(get_libdir)/libtalloc.2.dylib \
"${ED}"/usr/$(get_libdir)/libpytalloc-util.dylib || die
install_name_tool \
-change "${BUILD_DIR}/bin/default/libpytalloc-util.dylib" \
"${EPREFIX}"/usr/$(get_libdir)/libpytalloc-util.dylib \
"${D}"$(python_get_sitedir)/talloc*.bundle || die
install_name_tool \
-change "${BUILD_DIR}/bin/default/libtalloc.dylib" \
"${EPREFIX}"/usr/$(get_libdir)/libtalloc.2.dylib \
"${D}"$(python_get_sitedir)/talloc*.bundle || die
fi
fi
}

View File

@ -0,0 +1,118 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{6..9} )
PYTHON_REQ_USE="threads(+)"
inherit waf-utils python-single-r1 multilib multilib-minimal
DESCRIPTION="Samba talloc library"
HOMEPAGE="https://talloc.samba.org/"
SRC_URI="https://www.samba.org/ftp/${PN}/${P}.tar.gz"
LICENSE="GPL-3 LGPL-3+ LGPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~sparc-solaris ~x64-solaris"
IUSE="compat +python"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RESTRICT="test"
RDEPEND="
!elibc_FreeBSD? (
!elibc_SunOS? (
!elibc_Darwin? (
dev-libs/libbsd[${MULTILIB_USEDEP}]
)
)
)
python? ( ${PYTHON_DEPS} )
!!<sys-libs/talloc-2.0.5
"
DEPEND="${RDEPEND}"
BDEPEND="${PYTHON_DEPS}
dev-libs/libxslt
sys-devel/gettext
"
WAF_BINARY="${S}/buildtools/bin/waf"
MULTILIB_WRAPPED_HEADERS=(
# python goes only for native
/usr/include/pytalloc.h
)
pkg_setup() {
# try to turn off distcc and ccache for people that have a problem with it
export DISTCC_DISABLE=1
export CCACHE_DISABLE=1
python-single-r1_pkg_setup
}
src_prepare() {
default
if [[ ${CHOST} == *-darwin* ]] ; then
# Drop irritating ABI names (e.g. cpython-37m)
# We're only installing one implementation anyway
sed -i "s/+ conf.all_envs\['default'\]\['PYTHON_SO_ABI_FLAG'\]//" wscript || die
sed -i "s/name = bld.pyembed_libname('pytalloc-util')/name = 'pytalloc-util'/" wscript || die
fi
# what would you expect of waf? i won't even waste time trying.
multilib_copy_sources
}
multilib_src_configure() {
local extra_opts=(
$(usex compat --enable-talloc-compat1 '')
$(multilib_native_usex python '' --disable-python)
$([[ ${CHOST} == *-solaris* ]] && echo '--disable-symbol-versions')
)
waf-utils_src_configure "${extra_opts[@]}"
}
multilib_src_compile() {
waf-utils_src_compile
}
multilib_src_install() {
waf-utils_src_install
# waf is stupid, and no, we can't fix the build-system, since it's provided
# as a brilliant binary blob thats decompressed on the fly
if [[ ${CHOST} == *-darwin* ]] ; then
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libtalloc.2.dylib \
"${ED}"/usr/$(get_libdir)/libtalloc.${PV}.dylib || die
if use python ; then
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libpytalloc-util.2.dylib \
"${ED}"/usr/$(get_libdir)/libpytalloc-util.${PV}.dylib || die
install_name_tool \
-change "${BUILD_DIR}/bin/default/libtalloc.dylib" \
"${EPREFIX}"/usr/$(get_libdir)/libtalloc.2.dylib \
"${ED}"/usr/$(get_libdir)/libpytalloc-util.${PV}.dylib || die
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libpytalloc-util.dylib \
"${ED}"/usr/$(get_libdir)/libpytalloc-util.dylib || die
install_name_tool \
-change "${BUILD_DIR}/bin/default/libtalloc.dylib" \
"${EPREFIX}"/usr/$(get_libdir)/libtalloc.2.dylib \
"${ED}"/usr/$(get_libdir)/libpytalloc-util.dylib || die
install_name_tool \
-change "${BUILD_DIR}/bin/default/libpytalloc-util.dylib" \
"${EPREFIX}"/usr/$(get_libdir)/libpytalloc-util.dylib \
"${D}"$(python_get_sitedir)/talloc*.bundle || die
install_name_tool \
-change "${BUILD_DIR}/bin/default/libtalloc.dylib" \
"${EPREFIX}"/usr/$(get_libdir)/libtalloc.2.dylib \
"${D}"$(python_get_sitedir)/talloc*.bundle || die
fi
fi
}