bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#18896: regressions in coreutils 8.23 on Yosemite


From: Pádraig Brady
Subject: bug#18896: regressions in coreutils 8.23 on Yosemite
Date: Fri, 31 Oct 2014 02:29:05 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2

On 10/30/2014 06:24 PM, Jack Howarth wrote:
> On Thu, Oct 30, 2014 at 12:01:17AM +0000, Pádraig Brady wrote:
>> 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
> 
> On x86_64-apple-darwin13 which doesn't show these failures, I see...
> 
> #define GNULIB_AREADLINKAT 1
> #define GNULIB_TEST_LINKAT 1
> #define GNULIB_TEST_READLINKAT 1
> #define GNULIB_TEST_SYMLINKAT 1
> #define GNULIB_TEST_UNLINKAT 1
> /* #undef HAVE_LINKAT */
> /* #undef HAVE_READLINKAT */
> /* #undef HAVE_SYMLINKAT */
> /* #undef HAVE_UNLINKAT */
> /* #undef LINKAT_TRAILING_SLASH_BUG */
> #define LINK_FOLLOWS_SYMLINKS 1
> 
> whereas on x86_64-apple-darwin14, I get...
> 
> #define GNULIB_AREADLINKAT 1
> #define GNULIB_TEST_LINKAT 1
> #define GNULIB_TEST_READLINKAT 1
> #define GNULIB_TEST_SYMLINKAT 1
> #define GNULIB_TEST_UNLINKAT 1
> #define HAVE_LINKAT 1
> #define HAVE_READLINKAT 1
> #define HAVE_SYMLINKAT 1
> #define HAVE_UNLINKAT 1
> /* #undef LINKAT_TRAILING_SLASH_BUG */
> #define LINK_FOLLOWS_SYMLINKS 1
> 
>>
>> What file system type are you running this one?
> 
> Both filesystems are
> 
>    File System Personality:  Journaled HFS+
>    Type (Bundle):            hfs
>    Name (User Visible):      Mac OS Extended (Journaled)
>    Journal:                  Journal size 81920 KB at offset 0x1d1c000
>    Owners:                   Enabled
> 
>>
>> 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;
> 
> Unfortunately, with this patch, I still see the failures on 
> x86_64-apple-darwin14.

Ah right, that code path is only for older Linux kernels
with AT_SYMLINK_FOLLOW specified, which is not the case here.
Please drop this patch.

> link-deref.sh: set-up failure: 
> ERROR: tests/cp/link-deref.sh
> FAIL: tests/cp/link-no-deref.sh
> FAIL: tests/cp/link-symlink.sh
> hard-to-sym.sh: set-up failure: 
> ERROR: tests/ln/hard-to-sym.sh

So linkat() is now available but doesn't support hardlinks to symlinks
contrary to the POSIX spec. So it would be best we consider linkat()
unavailable, which can be done manually like:

  ac_cv_func_linkat=no ./configure

We'll have to augment the gnulib linkat check to actually check
that linkat() works, rather than just being available.

Attached is an ancillary patch to coreutils to convert the
Last ERROR above to the more correct FAILs, which you don't need to apply.

thanks,
Pádraig.

Attachment: tests-linkat-error.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]