diff --git a/srcpkgs/coreutils/patches/0001-ls-restore-8.31-behavior-on-removed-directories.patch b/srcpkgs/coreutils/patches/0001-ls-restore-8.31-behavior-on-removed-directories.patch new file mode 100644 index 00000000000..0312eff0468 --- /dev/null +++ b/srcpkgs/coreutils/patches/0001-ls-restore-8.31-behavior-on-removed-directories.patch @@ -0,0 +1,120 @@ +From 10fcb97bd728f09d4a027eddf8ad2900f0819b0a Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Thu, 5 Mar 2020 17:25:29 -0800 +Subject: [PATCH] ls: restore 8.31 behavior on removed directories +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +* NEWS: Mention this. +* src/ls.c: Do not include +(print_dir): Don't worry about whether the directory is removed. +* tests/ls/removed-directory.sh: Adjust to match new (i.e., old) +behavior. +--- + NEWS | 6 ++++++ + src/ls.c | 22 ---------------------- + tests/ls/removed-directory.sh | 10 ++-------- + 3 files changed, 8 insertions(+), 30 deletions(-) + +diff --git NEWS NEWS +index fdc8bf5db..653e7178b 100644 +--- NEWS ++++ NEWS +@@ -2,6 +2,12 @@ GNU coreutils NEWS -*- outline -*- + + * Noteworthy changes in release ?.? (????-??-??) [?] + ++** Changes in behavior ++ ++ On GNU/Linux systems, ls no longer issues an error message on ++ directory merely because it was removed. This reverts a change ++ that was made in release 8.32. ++ + + * Noteworthy changes in release 8.32 (2020-03-05) [stable] + +diff --git src/ls.c src/ls.c +index 24b983287..4acf5f44d 100644 +--- src/ls.c ++++ src/ls.c +@@ -49,10 +49,6 @@ + # include + #endif + +-#ifdef __linux__ +-# include +-#endif +- + #include + #include + #include +@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + struct dirent *next; + uintmax_t total_blocks = 0; + static bool first = true; +- bool found_any_entries = false; + + errno = 0; + dirp = opendir (name); +@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + next = readdir (dirp); + if (next) + { +- found_any_entries = true; + if (! file_ignored (next->d_name)) + { + enum filetype type = unknown; +@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + if (errno != EOVERFLOW) + break; + } +-#ifdef __linux__ +- else if (! found_any_entries) +- { +- /* If readdir finds no directory entries at all, not even "." or +- "..", then double check that the directory exists. */ +- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1 +- && errno != EINVAL) +- { +- /* We exclude EINVAL as that pertains to buffer handling, +- and we've passed NULL as the buffer for simplicity. +- ENOENT is returned if appropriate before buffer handling. */ +- file_failure (command_line_arg, _("reading directory %s"), name); +- } +- break; +- } +-#endif + else + break; + +diff --git tests/ls/removed-directory.sh tests/ls/removed-directory.sh +index e8c835dab..fe8f929a1 100755 +--- tests/ls/removed-directory.sh ++++ tests/ls/removed-directory.sh +@@ -26,20 +26,14 @@ case $host_triplet in + *) skip_ 'non linux kernel' ;; + esac + +-LS_FAILURE=2 +- +-cat <<\EOF >exp-err || framework_failure_ +-ls: reading directory '.': No such file or directory +-EOF +- + cwd=$(pwd) + mkdir d || framework_failure_ + cd d || framework_failure_ + rmdir ../d || framework_failure_ + +-returns_ $LS_FAILURE ls >../out 2>../err || fail=1 ++ls >../out 2>../err || fail=1 + cd "$cwd" || framework_failure_ + compare /dev/null out || fail=1 +-compare exp-err err || fail=1 ++compare /dev/null err || fail=1 + + Exit $fail +-- +2.24.0.375.geb5ae68d41 + diff --git a/srcpkgs/coreutils/template b/srcpkgs/coreutils/template index 453e7498bf9..708fbf91964 100644 --- a/srcpkgs/coreutils/template +++ b/srcpkgs/coreutils/template @@ -1,7 +1,7 @@ # Template file for 'coreutils' pkgname=coreutils version=8.32 -revision=1 +revision=2 bootstrap=yes makedepends="gmp-devel acl-devel libcap-devel" short_desc="GNU core utilities" @@ -16,6 +16,10 @@ replaces="chroot-coreutils>=0 coreutils-doc>=0 b2sum>=0" if [ "$CHROOT_READY" ]; then hostmakedepends+=" perl" + # allow run ./configure by root in ethereal chroot + if [ "$XBPS_ALLOW_CHROOT_BREAKOUT" ]; then + _force_unsafe_configure="FORCE_UNSAFE_CONFIGURE=1" + fi fi alternatives=" @@ -26,7 +30,9 @@ pre_configure() { # Build natively all utils for the host, we need this to generate # the manpages via help2man. if [ "$CROSS_BUILD" ]; then - CC=cc LD=ld AR=ar RANLIB=ranlib CFLAGS=-Os CXXFLAGS=-Os LDFLAGS= \ + env CC=cc LD=ld AR=ar RANLIB=ranlib \ + CFLAGS=-Os CXXFLAGS=-Os LDFLAGS= \ + $_force_unsafe_configure \ ./configure --prefix=${wrksrc}/coreutils-${XBPS_MACHINE} \ --enable-install-program=arch,hostname \ --enable-no-install-program=kill,uptime @@ -50,13 +56,15 @@ do_configure() { # Do not install kill: provided by util-linux. # Do not install uptime: provided by procps-ng. # - ./configure ${configure_args} \ + env $_force_unsafe_configure ./configure ${configure_args} \ --enable-install-program=arch,hostname \ --enable-no-install-program=kill,uptime \ --disable-rpath if [ "$CROSS_BUILD" ]; then # Use install when cross compiling - sed -i Makefile -e 's;^\(cu_install_program =\).*;\1 install;' + cp Makefile Makefile.cfg.orig + sed -e 's;^\(cu_install_program =\).*;\1 install;' \ + Makefile.cfg.orig >Makefile fi } @@ -64,11 +72,12 @@ do_build() { if [ "$CROSS_BUILD" ]; then cp Makefile Makefile.orig sed '/src_make_prime_list/d' Makefile.orig > Makefile - depbase=$(echo src/make-prime-list.o | sed 's|[^/]*$|.deps/&|;s|\.o$||');\ - cc -std=gnu99 -I. -I./lib -Ilib -I./lib -Isrc -I./src \ + depbase=$(echo src/make-prime-list.o | sed 's|[^/]*$|.deps/&|;s|\.o$||') + cc -std=gnu99 -I. -I./lib -Ilib -I./lib -Isrc -I./src \ -fdiagnostics-show-option -funit-at-a-time -g -O2 -MT \ - src/make-prime-list.o -MD -MP -MF $depbase.Tpo -c -o src/make-prime-list.o \ - src/make-prime-list.c && + src/make-prime-list.o -MD -MP -MF $depbase.Tpo -c \ + -o src/make-prime-list.o \ + src/make-prime-list.c mv -f $depbase.Tpo $depbase.Po cc -std=gnu99 -fdiagnostics-show-option -funit-at-a-time -g -O2 \ -Wl,--as-needed -o src/make-prime-list src/make-prime-list.o