mirror of
https://github.com/flatcar/scripts.git
synced 2026-03-25 15:21:50 +01:00
sys-apps/coreutils: Sync with Gentoo
It's from Gentoo commit cc35f42efef5d8f77520f3208136451587372ad8. Signed-off-by: Flatcar Buildbot <buildbot@flatcar-linux.org>
This commit is contained in:
parent
6be3fb82a5
commit
9faae6a887
@ -1,9 +1,5 @@
|
||||
DIST coreutils-9.10.tar.xz 6507600 BLAKE2B 7f9f93afc996dea7b6ab412703b1706f40616ae4fee1eea9e5cad0f1e8e95b03df9570084a2703fa4b5bb1cb2eaf8bbe55368c0c7ff58af985b30d09227f9309 SHA512 976ccfb8b906273a687ec330938a25ab72fb130988ca2fcad4fb6e12f4b621eb76b6e9ee091ad060361e95a8da26835b2484fffd3b5f9c7cdb100c1eb7b7d676
|
||||
DIST coreutils-9.10.tar.xz.sig 833 BLAKE2B 37d4a26a7b211feb773f1abb939a4ab742a6da6cecdbd723eca6f29362f90183fd02175e26c8409232166a395c8bd4bcb12a2709b062ac5ab82f36c6e219189b SHA512 83ec7f4a313ed425bf362bf3512042f9562df20daa03465090025a54e85f98c301b7be770340b08193bdf78b413a3bd87b218b71234443e756472205ce840c67
|
||||
DIST coreutils-9.6-patches.tar.xz 5904 BLAKE2B 1abe214914007804362b9d7c1a7c39f07d74c51857e84484179f11bb8fa512356ee97c811ef62469aaa52db5cc90f2f7587c2dc57ed130ebbfdacc59755dcb90 SHA512 5a609b21da7c78e41184e5d7bca87da4f868975635b6e8aa4bd8f4d18c98a2fabd5b7e8ad6bf7780ca77f6d532bfa5cb1ed618e4bc32617ba2977d4b8a885b9f
|
||||
DIST coreutils-9.7.tar.xz 6158960 BLAKE2B e5e5f7ec26c3952eb6a25988f78d3a1f8a70cf97a2fbc7b433dfcd1721cd38e6e0a8b9cb83f854a22df325bcb5ea8c4534c5a217273762cd5d575b381db69ee8 SHA512 fe81e6ba4fb492095153d5baac1eca8f07ece0957849de746a2a858cf007893cc2ded595a31a5e5d43d13216cc44b9d74a3245d9f23221ecc8cd00f428f27414
|
||||
DIST coreutils-9.7.tar.xz.sig 833 BLAKE2B 18dee5a1b5dc1811b277748fe6ee079dc6320bc6d67e01f108415c6afe21ad0367ece46f8c6dfb0976b1e5f62ae15c2d61fba916ea232c71a1b2f66c81b983bf SHA512 48d86a19cee3c153f01f7478847f4621685c02e59942540bb20b30e314df05230817b87d0e73acd953e79fab35718e5bea57f25fe511a2c275a85ced4b317bae
|
||||
DIST coreutils-9.8.tar.xz 6234824 BLAKE2B a93e26c8dda875b11541808d82ff8d6537f521b9c44e2a9959ee8f452823a4df5aed2793ac32766e2d3f832606d7190f7f53ea5870419f585aa66429a9626d98 SHA512 7b6c420907f0e33e4aff3dd92270f8cbd3e94b2ae8cf7caa2d5d1cfd5e9958319904a6547127abd55ee63aae0316f5b1228586b2da34ea402da032e925a25e53
|
||||
DIST coreutils-9.8.tar.xz.sig 833 BLAKE2B 8d195ebeaf7b383d05b8ae977a4566b0b5c48df21470062f4e4d6763a383c28d9315b56d2ff86b6ce6c8678d71009629f66642411deb22db3e74fa18bd081433 SHA512 0fa9ab4404cd2157584797de22a1f28ec4e0353dae05a7476198dc77e23bf59aaeb1aabf9f7dc22f5d80df311e6ef1490add75ae1663b4091e58cc29db4dcfa3
|
||||
DIST coreutils-9.9.tar.xz 6295160 BLAKE2B ddae0c1ff882739712e901d6eb1373e4172de9335b95b4c1004773aadc6b7e3cb3bf5aa583f13034062a75dc9194bf8534b0f7f1258c8ff64595b1301964e124 SHA512 e7b0e59f7732d2c098ea4934014f470248bd5c4764210e9200a698010a8e3b95bbb26e543f0cd73ed5a4b8e1f8cda932c73f39954d68175e4deaa47526610c65
|
||||
DIST coreutils-9.9.tar.xz.sig 833 BLAKE2B 83f7c87520234169aa9e49428ca97d19e3356e19fe0b508b42a546667effcff2c19829516510ac45a1cd2b6db1a14abf1cfbef1e53f6845afd61fd82651d361f SHA512 0a3dfdfa6b4234e2e1d42142269f959bdf3cf8f6605a50270a27eff84dd22588f182121f7dd3eeb04be45f5109d02690215065b3d3b43882874d0e165a1435d0
|
||||
|
||||
@ -1,302 +0,0 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Try to keep an eye on Fedora's packaging: https://src.fedoraproject.org/rpms/coreutils
|
||||
# The upstream coreutils maintainers also maintain the package in Fedora and may
|
||||
# backport fixes which we want to pick up.
|
||||
#
|
||||
# Also recommend subscribing to the coreutils and bug-coreutils MLs.
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/coreutils.asc
|
||||
inherit flag-o-matic python-any-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PATCH="${PN}-9.6-patches"
|
||||
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
|
||||
HOMEPAGE="https://www.gnu.org/software/coreutils/"
|
||||
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
EGIT_REPO_URI="https://git.savannah.gnu.org/git/coreutils.git"
|
||||
inherit git-r3
|
||||
elif [[ ${PV} == *_p* ]] ; then
|
||||
# Note: could put this in devspace, but if it's gone, we don't want
|
||||
# it in tree anyway. It's just for testing.
|
||||
MY_SNAPSHOT="$(ver_cut 1-2).53-14af8"
|
||||
SRC_URI="https://www.pixelbeat.org/cu/coreutils-${MY_SNAPSHOT}.tar.xz -> ${P}.tar.xz"
|
||||
SRC_URI+=" verify-sig? ( https://www.pixelbeat.org/cu/coreutils-${MY_SNAPSHOT}.tar.xz.sig -> ${P}.tar.xz.sig )"
|
||||
S="${WORKDIR}"/${PN}-${MY_SNAPSHOT}
|
||||
else
|
||||
SRC_URI="
|
||||
mirror://gnu/${PN}/${P}.tar.xz
|
||||
verify-sig? ( mirror://gnu/${PN}/${P}.tar.xz.sig )
|
||||
"
|
||||
|
||||
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
|
||||
fi
|
||||
|
||||
SRC_URI+=" !vanilla? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${MY_PATCH}.tar.xz )"
|
||||
|
||||
LICENSE="GPL-3+"
|
||||
SLOT="0"
|
||||
IUSE="acl caps gmp hostname kill multicall nls +openssl 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] )
|
||||
openssl? ( dev-libs/openssl:=[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
|
||||
dev-lang/perl
|
||||
test? (
|
||||
dev-debug/strace
|
||||
dev-lang/perl
|
||||
dev-perl/Expect
|
||||
${PYTHON_DEPS}
|
||||
)
|
||||
verify-sig? ( sec-keys/openpgp-keys-coreutils )
|
||||
"
|
||||
RDEPEND+="
|
||||
hostname? ( !sys-apps/net-tools[hostname] )
|
||||
kill? (
|
||||
!sys-apps/util-linux[kill]
|
||||
!sys-process/procps[kill]
|
||||
)
|
||||
!<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
|
||||
"
|
||||
|
||||
QA_CONFIG_IMPL_DECL_SKIP=(
|
||||
# gnulib FPs (bug #898370)
|
||||
unreachable MIN alignof static_assert
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
if use test ; then
|
||||
python-any-r1_pkg_setup
|
||||
fi
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
git-r3_src_unpack
|
||||
|
||||
cd "${S}" || die
|
||||
./bootstrap || die
|
||||
|
||||
sed -i -e "s:submodule-checks ?= no-submodule-changes public-submodule-commit:submodule-checks ?= no-submodule-changes:" gnulib/top/maint.mk || die
|
||||
elif use verify-sig ; then
|
||||
# Needed for downloaded patch (which is unsigned, which is fine)
|
||||
verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig}
|
||||
fi
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# TODO: past 2025, we may need to add our own hack for bug #907474.
|
||||
local PATCHES=(
|
||||
# Upstream patches
|
||||
)
|
||||
|
||||
if ! use vanilla && [[ -d "${WORKDIR}"/${MY_PATCH} ]] ; then
|
||||
PATCHES+=( "${WORKDIR}"/${MY_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} || die
|
||||
|
||||
# Avoid perl dep for compiled in dircolors default (bug #348642)
|
||||
if ! has_version dev-lang/perl ; then
|
||||
touch src/dircolors.h || die
|
||||
touch ${@/%x/1} || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# TODO: in future (>9.4?), we may want to wire up USE=systemd:
|
||||
# still experimental at the moment, but:
|
||||
# https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=85edb4afbd119fb69a0d53e1beb71f46c9525dd0
|
||||
local myconf=(
|
||||
--with-packager="Gentoo"
|
||||
--with-packager-version="${PVR} (p${PATCH_VER:-0})"
|
||||
--with-packager-bug-reports="https://bugs.gentoo.org/"
|
||||
# kill/uptime - procps
|
||||
# groups/su - shadow
|
||||
# hostname - net-tools
|
||||
--enable-install-program="arch,$(usev hostname),$(usev kill)"
|
||||
--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
|
||||
$(usev !caps --disable-libcap)
|
||||
$(use_enable nls)
|
||||
$(use_enable acl)
|
||||
$(use_enable multicall single-binary)
|
||||
$(use_enable xattr)
|
||||
$(use_with gmp libgmp)
|
||||
$(use_with openssl)
|
||||
)
|
||||
|
||||
if use gmp ; then
|
||||
myconf+=( --with-libgmp-prefix="${ESYSROOT}"/usr )
|
||||
fi
|
||||
|
||||
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
|
||||
# bug #311569
|
||||
export fu_cv_sys_stat_statfs2_bsize=yes
|
||||
# bug #416629
|
||||
export gl_cv_func_realpath_works=yes
|
||||
fi
|
||||
|
||||
# bug #409919
|
||||
export gl_cv_func_mknod_works=yes
|
||||
|
||||
if use static ; then
|
||||
append-ldflags -static
|
||||
# bug #321821
|
||||
sed -i '/elf_sys=yes/s:yes:no:' configure || die
|
||||
fi
|
||||
|
||||
if ! use selinux ; then
|
||||
# bug #301782
|
||||
export ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no
|
||||
fi
|
||||
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# Non-root tests will fail if the full path isn't
|
||||
# accessible to non-root users
|
||||
chmod -R go-w "${WORKDIR}" || die
|
||||
chmod a+rx "${WORKDIR}" || die
|
||||
|
||||
# coreutils tests like to do `mount` and such with temp dirs,
|
||||
# so make sure:
|
||||
# - /etc/mtab is writable (bug #265725)
|
||||
# - /dev/loop* can be mounted (bug #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}" || die
|
||||
done
|
||||
}
|
||||
mkwrap mount umount
|
||||
|
||||
addwrite /dev/full
|
||||
|
||||
#local -x RUN_EXPENSIVE_TESTS="yes"
|
||||
#local -x COREUTILS_GROUPS="portage wheel"
|
||||
local -x PATH="${T}/mount-wrappers:${PATH}"
|
||||
local -x gl_public_submodule_commit=
|
||||
|
||||
local xfail_tests=()
|
||||
|
||||
if [[ -n ${SANDBOX_ACTIVE} ]]; then
|
||||
xfail_tests+=(
|
||||
# bug #629660
|
||||
# Commented out again in 9.6 as it XPASSes on linux-6.12.10
|
||||
# with sandbox-2.43 on tmpfs. Let's see if it lasts..
|
||||
#tests/dd/no-allocate.sh
|
||||
|
||||
# bug #675802
|
||||
tests/env/env-S
|
||||
tests/env/env-S.pl
|
||||
|
||||
# We have a patch which fixes this (bug #259876)
|
||||
#tests/touch/not-owner
|
||||
#tests/touch/not-owner.sh
|
||||
)
|
||||
fi
|
||||
|
||||
# This test is flaky (bug #910640).
|
||||
cat > tests/tty/tty-eof.pl <<-EOF || die
|
||||
#!/usr/bin/perl
|
||||
exit 77;
|
||||
EOF
|
||||
|
||||
# We set DISABLE_HARD_ERRORS because some of the tests hard error-out
|
||||
# because of sandbox. They're skipped above but DISABLE_HARD_ERRORS is needed
|
||||
# to downgrade them to FAIL.
|
||||
emake -k check \
|
||||
VERBOSE=yes \
|
||||
DISABLE_HARD_ERRORS=yes \
|
||||
XFAIL_TESTS="${xfail_tests[*]}"
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
@ -1,313 +0,0 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Try to keep an eye on Fedora's packaging: https://src.fedoraproject.org/rpms/coreutils
|
||||
# The upstream coreutils maintainers also maintain the package in Fedora and may
|
||||
# backport fixes which we want to pick up.
|
||||
#
|
||||
# Also recommend subscribing to the coreutils and bug-coreutils MLs.
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/coreutils.asc
|
||||
inherit flag-o-matic python-any-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PATCH="${PN}-9.6-patches"
|
||||
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
|
||||
HOMEPAGE="https://www.gnu.org/software/coreutils/"
|
||||
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
EGIT_REPO_URI="https://git.savannah.gnu.org/git/coreutils.git"
|
||||
inherit git-r3
|
||||
elif [[ ${PV} == *_p* ]] ; then
|
||||
# Note: could put this in devspace, but if it's gone, we don't want
|
||||
# it in tree anyway. It's just for testing.
|
||||
MY_SNAPSHOT="$(ver_cut 1-2).327-71a8c"
|
||||
SRC_URI="https://www.pixelbeat.org/cu/coreutils-${MY_SNAPSHOT}.tar.xz -> ${P}.tar.xz"
|
||||
SRC_URI+=" verify-sig? ( https://www.pixelbeat.org/cu/coreutils-${MY_SNAPSHOT}.tar.xz.sig -> ${P}.tar.xz.sig )"
|
||||
S="${WORKDIR}"/${PN}-${MY_SNAPSHOT}
|
||||
else
|
||||
SRC_URI="
|
||||
mirror://gnu/${PN}/${P}.tar.xz
|
||||
verify-sig? ( mirror://gnu/${PN}/${P}.tar.xz.sig )
|
||||
"
|
||||
|
||||
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
|
||||
fi
|
||||
|
||||
SRC_URI+=" !vanilla? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${MY_PATCH}.tar.xz )"
|
||||
|
||||
LICENSE="GPL-3+"
|
||||
SLOT="0"
|
||||
IUSE="acl caps gmp hostname kill multicall nls +openssl selinux +split-usr static test test-full vanilla xattr"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
LIB_DEPEND="
|
||||
acl? ( sys-apps/acl[static-libs] )
|
||||
caps? ( sys-libs/libcap )
|
||||
gmp? ( dev-libs/gmp:=[static-libs] )
|
||||
openssl? ( dev-libs/openssl:=[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
|
||||
dev-lang/perl
|
||||
test? (
|
||||
dev-debug/strace
|
||||
dev-lang/perl
|
||||
dev-perl/Expect
|
||||
${PYTHON_DEPS}
|
||||
)
|
||||
verify-sig? ( sec-keys/openpgp-keys-coreutils )
|
||||
"
|
||||
RDEPEND+="
|
||||
hostname? ( !sys-apps/net-tools[hostname] )
|
||||
kill? (
|
||||
!sys-apps/util-linux[kill]
|
||||
!sys-process/procps[kill]
|
||||
)
|
||||
!<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
|
||||
"
|
||||
|
||||
QA_CONFIG_IMPL_DECL_SKIP=(
|
||||
# gnulib FPs (bug #898370)
|
||||
unreachable MIN alignof static_assert
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
if use test ; then
|
||||
python-any-r1_pkg_setup
|
||||
fi
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
git-r3_src_unpack
|
||||
|
||||
cd "${S}" || die
|
||||
./bootstrap || die
|
||||
|
||||
sed -i -e "s:submodule-checks ?= no-submodule-changes public-submodule-commit:submodule-checks ?= no-submodule-changes:" gnulib/top/maint.mk || die
|
||||
elif use verify-sig ; then
|
||||
# Needed for downloaded patch (which is unsigned, which is fine)
|
||||
verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig}
|
||||
fi
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# TODO: past 2025, we may need to add our own hack for bug #907474.
|
||||
local PATCHES=(
|
||||
# Upstream patches
|
||||
"${FILESDIR}"/${PN}-9.8-no-pclmul.patch
|
||||
"${FILESDIR}"/${P}-tail-offset.patch
|
||||
"${FILESDIR}"/${P}-basenc-base58.patch
|
||||
)
|
||||
|
||||
if ! use vanilla && [[ -d "${WORKDIR}"/${MY_PATCH} ]] ; then
|
||||
PATCHES+=( "${WORKDIR}"/${MY_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} || die
|
||||
|
||||
# Avoid perl dep for compiled in dircolors default (bug #348642)
|
||||
if ! has_version dev-lang/perl ; then
|
||||
touch src/dircolors.h || die
|
||||
touch ${@/%x/1} || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Running Valgrind in an ebuild is too unreliable. Skip such tests.
|
||||
cat <<-EOF >> init.cfg || die
|
||||
require_valgrind_()
|
||||
{
|
||||
skip_ "requires a working valgrind"
|
||||
}
|
||||
EOF
|
||||
|
||||
# TODO: in future (>9.4?), we may want to wire up USE=systemd:
|
||||
# still experimental at the moment, but:
|
||||
# https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=85edb4afbd119fb69a0d53e1beb71f46c9525dd0
|
||||
local myconf=(
|
||||
--with-packager="Gentoo"
|
||||
--with-packager-version="${PVR} (p${PATCH_VER:-0})"
|
||||
--with-packager-bug-reports="https://bugs.gentoo.org/"
|
||||
# kill/uptime - procps
|
||||
# groups/su - shadow
|
||||
# hostname - net-tools
|
||||
--enable-install-program="arch,$(usev hostname),$(usev kill)"
|
||||
--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
|
||||
$(usev !caps --disable-libcap)
|
||||
$(use_enable nls)
|
||||
$(use_enable acl)
|
||||
$(use_enable multicall single-binary)
|
||||
$(use_enable xattr)
|
||||
$(use_with gmp libgmp)
|
||||
$(use_with openssl)
|
||||
)
|
||||
|
||||
if use gmp ; then
|
||||
myconf+=( --with-libgmp-prefix="${ESYSROOT}"/usr )
|
||||
fi
|
||||
|
||||
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
|
||||
# bug #311569
|
||||
export fu_cv_sys_stat_statfs2_bsize=yes
|
||||
# bug #416629
|
||||
export gl_cv_func_realpath_works=yes
|
||||
fi
|
||||
|
||||
# bug #409919
|
||||
export gl_cv_func_mknod_works=yes
|
||||
|
||||
if use static ; then
|
||||
append-ldflags -static
|
||||
# bug #321821
|
||||
sed -i '/elf_sys=yes/s:yes:no:' configure || die
|
||||
fi
|
||||
|
||||
if ! use selinux ; then
|
||||
# bug #301782
|
||||
export ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no
|
||||
fi
|
||||
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# Non-root tests will fail if the full path isn't
|
||||
# accessible to non-root users
|
||||
chmod -R go-w "${WORKDIR}" || die
|
||||
chmod a+rx "${WORKDIR}" || die
|
||||
|
||||
# coreutils tests like to do `mount` and such with temp dirs,
|
||||
# so make sure:
|
||||
# - /etc/mtab is writable (bug #265725)
|
||||
# - /dev/loop* can be mounted (bug #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}" || die
|
||||
done
|
||||
}
|
||||
mkwrap mount umount
|
||||
|
||||
addwrite /dev/full
|
||||
|
||||
local -x RUN_{VERY_,}EXPENSIVE_TESTS=$(usex test-full yes no)
|
||||
#local -x COREUTILS_GROUPS="portage wheel"
|
||||
local -x PATH="${T}/mount-wrappers:${PATH}"
|
||||
local -x gl_public_submodule_commit=
|
||||
|
||||
local xfail_tests=()
|
||||
|
||||
if [[ -n ${SANDBOX_ACTIVE} ]]; then
|
||||
xfail_tests+=(
|
||||
# bug #629660
|
||||
# Commented out again in 9.6 as it XPASSes on linux-6.12.10
|
||||
# with sandbox-2.43 on tmpfs. Let's see if it lasts..
|
||||
#tests/dd/no-allocate.sh
|
||||
|
||||
# bug #675802
|
||||
tests/env/env-S
|
||||
tests/env/env-S.pl
|
||||
|
||||
# We have a patch which fixes this (bug #259876)
|
||||
#tests/touch/not-owner
|
||||
#tests/touch/not-owner.sh
|
||||
)
|
||||
fi
|
||||
|
||||
# This test is flaky (bug #910640).
|
||||
cat > tests/tty/tty-eof.pl <<-EOF || die
|
||||
#!/usr/bin/perl
|
||||
exit 77;
|
||||
EOF
|
||||
|
||||
# We set DISABLE_HARD_ERRORS because some of the tests hard error-out
|
||||
# because of sandbox. They're skipped above but DISABLE_HARD_ERRORS is needed
|
||||
# to downgrade them to FAIL.
|
||||
emake -k check \
|
||||
VERBOSE=yes \
|
||||
DISABLE_HARD_ERRORS=yes \
|
||||
XFAIL_TESTS="${xfail_tests[*]}"
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
@ -1,312 +0,0 @@
|
||||
# Copyright 1999-2026 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Try to keep an eye on Fedora's packaging: https://src.fedoraproject.org/rpms/coreutils
|
||||
# The upstream coreutils maintainers also maintain the package in Fedora and may
|
||||
# backport fixes which we want to pick up.
|
||||
#
|
||||
# Also recommend subscribing to the coreutils and bug-coreutils MLs.
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/coreutils.asc
|
||||
inherit flag-o-matic python-any-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PATCH="${PN}-9.6-patches"
|
||||
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
|
||||
HOMEPAGE="https://www.gnu.org/software/coreutils/"
|
||||
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
EGIT_REPO_URI="https://git.savannah.gnu.org/git/coreutils.git"
|
||||
inherit git-r3
|
||||
elif [[ ${PV} == *_p* ]] ; then
|
||||
# Note: could put this in devspace, but if it's gone, we don't want
|
||||
# it in tree anyway. It's just for testing.
|
||||
MY_SNAPSHOT="$(ver_cut 1-2).327-71a8c"
|
||||
SRC_URI="https://www.pixelbeat.org/cu/coreutils-${MY_SNAPSHOT}.tar.xz -> ${P}.tar.xz"
|
||||
SRC_URI+=" verify-sig? ( https://www.pixelbeat.org/cu/coreutils-${MY_SNAPSHOT}.tar.xz.sig -> ${P}.tar.xz.sig )"
|
||||
S="${WORKDIR}"/${PN}-${MY_SNAPSHOT}
|
||||
else
|
||||
SRC_URI="
|
||||
mirror://gnu/${PN}/${P}.tar.xz
|
||||
verify-sig? ( mirror://gnu/${PN}/${P}.tar.xz.sig )
|
||||
"
|
||||
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
fi
|
||||
|
||||
SRC_URI+=" !vanilla? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${MY_PATCH}.tar.xz )"
|
||||
|
||||
LICENSE="GPL-3+"
|
||||
SLOT="0"
|
||||
IUSE="acl caps gmp hostname kill multicall nls +openssl selinux +split-usr static test test-full vanilla xattr"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
LIB_DEPEND="
|
||||
acl? ( sys-apps/acl[static-libs] )
|
||||
caps? ( sys-libs/libcap )
|
||||
gmp? ( dev-libs/gmp:=[static-libs] )
|
||||
openssl? ( dev-libs/openssl:=[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
|
||||
dev-lang/perl
|
||||
test? (
|
||||
dev-debug/strace
|
||||
dev-lang/perl
|
||||
dev-perl/Expect
|
||||
${PYTHON_DEPS}
|
||||
)
|
||||
verify-sig? ( sec-keys/openpgp-keys-coreutils )
|
||||
"
|
||||
RDEPEND+="
|
||||
hostname? ( !sys-apps/net-tools[hostname] )
|
||||
kill? (
|
||||
!sys-apps/util-linux[kill]
|
||||
!sys-process/procps[kill]
|
||||
)
|
||||
!<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
|
||||
!<sys-apps/shadow-4.19.0_rc1
|
||||
"
|
||||
|
||||
QA_CONFIG_IMPL_DECL_SKIP=(
|
||||
# gnulib FPs (bug #898370)
|
||||
unreachable MIN alignof static_assert
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
if use test ; then
|
||||
python-any-r1_pkg_setup
|
||||
fi
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
git-r3_src_unpack
|
||||
|
||||
cd "${S}" || die
|
||||
./bootstrap || die
|
||||
|
||||
sed -i -e "s:submodule-checks ?= no-submodule-changes public-submodule-commit:submodule-checks ?= no-submodule-changes:" gnulib/top/maint.mk || die
|
||||
elif use verify-sig ; then
|
||||
# Needed for downloaded patch (which is unsigned, which is fine)
|
||||
verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig}
|
||||
fi
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# TODO: past 2025, we may need to add our own hack for bug #907474.
|
||||
local PATCHES=(
|
||||
"${FILESDIR}"/${PN}-9.5-skip-readutmp-test.patch
|
||||
# Upstream patches
|
||||
"${FILESDIR}"/${PN}-9.9-cp-SEEK_HOLE-loop.patch
|
||||
)
|
||||
|
||||
if ! use vanilla && [[ -d "${WORKDIR}"/${MY_PATCH} ]] ; then
|
||||
PATCHES+=( "${WORKDIR}"/${MY_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} || die
|
||||
|
||||
# Avoid perl dep for compiled in dircolors default (bug #348642)
|
||||
if ! has_version dev-lang/perl ; then
|
||||
touch src/dircolors.h || die
|
||||
touch ${@/%x/1} || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Running Valgrind in an ebuild is too unreliable. Skip such tests.
|
||||
cat <<-EOF >> init.cfg || die
|
||||
require_valgrind_()
|
||||
{
|
||||
skip_ "requires a working valgrind"
|
||||
}
|
||||
EOF
|
||||
|
||||
# TODO: in future (>9.4?), we may want to wire up USE=systemd:
|
||||
# still experimental at the moment, but:
|
||||
# https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=85edb4afbd119fb69a0d53e1beb71f46c9525dd0
|
||||
local myconf=(
|
||||
--with-packager="Gentoo"
|
||||
--with-packager-version="${PVR} (p${PATCH_VER:-0})"
|
||||
--with-packager-bug-reports="https://bugs.gentoo.org/"
|
||||
# kill/uptime - procps
|
||||
# hostname - net-tools
|
||||
--enable-install-program="arch,$(usev hostname),$(usev kill)"
|
||||
--enable-no-install-program="$(usev !hostname),$(usev !kill),su,uptime"
|
||||
$(usev !caps --disable-libcap)
|
||||
$(use_enable nls)
|
||||
$(use_enable acl)
|
||||
$(use_enable multicall single-binary)
|
||||
$(use_enable xattr)
|
||||
$(use_with gmp libgmp)
|
||||
$(use_with openssl)
|
||||
)
|
||||
|
||||
if use gmp ; then
|
||||
myconf+=( --with-libgmp-prefix="${ESYSROOT}"/usr )
|
||||
fi
|
||||
|
||||
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
|
||||
# bug #311569
|
||||
export fu_cv_sys_stat_statfs2_bsize=yes
|
||||
# bug #416629
|
||||
export gl_cv_func_realpath_works=yes
|
||||
fi
|
||||
|
||||
# bug #409919
|
||||
export gl_cv_func_mknod_works=yes
|
||||
|
||||
if use static ; then
|
||||
append-ldflags -static
|
||||
# bug #321821
|
||||
sed -i '/elf_sys=yes/s:yes:no:' configure || die
|
||||
fi
|
||||
|
||||
if ! use selinux ; then
|
||||
# bug #301782
|
||||
export ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no
|
||||
fi
|
||||
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# Non-root tests will fail if the full path isn't
|
||||
# accessible to non-root users
|
||||
chmod -R go-w "${WORKDIR}" || die
|
||||
chmod a+rx "${WORKDIR}" || die
|
||||
|
||||
# coreutils tests like to do `mount` and such with temp dirs,
|
||||
# so make sure:
|
||||
# - /etc/mtab is writable (bug #265725)
|
||||
# - /dev/loop* can be mounted (bug #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}" || die
|
||||
done
|
||||
}
|
||||
mkwrap mount umount
|
||||
|
||||
addwrite /dev/full
|
||||
|
||||
local -x RUN_{VERY_,}EXPENSIVE_TESTS=$(usex test-full yes no)
|
||||
#local -x COREUTILS_GROUPS="portage wheel"
|
||||
local -x PATH="${T}/mount-wrappers:${PATH}"
|
||||
local -x gl_public_submodule_commit=
|
||||
|
||||
local xfail_tests=()
|
||||
|
||||
if [[ -n ${SANDBOX_ACTIVE} ]]; then
|
||||
xfail_tests+=(
|
||||
# bug #629660
|
||||
# Commented out again in 9.6 as it XPASSes on linux-6.12.10
|
||||
# with sandbox-2.43 on tmpfs. Let's see if it lasts..
|
||||
#tests/dd/no-allocate.sh
|
||||
|
||||
# bug #675802
|
||||
tests/env/env-S
|
||||
tests/env/env-S.pl
|
||||
|
||||
# We have a patch which fixes this (bug #259876)
|
||||
#tests/touch/not-owner
|
||||
#tests/touch/not-owner.sh
|
||||
)
|
||||
fi
|
||||
|
||||
# This test is flaky (bug #910640).
|
||||
cat > tests/tty/tty-eof.pl <<-EOF || die
|
||||
#!/usr/bin/perl
|
||||
exit 77;
|
||||
EOF
|
||||
|
||||
# We set DISABLE_HARD_ERRORS because some of the tests hard error-out
|
||||
# because of sandbox. They're skipped above but DISABLE_HARD_ERRORS is needed
|
||||
# to downgrade them to FAIL.
|
||||
emake -k check \
|
||||
VERBOSE=yes \
|
||||
DISABLE_HARD_ERRORS=yes \
|
||||
XFAIL_TESTS="${xfail_tests[*]}"
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
@ -33,7 +33,7 @@ else
|
||||
verify-sig? ( mirror://gnu/${PN}/${P}.tar.xz.sig )
|
||||
"
|
||||
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
|
||||
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
|
||||
fi
|
||||
|
||||
SRC_URI+=" !vanilla? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${MY_PATCH}.tar.xz )"
|
||||
|
||||
@ -1,311 +0,0 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
# Try to keep an eye on Fedora's packaging: https://src.fedoraproject.org/rpms/coreutils
|
||||
# The upstream coreutils maintainers also maintain the package in Fedora and may
|
||||
# backport fixes which we want to pick up.
|
||||
#
|
||||
# Also recommend subscribing to the coreutils and bug-coreutils MLs.
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/coreutils.asc
|
||||
inherit flag-o-matic python-any-r1 toolchain-funcs verify-sig
|
||||
|
||||
MY_PATCH="${PN}-9.6-patches"
|
||||
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
|
||||
HOMEPAGE="https://www.gnu.org/software/coreutils/"
|
||||
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
EGIT_REPO_URI="https://git.savannah.gnu.org/git/coreutils.git"
|
||||
inherit git-r3
|
||||
elif [[ ${PV} == *_p* ]] ; then
|
||||
# Note: could put this in devspace, but if it's gone, we don't want
|
||||
# it in tree anyway. It's just for testing.
|
||||
MY_SNAPSHOT="$(ver_cut 1-2).327-71a8c"
|
||||
SRC_URI="https://www.pixelbeat.org/cu/coreutils-${MY_SNAPSHOT}.tar.xz -> ${P}.tar.xz"
|
||||
SRC_URI+=" verify-sig? ( https://www.pixelbeat.org/cu/coreutils-${MY_SNAPSHOT}.tar.xz.sig -> ${P}.tar.xz.sig )"
|
||||
S="${WORKDIR}"/${PN}-${MY_SNAPSHOT}
|
||||
else
|
||||
SRC_URI="
|
||||
mirror://gnu/${PN}/${P}.tar.xz
|
||||
verify-sig? ( mirror://gnu/${PN}/${P}.tar.xz.sig )
|
||||
"
|
||||
|
||||
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
|
||||
fi
|
||||
|
||||
SRC_URI+=" !vanilla? ( https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${MY_PATCH}.tar.xz )"
|
||||
|
||||
LICENSE="GPL-3+"
|
||||
SLOT="0"
|
||||
IUSE="acl caps gmp hostname kill multicall nls +openssl selinux +split-usr static test test-full vanilla xattr"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
LIB_DEPEND="
|
||||
acl? ( sys-apps/acl[static-libs] )
|
||||
caps? ( sys-libs/libcap )
|
||||
gmp? ( dev-libs/gmp:=[static-libs] )
|
||||
openssl? ( dev-libs/openssl:=[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
|
||||
dev-lang/perl
|
||||
test? (
|
||||
dev-debug/strace
|
||||
dev-lang/perl
|
||||
dev-perl/Expect
|
||||
${PYTHON_DEPS}
|
||||
)
|
||||
verify-sig? ( sec-keys/openpgp-keys-coreutils )
|
||||
"
|
||||
RDEPEND+="
|
||||
hostname? ( !sys-apps/net-tools[hostname] )
|
||||
kill? (
|
||||
!sys-apps/util-linux[kill]
|
||||
!sys-process/procps[kill]
|
||||
)
|
||||
!<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
|
||||
"
|
||||
|
||||
QA_CONFIG_IMPL_DECL_SKIP=(
|
||||
# gnulib FPs (bug #898370)
|
||||
unreachable MIN alignof static_assert
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
if use test ; then
|
||||
python-any-r1_pkg_setup
|
||||
fi
|
||||
}
|
||||
|
||||
src_unpack() {
|
||||
if [[ ${PV} == 9999 ]] ; then
|
||||
git-r3_src_unpack
|
||||
|
||||
cd "${S}" || die
|
||||
./bootstrap || die
|
||||
|
||||
sed -i -e "s:submodule-checks ?= no-submodule-changes public-submodule-commit:submodule-checks ?= no-submodule-changes:" gnulib/top/maint.mk || die
|
||||
elif use verify-sig ; then
|
||||
# Needed for downloaded patch (which is unsigned, which is fine)
|
||||
verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig}
|
||||
fi
|
||||
|
||||
default
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
# TODO: past 2025, we may need to add our own hack for bug #907474.
|
||||
local PATCHES=(
|
||||
"${FILESDIR}"/${PN}-9.5-skip-readutmp-test.patch
|
||||
# Upstream patches
|
||||
)
|
||||
|
||||
if ! use vanilla && [[ -d "${WORKDIR}"/${MY_PATCH} ]] ; then
|
||||
PATCHES+=( "${WORKDIR}"/${MY_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} || die
|
||||
|
||||
# Avoid perl dep for compiled in dircolors default (bug #348642)
|
||||
if ! has_version dev-lang/perl ; then
|
||||
touch src/dircolors.h || die
|
||||
touch ${@/%x/1} || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Running Valgrind in an ebuild is too unreliable. Skip such tests.
|
||||
cat <<-EOF >> init.cfg || die
|
||||
require_valgrind_()
|
||||
{
|
||||
skip_ "requires a working valgrind"
|
||||
}
|
||||
EOF
|
||||
|
||||
# TODO: in future (>9.4?), we may want to wire up USE=systemd:
|
||||
# still experimental at the moment, but:
|
||||
# https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=85edb4afbd119fb69a0d53e1beb71f46c9525dd0
|
||||
local myconf=(
|
||||
--with-packager="Gentoo"
|
||||
--with-packager-version="${PVR} (p${PATCH_VER:-0})"
|
||||
--with-packager-bug-reports="https://bugs.gentoo.org/"
|
||||
# kill/uptime - procps
|
||||
# groups/su - shadow
|
||||
# hostname - net-tools
|
||||
--enable-install-program="arch,$(usev hostname),$(usev kill)"
|
||||
--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
|
||||
$(usev !caps --disable-libcap)
|
||||
$(use_enable nls)
|
||||
$(use_enable acl)
|
||||
$(use_enable multicall single-binary)
|
||||
$(use_enable xattr)
|
||||
$(use_with gmp libgmp)
|
||||
$(use_with openssl)
|
||||
)
|
||||
|
||||
if use gmp ; then
|
||||
myconf+=( --with-libgmp-prefix="${ESYSROOT}"/usr )
|
||||
fi
|
||||
|
||||
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
|
||||
# bug #311569
|
||||
export fu_cv_sys_stat_statfs2_bsize=yes
|
||||
# bug #416629
|
||||
export gl_cv_func_realpath_works=yes
|
||||
fi
|
||||
|
||||
# bug #409919
|
||||
export gl_cv_func_mknod_works=yes
|
||||
|
||||
if use static ; then
|
||||
append-ldflags -static
|
||||
# bug #321821
|
||||
sed -i '/elf_sys=yes/s:yes:no:' configure || die
|
||||
fi
|
||||
|
||||
if ! use selinux ; then
|
||||
# bug #301782
|
||||
export ac_cv_{header_selinux_{context,flash,selinux}_h,search_setfilecon}=no
|
||||
fi
|
||||
|
||||
econf "${myconf[@]}"
|
||||
}
|
||||
|
||||
src_test() {
|
||||
# Non-root tests will fail if the full path isn't
|
||||
# accessible to non-root users
|
||||
chmod -R go-w "${WORKDIR}" || die
|
||||
chmod a+rx "${WORKDIR}" || die
|
||||
|
||||
# coreutils tests like to do `mount` and such with temp dirs,
|
||||
# so make sure:
|
||||
# - /etc/mtab is writable (bug #265725)
|
||||
# - /dev/loop* can be mounted (bug #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}" || die
|
||||
done
|
||||
}
|
||||
mkwrap mount umount
|
||||
|
||||
addwrite /dev/full
|
||||
|
||||
local -x RUN_{VERY_,}EXPENSIVE_TESTS=$(usex test-full yes no)
|
||||
#local -x COREUTILS_GROUPS="portage wheel"
|
||||
local -x PATH="${T}/mount-wrappers:${PATH}"
|
||||
local -x gl_public_submodule_commit=
|
||||
|
||||
local xfail_tests=()
|
||||
|
||||
if [[ -n ${SANDBOX_ACTIVE} ]]; then
|
||||
xfail_tests+=(
|
||||
# bug #629660
|
||||
# Commented out again in 9.6 as it XPASSes on linux-6.12.10
|
||||
# with sandbox-2.43 on tmpfs. Let's see if it lasts..
|
||||
#tests/dd/no-allocate.sh
|
||||
|
||||
# bug #675802
|
||||
tests/env/env-S
|
||||
tests/env/env-S.pl
|
||||
|
||||
# We have a patch which fixes this (bug #259876)
|
||||
#tests/touch/not-owner
|
||||
#tests/touch/not-owner.sh
|
||||
)
|
||||
fi
|
||||
|
||||
# This test is flaky (bug #910640).
|
||||
cat > tests/tty/tty-eof.pl <<-EOF || die
|
||||
#!/usr/bin/perl
|
||||
exit 77;
|
||||
EOF
|
||||
|
||||
# We set DISABLE_HARD_ERRORS because some of the tests hard error-out
|
||||
# because of sandbox. They're skipped above but DISABLE_HARD_ERRORS is needed
|
||||
# to downgrade them to FAIL.
|
||||
emake -k check \
|
||||
VERBOSE=yes \
|
||||
DISABLE_HARD_ERRORS=yes \
|
||||
XFAIL_TESTS="${xfail_tests[*]}"
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
@ -1,137 +0,0 @@
|
||||
https://cgit.git.savannah.gnu.org/cgit/coreutils.git/commit/?id=2ef53e5b0477f9d9361a11a471d704a96b1c99b8
|
||||
(Dropped the test to avoid autoreconf.)
|
||||
|
||||
From 2ef53e5b0477f9d9361a11a471d704a96b1c99b8 Mon Sep 17 00:00:00 2001
|
||||
From: Pádraig Brady <P@draigBrady.com>
|
||||
Date: Tue, 23 Sep 2025 15:38:51 +0100
|
||||
Subject: basenc: --base58: fix buffer overflow with input > 15MB
|
||||
|
||||
base58_length() operated naively on an int
|
||||
which resulted in an overflow to a negative number
|
||||
for any input > 2^31-1/138, i.e. 15,561,475 bytes.
|
||||
|
||||
* src/basenc.c (base_length): Change input and output
|
||||
parameter types from int to idx_t since this needs to
|
||||
cater for the full input size in the base58 case.
|
||||
(base58_length): Likewise. Also reorder the calculation
|
||||
to be less exact, but doing the division first
|
||||
to minimize the chance of overflow (which now on 64 bit
|
||||
would only happen for inputs > around 6 Exa bytes).
|
||||
* tests/basenc/basenc-large.sh: Add a new test,
|
||||
that triggers with valgrind or ASAN.
|
||||
* tests/local.mk: Reference the new test.
|
||||
* NEWS: Mention the bug fix.
|
||||
---
|
||||
src/basenc.c | 43 +++++++++++++++++++++++++------------------
|
||||
4 files changed, 58 insertions(+), 18 deletions(-)
|
||||
create mode 100755 tests/basenc/basenc-large.sh
|
||||
|
||||
diff --git a/src/basenc.c b/src/basenc.c
|
||||
index 1fb7a16f5..ae55f8e32 100644
|
||||
--- a/src/basenc.c
|
||||
+++ b/src/basenc.c
|
||||
@@ -253,7 +253,7 @@ static_assert (DEC_BLOCKSIZE % 12 == 0); /* Complete encoded blocks are used. */
|
||||
static_assert (DEC_BLOCKSIZE % 40 == 0); /* complete encoded blocks for base32*/
|
||||
static_assert (DEC_BLOCKSIZE % 12 == 0); /* complete encoded blocks for base64*/
|
||||
|
||||
-static int (*base_length) (int i);
|
||||
+static idx_t (*base_length) (idx_t len);
|
||||
static int (*required_padding) (int i);
|
||||
static bool (*isubase) (unsigned char ch);
|
||||
static void (*base_encode) (char const *restrict in, idx_t inlen,
|
||||
@@ -427,8 +427,8 @@ decode_ctx_finalize (struct base_decode_context *ctx,
|
||||
|
||||
#if BASE_TYPE == 42
|
||||
|
||||
-static int
|
||||
-base64_length_wrapper (int len)
|
||||
+static idx_t
|
||||
+base64_length_wrapper (idx_t len)
|
||||
{
|
||||
return BASE64_LENGTH (len);
|
||||
}
|
||||
@@ -526,8 +526,8 @@ base64url_decode_ctx_wrapper (struct base_decode_context *ctx,
|
||||
|
||||
|
||||
|
||||
-static int
|
||||
-base32_length_wrapper (int len)
|
||||
+static idx_t
|
||||
+base32_length_wrapper (idx_t len)
|
||||
{
|
||||
return BASE32_LENGTH (len);
|
||||
}
|
||||
@@ -740,8 +740,8 @@ isubase16 (unsigned char ch)
|
||||
return ch < sizeof base16_to_int && 0 <= base16_to_int[ch];
|
||||
}
|
||||
|
||||
-static int
|
||||
-base16_length (int len)
|
||||
+static idx_t
|
||||
+base16_length (idx_t len)
|
||||
{
|
||||
return len * 2;
|
||||
}
|
||||
@@ -820,13 +820,14 @@ base16_decode_ctx (struct base_decode_context *ctx,
|
||||
|
||||
|
||||
|
||||
-
|
||||
-static int
|
||||
-z85_length (int len)
|
||||
+ATTRIBUTE_PURE
|
||||
+static idx_t
|
||||
+z85_length (idx_t len)
|
||||
{
|
||||
/* Z85 does not allow padding, so no need to round to highest integer. */
|
||||
- int outlen = (len * 5) / 4;
|
||||
- return outlen;
|
||||
+ idx_t z85_len = (len * 5) / 4;
|
||||
+ affirm (0 <= z85_len);
|
||||
+ return z85_len;
|
||||
}
|
||||
|
||||
static bool
|
||||
@@ -1015,8 +1016,8 @@ isubase2 (unsigned char ch)
|
||||
return ch == '0' || ch == '1';
|
||||
}
|
||||
|
||||
-static int
|
||||
-base2_length (int len)
|
||||
+static idx_t
|
||||
+base2_length (idx_t len)
|
||||
{
|
||||
return len * 8;
|
||||
}
|
||||
@@ -1206,12 +1207,17 @@ isubase58 (unsigned char ch)
|
||||
}
|
||||
|
||||
|
||||
-static int
|
||||
-base58_length (int len)
|
||||
+ATTRIBUTE_PURE
|
||||
+static idx_t
|
||||
+base58_length (idx_t len)
|
||||
{
|
||||
/* Base58 output length is approximately log(256)/log(58),
|
||||
- so ensure we've enough place for that + NUL. */
|
||||
- return (len * 138) / 100 + 1;
|
||||
+ which is approximately len * 138 / 100,
|
||||
+ which is at most ((len + 100 - 1) / 100) * 138
|
||||
+ +1 to ensure we've enough place for NUL */
|
||||
+ idx_t base58_len = ((len + 99) / 100) * 138 + 1;
|
||||
+ affirm (0 < base58_len);
|
||||
+ return base58_len;
|
||||
}
|
||||
|
||||
|
||||
@@ -1268,6 +1274,7 @@ base58_encode (char const* data, size_t data_len,
|
||||
if (data_len - zeros)
|
||||
{
|
||||
mpz_import (num, data_len - zeros, 1, 1, 0, 0, data + zeros);
|
||||
+ affirm (mpz_sizeinbase (num, 58) + 1 <= *outlen);
|
||||
for (p = mpz_get_str (p, 58, num); *p; p++)
|
||||
*p = gmp_to_base58[to_uchar (*p)];
|
||||
}
|
||||
--
|
||||
cgit v1.2.3
|
||||
@ -1,18 +0,0 @@
|
||||
https://bugs.gentoo.org/959467
|
||||
https://debbugs.gnu.org/79491
|
||||
|
||||
GL_CRC_X86_64_PCLMUL in effect overrides the earlier configure check which
|
||||
sets USE_PCLMUL_CRC32, so -mno-pclmul leads to a build failure. Just use
|
||||
the coreutils config check result for now.
|
||||
|
||||
Thanks to Ionen Wolkens <ionen@gentoo.org> for the investigation and
|
||||
workaround.
|
||||
--- a/src/cksum.c
|
||||
+++ b/src/cksum.c
|
||||
@@ -145,5 +145,5 @@
|
||||
pclmul_supported (void)
|
||||
{
|
||||
-# if USE_PCLMUL_CRC32 || GL_CRC_X86_64_PCLMUL
|
||||
+# if USE_PCLMUL_CRC32
|
||||
bool pclmul_enabled = (0 < __builtin_cpu_supports ("pclmul")
|
||||
&& 0 < __builtin_cpu_supports ("avx"));
|
||||
@ -1,35 +0,0 @@
|
||||
https://cgit.git.savannah.gnu.org/cgit/coreutils.git/commit/?id=914972e80dbf82aac9ffe3ff1f67f1028e1a788b
|
||||
(Dropped the test to avoid autoreconf.)
|
||||
|
||||
From 914972e80dbf82aac9ffe3ff1f67f1028e1a788b Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Braun <hannes@hannesbraun.net>
|
||||
Date: Wed, 24 Sep 2025 21:20:49 +0200
|
||||
Subject: tail: fix tailing larger number of lines in regular files
|
||||
|
||||
* src/tail.c (file_lines): Seek to the previous block instead of the
|
||||
beginning (or a little before) of the block that was just scanned.
|
||||
Otherwise, the same block is read and scanned (at least partially)
|
||||
again. This bug was introduced by commit v9.7-219-g976f8abc1.
|
||||
* tests/tail/basic-seek.sh: Add a new test.
|
||||
* tests/local.mk: Reference the new test.
|
||||
* NEWS: mention the bug fix.
|
||||
---
|
||||
src/tail.c | 2 +-
|
||||
tests/local.mk | 1 +
|
||||
tests/tail/basic-seek.sh | 28 ++++++++++++++++++++++++++++
|
||||
4 files changed, 34 insertions(+), 1 deletion(-)
|
||||
create mode 100755 tests/tail/basic-seek.sh
|
||||
|
||||
diff --git a/src/tail.c b/src/tail.c
|
||||
index b8bef1d91..c7779c77d 100644
|
||||
--- a/src/tail.c
|
||||
+++ b/src/tail.c
|
||||
@@ -596,7 +596,7 @@ file_lines (char const *prettyname, int fd, struct stat const *sb,
|
||||
goto free_buffer;
|
||||
}
|
||||
|
||||
- pos = xlseek (fd, -bufsize, SEEK_CUR, prettyname);
|
||||
+ pos = xlseek (fd, -(bufsize + bytes_read), SEEK_CUR, prettyname);
|
||||
bytes_read = read (fd, buffer, bufsize);
|
||||
if (bytes_read < 0)
|
||||
{
|
||||
Loading…
x
Reference in New Issue
Block a user