leapseconds.awk missing from data tarball?
Hi, I note from the recent release notes that the leap-seconds.list file is generated using leapseconds.awk. Previous to this change, it was possible to compile and install the tz files just using the tzdata tarball. As the leapseconds.awk file is only shipped in the tzcode tarball, this is now no longer possible. Would it be possible to ship either the leapseconds.awk file, or a generated copy of leap-seconds.list in the tzdata tarball so that the tzcode tarball is once more no longer required? Thanks, Matt.
On 2013-09-24 18:39, Matt Burgess wrote:
I note from the recent release notes that the leap-seconds.list file is generated using leapseconds.awk. Previous to this change, it was possible to compile and install the tz files just using the tzdata tarball. As the leapseconds.awk file is only shipped in the tzcode tarball, this is now no longer possible. Would it be possible to ship either the leapseconds.awk file, or a generated copy of leap-seconds.list in the tzdata tarball so that the tzcode tarball is once more no longer required?
ITYM the leapseconds file should be in the tzdata tarball. It isn't and that's a bug! (It mistakenly includes the leapseconds.list file instead of the leapseconds file.) -- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
Ian Abbott wrote:
ITYM the leapseconds file should be in the tzdata tarball.
The original suggestion and this modified version both make sense to me, so I pushed this to the experimental github repository:
From a5851f83d339c286232464f337fd3b7a22e8015f Mon Sep 17 00:00:00 2001 From: Paul Eggert <eggert@cs.ucla.edu> Date: Wed, 25 Sep 2013 15:50:44 -0700 Subject: [PATCH] main: distribute leapseconds in tzdata, and fix timestamps
Problem with leapseconds reported by Matt Burgess in <http://mm.icann.org/pipermail/tz/2013-September/020379.html> with a followup by Ian Abbott in <http://mm.icann.org/pipermail/tz/2013-September/020383.html>. * Makefile (MANTXTS): New macro. (maintainer-clean): Use it. (DOCS): Add it. (DATA): Add 'leapseconds'. (LEAP_DEPS): New macro. (leapseconds): Use it. (public): Don't depend on set-timestamps; each tarball does that individually now, to allow for more parallelization. (date.1.txt, newctime.3.txt, newstrftime.3.txt, newtzset.3.txt) (time2posix.3.txt, tzfile.5.txt, tzselect.8.txt, zdump.8.txt) (zic.8.txt): Depend on the corresponding non-.txt file. $(MANTXTS): New rule. (set-timestamps.out): Rename from set-timestamps, and make it a file, so that it has its own timestamp; this avoids useless rework. Depend on $(ENCHILADA) and ignore files under Git that are not also listed in $(ENCHILADA). Set the timestamp of 'leapseconds' and each $(MANTXTS) to be the maximum of its dependencies, to avoid timestamp churn in future tarballs. Prefer touch -m, as we don't care about access time here. (tzcode$(VERSION).tar.gz, tzdata$(VERSION).tar.gz): Depend on set-timestamps.out rather than the individual files, so timestamps are set before creating the tarballs even when make is parallelized. (tzcode$(VERSION).tar.gz): Don't mention *.[1-8].txt explicitly, since we now get $(MANTXTS) via $(DOCS). * NEWS: Document the above. --- Makefile | 53 ++++++++++++++++++++++++++++++++++++++--------------- NEWS | 7 +++++++ 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index edcee14..efce751 100644 --- a/Makefile +++ b/Makefile @@ -311,8 +311,12 @@ NEWUCBSRCS= date.c strftime.c SOURCES= $(HEADERS) $(LIBSRCS) $(NONLIBSRCS) $(NEWUCBSRCS) tzselect.ksh MANS= newctime.3 newstrftime.3 newtzset.3 time2posix.3 \ tzfile.5 tzselect.8 zic.8 zdump.8 +MANTXTS= newctime.3.txt newstrftime.3.txt newtzset.3.txt \ + time2posix.3.txt \ + tzfile.5.txt tzselect.8.txt zic.8.txt zdump.8.txt \ + date.1.txt COMMON= Makefile README -DOCS= NEWS Theory $(MANS) date.1 +DOCS= NEWS Theory $(MANS) date.1 $(MANTXTS) PRIMARY_YDATA= africa antarctica asia australasia \ europe northamerica southamerica YDATA= $(PRIMARY_YDATA) pacificnew etcetera backward @@ -320,8 +324,9 @@ NDATA= systemv factory SDATA= solar87 solar88 solar89 TDATA= $(YDATA) $(NDATA) $(SDATA) TABDATA= iso3166.tab zone.tab +LEAP_DEPS= leapseconds.awk leap-seconds.list DATA= $(YDATA) $(NDATA) $(SDATA) $(TABDATA) \ - leap-seconds.list yearistype.sh + leapseconds $(LEAP_DEPS) yearistype.sh WEB_PAGES= tz-art.htm tz-link.htm AWK_SCRIPTS= checktab.awk leapseconds.awk MISC= usno1988 usno1989 usno1989a usno1995 usno1997 usno1998 \ @@ -382,7 +387,7 @@ yearistype: yearistype.sh cp yearistype.sh yearistype chmod +x yearistype -leapseconds: leapseconds.awk leap-seconds.list +leapseconds: $(LEAP_DEPS) $(AWK) -f leapseconds.awk leap-seconds.list >$@ posix_only: zic $(TDATA) @@ -460,22 +465,38 @@ clean: clean_misc maintainer-clean: clean @echo 'This command is intended for maintainers to use; it' @echo 'deletes files that may need special tools to rebuild.' - rm -f *.[1-8].txt *.asc *.tar.gz + rm -f $(MANTXTS) *.asc *.tar.gz names: @echo $(ENCHILADA) public: check check_public check_time_t_alternatives \ - set-timestamps tarballs signatures + tarballs signatures + +date.1.txt: date.1 +newctime.3.txt: newctime.3 +newstrftime.3.txt: newstrftime.3 +newtzset.3.txt: newtzset.3 +time2posix.3.txt: time2posix.3 +tzfile.5.txt: tzfile.5 +tzselect.8.txt: tzselect.8 +zdump.8.txt: zdump.8 +zic.8.txt: zic.8 + +$(MANTXTS): workman.sh + LC_ALL=C sh workman.sh `expr $@ : '\(.*\)\.txt$$'` >$@ # Set the time stamps to those of the git repository, if available, # and if the files have not changed since then. # This uses GNU 'touch' syntax 'touch -d@N FILE', # where N is the number of seconds since 1970. # If git or GNU 'touch' is absent, do nothing and fail. -set-timestamps: - -files=`git ls-files` && \ - touch -d @1 test.out && rm -f test.out && \ +# Also, set the timestamp of each prebuilt file like 'leapseconds' +# to be the maximum of the files it depends on. +set-timestamps.out: $(ENCHILADA) + rm -f $@ + -files=`git ls-files $(ENCHILADA)` && \ + touch -md @1 test.out && rm -f test.out && \ for file in $$files; do \ if git diff --quiet $$file; then \ time=`git log -1 --format='tformat:%ct' $$file` && \ @@ -484,6 +505,12 @@ set-timestamps: echo >&2 "$$file: warning: does not match repository"; \ fi || exit; \ done + touch -cmr `ls -t $(LEAP_DEPS) | sed 1q` leapseconds + for file in `ls $(MANTXTS) | sed 's/\.txt$$//'`; do \ + touch -cmr `ls -t $$file workman.sh | sed 1q` $$file.txt || \ + exit; \ + done + touch $@ # The zics below ensure that each data file can stand on its own. # We also do an all-files run to catch links to links. @@ -529,17 +556,13 @@ check_time_t_alternatives: tarballs: tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz -tzcode$(VERSION).tar.gz: $(COMMON) $(DOCS) $(SOURCES) $(MISC) - for i in *.[1-8] ; do \ - LC_ALL=C sh workman.sh $$i > $$i.txt && \ - touch -r $$i $$i.txt || exit; \ - done +tzcode$(VERSION).tar.gz: set-timestamps.out LC_ALL=C && export LC_ALL && \ tar $(TARFLAGS) -cf - \ - $(COMMON) $(DOCS) $(SOURCES) $(MISC) *.[1-8].txt | \ + $(COMMON) $(DOCS) $(SOURCES) $(MISC) | \ gzip $(GZIPFLAGS) > $@ -tzdata$(VERSION).tar.gz: $(COMMON) $(DATA) +tzdata$(VERSION).tar.gz: set-timestamps.out LC_ALL=C && export LC_ALL && \ tar $(TARFLAGS) -cf - $(COMMON) $(DATA) | \ gzip $(GZIPFLAGS) > $@ diff --git a/NEWS b/NEWS index ca64829..6324d25 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,13 @@ News for the tz database Unreleased, experimental changes + Changes affecting the build procedure + + The 'leapseconds' file is again put into the tzdata tarball. + Also, 'leapseconds.awk', so tzdata is self-contained. (Thanks to + Matt Burgess and Ian Abbott.) The timestamps of these and other + dependent files in tarballs are adjusted more consistently. + Changes affecting documentation and commentary The README file is now part of the data tarball as well as the code. -- 1.8.1.2
On Wed, 2013-09-25 at 15:56 -0700, Paul Eggert wrote:
Ian Abbott wrote:
ITYM the leapseconds file should be in the tzdata tarball.
The original suggestion and this modified version both make sense to me, so I pushed this to the experimental github repository:
From a5851f83d339c286232464f337fd3b7a22e8015f Mon Sep 17 00:00:00 2001 From: Paul Eggert <eggert@cs.ucla.edu> Date: Wed, 25 Sep 2013 15:50:44 -0700 Subject: [PATCH] main: distribute leapseconds in tzdata, and fix timestamps
Problem with leapseconds reported by Matt Burgess in <http://mm.icann.org/pipermail/tz/2013-September/020379.html> with a followup by Ian Abbott in <http://mm.icann.org/pipermail/tz/2013-September/020383.html>. * Makefile (MANTXTS): New macro. (maintainer-clean): Use it. (DOCS): Add it. (DATA): Add 'leapseconds'.
Hmm, leapseconds still appears to be missing from the tzdata-2013f tarball? Something wrong with the tarball generation perhaps? Thanks, Matt.
Matt Burgess wrote:
Hmm, leapseconds still appears to be missing from the tzdata-2013f tarball? Something wrong with the tarball generation perhaps
2013f was generated before I read your bug report, so the change is not in 2013f. The change is in the experimental version on github, and the goal is to incorporate it in the next release, whenever that is. You can test it by retrieving the latest experimental version, for example with the following GNU/Linux commands: wget -qO- https://api.github.com/repos/eggert/tz/tarball | tar xvzf -
Just to notice: I am also planning to release a java time library with full leapsecond support (hopefully around the end of this year) so I greatly welcome this fix. It gracefully helps for automatic updates of leapsecond configurations. Am 26.09.2013 06:45, schrieb Paul Eggert:
Matt Burgess wrote:
Hmm, leapseconds still appears to be missing from the tzdata-2013f tarball? Something wrong with the tarball generation perhaps 2013f was generated before I read your bug report, so the change is not in 2013f. The change is in the experimental version on github, and the goal is to incorporate it in the next release, whenever that is.
You can test it by retrieving the latest experimental version, for example with the following GNU/Linux commands:
wget -qO- https://api.github.com/repos/eggert/tz/tarball | tar xvzf -
participants (4)
-
Ian Abbott -
Matt Burgess -
Meno Hochschild -
Paul Eggert