diff mbox

[libgo] Use stat_atim.go on Solaris 12+

Message ID yddtwrm5mjy.fsf@lokon.CeBiTec.Uni-Bielefeld.DE
State New
Headers show

Commit Message

Rainer Orth Aug. 26, 2015, 11:14 a.m. UTC
Solaris 12 changes the stat_[amc]tim members of struct stat from
timestruc_t to timespec_t for XPG7 compatiblity, thus breaking the libgo
build.  The following patch checks for this change and uses the common
stat_atim.go if appropriate.

Btw., I noticed that go/os/stat_atim.go and stat_dragonfly.go are identical;
no idea why that would be useful.

Bootstrapped without regressions on i386-pc-solaris2.1[12] and
sparc-sun-solaris2.1[12].

I had to regenerate aclocal.m4 since for some reason it had been built
with automake 1.11.1 instead of the common 1.11.6, thus inhibiting
Makefile.in regeneration.

Ok for mainline now and the gcc 5 branch after some soak time?

	Rainer


2015-02-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* configure.ac (have_stat_timespec): Check for timespec_t st_atim
	in <sys/stat.h>.
	(HAVE_STAT_TIMESPEC): New conditional.
	* configure: Regenerate.
	* Makefile.am [LIBGO_IS_SOLARIS && HAVE_STAT_TIMESPEC]
	(go_os_stat_file): Use go/os/stat_atim.go.
	* aclocal.m4: Regenerate.
	* Makefile.in: Regenerate.

Comments

Rainer Orth Sept. 3, 2015, 9:02 a.m. UTC | #1
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:

> Solaris 12 changes the stat_[amc]tim members of struct stat from
> timestruc_t to timespec_t for XPG7 compatiblity, thus breaking the libgo
> build.  The following patch checks for this change and uses the common
> stat_atim.go if appropriate.
>
> Btw., I noticed that go/os/stat_atim.go and stat_dragonfly.go are identical;
> no idea why that would be useful.
>
> Bootstrapped without regressions on i386-pc-solaris2.1[12] and
> sparc-sun-solaris2.1[12].
>
> I had to regenerate aclocal.m4 since for some reason it had been built
> with automake 1.11.1 instead of the common 1.11.6, thus inhibiting
> Makefile.in regeneration.
>
> Ok for mainline now and the gcc 5 branch after some soak time?
>
> 	Rainer
>
>
> 2015-02-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>
> 	* configure.ac (have_stat_timespec): Check for timespec_t st_atim
> 	in <sys/stat.h>.
> 	(HAVE_STAT_TIMESPEC): New conditional.
> 	* configure: Regenerate.
> 	* Makefile.am [LIBGO_IS_SOLARIS && HAVE_STAT_TIMESPEC]
> 	(go_os_stat_file): Use go/os/stat_atim.go.
> 	* aclocal.m4: Regenerate.
> 	* Makefile.in: Regenerate.

This patch has remained unreviewed for a week.

	Rainer
Ian Lance Taylor Sept. 10, 2015, 9:34 p.m. UTC | #2
On Wed, Aug 26, 2015 at 4:14 AM, Rainer Orth
<ro@cebitec.uni-bielefeld.de> wrote:
> Solaris 12 changes the stat_[amc]tim members of struct stat from
> timestruc_t to timespec_t for XPG7 compatiblity, thus breaking the libgo
> build.  The following patch checks for this change and uses the common
> stat_atim.go if appropriate.
>
> Btw., I noticed that go/os/stat_atim.go and stat_dragonfly.go are identical;
> no idea why that would be useful.
>
> Bootstrapped without regressions on i386-pc-solaris2.1[12] and
> sparc-sun-solaris2.1[12].
>
> I had to regenerate aclocal.m4 since for some reason it had been built
> with automake 1.11.1 instead of the common 1.11.6, thus inhibiting
> Makefile.in regeneration.
>
> Ok for mainline now and the gcc 5 branch after some soak time?
>
>         Rainer
>
>
> 2015-02-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>
>         * configure.ac (have_stat_timespec): Check for timespec_t st_atim
>         in <sys/stat.h>.
>         (HAVE_STAT_TIMESPEC): New conditional.
>         * configure: Regenerate.
>         * Makefile.am [LIBGO_IS_SOLARIS && HAVE_STAT_TIMESPEC]
>         (go_os_stat_file): Use go/os/stat_atim.go.
>         * aclocal.m4: Regenerate.
>         * Makefile.in: Regenerate.

Thanks.  Committed to mainline.

Sorry for the slow review.

This is fine to commit to GCC 5 branch.

stat_atim.go is a gccgo-specific file.  stat_dragonfly.go came in from
the master Go repository.  Just another thing to straighten out some
time.

Ian
Rainer Orth Sept. 11, 2015, 8:38 a.m. UTC | #3
Ian Lance Taylor <iant@google.com> writes:

> On Wed, Aug 26, 2015 at 4:14 AM, Rainer Orth
> <ro@cebitec.uni-bielefeld.de> wrote:
>> Solaris 12 changes the stat_[amc]tim members of struct stat from
>> timestruc_t to timespec_t for XPG7 compatiblity, thus breaking the libgo
>> build.  The following patch checks for this change and uses the common
>> stat_atim.go if appropriate.
>>
>> Btw., I noticed that go/os/stat_atim.go and stat_dragonfly.go are identical;
>> no idea why that would be useful.
>>
>> Bootstrapped without regressions on i386-pc-solaris2.1[12] and
>> sparc-sun-solaris2.1[12].
>>
>> I had to regenerate aclocal.m4 since for some reason it had been built
>> with automake 1.11.1 instead of the common 1.11.6, thus inhibiting
>> Makefile.in regeneration.
>>
>> Ok for mainline now and the gcc 5 branch after some soak time?
>>
>>         Rainer
>>
>>
>> 2015-02-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>>
>>         * configure.ac (have_stat_timespec): Check for timespec_t st_atim
>>         in <sys/stat.h>.
>>         (HAVE_STAT_TIMESPEC): New conditional.
>>         * configure: Regenerate.
>>         * Makefile.am [LIBGO_IS_SOLARIS && HAVE_STAT_TIMESPEC]
>>         (go_os_stat_file): Use go/os/stat_atim.go.
>>         * aclocal.m4: Regenerate.
>>         * Makefile.in: Regenerate.
>
> Thanks.  Committed to mainline.
>
> Sorry for the slow review.

Thanks, and no worries: I just wanted to make sure it can make it into
GCC 5.3.

> This is fine to commit to GCC 5 branch.

I'll let it soak on mainline for a week or two and commit to the branch
then.

> stat_atim.go is a gccgo-specific file.  stat_dragonfly.go came in from
> the master Go repository.  Just another thing to straighten out some
> time.

I see: such differences can make things a bit confusing ;-)

	Rainer
diff mbox

Patch

# HG changeset patch
# Parent b83d7b91430fc3d2c2f34df34aaf648b178d2cad
Use stat_atim.go on Solaris 12+

diff --git a/libgo/Makefile.am b/libgo/Makefile.am
--- a/libgo/Makefile.am
+++ b/libgo/Makefile.am
@@ -880,7 +880,11 @@  endif
 endif
 
 if LIBGO_IS_SOLARIS
+if HAVE_STAT_TIMESPEC
+go_os_stat_file = go/os/stat_atim.go
+else
 go_os_stat_file = go/os/stat_solaris.go
+endif
 else
 if LIBGO_IS_LINUX
 go_os_stat_file = go/os/stat_atim.go
diff --git a/libgo/configure.ac b/libgo/configure.ac
--- a/libgo/configure.ac
+++ b/libgo/configure.ac
@@ -654,6 +654,12 @@  AC_CACHE_CHECK([epoll_event data.fd offs
 STRUCT_EPOLL_EVENT_FD_OFFSET=${libgo_cv_c_epoll_event_fd_offset}
 AC_SUBST(STRUCT_EPOLL_EVENT_FD_OFFSET)
 
+dnl Check if <sys/stat.h> uses timespec_t for st_?tim members.  Introduced
+dnl in Solaris 12 for XPG7 compatibility.
+AC_EGREP_HEADER([timespec_t.*st_atim], [sys/stat.h],
+		[have_stat_timespec=yes], [have_stat_timespec=no])
+AM_CONDITIONAL(HAVE_STAT_TIMESPEC, test $have_stat_timespec = yes)
+
 dnl See if struct exception is defined in <math.h>.
 AC_CHECK_TYPE([struct exception],
 [libgo_has_struct_exception=yes],