* NEWS: Document this. * Makefile (TZS_YEAR, TZS, TZS_NEW, TZS_DEPS): New macros. (ENCHILADA): Add TZS. ($(TZS_NEW), $(TZS), force_tzs, check_tzs): New targets. (check): Add check_tzs. (clean): Remove *.dir. (maintainer-clean): Remove $(TZS). (set-timestamps.out): Set $(TZS)'s time stamp. (check_public, check_time_t_alternatives): Use a temporary directory name ending in .dir, to make it easier to clean these directories out systematically. (tzdata$(VERSION).tar.gz): Add $(TZS). (.PHONY): Add force_tzs, check_tzs. --- Makefile | 71 ++++++++++++++++++++++++++++++++++++++++++++++------------------ NEWS | 12 +++++++---- 2 files changed, 59 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index bbe1ba8..fc18819 100644 --- a/Makefile +++ b/Makefile @@ -378,7 +378,12 @@ DATA= $(YDATA) $(NDATA) backzone $(TABDATA) \ leap-seconds.list yearistype.sh AWK_SCRIPTS= checklinks.awk checktab.awk leapseconds.awk MISC= $(AWK_SCRIPTS) zoneinfo2tdf.pl -ENCHILADA= $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) +TZS_YEAR= 2050 +TZS= to$(TZS_YEAR).tzs +TZS_NEW= to$(TZS_YEAR)new.tzs +TZS_DEPS= $(PRIMARY_YDATA) asctime.c localtime.c \ + private.h tzfile.h zdump.c zic.c +ENCHILADA= $(COMMON) $(DOCS) $(SOURCES) $(DATA) $(MISC) $(TZS) # And for the benefit of csh users on systems that assume the user # shell should be used to handle commands in Makefiles. . . @@ -477,6 +482,27 @@ posix_packrat: zones: $(REDO) +$(TZS_NEW): $(TDATA) zdump zic + mkdir -p tzs.dir + $(zic) -d tzs.dir $(TDATA) + $(AWK) '/^Link/{print $$1 "\t" $$2 "\t" $$3}' \ + $(TDATA) | LC_ALL=C sort >$@.out + zones=$$($(AWK) -v wd="$$(pwd)" \ + '/^Zone/{print wd "/tzs.dir/" $$2}' $(TDATA) \ + | LC_ALL=C sort) && \ + ./zdump -i -c $(TZS_YEAR) $$zones >>$@.out + sed 's,^TZ=".*tzs\.dir/,TZ=",' $@.out >$@ + rm -fr tzs.dir $@.out + +# If $(TZS) does not already exist (e.g., old-format tarballs), create it. +# If it exists but 'make check_tzs' fails, a maintainer should inspect the +# failed output and fix the inconsistency, perhaps by running 'make force_tzs'. +$(TZS): + $(MAKE) force_tzs + +force_tzs: $(TZS_NEW) + cp $(TZS_NEW) $(TZS) + libtz.a: $(LIBOBJS) $(AR) ru $@ $(LIBOBJS) $(RANLIB) $@ @@ -496,7 +522,7 @@ tzselect: tzselect.ksh chmod +x $@ check: check_character_set check_white_space check_links check_sorted \ - check_tables check_web + check_tables check_tzs check_web check_character_set: $(ENCHILADA) LC_ALL=en_US.utf8 && export LC_ALL && \ @@ -532,6 +558,9 @@ check_tables: checktab.awk $(PRIMARY_YDATA) $(ZONETABLES) || exit; \ done +check_tzs: $(TZS) $(TZS_NEW) + diff -u $(TZS) $(TZS_NEW) + check_web: $(WEB_PAGES) $(VALIDATE_ENV) $(VALIDATE) $(VALIDATE_FLAGS) $(WEB_PAGES) @@ -539,12 +568,12 @@ clean_misc: rm -f core *.o *.out \ date tzselect version.h zdump zic yearistype libtz.a clean: clean_misc - rm -fr tzpublic + rm -fr *.dir $(TZS_NEW) 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 leapseconds $(MANTXTS) *.asc *.tar.gz + rm -f leapseconds $(MANTXTS) $(TZS) *.asc *.tar.gz names: @echo $(ENCHILADA) @@ -591,6 +620,7 @@ set-timestamps.out: $(ENCHILADA) touch -cmr `ls -t $$file workman.sh | sed 1q` $$file.txt || \ exit; \ done + touch -cmr $$(ls -t $(TZS_DEPS) | sed 1q) $(TZS) touch $@ # The zics below ensure that each data file can stand on its own. @@ -599,12 +629,12 @@ set-timestamps.out: $(ENCHILADA) check_public: $(MAKE) maintainer-clean $(MAKE) "CFLAGS=$(GCC_DEBUG_FLAGS)" ALL - mkdir tzpublic + mkdir -p public.dir for i in $(TDATA) ; do \ - $(zic) -v -d tzpublic $$i 2>&1 || exit; \ + $(zic) -v -d public.dir $$i 2>&1 || exit; \ done - $(zic) -v -d tzpublic $(TDATA) - rm -fr tzpublic + $(zic) -v -d public.dir $(TDATA) + rm -fr public.dir # Check that the code works under various alternative # implementations of time_t. @@ -616,15 +646,15 @@ check_time_t_alternatives: fi && \ zones=`$(AWK) '/^[^#]/ { print $$3 }' <zone1970.tab` && \ for type in $(TIME_T_ALTERNATIVES); do \ - mkdir -p tzpublic/$$type && \ + mkdir -p time_t.dir/$$type && \ $(MAKE) clean_misc && \ - $(MAKE) TOPDIR=`pwd`/tzpublic/$$type \ + $(MAKE) TOPDIR=$$(pwd)/time_t.dir/$$type \ CFLAGS='$(CFLAGS) -Dtime_tz='"'$$type'" \ REDO='$(REDO)' \ install && \ diff $$quiet_option -r \ - tzpublic/int64_t/etc/zoneinfo \ - tzpublic/$$type/etc/zoneinfo && \ + time_t.dir/int64_t/etc/zoneinfo \ + time_t.dir/$$type/etc/zoneinfo && \ case $$type in \ int32_t) range=-2147483648,2147483647;; \ uint32_t) range=0,4294967296;; \ @@ -633,14 +663,14 @@ check_time_t_alternatives: *) range=-10000000000,10000000000;; \ esac && \ echo checking $$type zones ... && \ - tzpublic/int64_t/etc/zdump -V -t $$range $$zones \ - >tzpublic/int64_t.out && \ - tzpublic/$$type/etc/zdump -V -t $$range $$zones \ - >tzpublic/$$type.out && \ - diff -u tzpublic/int64_t.out tzpublic/$$type.out \ + time_t.dir/int64_t/etc/zdump -V -t $$range $$zones \ + >time_t.dir/int64_t.out && \ + time_t.dir/$$type/etc/zdump -V -t $$range $$zones \ + >time_t.dir/$$type.out && \ + diff -u time_t.dir/int64_t.out time_t.dir/$$type.out \ || exit; \ done - rm -fr tzpublic + rm -fr time_t.dir tarballs: tzcode$(VERSION).tar.gz tzdata$(VERSION).tar.gz @@ -652,7 +682,7 @@ tzcode$(VERSION).tar.gz: set-timestamps.out tzdata$(VERSION).tar.gz: set-timestamps.out LC_ALL=C && export LC_ALL && \ - tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) | \ + tar $(TARFLAGS) -cf - $(COMMON) $(DATA) $(MISC) $(TZS) | \ gzip $(GZIPFLAGS) > $@ signatures: tzcode$(VERSION).tar.gz.asc tzdata$(VERSION).tar.gz.asc @@ -688,7 +718,8 @@ zic.o: private.h tzfile.h version.h .PHONY: ALL INSTALL all .PHONY: check check_character_set check_links .PHONY: check_public check_sorted check_tables -.PHONY: check_time_t_alternatives check_web check_white_space clean clean_misc +.PHONY: check_time_t_alternatives check_tzs check_web check_white_space +.PHONY: clean clean_misc force_tzs .PHONY: install install_data maintainer-clean names .PHONY: posix_only posix_packrat posix_right .PHONY: public right_only right_posix signatures tarballs typecheck diff --git a/NEWS b/NEWS index 3d01581..023883b 100644 --- a/NEWS +++ b/NEWS @@ -2,18 +2,18 @@ News for the tz database Unreleased, experimental changes - Changes affecting future time stamps + Changes to future time stamps New leap second 2016-12-31 23:59:60 UTC as per IERS Bulletin C 52. (Thanks to Tim Parenti.) - Changes affecting past time stamps + Changes to past time stamps For America/Los_Angeles, spring-forward transition times have been corrected from 02:00 to 02:01 in 1948, and from 02:00 to 01:00 in 1950-1966. - Changes affecting code + Changes to code zic no longer generates binary files containing POSIX TZ-like strings that disagree with the local time type after the last @@ -28,7 +28,11 @@ Unreleased, experimental changes (Thanks to Jon Skeet for suggesting that an option was needed, and thanks to Tim Parenti and Chris Rovick for further comments.) - Changes affecting documentation and commentary + The tzdata distribution has a new file to2050.tzs that contains + what should be the output of 'zdump -i -c 2050' on primary zones. + 'make check' now checks that zdump generates this output. + + Changes to documentation and commentary tzfile.5 now documents the new restriction on POSIX TZ-like strings that is now implemented by zic. -- 2.5.5