On Mon, Nov 03, 2014 at 03:16:58PM +0100, Pádraig Brady wrote: > On 10/31/2014 05:03 PM, Pádraig Brady wrote: > > On 10/31/2014 03:41 PM, Jack Howarth wrote: > >> On Fri, Oct 31, 2014 at 03:56:06AM +0000, Pádraig Brady wrote: > >>> 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. > > I pushed the following slightly different more general patch > to gnulib to address this issue: > http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=c8e57ce5 > > thanks, > Pádraig.
Pádraig, Using... diff --git a/lib/symlinkat.c b/lib/symlinkat.c index 9797f46..5df605f 100644 --- a/lib/symlinkat.c +++ b/lib/symlinkat.c @@ -20,6 +20,8 @@ #include <unistd.h> #include <errno.h> +#include <string.h> +#include <sys/stat.h> #if HAVE_SYMLINKAT # undef symlinkat diff --git a/tests/test-stdnoreturn.c b/tests/test-stdnoreturn.c index a8aead8..04107bc 100644 --- a/tests/test-stdnoreturn.c +++ b/tests/test-stdnoreturn.c @@ -18,6 +18,8 @@ #include <config.h> +#include <unistd.h> + #include <stdnoreturn.h> #include <stdlib.h> ...gets the compilation of gnulib to... make[4]: Entering directory `/private/tmp/testdir/gltests' depbase=`echo test-strtoll.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ gcc -DHAVE_CONFIG_H -I. -I.. -DGNULIB_STRICT_CHECKING=1 -DIN_GNULIB_TESTS=1 -I. -I. -I.. -I./.. -I../gllib -I./../gllib -Wall -std=c89 -g -O2 -MT test-strtoll.o -MD -MP -MF $depbase.Tpo -c -o test-strtoll.o test-strtoll.c &&\ mv -f $depbase.Tpo $depbase.Po test-strtoll.c:23:18: error: use of undeclared identifier 'strtoll' SIGNATURE_CHECK (strtoll, long long, (const char *, char **, int)); ^ ./signature.h:39:21: note: expanded from macro 'SIGNATURE_CHECK' SIGNATURE_CHECK1 (fn, ret, args, __LINE__) ^ ./signature.h:44:21: note: expanded from macro 'SIGNATURE_CHECK1' SIGNATURE_CHECK2 (fn, ret, args, id) /* macroexpand line */ ^ ./signature.h:46:58: note: expanded from macro 'SIGNATURE_CHECK2' static ret (* _GL_UNUSED signature_check ## id) args = fn ^ test-strtoll.c:39:14: warning: implicit declaration of function 'strtoll' [-Wimplicit-function-declaration] result = strtoll (input, &ptr, 10); ^ 1 warning and 1 error generated. The /usr/include/stdlib.h header on darwin14 has... #if !__DARWIN_NO_LONG_LONG long long strtoll(const char *, char **, int); #endif /* !__DARWIN_NO_LONG_LONG */ Jack