On Feb 4, 2016, at 11:20 AM, Alba Pompeo <albapom...@gmail.com> wrote:
> There is incompatibility between R strptime and musl libc. I posted > about it on their mailing list, but they need more information I can't > provide, so I'm forwarding the message here in hope R developers can > help. Thanks. > Generally, it's using the standard tzset() call to set the time zone http://pubs.opengroup.org/onlinepubs/009695399/functions/tzset.html But you may want to post the full config.log and config.h somewhere since parts of the code depend on system capabilities which we don't know for musl. Cheers, Simon > > ---------- Forwarded message ---------- > From: Rich Felker <dal...@libc.org> > Date: Thu, Feb 4, 2016 at 2:07 PM > Subject: Re: [musl] strptime() question > To: Alba Pompeo <albapom...@gmail.com> > Cc: m...@lists.openwall.com, Martin Maechler <maech...@stat.math.ethz.ch> > > > On Thu, Feb 04, 2016 at 01:27:40PM -0200, Alba Pompeo wrote: >> Hello musl. >> >> I've built R on a musl system and "make check-all" fails because R >> does not get correct timezone information from the system. >> >> Here's the error - >> http://pastebin.com/raw/32D3ngNZ >> >> This would be correct, >> >>> difftime( >> + as.POSIXct(c("1970-01-01 00:00:00", "1970-01-01 12:00:00"), >> tz="EST5EDT"), >> + as.POSIXct(c("1970-01-01 00:00:00", "1970-01-01 00:00:00"), tz="UTC")) >> Time differences in hours >> [1] 5 17 >> >> but my system gives 4 16 which would suggest that it thinks that >> there is only 4 hours time difference between UTC and EST5EDT and >> that is just wrong. >> >> The above can be translated to this (slightly more low-level) R code which >> is already somewhat close to the internal C code of R : >> >>> t0 <- strptime("1970-01-01 00:00:00", "%Y-%m-%d %H:%M:%OS", tz="UTC") >>> as.numeric(t0) >> [1] 0 >> >>> t1 <- strptime("1970-01-01 00:00:00", "%Y-%m-%d %H:%M:%OS", tz="EST5EDT") >>> as.numeric(t1) >> [1] 18000 >>> 18000 / 3600 >> [1] 5 >>> >> >> That's why its 5 hours. >> R's strptime() is close to the C library strptime(), so think musl >> specialists should have it easy to do the above from C and find out >> why you get 4 hour instead of 5 hour difference. >> >> I'm certain this isn't a problem with R and I think it's up to me to >> ensure that your system's C library strptime() function returns the >> correct numbers for the above example, but I can't understand why it >> doesn't. >> >> Can anyone help here? >> Thanks a lot. > > I think we need to understand how R's strptime function implements its > tz argument, since this is not part of the POSIX strptime API. It's > possible that there's a bug in musl here, but it seems equally > possible that R is doing some dubious hacks with switching timezones. > > I'm also wondering what you're expecting from the timezone name > EST5EDT, which is not generally usable; it's in POSIX TZ form rather > than zoneinfo, but it lacks any information about when the switch to > daylight time happens, and the defaults are not correct with respect > to modern policy. > > Rich > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel