[Pkg-kde-extras] Bug#422400: taskjuggler: FTBFS: Test Timezone.tjp failed!

Pierre HABOUZIT madcoder at debian.org
Tue May 15 11:48:06 UTC 2007


On Tue, May 15, 2007 at 01:22:15PM +0200, Fathi Boudra wrote:
> hi,
> 
> This is definitely caused by a different behaviour of tzset(). The problem 
> occurs in Utility::setTimezone(). tzset should copy an unknown timezone into 
> tzname[0]. Looks like glibc tzset no longer does that. Not sure why Uli would 
> change that. Might be a bug.
> 
> The patch submitted-date-and-unknown-tz.diff introduced in Sid glibc since 
> 2.5-1 causes taskjuggler FTBFS:
> 
>   * patches/any/submitted-date-and-unknown-tz.diff: fix date output in case of
>     an unknown timezone in $TZ, submitted upstream as #4028.
>     Closes: #55648, #119540, #269238.
> 
> The submitted upstream bug report:
> http://sources.redhat.com/bugzilla/show_bug.cgi?id=4028
> 
> The proposed patch was rejected and upstream closed the bug as "resolved/ 
> wontfix":
> > The existing behavior is as valid as any other.  Any change will disrupt
> > things, though. No change.
> 
> Now, the question is what do we do ? Drop this patch like upstream does, will 
> re-open 3 other debian bug reports.
> 
> Thanks to Pierre Habouzit, Aurelien Jarno and Chris Schlaeger for the 
> pointers.

  Like I said to Fathi in private, here is what POSIX says about TZ:

	DESCRIPTION

	      The tzset( ) function shall use the value of the environment variable TZ to set time conversion
	      information used by ctime( ), localtime ( ), mktime( ), and strftime( ). If TZ is absent from the
	      environment, implementation-defined default timezone information shall be used.

	      The tzset( ) function shall set the external variable tzname as follows:

		  tzname[0] = "std";
		  tzname[1] = "dst";

	      where std and dst are as described in the Base Definitions volume of IEEE Std 1003.1-2001,
	      Chapter 8, Environment Variables.

	XSI   The tzset( ) function also shall set the external variable daylight to 0 if Daylight Savings Time
	      conversions should never be applied for the timezone in use; otherwise, non-zero. The external
	      variable timezone shall be set to the difference, in seconds, between Coordinated Universal Time
	      (UTC) and local standard time.


  I wont quote the whole chapter 8 of the Base Definitions as it's 2
pages long, but here is what is says:

  either TZ is of the form :$foo (with the colon) and then tzset
behaviour is *implementation defined* or it's some very complex
numerical format describing the offsets and DST variations of the
timezone.

  the GNU glibc choses to ignore wether the colon ':' is here or not,
but acting on a string remains implementation defined. Meaning that
another libc (dietlibc, uClibc, ...) may chose a completely different
behaviour, and would be correct.

  The reason not to copy the TZ string in tzname[0] when the underlying
libc does not recognize it is that internally when TZ is not recognized,
the libc uses UTC as a timezone. If you copy your random string in
tzname you can confuse the admin that will see the name he put in TZ
appear in formats, though the application will remain in UTC, and that
fact is hidden, and can lead to big issues.

  Hence in debian we choose not to hide that fact. Though, if you do :
TZ=FOO+0100 FOO will be copied to tzname[0] as we have all the
informations we need to "understand" $TZ.

  So IMHO, that's a taskjuggler bug.
-- 
·O·  Pierre Habouzit
··O                                                madcoder at debian.org
OOO                                                http://www.madism.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 0 bytes
Desc: not available
Url : http://lists.alioth.debian.org/pipermail/pkg-kde-extras/attachments/20070515/abe473fe/attachment.pgp 


More information about the pkg-kde-extras mailing list