bug-gnulib
[Top][All Lists]
Advanced

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

Re: Build errors on Solaris 2.6 & 7


From: Paul Eggert
Subject: Re: Build errors on Solaris 2.6 & 7
Date: Sat, 19 Jan 2013 11:55:02 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2

On 01/19/2013 05:43 AM, Tom G. Christensen wrote:
> On 01/12/2013 11:49 AM, Tom G. Christensen wrote:
>> For Solaris 2.6 the timestruc_t problem remains and I will look at that
>> next.
> 
> On Solaris 2.6 <time.h> includes <sys/time.h> for struct timespec which 
> causes a problem in the include order.
> It ends up as gnulib <time.h> -> system <time.h> -> gnulib <sys/time.h> -> 
> system <sys/time.h> -> gnulib <sys/types.h> -> system <sys/types.h> -> gnulib 
> <sys/select.h> -> gnulib <signal.h> -> system <sys/signal.h> -> system 
> <sys/siginfo.h>.

Thanks for the diagnosis.  Does the following fix things, and is its
ChangeLog entry accurate?  If it doesn't fix things, what is the
include pattern for "#include <time.h>" when Gnulib isn't involved?
as that will help us decide how to break the circularity better.

---
 ChangeLog           | 12 ++++++++++++
 lib/sys_select.in.h | 14 +++++++-------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8218eb3..b182b7c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2013-01-19  Paul Eggert  <address@hidden>
+
+       sys_select: port to Solaris 2.6
+       * lib/sys_select.in.h [__sun]: Don't include <signal.h>.
+       as this causes a circularity problem on Solaris 2.6.
+       <signal.h> doesn't need to be included on Solaris,
+       since <sys/select.h> already defines sigset_t.
+       Move inclusion to after the split double-inclusion guard,
+       since the only reason it was before the guard was because of Solaris.
+       Problem reported by Tom G. Christensen in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2013-01/msg00113.html>.
+
 2013-01-16  Paul Eggert  <address@hidden>
 
        unistd: port to recent mingw
diff --git a/lib/sys_select.in.h b/lib/sys_select.in.h
index b48c1bb..4918300 100644
--- a/lib/sys_select.in.h
+++ b/lib/sys_select.in.h
@@ -83,17 +83,17 @@
 
 #endif
 
+#ifndef address@hidden@_SYS_SELECT_H
+#define address@hidden@_SYS_SELECT_H
+
 /* Get definition of 'sigset_t'.
-   But avoid namespace pollution on glibc systems.
-   Do this after the include_next (for the sake of OpenBSD 5.0) but before
-   the split double-inclusion guard (for the sake of Solaris).  */
-#if !(defined __GLIBC__ && !defined __UCLIBC__)
+   But avoid namespace pollution on glibc systems,
+   and avoid a circularity problem on Solaris 2.6.
+   Do this after the include_next, for OpenBSD 5.0.  */
+#if !(defined __GLIBC__ && !defined __UCLIBC__) && !defined __sun
 # include <signal.h>
 #endif
 
-#ifndef address@hidden@_SYS_SELECT_H
-#define address@hidden@_SYS_SELECT_H
-
 #if address@hidden@
 /* A platform that lacks <sys/select.h>.  */
 /* Get the 'struct timeval' and 'fd_set' types and the FD_* macros
-- 
1.7.11.7





reply via email to

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