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

From: Pádraig Brady <[email-masked]>
Date: Fri, 31 Oct 2014 03:56:06 +0000

On 10/31/2014 03:30 AM, Jack Howarth wrote:
> On Fri, Oct 31, 2014 at 02:29:05AM +0000, Pádraig Brady wrote:
>>
>> 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.
> 
> Passing ac_cv_func_linkat=no to configure and using your attached patch
> results in a large number of failures on x86_64-apple-darwin14.

Good that's better. coreutils tests have passed, and you're getting
to gnulib issues below.

> FAIL: test-readlinkat
> =====================
> ./test-readlink.h:71: assertion 'func (BASE "link2/", buf, sizeof buf) == -1' failed
>
> FAIL: test-symlinkat
> ====================
> ./test-symlink.h:83: assertion 'func (BASE "nowhere", BASE "link1/") == -1' failed
>
> FAIL: test-unlinkat
> ===================
> ./test-unlink.h:49: assertion 'func ("..") == -1' failed

This is indicating these system functions are succeeding (or failing with a different return value)
while their non "at" equivalents are failing as expected.  That's surprising.
It would be useful to determine (with printf/gdb) the return value and errno in the above tests.

> FAIL: test-fdutimensat
> ======================
> ./test-utimens.h:113: assertion 'st3.st_atime == Y2K' failed
>
> FAIL: test-futimens
> ===================
> ./test-futimens.h:112: assertion 'st1.st_atime == st2.st_atime' failed
>
> FAIL: test-utimens
> ==================
> ./test-futimens.h:112: assertion 'st1.st_atime == st2.st_atime' failed

I've not looked into these at all.

This information is very useful.

thanks!
Pádraig.