Subject: Re: bug#18896: regressions in coreutils 8.23 on Yosemite

From: Pádraig Brady <[email-masked]>
Date: Thu, 30 Oct 2014 00:01:17 +0000

On 10/29/2014 11:13 PM, Jack Howarth wrote:
>    I am finding that the single failure seen on Mavericks for the 
> coreutils 8.23 testsuite...
> 
> FAIL: test-getcwd.sh
> 
> =====================================================
>    GNU coreutils 8.23: gnulib-tests/test-suite.log
> =====================================================

The above gnulib issue may occur on Yosemite too but was not run
due to the new failures below

> when run as sudo, is replaced by two new errors and two new failures
> under Yosemite as sudo.
> 
> ERROR: tests/cp/link-deref.sh
> FAIL: tests/cp/link-no-deref.sh
> 
> FAIL: tests/cp/link-symlink.sh
> 
> ERROR: tests/ln/hard-to-sym.sh
> 
> ============================================================================
> Testsuite summary for GNU coreutils 8.23
> ============================================================================
> # TOTAL: 563
> # PASS:  397
> # SKIP:  162
> # XFAIL: 0
> # FAIL:  2
> # XPASS: 0
> # ERROR: 2

All these failures and errors are due to trying to create
a hardlink to a symlink and getting an "Operation not supported" error.

Can you send the output of this command?
  $ grep -E "(LINK_F|LINKAT)" lib/config.h

What file system type are you running this one?

I suspect that this might help?

diff --git a/lib/linkat.c b/lib/linkat.c
index 6ee30fb..fd6bd1c 100644
--- a/lib/linkat.c
+++ b/lib/linkat.c
@@ -329,7 +329,8 @@ rpl_linkat (int fd1, char const *file1, int fd2, char const *file2, int flag)
     if (0 <= have_follow_really)
     {
       int result = linkat (fd1, file1, fd2, file2, flag);
-      if (!(result == -1 && errno == EINVAL))
+      if (!(result == -1 && (errno == EINVAL || errno == ENOTSUP
+                             || errno == EOPNOTSUPP)))
         {
           have_follow_really = 1;
           return result;