diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-04-02 23:19:01 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-04-02 23:19:01 +0100 |
commit | d288197c01703f58dbea0ff4f42b01e7c4c6f327 (patch) | |
tree | 5a9afa2f3fc3271753649a9b2c3c7045a7e85104 /sys-apps/coreutils | |
parent | 97310164515a0a048d4f049ae2d3e8d413fb94c6 (diff) |
gentoo auto-resync : 02:04:2023 - 23:19:00
Diffstat (limited to 'sys-apps/coreutils')
-rw-r--r-- | sys-apps/coreutils/Manifest | 2 | ||||
-rw-r--r-- | sys-apps/coreutils/coreutils-9.2-r2.ebuild | 269 | ||||
-rw-r--r-- | sys-apps/coreutils/files/coreutils-9.2-cp-reflink-auto-fallback.patch | 130 |
3 files changed, 401 insertions, 0 deletions
diff --git a/sys-apps/coreutils/Manifest b/sys-apps/coreutils/Manifest index ec56dbe29438..3f3e934d7760 100644 --- a/sys-apps/coreutils/Manifest +++ b/sys-apps/coreutils/Manifest @@ -2,6 +2,7 @@ AUX coreutils-8.32-ls-restore-8.31-behavior.patch 2824 BLAKE2B 7df44f4e330225a42 AUX coreutils-8.32-sandbox-env-test.patch 1958 BLAKE2B 570f62115f0853abb35290174ad6dd3157be16a28c527b37d1c58b421538a6238e93317689e6cd35b7dc5a0f480a4322c432986697a9e0af60019650eae92c0a SHA512 fd3573cf5a4b4fbba132d0fac5ad6eb4af5aa548a8c0c747653e47acfb97c01e31d7430db543df47d9a2680792d2583de70e1f1d49b2feb75887e9f8638527b7 AUX coreutils-9.1-fix-rename-simple-backups.patch 1343 BLAKE2B b284b2b7d33fe7650a4ac8723ca5566e819cd4f4740394cc549562a03fe7ed95d29cfb688a9e5513edcea1f9d5f7b72f1a530f9bf5093ad4dc6534a494e9f91c SHA512 900128c08b096c39302193855fdbb980c54597acf3349b9014ced500e344b7f47438722342e3a7d68f8c4588632769a11165c5c06796993d3b9aca019de8468a AUX coreutils-9.2-cksum-result-reporting.patch 2601 BLAKE2B 934e21d41fa93074aca8395bcb860c8bce6ac6de18120bcac728d67c0731242aa8163c411468caf7e64f71c731095e3e8070e5889d2fd93945a53ef50e31b831 SHA512 f1cb22d77d4b4c50f85e94153418cc6b774eeefc8955df725a4370844c8ceeb17ae0b3844269455ae36d23328a2faae1c5c762891384ea6f7eae46e89c291218 +AUX coreutils-9.2-cp-reflink-auto-fallback.patch 5690 BLAKE2B d0fe6e930a83675c7490c46edf16236d1c58edf734ec292df9148f13923e7467ae84dc3eb8c61789b4c4365dae537a32071b9db14e118f1171fe34b59c089d93 SHA512 d30aee98d9fe60e28534ffd388cb6a6911ffa751f2b03cd5d2339ccdd41cf512099afd9e67137da1690d489948faf1ed265ae1f6875379b558a25e9eee5a214f DIST coreutils-8.30-patches-01.tar.xz 5788 BLAKE2B a41511ce39ac570cb14b7f12d125eebef92217469a9490808719fa0665f5e5c0adb96fbd02c4bac4d280d1502295669575790a81dbc01afe2ca3a9d384cbefb0 SHA512 b1e1933637de4581d5f8c6ede4e80a012435d13f0cf5550a76ab5bbe9441e3c15ce19ef3f78a7ea3b8368d5e9a3bb17c1207c471d26171b59786f38adeba0454 DIST coreutils-8.32.tar.xz 5547836 BLAKE2B 0ad99c176c19ec214fcfd0845523e5362f0151827707c759bd46c0fe8d2501c6ad1c29c5b71266f6525857bc0d56c472db0d7fe29953b6c65e2e6c76bdf3c515 SHA512 1c8f3584efd61b4b02e7ac5db8e103b63cfb2063432caaf1e64cb2dcc56d8c657d1133bbf10bd41468d6a1f31142e6caa81d16ae68fa3e6e84075c253613a145 DIST coreutils-9.0_p20220409-patches-01.tar.xz 6244 BLAKE2B 8ca9855680719660782931467ec70095c826e66b9850890b8cf456963f8114f63940707386b97c766172d01e55e17b7db2aa1c329208a873a76e2293b29f565f SHA512 4b43c25832122d241f33e6b4eff24bc1fa045b9ca5af45a49d22ecb1fa282986c4e4a045ef24c34b3d94fd9a2247247c42c344261e3f464d881969e6f3351d3f @@ -12,6 +13,7 @@ DIST coreutils-9.2.tar.xz.sig 833 BLAKE2B 225f6ea9d6c2a2b0e47093b6c10d648b8d847d EBUILD coreutils-8.32-r1.ebuild 5968 BLAKE2B ae5871d55509dbcd48c3f8b33938edfffca3a48bc2b422546b1bd818e7830b877af08f51605ba0d68299ea63d1f6d8246301223cfa5a29620619cd209cbaa1f5 SHA512 363adf232d9b3d158ec7535e84263286961e3e870ecdee3215162e398125999ccf2d1b76d065a7223d58d04ccd75fd65ab33cf409e155fb2788ca0defdc5094a EBUILD coreutils-9.1-r2.ebuild 7114 BLAKE2B 3a80919e840546badf681b0672fcad68e2ac0d9a29586e7a8fd712a11484057364ae015c21b92bfef404f6a9c094d828852d915754bae61ace060c0c6853290e SHA512 77c948b54e48907df14a9ac67b5ed1a36cb11acf709fdf009674b90e878c1efc6b4c449d7f4efcc39110f04692c8c274acc3fa32e242f196b0d8bddb27b963a7 EBUILD coreutils-9.2-r1.ebuild 7550 BLAKE2B 809301b5eb4c9f8dd69cf734f91bdcab02a40e3a8fe0f54e02f02ad003f2ffaa9a9e68a0fd5b76fa0c7f0a6d29fdb7e7f97aa0d5be9db1d134a57c1da3eee345 SHA512 1bf6247e4205070d98f33ddf3130a5daa3720e4f34589da76f35c4961f14213a2dedf1fe3308b50c88e94a1f434b568661255829939030f445a3f6ea34468968 +EBUILD coreutils-9.2-r2.ebuild 7602 BLAKE2B fab330146b115909182404d078e5929ba954eef08177bc0280f2440d892db89327806ac6a41c376928454a02423f718af22024134b852482017f066a4ea3e318 SHA512 23bdc7fd9c60a404cab98cda770b0889a6b749b829b74e83e8c7de32e454290a0d9cccf235cfd36f7a76fff03283185402f854c90db9ce1a98147f4fc71776a1 EBUILD coreutils-9.2.ebuild 7500 BLAKE2B 00e7c094f7841dcafc5f107851d15c40d51d16b22b1c13c7948a9b42d9aeeabcdc00fbed61538df79493dca57e35caa5dfdb70418a3096b0fd0b4b0aea5c6229 SHA512 985be8b330fdca61f158c31318e240a1f0fcb66ca8b6238c282a1d88ba4b8ce58b9da0ce195d338eb642bec03555da2f2d92ec3afcdee402381daf66d28dc68e EBUILD coreutils-9999.ebuild 7500 BLAKE2B 00e7c094f7841dcafc5f107851d15c40d51d16b22b1c13c7948a9b42d9aeeabcdc00fbed61538df79493dca57e35caa5dfdb70418a3096b0fd0b4b0aea5c6229 SHA512 985be8b330fdca61f158c31318e240a1f0fcb66ca8b6238c282a1d88ba4b8ce58b9da0ce195d338eb642bec03555da2f2d92ec3afcdee402381daf66d28dc68e MISC metadata.xml 1043 BLAKE2B db071746d60a62e435bfd6e297641411320b61a5716dc631150e5a3a19bcd49cc6121d2a404b8875d6927ad0114f28d33e2b21edb3bab49559d50fdc26b056f6 SHA512 65149d4bf9b16f7e1800fe8d9e23fa466307ff3f009e06f3736b4f55bce27ba74bc6d1547e0b2f06dcebfcba0f2d21ef3efdd4073ed4e525a2ebdc6e62190119 diff --git a/sys-apps/coreutils/coreutils-9.2-r2.ebuild b/sys-apps/coreutils/coreutils-9.2-r2.ebuild new file mode 100644 index 000000000000..44a34c3cc7b3 --- /dev/null +++ b/sys-apps/coreutils/coreutils-9.2-r2.ebuild @@ -0,0 +1,269 @@ +# Copyright 1999-2023 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 maintianers also maintain the package in Fedora and may +# backport fixes which we want to pick up. + +PYTHON_COMPAT=( python3_{9..11} ) +VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/coreutils.asc +inherit flag-o-matic python-any-r1 toolchain-funcs verify-sig + +MY_PATCH="${PN}-9.0_p20220409-patches-01" +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).198-e68b1" + 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 ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x86-linux" +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-lang/perl + dev-perl/Expect + dev-util/strace + ${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] + ) + !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_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() { + local PATCHES=( + # Upstream patches + "${FILESDIR}"/${P}-cksum-result-reporting.patch + "${FILESDIR}"/${P}-cp-reflink-auto-fallback.patch + ) + + if ! use vanilla && [[ -d "${WORKDIR}"/patch ]] ; then + PATCHES+=( "${WORKDIR}"/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) + $(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() { + # 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}" gl_public_submodule_commit= \ + emake -k check VERBOSE=yes +} + +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" +} diff --git a/sys-apps/coreutils/files/coreutils-9.2-cp-reflink-auto-fallback.patch b/sys-apps/coreutils/files/coreutils-9.2-cp-reflink-auto-fallback.patch new file mode 100644 index 000000000000..0b2ea0f4f42d --- /dev/null +++ b/sys-apps/coreutils/files/coreutils-9.2-cp-reflink-auto-fallback.patch @@ -0,0 +1,130 @@ +https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=093a8b4bfaba60005f14493ce7ef11ed665a0176 + +From 093a8b4bfaba60005f14493ce7ef11ed665a0176 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com> +Date: Thu, 23 Mar 2023 13:19:04 +0000 +Subject: copy: fix --reflink=auto to fallback in more cases + +On restricted systems like android or some containers, +FICLONE could return EPERM, EACCES, or ENOTTY, +which would have induced the command to fail to copy +rather than falling back to a more standard copy. + +* src/copy.c (is_terminal_failure): A new function refactored +from handle_clone_fail(). +(is_CLONENOTSUP): Merge in the handling of EACCES, ENOTTY, EPERM +as they also pertain to determination of whether cloning is supported +if we ever use this function in that context. +(handle_clone_fail): Use is_terminal_failure() in all cases, +so that we assume a terminal failure in less errno cases. +* NEWS: Mention the bug fix. +Addresses https://bugs.gnu.org/62404 +--- a/src/copy.c ++++ b/src/copy.c +@@ -278,15 +278,27 @@ create_hole (int fd, char const *name, bool punch_holes, off_t size) + } + + +-/* Whether the errno from FICLONE, or copy_file_range +- indicates operation is not supported for this file or file system. */ ++/* Whether the errno indicates the operation is a transient failure. ++ I.e., a failure that would indicate the operation _is_ supported, ++ but has failed in a terminal way. */ ++ ++static bool ++is_terminal_error (int err) ++{ ++ return err == EIO || err == ENOMEM || err == ENOSPC || err == EDQUOT; ++} ++ ++ ++/* Whether the errno from FICLONE, or copy_file_range indicates ++ the operation is not supported/allowed for this file or process. */ + + static bool + is_CLONENOTSUP (int err) + { +- return err == ENOSYS || is_ENOTSUP (err) ++ return err == ENOSYS || err == ENOTTY || is_ENOTSUP (err) + || err == EINVAL || err == EBADF +- || err == EXDEV || err == ETXTBSY; ++ || err == EXDEV || err == ETXTBSY ++ || err == EPERM || err == EACCES; + } + + +@@ -339,20 +351,18 @@ sparse_copy (int src_fd, int dest_fd, char **abuf, size_t buf_size, + { + copy_debug.offload = COPY_DEBUG_UNSUPPORTED; + +- if (is_CLONENOTSUP (errno)) +- break; +- +- /* copy_file_range might not be enabled in seccomp filters, +- so retry with a standard copy. EPERM can also occur +- for immutable files, but that would only be in the edge case +- where the file is made immutable after creating/truncating, ++ /* Consider operation unsupported only if no data copied. ++ For example, EPERM could occur if copy_file_range not enabled ++ in seccomp filters, so retry with a standard copy. EPERM can ++ also occur for immutable files, but that would only be in the ++ edge case where the file is made immutable after creating, + in which case the (more accurate) error is still shown. */ +- if (errno == EPERM && *total_n_read == 0) ++ if (*total_n_read == 0 && is_CLONENOTSUP (errno)) + break; + + /* ENOENT was seen sometimes across CIFS shares, resulting in + no data being copied, but subsequent standard copies succeed. */ +- if (errno == ENOENT && *total_n_read == 0) ++ if (*total_n_read == 0 && errno == ENOENT) + break; + + if (errno == EINTR) +@@ -1172,17 +1182,15 @@ handle_clone_fail (int dst_dirfd, char const* dst_relname, + char const* src_name, char const* dst_name, + int dest_desc, bool new_dst, enum Reflink_type reflink_mode) + { +- /* If the clone operation is creating the destination, +- then don't try and cater for all non transient file system errors, +- and instead only cater for specific transient errors. */ +- bool transient_failure; +- if (dest_desc < 0) /* currently for fclonefileat(). */ +- transient_failure = errno == EIO || errno == ENOMEM +- || errno == ENOSPC || errno == EDQUOT; +- else /* currently for FICLONE. */ +- transient_failure = ! is_CLONENOTSUP (errno); +- +- if (reflink_mode == REFLINK_ALWAYS || transient_failure) ++ /* When the clone operation fails, report failure only with errno values ++ known to mean trouble when the clone is supported and called properly. ++ Do not report failure merely because !is_CLONENOTSUP (errno), ++ as systems may yield oddball errno values here with FICLONE. ++ Also is_CLONENOTSUP() is not appropriate for the range of errnos ++ possible from fclonefileat(), so it's more consistent to avoid. */ ++ bool report_failure = is_terminal_error (errno); ++ ++ if (reflink_mode == REFLINK_ALWAYS || report_failure) + error (0, errno, _("failed to clone %s from %s"), + quoteaf_n (0, dst_name), quoteaf_n (1, src_name)); + +@@ -1190,14 +1198,14 @@ handle_clone_fail (int dst_dirfd, char const* dst_relname, + but cloned no data. */ + if (new_dst /* currently not for fclonefileat(). */ + && reflink_mode == REFLINK_ALWAYS +- && ((! transient_failure) || lseek (dest_desc, 0, SEEK_END) == 0) ++ && ((! report_failure) || lseek (dest_desc, 0, SEEK_END) == 0) + && unlinkat (dst_dirfd, dst_relname, 0) != 0 && errno != ENOENT) + error (0, errno, _("cannot remove %s"), quoteaf (dst_name)); + +- if (! transient_failure) ++ if (! report_failure) + copy_debug.reflink = COPY_DEBUG_UNSUPPORTED; + +- if (reflink_mode == REFLINK_ALWAYS || transient_failure) ++ if (reflink_mode == REFLINK_ALWAYS || report_failure) + return false; + + return true; +-- +cgit v1.1 |