diff --git a/coreutils-8.30-renameatu.patch b/coreutils-8.30-renameatu.patch new file mode 100644 index 0000000..a5aa48f --- /dev/null +++ b/coreutils-8.30-renameatu.patch @@ -0,0 +1,451 @@ +From 57ee8db4fee8eb6772df1ff18d275594c0b034d4 Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Thu, 5 Jul 2018 09:22:09 -0700 +Subject: [PATCH 1/2] renameatu: rename from renameat2 + +It's looking like Glibc will add a renameat2 function +that is incompatible with Gnulib renameat2; see: +https://sourceware.org/ml/libc-alpha/2018-07/msg00064.html +To help avoid future confusion, rename renameat2 to something else. +Use the name 'renameatu', as the Gnulib function is close to the +Glibc function. Perhaps someday there will also be a renameat2 +Gnulib module, which mimicks the future glibc renameat2, but that +can wait as nobody seems to need such a module now. +* NEWS: Mention this. +* lib/renameatu.c: Rename from lib/renameat2.c. +* lib/renameatu.h: Rename from lib/renameat2.h. +* modules/renameatu: Rename from modules/renameat2. +* modules/renameatu-tests: Rename from modules/renameat2-tests. +All uses of "renameat2" in identifiers or file name +changed to "renameatu", except for two instances in +lib/renameatu.c that deal with the Linux kernel's +renameat2 syscall. + +Upstream-commit: 2522322e5304e7d86c63e607e2bc83c8d8b0a889 +Signed-off-by: Kamil Dudka +--- + gnulib-tests/gnulib.mk | 12 +++--- + .../{test-renameat2.c => test-renameatu.c} | 48 +++++++++++----------- + lib/backupfile.c | 4 +- + lib/gnulib.mk | 10 ++--- + lib/renameat.c | 4 +- + lib/{renameat2.c => renameatu.c} | 9 ++-- + lib/{renameat2.h => renameatu.h} | 8 ++-- + 7 files changed, 48 insertions(+), 47 deletions(-) + rename gnulib-tests/{test-renameat2.c => test-renameatu.c} (80%) + rename lib/{renameat2.c => renameatu.c} (94%) + rename lib/{renameat2.h => renameatu.h} (84%) + +diff --git a/gnulib-tests/gnulib.mk b/gnulib-tests/gnulib.mk +index be2b99e..891425b 100644 +--- a/gnulib-tests/gnulib.mk ++++ b/gnulib-tests/gnulib.mk +@@ -1750,14 +1750,14 @@ EXTRA_DIST += test-rename.h test-renameat.c signature.h macros.h + + ## end gnulib module renameat-tests + +-## begin gnulib module renameat2-tests ++## begin gnulib module renameatu-tests + +-TESTS += test-renameat2 +-check_PROGRAMS += test-renameat2 +-test_renameat2_LDADD = $(LDADD) @LIBINTL@ +-EXTRA_DIST += test-rename.h test-renameat2.c signature.h macros.h ++TESTS += test-renameatu ++check_PROGRAMS += test-renameatu ++test_renameatu_LDADD = $(LDADD) @LIBINTL@ ++EXTRA_DIST += test-rename.h test-renameatu.c signature.h macros.h + +-## end gnulib module renameat2-tests ++## end gnulib module renameatu-tests + + ## begin gnulib module rmdir-tests + +diff --git a/gnulib-tests/test-renameat2.c b/gnulib-tests/test-renameatu.c +similarity index 80% +rename from gnulib-tests/test-renameat2.c +rename to gnulib-tests/test-renameatu.c +index 0104890..988428b 100644 +--- a/gnulib-tests/test-renameat2.c ++++ b/gnulib-tests/test-renameatu.c +@@ -1,4 +1,4 @@ +-/* Test renameat2. ++/* Test renameatu. + Copyright (C) 2009-2018 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify +@@ -18,12 +18,12 @@ + + #include + +-#include ++#include + + #include + + #include "signature.h" +-SIGNATURE_CHECK (renameat2, int, ++SIGNATURE_CHECK (renameatu, int, + (int, char const *, int, char const *, unsigned int)); + + #include +@@ -39,18 +39,18 @@ SIGNATURE_CHECK (renameat2, int, + #include "ignore-value.h" + #include "macros.h" + +-#define BASE "test-renameat2.t" ++#define BASE "test-renameatu.t" + + #include "test-rename.h" + + static int dfd1 = AT_FDCWD; + static int dfd2 = AT_FDCWD; + +-/* Wrapper to test renameat2 like rename. */ ++/* Wrapper to test renameatu like rename. */ + static int + do_rename (char const *name1, char const *name2) + { +- return renameat2 (dfd1, name1, dfd2, name2, 0); ++ return renameatu (dfd1, name1, dfd2, name2, 0); + } + + int +@@ -67,24 +67,24 @@ main (void) + /* Test behaviour for invalid file descriptors. */ + { + errno = 0; +- ASSERT (renameat2 (-1, "foo", AT_FDCWD, "bar", 0) == -1); ++ ASSERT (renameatu (-1, "foo", AT_FDCWD, "bar", 0) == -1); + ASSERT (errno == EBADF); + } + { + close (99); + errno = 0; +- ASSERT (renameat2 (99, "foo", AT_FDCWD, "bar", 0) == -1); ++ ASSERT (renameatu (99, "foo", AT_FDCWD, "bar", 0) == -1); + ASSERT (errno == EBADF); + } + ASSERT (close (creat (BASE "oo", 0600)) == 0); + { + errno = 0; +- ASSERT (renameat2 (AT_FDCWD, BASE "oo", -1, "bar", 0) == -1); ++ ASSERT (renameatu (AT_FDCWD, BASE "oo", -1, "bar", 0) == -1); + ASSERT (errno == EBADF); + } + { + errno = 0; +- ASSERT (renameat2 (AT_FDCWD, BASE "oo", 99, "bar", 0) == -1); ++ ASSERT (renameatu (AT_FDCWD, BASE "oo", 99, "bar", 0) == -1); + ASSERT (errno == EBADF); + } + ASSERT (unlink (BASE "oo") == 0); +@@ -133,13 +133,13 @@ main (void) + + ASSERT (sprintf (strchr (file1, '\0') - 2, "%02d", i) == 2); + ASSERT (sprintf (strchr (file2, '\0') - 2, "%02d", i + 1) == 2); +- ASSERT (renameat2 (fd1, file1, fd2, file2, 0) == 0); ++ ASSERT (renameatu (fd1, file1, fd2, file2, 0) == 0); + free (file1); + free (file2); + } + dfd2 = open ("..", O_RDONLY); + ASSERT (0 <= dfd2); +- ASSERT (renameat2 (dfd, "../" BASE "16", dfd2, BASE "17", 0) == 0); ++ ASSERT (renameatu (dfd, "../" BASE "16", dfd2, BASE "17", 0) == 0); + ASSERT (close (dfd2) == 0); + + /* Now we change back to the parent directory, and set dfd to "."; +@@ -152,47 +152,47 @@ main (void) + + ASSERT (close (creat (BASE "sub2/file", 0600)) == 0); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "sub1", dfd, BASE "sub2", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "sub1", dfd, BASE "sub2", 0) == -1); + ASSERT (errno == EEXIST || errno == ENOTEMPTY); + ASSERT (unlink (BASE "sub2/file") == 0); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "sub2", dfd, BASE "sub1/.", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "sub2", dfd, BASE "sub1/.", 0) == -1); + ASSERT (errno == EINVAL || errno == EISDIR || errno == EBUSY + || errno == ENOTEMPTY || errno == EEXIST + || errno == ENOENT /* WSL */); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "sub2/.", dfd, BASE "sub1", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "sub2/.", dfd, BASE "sub1", 0) == -1); + ASSERT (errno == EINVAL || errno == EBUSY || errno == EEXIST + || errno == ENOENT /* WSL */); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "17", dfd, BASE "sub1", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "17", dfd, BASE "sub1", 0) == -1); + ASSERT (errno == EISDIR); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "nosuch", dfd, BASE "18", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "nosuch", dfd, BASE "18", 0) == -1); + ASSERT (errno == ENOENT); + errno = 0; +- ASSERT (renameat2 (dfd, "", dfd, BASE "17", 0) == -1); ++ ASSERT (renameatu (dfd, "", dfd, BASE "17", 0) == -1); + ASSERT (errno == ENOENT); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "17", dfd, "", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "17", dfd, "", 0) == -1); + ASSERT (errno == ENOENT); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "sub2", dfd, BASE "17", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "sub2", dfd, BASE "17", 0) == -1); + ASSERT (errno == ENOTDIR); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "17/", dfd, BASE "18", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "17/", dfd, BASE "18", 0) == -1); + ASSERT (errno == ENOTDIR); + errno = 0; +- ASSERT (renameat2 (dfd, BASE "17", dfd, BASE "18/", 0) == -1); ++ ASSERT (renameatu (dfd, BASE "17", dfd, BASE "18/", 0) == -1); + ASSERT (errno == ENOTDIR || errno == ENOENT); + + /* Finally, make sure we cannot overwrite existing files. */ + ASSERT (close (creat (BASE "sub2/file", 0600)) == 0); + errno = 0; +- ASSERT ((renameat2 (dfd, BASE "sub2", dfd, BASE "sub1", RENAME_NOREPLACE) ++ ASSERT ((renameatu (dfd, BASE "sub2", dfd, BASE "sub1", RENAME_NOREPLACE) + == -1) + && errno == EEXIST); +- ASSERT ((renameat2 (dfd, BASE "sub2/file", dfd, BASE "17", RENAME_NOREPLACE) ++ ASSERT ((renameatu (dfd, BASE "sub2/file", dfd, BASE "17", RENAME_NOREPLACE) + == -1) + && errno == EEXIST); + +diff --git a/lib/backupfile.c b/lib/backupfile.c +index d438455..637be6c 100644 +--- a/lib/backupfile.c ++++ b/lib/backupfile.c +@@ -23,7 +23,7 @@ + #include "backup-internal.h" + + #include "dirname.h" +-#include "renameat2.h" ++#include "renameatu.h" + #include "xalloc-oversized.h" + + #include +@@ -353,7 +353,7 @@ backupfile_internal (char const *file, enum backup_type backup_type, bool rename + base_offset = 0; + } + unsigned flags = backup_type == simple_backups ? 0 : RENAME_NOREPLACE; +- if (renameat2 (AT_FDCWD, file, sdir, s + base_offset, flags) == 0) ++ if (renameatu (AT_FDCWD, file, sdir, s + base_offset, flags) == 0) + break; + int e = errno; + if (e != EEXIST) +diff --git a/lib/gnulib.mk b/lib/gnulib.mk +index 04473d5..0b747e3 100644 +--- a/lib/gnulib.mk ++++ b/lib/gnulib.mk +@@ -21,7 +21,7 @@ + # the same distribution terms as the rest of that program. + # + # Generated by gnulib-tool. +-# Reproduce by: gnulib-tool --import --local-dir=gl --lib=libcoreutils --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=build-aux --with-tests --avoid=canonicalize-lgpl --avoid=dummy --makefile-name=gnulib.mk --no-conditional-dependencies --no-libtool --macro-prefix=gl acl alignof alloca announce-gen areadlink-with-size argmatch argv-iter assert autobuild backup-rename backupfile base32 base64 buffer-lcm c-strcase c-strtod c-strtold calloc-gnu canon-host canonicalize chown cloexec closein closeout config-h configmake crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 cycle-check d-ino d-type di-set diacrit dirfd dirname do-release-commit-and-tag dtoastr dup2 environ error euidaccess exclude exitfail explicit_bzero faccessat fadvise fchdir fchmodat fchownat fclose fcntl fcntl-safer fd-reopen fdatasync fdl fdopen fdutimensat file-has-acl file-type fileblocks filemode filenamecat filevercmp flexmember fnmatch-gnu fopen-safer fprintftime freopen freopen-safer fseeko fstatat fsusage fsync ftoastr ftruncate fts full-read full-write getgroups gethrxtime getline getloadavg getlogin getndelim2 getopt-gnu getpagesize getpass-gnu gettext-h gettime gettimeofday getugroups getusershell git-version-gen gitlog-to-changelog gnu-make gnu-web-doc-update gnumakefile gnupload group-member hard-locale hash hash-pjw heap host-os human idcache ignore-value inttostr inttypes isapipe isatty isblank largefile lchmod lchown ldtoastr lib-ignore linebuffer link link-follow linkat long-options lstat maintainer-makefile malloc-gnu manywarnings mbrlen mbrtowc mbsalign mbschr mbslen mbswidth memcasecmp memchr memcmp2 mempcpy memrchr mgetgroups mkancesdirs mkdir mkdir-p mkfifo mknod mkostemp mkstemp mktime modechange mountlist mpsort netinet_in non-recursive-gnulib-prefix-hack nproc nstrftime obstack open parse-datetime pathmax perl physmem pipe-posix pipe2 posix-shell posixtm posixver priv-set progname propername pthread putenv quote quotearg randint randperm read-file readlink readtokens readtokens0 readutmp realloc-gnu regex remove rename renameat renameat2 rmdir root-dev-ino rpmatch safe-read same save-cwd savedir savewd selinux-at setenv settime sig2str sigaction smack ssize_t stat-macros stat-size stat-time statat stdbool stdlib-safer stpcpy stpncpy strdup-posix strncat strnumcmp strsignal strtod strtoimax strtoumax symlinkat sys_ioctl sys_resource sys_stat sys_wait tempname termios time_rz timer-time timespec tzset uname unicodeio unistd-safer unlink-busy unlinkat unlocked-io unsetenv update-copyright uptime useless-if-before-free userspec utimecmp utimens vasprintf-posix vc-list-files verify verror version-etc-fsf wchar-single wcswidth wcwidth winsz-ioctl winsz-termios write-any-file xalloc xbinary-io xdectoint xfts xgetcwd xgetgroups xgethostname xmemcoll xnanosleep xprintf xprintf-posix xreadlink xstrtod xstrtoimax xstrtol xstrtold xstrtoumax year2038 yesno ++# Reproduce by: gnulib-tool --import --local-dir=gl --lib=libcoreutils --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=gnulib-tests --aux-dir=build-aux --with-tests --avoid=canonicalize-lgpl --avoid=dummy --makefile-name=gnulib.mk --no-conditional-dependencies --no-libtool --macro-prefix=gl acl alignof alloca announce-gen areadlink-with-size argmatch argv-iter assert autobuild backup-rename backupfile base32 base64 buffer-lcm c-strcase c-strtod c-strtold calloc-gnu canon-host canonicalize chown cloexec closein closeout config-h configmake crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 cycle-check d-ino d-type di-set diacrit dirfd dirname do-release-commit-and-tag dtoastr dup2 environ error euidaccess exclude exitfail explicit_bzero faccessat fadvise fchdir fchmodat fchownat fclose fcntl fcntl-safer fd-reopen fdatasync fdl fdopen fdutimensat file-has-acl file-type fileblocks filemode filenamecat filevercmp flexmember fnmatch-gnu fopen-safer fprintftime freopen freopen-safer fseeko fstatat fsusage fsync ftoastr ftruncate fts full-read full-write getgroups gethrxtime getline getloadavg getlogin getndelim2 getopt-gnu getpagesize getpass-gnu gettext-h gettime gettimeofday getugroups getusershell git-version-gen gitlog-to-changelog gnu-make gnu-web-doc-update gnumakefile gnupload group-member hard-locale hash hash-pjw heap host-os human idcache ignore-value inttostr inttypes isapipe isatty isblank largefile lchmod lchown ldtoastr lib-ignore linebuffer link link-follow linkat long-options lstat maintainer-makefile malloc-gnu manywarnings mbrlen mbrtowc mbsalign mbschr mbslen mbswidth memcasecmp memchr memcmp2 mempcpy memrchr mgetgroups mkancesdirs mkdir mkdir-p mkfifo mknod mkostemp mkstemp mktime modechange mountlist mpsort netinet_in non-recursive-gnulib-prefix-hack nproc nstrftime obstack open parse-datetime pathmax perl physmem pipe-posix pipe2 posix-shell posixtm posixver priv-set progname propername pthread putenv quote quotearg randint randperm read-file readlink readtokens readtokens0 readutmp realloc-gnu regex remove rename renameat renameatu rmdir root-dev-ino rpmatch safe-read same save-cwd savedir savewd selinux-at setenv settime sig2str sigaction smack ssize_t stat-macros stat-size stat-time statat stdbool stdlib-safer stpcpy stpncpy strdup-posix strncat strnumcmp strsignal strtod strtoimax strtoumax symlinkat sys_ioctl sys_resource sys_stat sys_wait tempname termios time_rz timer-time timespec tzset uname unicodeio unistd-safer unlink-busy unlinkat unlocked-io unsetenv update-copyright uptime useless-if-before-free userspec utimecmp utimens vasprintf-posix vc-list-files verify verror version-etc-fsf wchar-single wcswidth wcwidth winsz-ioctl winsz-termios write-any-file xalloc xbinary-io xdectoint xfts xgetcwd xgetgroups xgethostname xmemcoll xnanosleep xprintf xprintf-posix xreadlink xstrtod xstrtoimax xstrtol xstrtold xstrtoumax year2038 yesno + + + MOSTLYCLEANFILES += lib/core lib/*.stackdump +@@ -3218,15 +3218,15 @@ EXTRA_lib_libcoreutils_a_SOURCES += lib/renameat.c + + ## end gnulib module renameat + +-## begin gnulib module renameat2 ++## begin gnulib module renameatu + +-lib_libcoreutils_a_SOURCES += lib/renameat2.c ++lib_libcoreutils_a_SOURCES += lib/renameatu.c + +-EXTRA_DIST += lib/at-func2.c lib/renameat2.h ++EXTRA_DIST += lib/at-func2.c lib/renameatu.h + + EXTRA_lib_libcoreutils_a_SOURCES += lib/at-func2.c + +-## end gnulib module renameat2 ++## end gnulib module renameatu + + ## begin gnulib module rewinddir + +diff --git a/lib/renameat.c b/lib/renameat.c +index 0cb7d33..67be22b 100644 +--- a/lib/renameat.c ++++ b/lib/renameat.c +@@ -16,10 +16,10 @@ + + #include + #include +-#include "renameat2.h" ++#include "renameatu.h" + + int + renameat (int fd1, char const *src, int fd2, char const *dst) + { +- return renameat2 (fd1, src, fd2, dst, 0); ++ return renameatu (fd1, src, fd2, dst, 0); + } +diff --git a/lib/renameat2.c b/lib/renameatu.c +similarity index 94% +rename from lib/renameat2.c +rename to lib/renameatu.c +index a295ec3..b013ad6 100644 +--- a/lib/renameat2.c ++++ b/lib/renameatu.c +@@ -18,7 +18,7 @@ + + #include + +-#include "renameat2.h" ++#include "renameatu.h" + + #include + #include +@@ -68,10 +68,13 @@ rename_noreplace (char const *src, char const *dst) + the restore_cwd fails, then give a diagnostic and exit nonzero. + + Obey FLAGS when doing the renaming. If FLAGS is zero, this +- function is equivalent to renameat (FD1, SRC, FD2, DST). */ ++ function is equivalent to renameat (FD1, SRC, FD2, DST). ++ Otherwise, attempt to implement FLAGS even if the implementation is ++ not atomic; this differs from the GNU/Linux native renameat2, ++ which fails if it cannot guarantee atomicity. */ + + int +-renameat2 (int fd1, char const *src, int fd2, char const *dst, ++renameatu (int fd1, char const *src, int fd2, char const *dst, + unsigned int flags) + { + int ret_val = -1; +diff --git a/lib/renameat2.h b/lib/renameatu.h +similarity index 84% +rename from lib/renameat2.h +rename to lib/renameatu.h +index aba7966..7d79775 100644 +--- a/lib/renameat2.h ++++ b/lib/renameatu.h +@@ -16,15 +16,13 @@ + + /* written by Paul Eggert */ + +-/* Get RENAME_* macros from linux/fs.h if present, otherwise supply ++/* Get RENAME_* macros from if present, otherwise supply + the traditional Linux values. */ +-#if HAVE_LINUX_FS_H +-# include +-#endif ++#include + #ifndef RENAME_NOREPLACE + # define RENAME_NOREPLACE (1 << 0) + # define RENAME_EXCHANGE (1 << 1) + # define RENAME_WHITEOUT (1 << 2) + #endif + +-extern int renameat2 (int, char const *, int, char const *, unsigned int); ++extern int renameatu (int, char const *, int, char const *, unsigned int); +-- +2.14.4 + + +From a6b7ff5ef538bbdff4550a56fed878e9cd951d6d Mon Sep 17 00:00:00 2001 +From: Paul Eggert +Date: Thu, 5 Jul 2018 09:33:48 -0700 +Subject: [PATCH 2/2] build: update gnulib submodule to latest + +* bootstrap.conf, src/copy.c, src/mv.c, src/shred.c: +Adjust to renaming of renameat2 to renameatu. + +Upstream-commit: 439741053256618eb651e6d43919df29625b8714 +Signed-off-by: Kamil Dudka +--- + bootstrap.conf | 2 +- + src/copy.c | 4 ++-- + src/mv.c | 4 ++-- + src/shred.c | 4 ++-- + 4 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/bootstrap.conf b/bootstrap.conf +index 4da4f94..fcf29dc 100644 +--- a/bootstrap.conf ++++ b/bootstrap.conf +@@ -210,7 +210,7 @@ gnulib_modules=" + remove + rename + renameat +- renameat2 ++ renameatu + rmdir + root-dev-ino + rpmatch +diff --git a/src/copy.c b/src/copy.c +index 58d2f6e..1a9cdd1 100644 +--- a/src/copy.c ++++ b/src/copy.c +@@ -53,7 +53,7 @@ + #include "ignore-value.h" + #include "ioblksize.h" + #include "quote.h" +-#include "renameat2.h" ++#include "renameatu.h" + #include "root-uid.h" + #include "same.h" + #include "savedir.h" +@@ -1873,7 +1873,7 @@ copy_internal (char const *src_name, char const *dst_name, + if (x->move_mode) + { + if (rename_errno < 0) +- rename_errno = (renameat2 (AT_FDCWD, src_name, AT_FDCWD, dst_name, ++ rename_errno = (renameatu (AT_FDCWD, src_name, AT_FDCWD, dst_name, + RENAME_NOREPLACE) + ? errno : 0); + new_dst = rename_errno == 0; +diff --git a/src/mv.c b/src/mv.c +index b6dd72d..36fd1af 100644 +--- a/src/mv.c ++++ b/src/mv.c +@@ -31,7 +31,7 @@ + #include "error.h" + #include "filenamecat.h" + #include "remove.h" +-#include "renameat2.h" ++#include "renameatu.h" + #include "root-dev-ino.h" + #include "priv-set.h" + +@@ -456,7 +456,7 @@ main (int argc, char **argv) + { + assert (2 <= n_files); + if (n_files == 2) +- x.rename_errno = (renameat2 (AT_FDCWD, file[0], AT_FDCWD, file[1], ++ x.rename_errno = (renameatu (AT_FDCWD, file[0], AT_FDCWD, file[1], + RENAME_NOREPLACE) + ? errno : 0); + if (x.rename_errno != 0 && target_directory_operand (file[n_files - 1])) +diff --git a/src/shred.c b/src/shred.c +index 2ddaadd..270b1e9 100644 +--- a/src/shred.c ++++ b/src/shred.c +@@ -93,7 +93,7 @@ + #include "human.h" + #include "randint.h" + #include "randread.h" +-#include "renameat2.h" ++#include "renameatu.h" + #include "stat-size.h" + + /* Default number of times to overwrite. */ +@@ -1096,7 +1096,7 @@ wipename (char *oldname, char const *qoldname, struct Options const *flags) + memset (base, nameset[0], len); + base[len] = 0; + bool rename_ok; +- while (! (rename_ok = (renameat2 (AT_FDCWD, oldname, AT_FDCWD, newname, ++ while (! (rename_ok = (renameatu (AT_FDCWD, oldname, AT_FDCWD, newname, + RENAME_NOREPLACE) + == 0)) + && errno == EEXIST && incname (base, len)) +-- +2.14.4 + diff --git a/coreutils.spec b/coreutils.spec index fa0b81b..db13d3e 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -1,7 +1,7 @@ Summary: A set of basic GNU tools commonly used in shell scripts Name: coreutils Version: 8.30 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv3+ Group: System Environment/Base Url: https://www.gnu.org/software/coreutils/ @@ -14,6 +14,9 @@ Source106: coreutils-colorls.csh # do not make coreutils-single depend on /usr/bin/coreutils %global __requires_exclude ^%{_bindir}/coreutils$ +# rename gnulib's renameat2 to renameatu to avoid clash with glibc (#1598518) +Patch1: coreutils-8.30-renameatu.patch + # disable the test-lock gnulib test prone to deadlock Patch100: coreutils-8.26-test-lock.patch @@ -249,6 +252,9 @@ fi %license COPYING %changelog +* Tue Jul 10 2018 Kamil Dudka - 8.30-3 +- rename gnulib's renameat2 to renameatu to avoid clash with glibc (#1598518) + * Wed Jul 04 2018 Kamil Dudka - 8.30-2 - sync i18n patches with Suse (patch by Bernhard Voelker)