GNU bug report logs - #21059
coreutils-8.24 - sync(1) fails to link on Solaris 10 - missing fdatasync() - solution provided (-lrt)

Previous Next

Package: coreutils;

Reported by: Peter Bray <pdb_ml <at> yahoo.com.au>

Date: Wed, 15 Jul 2015 06:12:02 UTC

Severity: normal

Merged with 21153

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Peter Bray <pdb_ml <at> yahoo.com.au>
Subject: bug#21059: closed (Re: bug#21059: coreutils-8.24 - sync(1) fails
 to link on Solaris 10 - missing fdatasync() - solution provided (-lrt))
Date: Wed, 15 Jul 2015 07:42:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#21059: coreutils-8.24 - sync(1) fails to link on Solaris 10 - missing fdatasync() - solution provided (-lrt)

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 21059 <at> debbugs.gnu.org.

-- 
21059: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=21059
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Pádraig Brady <P <at> draigBrady.com>
To: Peter Bray <pdb_ml <at> yahoo.com.au>, 21059-done <at> debbugs.gnu.org
Subject: Re: bug#21059: coreutils-8.24 - sync(1) fails to link on Solaris
 10 - missing fdatasync() - solution provided (-lrt)
Date: Wed, 15 Jul 2015 08:41:44 +0100
On 15/07/15 04:10, Peter Bray wrote:
> Greetings,
> 
> In attempting to build coreutils-8.24 on Sun Solaris 10 Update 8 and
> Oracle Solaris 10 Update 11 (both X86 VMs where the OS is unpatched),
> I found that the GNU coreutils sync(1) command would not link, failing
> to find the symbol 'fdatasync'.
> 
> Investigations show that "configure" correctly detects that
> fdatasync() is found in -lrt, the $(LIB_FDATASYNC) make variable has
> the correct value. It is just not used in the building of sync(1).
> 
> The solution seems simple enough, the addition of $(LIB_FDATASYNC) to
> the "src_sync_LDADD" line of the Makefile. This change has been tested
> on both releases of Solaris 10 mentioned above and Oracle Solaris 11.2
> were the change is not needed (as LIB_FDATASYNC value is the empty
> string). That is, fdatasync() is no longer in -lrt on Solaris 11.2
> 
> The proper solution would be to update "Makefile.in" (identical
> change) or more likely "src/local.mk" (identical change), but as these
> systems do not yet have autotools, I have not developed or tested a
> final solution. Given the trivial nature of the change, I hope this
> will not be an impediment to its acceptance.

I've pushed this in your name:
http://git.sv.gnu.org/gitweb/?p=coreutils.git;a=commitdiff;h=9d25971

Interestingly I didn't hit the issue on a Solaris 10 Update 10 system.

thanks!
Pádraig.


[Message part 3 (message/rfc822, inline)]
From: Peter Bray <pdb_ml <at> yahoo.com.au>
To: bug-coreutils <at> gnu.org
Subject: coreutils-8.24 - sync(1) fails to link on Solaris 10 - missing
 fdatasync() - solution provided (-lrt)
Date: Wed, 15 Jul 2015 13:10:16 +1000
Greetings,

In attempting to build coreutils-8.24 on Sun Solaris 10 Update 8 and
Oracle Solaris 10 Update 11 (both X86 VMs where the OS is unpatched),
I found that the GNU coreutils sync(1) command would not link, failing
to find the symbol 'fdatasync'.

Investigations show that "configure" correctly detects that
fdatasync() is found in -lrt, the $(LIB_FDATASYNC) make variable has
the correct value. It is just not used in the building of sync(1).

The solution seems simple enough, the addition of $(LIB_FDATASYNC) to
the "src_sync_LDADD" line of the Makefile. This change has been tested
on both releases of Solaris 10 mentioned above and Oracle Solaris 11.2
were the change is not needed (as LIB_FDATASYNC value is the empty
string). That is, fdatasync() is no longer in -lrt on Solaris 11.2

The proper solution would be to update "Makefile.in" (identical
change) or more likely "src/local.mk" (identical change), but as these
systems do not yet have autotools, I have not developed or tested a
final solution. Given the trivial nature of the change, I hope this
will not be an impediment to its acceptance.

Regards,

Peter Bray
Sydney, Australia


The unified GNU diff(1) output of the change as tested is:

--- ./Makefile.orig     2015-07-13 09:33:44.202439000 +0000
+++ ./Makefile  2015-07-13 09:33:50.601564126 +0000
@@ -4534,7 +4534,7 @@
 src_stdbuf_LDADD = $(LDADD) $(LIBICONV)
 src_stty_LDADD = $(LDADD)
 src_sum_LDADD = $(LDADD)
-src_sync_LDADD = $(LDADD)
+src_sync_LDADD = $(LDADD) $(LIB_FDATASYNC)
 src_tac_LDADD = $(LDADD)
 src_tail_LDADD = $(LDADD) $(LIB_NANOSLEEP)
 src_tee_LDADD = $(LDADD)

From the fdatasync(3RT) manual page, on Solaris 10:

NAME
       fdatasync - synchronize a file's data

SYNOPSIS
       cc [ flag... ] file... -lrt [ library... ]
       #include <unistd.h>

       int fdatasync(int fildes);




This bug report was last modified 9 years and 304 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.