sys-apps/coreutils: Sync with gentoo

It's from gentoo commit 5b3a64f5da44e421dc51f6723457e02490c783b9.
This commit is contained in:
Krzesimir Nowak 2021-11-30 17:59:30 +01:00
parent e277ffe29c
commit a499f7ae73
8 changed files with 471 additions and 339 deletions

View File

@ -1,4 +1,3 @@
DIST coreutils-8.30-patches-01.tar.xz 5788 BLAKE2B a41511ce39ac570cb14b7f12d125eebef92217469a9490808719fa0665f5e5c0adb96fbd02c4bac4d280d1502295669575790a81dbc01afe2ca3a9d384cbefb0 SHA512 b1e1933637de4581d5f8c6ede4e80a012435d13f0cf5550a76ab5bbe9441e3c15ce19ef3f78a7ea3b8368d5e9a3bb17c1207c471d26171b59786f38adeba0454 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 DIST coreutils-8.32.tar.xz 5547836 BLAKE2B 0ad99c176c19ec214fcfd0845523e5362f0151827707c759bd46c0fe8d2501c6ad1c29c5b71266f6525857bc0d56c472db0d7fe29953b6c65e2e6c76bdf3c515 SHA512 1c8f3584efd61b4b02e7ac5db8e103b63cfb2063432caaf1e64cb2dcc56d8c657d1133bbf10bd41468d6a1f31142e6caa81d16ae68fa3e6e84075c253613a145
DIST coreutils-9.0.tar.xz 5612752 BLAKE2B 59617cd25fd4c70f51bfbef851bd83e73f9c9ba5c11eb539f7f75c0184d55832e004b28e9268fb8064db145cb071ead2b9c0c3346bc35a11934ffe1b15bf17ac SHA512 9be08212891dbf48e5b22e7689dc27dac50df4631ebf29313470b72b7921f0b2aa5242917d05587785358495ca56e3b21f5b3ca81043d53cab92354da6c53a03

View File

@ -1,210 +0,0 @@
# 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

@ -1,11 +1,11 @@
# Copyright 1999-2020 Gentoo Authors # Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI=7 EAPI=7
PYTHON_COMPAT=( python3_{6,7,8} ) PYTHON_COMPAT=( python3_{7..10} )
inherit eutils flag-o-matic python-any-r1 toolchain-funcs inherit flag-o-matic python-any-r1 toolchain-funcs
PATCH="${PN}-8.30-patches-01" PATCH="${PN}-8.30-patches-01"
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)" DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
@ -19,7 +19,7 @@ SRC_URI="mirror://gnu/${PN}/${P}.tar.xz
LICENSE="GPL-3" LICENSE="GPL-3"
SLOT="0" SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x86-linux" 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" IUSE="acl caps gmp hostname kill multicall nls selinux +split-usr static test vanilla xattr"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"
@ -36,6 +36,7 @@ DEPEND="
" "
BDEPEND=" BDEPEND="
app-arch/xz-utils app-arch/xz-utils
dev-lang/perl
test? ( test? (
dev-lang/perl dev-lang/perl
dev-perl/Expect dev-perl/Expect
@ -79,15 +80,16 @@ src_prepare() {
# Since we've patched many .c files, the make process will try to # Since we've patched many .c files, the make process will try to
# re-build the manpages by running `./bin --help`. When doing a # 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. # 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, # 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. # so let's just update the timestamps and skip the help2man step.
set -- man/*.x set -- man/*.x
touch ${@/%x/1} touch ${@/%x/1} || die
# Avoid perl dep for compiled in dircolors default #348642 # Avoid perl dep for compiled in dircolors default (bug #348642)
if ! has_version dev-lang/perl ; then if ! has_version dev-lang/perl ; then
touch src/dircolors.h touch src/dircolors.h || die
touch ${@/%x/1} touch ${@/%x/1} || die
fi fi
} }
@ -96,6 +98,9 @@ src_configure() {
--with-packager="Gentoo" --with-packager="Gentoo"
--with-packager-version="${PVR} (p${PATCH_VER:-0})" --with-packager-version="${PVR} (p${PATCH_VER:-0})"
--with-packager-bug-reports="https://bugs.gentoo.org/" --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-install-program="arch,$(usev hostname),$(usev kill)"
--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime" --enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
--enable-largefile --enable-largefile
@ -106,17 +111,28 @@ src_configure() {
$(use_enable xattr) $(use_enable xattr)
$(use_with gmp) $(use_with gmp)
) )
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
export fu_cv_sys_stat_statfs2_bsize=yes #311569 # bug #311569
export gl_cv_func_realpath_works=yes #416629 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 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[@]}" econf "${myconf[@]}"
} }
@ -132,12 +148,13 @@ src_test() {
# Non-root tests will fail if the full path isn't # Non-root tests will fail if the full path isn't
# accessible to non-root users # accessible to non-root users
chmod -R go-w "${WORKDIR}" chmod -R go-w "${WORKDIR}" || die
chmod a+rx "${WORKDIR}" chmod a+rx "${WORKDIR}" || die
# coreutils tests like to do `mount` and such with temp dirs # coreutils tests like to do `mount` and such with temp dirs,
# so make sure /etc/mtab is writable #265725 # so make sure:
# make sure /dev/loop* can be mounted #269758 # - /etc/mtab is writable (bug #265725)
# - /dev/loop* can be mounted (bug #269758)
mkdir -p "${T}"/mount-wrappers || die mkdir -p "${T}"/mount-wrappers || die
mkwrap() { mkwrap() {
local w ww local w ww
@ -147,7 +164,7 @@ src_test() {
#!${EPREFIX}/bin/sh #!${EPREFIX}/bin/sh
exec env SANDBOX_WRITE="\${SANDBOX_WRITE}:/etc/mtab:/dev/loop" $(type -P ${w}) "\$@" exec env SANDBOX_WRITE="\${SANDBOX_WRITE}:/etc/mtab:/dev/loop" $(type -P ${w}) "\$@"
EOF EOF
chmod a+rx "${ww}" chmod a+rx "${ww}" || die
done done
} }
mkwrap mount umount mkwrap mount umount
@ -168,25 +185,30 @@ src_install() {
if use split-usr ; then if use split-usr ; then
cd "${ED}"/usr/bin || die cd "${ED}"/usr/bin || die
dodir /bin dodir /bin
# move critical binaries into /bin (required by FHS)
# Move critical binaries into /bin (required by FHS)
local fhs="cat chgrp chmod chown cp date dd df echo false ln ls local fhs="cat chgrp chmod chown cp date dd df echo false ln ls
mkdir mknod mv pwd rm rmdir stty sync true uname" mkdir mknod mv pwd rm rmdir stty sync true uname"
mv ${fhs} ../../bin/ || die "could not move fhs bins" mv ${fhs} ../../bin/ || die "Could not move FHS bins!"
if use hostname; then
if use hostname ; then
mv hostname ../../bin/ || die mv hostname ../../bin/ || die
fi fi
if use kill; then
if use kill ; then
mv kill ../../bin/ || die mv kill ../../bin/ || die
fi fi
# move critical binaries into /bin (common scripts)
# Why are these required for booting? # 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 local com="basename chroot cut dir dirname du env expr head mkfifo
mktemp readlink seq sleep sort tail touch tr tty vdir wc yes" mktemp readlink seq sleep sort tail touch tr tty vdir wc yes"
mv ${com} ../../bin/ || die "could not move common bins" 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 # 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 # creating symlinks for these in /usr/bin instead of leaving
# the files there in the first place. # the files there in the first place...)
local x local x
for x in ${com} uname ; do for x in ${com} uname ; do
dosym ../../bin/${x} /usr/bin/${x} dosym ../../bin/${x} /usr/bin/${x}

View File

@ -0,0 +1,267 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{8..10} )
inherit 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
dev-lang/perl
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_pretend() {
if has_version "<sys-fs/zfs-9999" ; then
einfo "Checking for running ZFS module version"
local kmodv minver
kmodv="$(grep kmod <(zfs -V 2>/dev/null))"
# Convert zfs-kmod-2.1.1-r3-gentoo -> 2.1.1-r3
kmodv="${kmodv//zfs-kmod-}"
kmodv="${kmodv%%-gentoo}"
minver="$(ver_cut 2 ${kmodv})"
local diemsg=$(cat <<-EOF
Attempted installation of ${P} on unsupported version of zfs-kmod!
Please reboot to a newer version of zfs-kmod first:
zfs-kmod >=2.0.7 or zfs-kmod >=2.1.1-r3
Using ${P} with running version of zfs-kmod of can
lead to data loss while using cp command on some configurations.
See https://github.com/openzfs/zfs/issues/11900 for details.
EOF
)
case "${minver}" in
# 2.0.x
0)
ver_test "${kmodv}" -lt 2.0.7 && die "${diemsg}"
;;
# 2.1.x
1)
ver_test "${kmodv}" -lt 2.1.1-r3 && die "${diemsg}"
;;
# 0.8.x/9999
*)
# We can't really cover this case realistically
# 9999 is too hard to check and 0.8.x isn't being supported anymore.
;;
esac
fi
}
pkg_setup() {
if use test ; then
python-any-r1_pkg_setup
fi
}
src_prepare() {
local PATCHES=(
# Upstream patches
"${FILESDIR}"/${P}-fix-chmod-symlink-exit.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} || 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() {
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"
--enable-largefile
$(usex caps '' --disable-libcap)
$(use_enable nls)
$(use_enable acl)
$(use_enable multicall single-binary)
$(use_enable xattr)
$(use_with gmp libgmp)
)
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() {
# 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}" || 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
#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

@ -1,22 +1,24 @@
# Copyright 1999-2020 Gentoo Authors # Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
EAPI="6" EAPI=7
PYTHON_COMPAT=( python3_{6,7} ) PYTHON_COMPAT=( python3_{8..10} )
inherit eutils flag-o-matic python-any-r1 toolchain-funcs inherit flag-o-matic python-any-r1 toolchain-funcs
PATCH="${PN}-8.30-patches-01" PATCH="${PN}-8.30-patches-01"
DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)" DESCRIPTION="Standard GNU utilities (chmod, cp, dd, ls, sort, tr, head, wc, who,...)"
HOMEPAGE="https://www.gnu.org/software/coreutils/" HOMEPAGE="https://www.gnu.org/software/coreutils/"
SRC_URI="mirror://gnu/${PN}/${P}.tar.xz SRC_URI="mirror://gnu/${PN}/${P}.tar.xz
!vanilla? (
mirror://gentoo/${PATCH}.tar.xz mirror://gentoo/${PATCH}.tar.xz
https://dev.gentoo.org/~polynomial-c/dist/${PATCH}.tar.xz" https://dev.gentoo.org/~polynomial-c/dist/${PATCH}.tar.xz
)"
LICENSE="GPL-3" LICENSE="GPL-3"
SLOT="0" SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x86-linux" 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" IUSE="acl caps gmp hostname kill multicall nls selinux +split-usr static test vanilla xattr"
RESTRICT="!test? ( test )" RESTRICT="!test? ( test )"
@ -27,15 +29,20 @@ LIB_DEPEND="acl? ( sys-apps/acl[static-libs] )
RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs]} ) RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs]} )
selinux? ( sys-libs/libselinux ) selinux? ( sys-libs/libselinux )
nls? ( virtual/libintl )" nls? ( virtual/libintl )"
DEPEND="${RDEPEND} DEPEND="
${RDEPEND}
static? ( ${LIB_DEPEND} ) static? ( ${LIB_DEPEND} )
"
BDEPEND="
app-arch/xz-utils app-arch/xz-utils
dev-lang/perl
test? ( test? (
dev-lang/perl dev-lang/perl
dev-perl/Expect dev-perl/Expect
dev-util/strace dev-util/strace
${PYTHON_DEPS} ${PYTHON_DEPS}
)" )
"
RDEPEND+=" RDEPEND+="
hostname? ( !sys-apps/net-tools[hostname] ) hostname? ( !sys-apps/net-tools[hostname] )
kill? ( kill? (
@ -51,6 +58,46 @@ RDEPEND+="
!<app-forensics/tct-1.18-r1 !<app-forensics/tct-1.18-r1
!<net-fs/netatalk-2.0.3-r4" !<net-fs/netatalk-2.0.3-r4"
pkg_pretend() {
if has_version "<sys-fs/zfs-9999" ; then
einfo "Checking for running ZFS module version"
local kmodv minver
kmodv="$(grep kmod <(zfs -V 2>/dev/null))"
# Convert zfs-kmod-2.1.1-r3-gentoo -> 2.1.1-r3
kmodv="${kmodv//zfs-kmod-}"
kmodv="${kmodv%%-gentoo}"
minver="$(ver_cut 2 ${kmodv})"
local diemsg=$(cat <<-EOF
Attempted installation of ${P} on unsupported version of zfs-kmod!
Please reboot to a newer version of zfs-kmod first:
zfs-kmod >=2.0.7 or zfs-kmod >=2.1.1-r3
Using ${P} with running version of zfs-kmod of can
lead to data loss while using cp command on some configurations.
See https://github.com/openzfs/zfs/issues/11900 for details.
EOF
)
case "${minver}" in
# 2.0.x
0)
ver_test "${kmodv}" -lt 2.0.7 && die "${diemsg}"
;;
# 2.1.x
1)
ver_test "${kmodv}" -lt 2.1.1-r3 && die "${diemsg}"
;;
# 0.8.x/9999
*)
# We can't really cover this case realistically
# 9999 is too hard to check and 0.8.x isn't being supported anymore.
;;
esac
fi
}
pkg_setup() { pkg_setup() {
if use test ; then if use test ; then
python-any-r1_pkg_setup python-any-r1_pkg_setup
@ -58,25 +105,29 @@ pkg_setup() {
} }
src_prepare() { src_prepare() {
local PATCHES=(
)
if ! use vanilla ; then if ! use vanilla ; then
eapply "${WORKDIR}"/patch/*.patch PATCHES+=( "${WORKDIR}"/patch )
eapply "${FILESDIR}"/${PN}-8.31-sandbox-env-test.patch PATCHES+=( "${FILESDIR}"/${PN}-8.32-sandbox-env-test.patch )
fi fi
eapply_user default
# Since we've patched many .c files, the make process will try to # Since we've patched many .c files, the make process will try to
# re-build the manpages by running `./bin --help`. When doing a # 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. # 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, # 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. # so let's just update the timestamps and skip the help2man step.
set -- man/*.x set -- man/*.x
touch ${@/%x/1} touch ${@/%x/1} || die
# Avoid perl dep for compiled in dircolors default #348642 # Avoid perl dep for compiled in dircolors default (bug #348642)
if ! has_version dev-lang/perl ; then if ! has_version dev-lang/perl ; then
touch src/dircolors.h touch src/dircolors.h || die
touch ${@/%x/1} touch ${@/%x/1} || die
fi fi
} }
@ -85,6 +136,9 @@ src_configure() {
--with-packager="Gentoo" --with-packager="Gentoo"
--with-packager-version="${PVR} (p${PATCH_VER:-0})" --with-packager-version="${PVR} (p${PATCH_VER:-0})"
--with-packager-bug-reports="https://bugs.gentoo.org/" --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-install-program="arch,$(usev hostname),$(usev kill)"
--enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime" --enable-no-install-program="groups,$(usev !hostname),$(usev !kill),su,uptime"
--enable-largefile --enable-largefile
@ -93,19 +147,30 @@ src_configure() {
$(use_enable acl) $(use_enable acl)
$(use_enable multicall single-binary) $(use_enable multicall single-binary)
$(use_enable xattr) $(use_enable xattr)
$(use_with gmp) $(use_with gmp libgmp)
) )
if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then if tc-is-cross-compiler && [[ ${CHOST} == *linux* ]] ; then
export fu_cv_sys_stat_statfs2_bsize=yes #311569 # bug #311569
export gl_cv_func_realpath_works=yes #416629 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 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[@]}" econf "${myconf[@]}"
} }
@ -121,12 +186,13 @@ src_test() {
# Non-root tests will fail if the full path isn't # Non-root tests will fail if the full path isn't
# accessible to non-root users # accessible to non-root users
chmod -R go-w "${WORKDIR}" chmod -R go-w "${WORKDIR}" || die
chmod a+rx "${WORKDIR}" chmod a+rx "${WORKDIR}" || die
# coreutils tests like to do `mount` and such with temp dirs # coreutils tests like to do `mount` and such with temp dirs,
# so make sure /etc/mtab is writable #265725 # so make sure:
# make sure /dev/loop* can be mounted #269758 # - /etc/mtab is writable (bug #265725)
# - /dev/loop* can be mounted (bug #269758)
mkdir -p "${T}"/mount-wrappers || die mkdir -p "${T}"/mount-wrappers || die
mkwrap() { mkwrap() {
local w ww local w ww
@ -136,7 +202,7 @@ src_test() {
#!${EPREFIX}/bin/sh #!${EPREFIX}/bin/sh
exec env SANDBOX_WRITE="\${SANDBOX_WRITE}:/etc/mtab:/dev/loop" $(type -P ${w}) "\$@" exec env SANDBOX_WRITE="\${SANDBOX_WRITE}:/etc/mtab:/dev/loop" $(type -P ${w}) "\$@"
EOF EOF
chmod a+rx "${ww}" chmod a+rx "${ww}" || die
done done
} }
mkwrap mount umount mkwrap mount umount
@ -155,27 +221,32 @@ src_install() {
newins src/dircolors.hin DIR_COLORS newins src/dircolors.hin DIR_COLORS
if use split-usr ; then if use split-usr ; then
cd "${ED%/}"/usr/bin || die cd "${ED}"/usr/bin || die
dodir /bin dodir /bin
# move critical binaries into /bin (required by FHS)
# Move critical binaries into /bin (required by FHS)
local fhs="cat chgrp chmod chown cp date dd df echo false ln ls local fhs="cat chgrp chmod chown cp date dd df echo false ln ls
mkdir mknod mv pwd rm rmdir stty sync true uname" mkdir mknod mv pwd rm rmdir stty sync true uname"
mv ${fhs} ../../bin/ || die "could not move fhs bins" mv ${fhs} ../../bin/ || die "Could not move FHS bins!"
if use hostname; then
if use hostname ; then
mv hostname ../../bin/ || die mv hostname ../../bin/ || die
fi fi
if use kill; then
if use kill ; then
mv kill ../../bin/ || die mv kill ../../bin/ || die
fi fi
# move critical binaries into /bin (common scripts)
# Why are these required for booting? # 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 local com="basename chroot cut dir dirname du env expr head mkfifo
mktemp readlink seq sleep sort tail touch tr tty vdir wc yes" mktemp readlink seq sleep sort tail touch tr tty vdir wc yes"
mv ${com} ../../bin/ || die "could not move common bins" 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 # 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 # creating symlinks for these in /usr/bin instead of leaving
# the files there in the first place. # the files there in the first place...)
local x local x
for x in ${com} uname ; do for x in ${com} uname ; do
dosym ../../bin/${x} /usr/bin/${x} dosym ../../bin/${x} /usr/bin/${x}

View File

@ -1,52 +0,0 @@
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,35 @@
https://git.savannah.gnu.org/cgit/coreutils.git/patch/?id=e8b56ebd536e82b15542a00c888109471936bfda
https://lists.gnu.org/archive/html/bug-coreutils/2021-09/msg00031.html
(and https://lists.gnu.org/archive/html/bug-coreutils/2021-09/msg00035.html)
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
Date: Fri, 24 Sep 2021 20:57:41 +0100
Subject: chmod: fix exit status when ignoring symlinks
* src/chmod.c: Reorder enum so CH_NOT_APPLIED
can be treated as a non error.
* tests/chmod/ignore-symlink.sh: A new test.
* tests/local.mk: Reference the new test.
* NEWS: Mention the bug fix.
Fixes https://bugs.gnu.org/50784
--- a/src/chmod.c
+++ b/src/chmod.c
@@ -44,8 +44,8 @@ struct change_status
enum
{
CH_NO_STAT,
- CH_NOT_APPLIED,
CH_FAILED,
+ CH_NOT_APPLIED,
CH_NO_CHANGE_REQUESTED,
CH_SUCCEEDED
}
@@ -322,7 +322,7 @@ process_file (FTS *fts, FTSENT *ent)
if ( ! recurse)
fts_set (fts, ent, FTS_SKIP);
- return CH_NO_CHANGE_REQUESTED <= ch.status;
+ return CH_NOT_APPLIED <= ch.status;
}
/* Recursively change the modes of the specified FILES (the last entry

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata> <pkgmetadata>
<maintainer type="project"> <maintainer type="project">
<email>base-system@gentoo.org</email> <email>base-system@gentoo.org</email>