added patch to restore ls-removed-dir 8.31 behaviour (also fixes build on aarch64) [release 8.32-5mamba;Sun Apr 25 2021]

This commit is contained in:
Silvan Calarco 2024-01-05 21:31:12 +01:00
parent d50f3f04d1
commit 5182e61a3e
2 changed files with 212 additions and 23 deletions

View File

@ -0,0 +1,153 @@
From 8c022656320592dbad146f5d3a3ae1875f419446 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Thu, 5 Mar 2020 17:25:29 -0800
Subject: [PATCH 1/2] ls: restore 8.31 behavior on removed directories
* NEWS: Mention this.
* src/ls.c: Do not include <sys/sycall.h>
(print_dir): Don't worry about whether the directory is removed.
* tests/ls/removed-directory.sh: Adjust to match new (i.e., old)
behavior.
Upstream-commit: 10fcb97bd728f09d4a027eddf8ad2900f0819b0a
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
src/ls.c | 22 ----------------------
tests/ls/removed-directory.sh | 10 ++--------
2 files changed, 2 insertions(+), 30 deletions(-)
diff --git a/src/ls.c b/src/ls.c
index 9d25f62..850ecc2 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -49,10 +49,6 @@
# include <sys/ptem.h>
#endif
-#ifdef __linux__
-# include <sys/syscall.h>
-#endif
-
#include <stdio.h>
#include <assert.h>
#include <setjmp.h>
@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
struct dirent *next;
uintmax_t total_blocks = 0;
static bool first = true;
- bool found_any_entries = false;
errno = 0;
dirp = opendir (name);
@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
next = readdir (dirp);
if (next)
{
- found_any_entries = true;
if (! file_ignored (next->d_name))
{
enum filetype type = unknown;
@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
if (errno != EOVERFLOW)
break;
}
-#ifdef __linux__
- else if (! found_any_entries)
- {
- /* If readdir finds no directory entries at all, not even "." or
- "..", then double check that the directory exists. */
- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1
- && errno != EINVAL)
- {
- /* We exclude EINVAL as that pertains to buffer handling,
- and we've passed NULL as the buffer for simplicity.
- ENOENT is returned if appropriate before buffer handling. */
- file_failure (command_line_arg, _("reading directory %s"), name);
- }
- break;
- }
-#endif
else
break;
diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh
index e8c835d..fe8f929 100755
--- a/tests/ls/removed-directory.sh
+++ b/tests/ls/removed-directory.sh
@@ -26,20 +26,14 @@ case $host_triplet in
*) skip_ 'non linux kernel' ;;
esac
-LS_FAILURE=2
-
-cat <<\EOF >exp-err || framework_failure_
-ls: reading directory '.': No such file or directory
-EOF
-
cwd=$(pwd)
mkdir d || framework_failure_
cd d || framework_failure_
rmdir ../d || framework_failure_
-returns_ $LS_FAILURE ls >../out 2>../err || fail=1
+ls >../out 2>../err || fail=1
cd "$cwd" || framework_failure_
compare /dev/null out || fail=1
-compare exp-err err || fail=1
+compare /dev/null err || fail=1
Exit $fail
--
2.21.1
From 847324a0debd9d12062c79e7a7a9d3d8ce76390d Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sat, 7 Mar 2020 10:29:51 -0800
Subject: [PATCH 2/2] ls: improve removed-directory test
* tests/ls/removed-directory.sh: Remove host_triplet test.
Skip this test if one cannot remove the working directory.
From a suggestion by Bernhard Voelker (Bug#39929).
Upstream-commit: 672819c73f2e94e61386dc0584bddf9da860cc26
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
tests/ls/removed-directory.sh | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh
index fe8f929..63b209d 100755
--- a/tests/ls/removed-directory.sh
+++ b/tests/ls/removed-directory.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-# If ls is asked to list a removed directory (e.g. the parent process's
-# current working directory that has been removed by another process), it
-# emits an error message.
+# If ls is asked to list a removed directory (e.g., the parent process's
+# current working directory has been removed by another process), it
+# should not emit an error message merely because the directory is removed.
# Copyright (C) 2020 Free Software Foundation, Inc.
@@ -21,15 +21,10 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ ls
-case $host_triplet in
- *linux*) ;;
- *) skip_ 'non linux kernel' ;;
-esac
-
cwd=$(pwd)
mkdir d || framework_failure_
cd d || framework_failure_
-rmdir ../d || framework_failure_
+rmdir ../d || skip_ "can't remove working directory on this platform"
ls >../out 2>../err || fail=1
cd "$cwd" || framework_failure_
--
2.21.1

View File

@ -1,7 +1,7 @@
%define i18npatch_version 8.32 %define i18npatch_version 8.32
Name: coreutils Name: coreutils
Version: 8.32 Version: 8.32
Release: 2mamba Release: 5mamba
Summary: A GNU set of tools commonly used in shell scripts Summary: A GNU set of tools commonly used in shell scripts
Group: System/Tools Group: System/Tools
Vendor: openmamba Vendor: openmamba
@ -15,7 +15,6 @@ Patch0: %{name}-7.6-langinfo.patch
Patch2: http://www.linuxfromscratch.org/patches/downloads/coreutils/coreutils-%{i18npatch_version}-i18n-1.patch Patch2: http://www.linuxfromscratch.org/patches/downloads/coreutils/coreutils-%{i18npatch_version}-i18n-1.patch
# or http://pkgs.fedoraproject.org/cgit/coreutils.git/plain/coreutils-i18n.patch # or http://pkgs.fedoraproject.org/cgit/coreutils.git/plain/coreutils-i18n.patch
#Patch2: coreutils-8.22-i18n.patch #Patch2: coreutils-8.22-i18n.patch
#%{name}-8.16-i18n-1.patch
Patch3: %{name}-5.2.1-su_paths.patch Patch3: %{name}-5.2.1-su_paths.patch
Patch5: %{name}-8.4-pam.patch Patch5: %{name}-8.4-pam.patch
Patch6: %{name}-6.9-uname_element_unknown.patch Patch6: %{name}-6.9-uname_element_unknown.patch
@ -23,10 +22,10 @@ Patch7: %{name}-6.9-su_setrootpaths.patch
Patch8: %{name}-6.9-rename_futimens.patch Patch8: %{name}-6.9-rename_futimens.patch
Patch9: %{name}-8.4-cross_compile.patch Patch9: %{name}-8.4-cross_compile.patch
Patch10: %{name}-8.14-uname-1.patch Patch10: %{name}-8.14-uname-1.patch
Patch11: coreutils-8.32-ls-removed-dir.patch
License: GPL License: GPL
## AUTOBUILDREQ-BEGIN ## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel BuildRequires: glibc-devel
BuildRequires: ldconfig
BuildRequires: libacl-devel BuildRequires: libacl-devel
BuildRequires: libattr-devel BuildRequires: libattr-devel
BuildRequires: libcap-devel BuildRequires: libcap-devel
@ -48,8 +47,38 @@ Provides: fileutils = %{version}
Provides: sh-utils = %{version} Provides: sh-utils = %{version}
Provides: textutils = %{?epoch:%epoch:}%{version} Provides: textutils = %{?epoch:%epoch:}%{version}
Provides: mktemp Provides: mktemp
Obsoletes: textutils Provides: /bin/basename
BuildRoot: %{_tmppath}/%{name}-%{version}-root Provides: /bin/cat
Provides: /bin/chgrp
Provides: /bin/chmod
Provides: /bin/chown
Provides: /bin/cp
Provides: /bin/cut
Provides: /bin/date
Provides: /bin/dd
Provides: /bin/df
Provides: /bin/echo
Provides: /bin/env
Provides: /bin/false
Provides: /bin/true
Provides: /bin/ln
Provides: /bin/ls
Provides: /bin/mktemp
Provides: /bin/mkdir
Provides: /bin/mknod
Provides: /bin/mv
Provides: /bin/nice
Provides: /bin/pwd
Provides: /bin/rm
Provides: /bin/rmdir
Provides: /bin/sleep
Provides: /bin/sort
Provides: /bin/stty
Provides: /bin/sync
Provides: /bin/touch
Provides: /bin/uname
Obsoletes: textutils < 8.32-3mamba
Requires(post): filesystem >= 2.3-5mamba
%description %description
These are the GNU core utilities. These are the GNU core utilities.
@ -78,6 +107,8 @@ Most of these programs have significant advantages over their Unix counterparts,
#%patch10 -p1 #%patch10 -p1
%patch11 -p1
# docs should say /var/run/[uw]tmp not /etc/[uw]tmp # docs should say /var/run/[uw]tmp not /etc/[uw]tmp
sed -i 's,/etc/utmp,/var/run/utmp,g; sed -i 's,/etc/utmp,/var/run/utmp,g;
s,/etc/wtmp,/var/run/wtmp,g' doc/coreutils.texi s,/etc/wtmp,/var/run/wtmp,g' doc/coreutils.texi
@ -135,17 +166,18 @@ touch aclocal.m4 configure config.hin Makefile.in */Makefile.in
[ "%{buildroot}" != / ] && rm -rf %{buildroot} [ "%{buildroot}" != / ] && rm -rf %{buildroot}
%makeinstall %makeinstall
install -d %{buildroot}{/bin,%_bindir,%_sbindir} #install -d %{buildroot}{/bin,%_bindir,%_sbindir}
for f in basename cat chgrp chmod chown cp cut date dd df echo env false \ #for f in basename cat chgrp chmod chown cp cut date dd df echo env false \
link ln ls mkdir mknod mktemp mv nice pwd rm rmdir sleep sort stty sync \ # link ln ls mkdir mknod mktemp mv nice pwd rm rmdir sleep sort stty sync \
touch true uname unlink; do # touch true uname unlink; do
[ -f %{buildroot}%{_bindir}/$f ] && mv %{buildroot}{%_bindir,/bin}/$f # [ -f %{buildroot}%{_bindir}/$f ] && mv %{buildroot}{%_bindir,/bin}/$f
done #done
# mktemp,cat: create a link for backward compatibility ## mktemp,cat: create a link for backward compatibility
ln -sf /bin/mktemp %{buildroot}%{_bindir}/mktemp #ln -sf /bin/mktemp %{buildroot}%{_bindir}/mktemp
ln -sf /bin/cut %{buildroot}%{_bindir}/cut #ln -sf /bin/cut %{buildroot}%{_bindir}/cut
install -d %{buildroot}%{_sbindir}
mv %{buildroot}%{_bindir}/chroot %{buildroot}%{_sbindir} mv %{buildroot}%{_bindir}/chroot %{buildroot}%{_sbindir}
# These tools come from other packages # These tools come from other packages
@ -157,37 +189,41 @@ done
#install -D -m 0644 %{S:1} %{buildroot}%{_sysconfdir}/pam.d/su #install -D -m 0644 %{S:1} %{buildroot}%{_sysconfdir}/pam.d/su
ln -sf ../../bin/env %{buildroot}%{_bindir}/env #ln -sf ../../bin/env %{buildroot}%{_bindir}/env
ln -sf ../usr/bin/install %{buildroot}/bin/install #ln -sf ../usr/bin/install %{buildroot}/bin/install
%find_lang %{name} %find_lang %{name}
%post %post
%install_info %{name}.info %install_info %{name}.info
exit 0 :
%preun %preun
%uninstall_info %{name}.info %uninstall_info %{name}.info
exit 0 :
%clean %clean
[ "%{buildroot}" != / ] && rm -rf %{buildroot} [ "%{buildroot}" != / ] && rm -rf %{buildroot}
%files -f %{name}.lang %files -f %{name}.lang
%defattr(-,root,root) %defattr(-,root,root)
#%attr(4775,root,root) /bin/su
#%config %{_sysconfdir}/pam.d/su
/bin/*
%{_bindir}/* %{_bindir}/*
%{_sbindir}/* %{_sbindir}/*
%{_libexecdir}/coreutils/libstdbuf.so %{_libexecdir}/coreutils/libstdbuf.so
%{_infodir}/* %{_infodir}/*
%{_mandir}/man1/* %{_mandir}/man1/*
%doc AUTHORS THANKS %doc AUTHORS THANKS
#%doc AUTHORS ChangeLog* NEWS README TODO
#%doc THANKS THANKS-to-translators THANKStt.in
%changelog %changelog
* Sun Apr 25 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 8.32-5mamba
- added patch to restore ls-removed-dir 8.31 behaviour (also fixes build on aarch64)
* Sat Apr 24 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 8.32-4mamba
- added legacy provices in /bin directory
* Sat Apr 24 2021 Silvan Calarco <silvan.calarco@mambasoft.it> 8.32-3mamba
- remove /bin directory
* Tue Nov 24 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 8.32-2mamba * Tue Nov 24 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 8.32-2mamba
- remove uname patch - remove uname patch
- rebuilt with debug package - rebuilt with debug package