[tz] leapseconds.awk missing from data tarball?
Paul Eggert
eggert at cs.ucla.edu
Wed Sep 25 22:56:06 UTC 2013
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 at 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 at 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
More information about the tz
mailing list