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 <egg...@cs.ucla.edu> + + 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 <egg...@cs.ucla.edu> 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 _@GUARD_PREFIX@_SYS_SELECT_H +#define _@GUARD_PREFIX@_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 _@GUARD_PREFIX@_SYS_SELECT_H -#define _@GUARD_PREFIX@_SYS_SELECT_H - #if !@HAVE_SYS_SELECT_H@ /* A platform that lacks <sys/select.h>. */ /* Get the 'struct timeval' and 'fd_set' types and the FD_* macros -- 1.7.11.7