From 5182e61a3eff10335ecd1386877b49f8593047c1 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Fri, 5 Jan 2024 21:31:12 +0100 Subject: [PATCH] added patch to restore ls-removed-dir 8.31 behaviour (also fixes build on aarch64) [release 8.32-5mamba;Sun Apr 25 2021] --- coreutils-8.32-ls-removed-dir.patch | 153 ++++++++++++++++++++++++++++ coreutils.spec | 82 ++++++++++----- 2 files changed, 212 insertions(+), 23 deletions(-) create mode 100644 coreutils-8.32-ls-removed-dir.patch diff --git a/coreutils-8.32-ls-removed-dir.patch b/coreutils-8.32-ls-removed-dir.patch new file mode 100644 index 0000000..77dce89 --- /dev/null +++ b/coreutils-8.32-ls-removed-dir.patch @@ -0,0 +1,153 @@ +From 8c022656320592dbad146f5d3a3ae1875f419446 Mon Sep 17 00:00:00 2001 +From: Paul Eggert +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 +(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 +--- + 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 + #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 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 +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 +--- + 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 + diff --git a/coreutils.spec b/coreutils.spec index 8cbcf6b..9ae1350 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -1,7 +1,7 @@ %define i18npatch_version 8.32 Name: coreutils Version: 8.32 -Release: 2mamba +Release: 5mamba Summary: A GNU set of tools commonly used in shell scripts Group: System/Tools 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 # or http://pkgs.fedoraproject.org/cgit/coreutils.git/plain/coreutils-i18n.patch #Patch2: coreutils-8.22-i18n.patch -#%{name}-8.16-i18n-1.patch Patch3: %{name}-5.2.1-su_paths.patch Patch5: %{name}-8.4-pam.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 Patch9: %{name}-8.4-cross_compile.patch Patch10: %{name}-8.14-uname-1.patch +Patch11: coreutils-8.32-ls-removed-dir.patch License: GPL ## AUTOBUILDREQ-BEGIN BuildRequires: glibc-devel -BuildRequires: ldconfig BuildRequires: libacl-devel BuildRequires: libattr-devel BuildRequires: libcap-devel @@ -48,8 +47,38 @@ Provides: fileutils = %{version} Provides: sh-utils = %{version} Provides: textutils = %{?epoch:%epoch:}%{version} Provides: mktemp -Obsoletes: textutils -BuildRoot: %{_tmppath}/%{name}-%{version}-root +Provides: /bin/basename +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 These are the GNU core utilities. @@ -78,6 +107,8 @@ Most of these programs have significant advantages over their Unix counterparts, #%patch10 -p1 +%patch11 -p1 + # docs should say /var/run/[uw]tmp not /etc/[uw]tmp sed -i 's,/etc/utmp,/var/run/utmp,g; 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} %makeinstall -install -d %{buildroot}{/bin,%_bindir,%_sbindir} -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 \ - touch true uname unlink; do - [ -f %{buildroot}%{_bindir}/$f ] && mv %{buildroot}{%_bindir,/bin}/$f -done +#install -d %{buildroot}{/bin,%_bindir,%_sbindir} +#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 \ +# touch true uname unlink; do +# [ -f %{buildroot}%{_bindir}/$f ] && mv %{buildroot}{%_bindir,/bin}/$f +#done -# mktemp,cat: create a link for backward compatibility -ln -sf /bin/mktemp %{buildroot}%{_bindir}/mktemp -ln -sf /bin/cut %{buildroot}%{_bindir}/cut +## mktemp,cat: create a link for backward compatibility +#ln -sf /bin/mktemp %{buildroot}%{_bindir}/mktemp +#ln -sf /bin/cut %{buildroot}%{_bindir}/cut +install -d %{buildroot}%{_sbindir} mv %{buildroot}%{_bindir}/chroot %{buildroot}%{_sbindir} # These tools come from other packages @@ -157,37 +189,41 @@ done #install -D -m 0644 %{S:1} %{buildroot}%{_sysconfdir}/pam.d/su -ln -sf ../../bin/env %{buildroot}%{_bindir}/env -ln -sf ../usr/bin/install %{buildroot}/bin/install +#ln -sf ../../bin/env %{buildroot}%{_bindir}/env +#ln -sf ../usr/bin/install %{buildroot}/bin/install %find_lang %{name} %post %install_info %{name}.info -exit 0 +: %preun %uninstall_info %{name}.info -exit 0 +: %clean [ "%{buildroot}" != / ] && rm -rf %{buildroot} %files -f %{name}.lang %defattr(-,root,root) -#%attr(4775,root,root) /bin/su -#%config %{_sysconfdir}/pam.d/su -/bin/* %{_bindir}/* %{_sbindir}/* %{_libexecdir}/coreutils/libstdbuf.so %{_infodir}/* %{_mandir}/man1/* %doc AUTHORS THANKS -#%doc AUTHORS ChangeLog* NEWS README TODO -#%doc THANKS THANKS-to-translators THANKStt.in %changelog +* Sun Apr 25 2021 Silvan Calarco 8.32-5mamba +- added patch to restore ls-removed-dir 8.31 behaviour (also fixes build on aarch64) + +* Sat Apr 24 2021 Silvan Calarco 8.32-4mamba +- added legacy provices in /bin directory + +* Sat Apr 24 2021 Silvan Calarco 8.32-3mamba +- remove /bin directory + * Tue Nov 24 2020 Silvan Calarco 8.32-2mamba - remove uname patch - rebuilt with debug package