Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/lib/libc/time Merge tzcode-2021a
details: https://anonhg.NetBSD.org/src/rev/6bc695c725c9
branches: trunk
changeset: 953210:6bc695c725c9
user: christos <christos%NetBSD.org@localhost>
date: Mon Mar 01 04:42:14 2021 +0000
description:
Merge tzcode-2021a
- No comments in the changelog about the code changes.
diffstat:
lib/libc/time/Makefile | 64 ++++++++++++++++++++++-------
lib/libc/time/NEWS | 80 +++++++++++++++++++++++++++++++++++++
lib/libc/time/theory.html | 5 +-
lib/libc/time/tz-art.html | 4 +
lib/libc/time/tz-link.html | 99 ++++++++++++++++++++++++---------------------
lib/libc/time/version | 2 +-
lib/libc/time/zic.8 | 40 ++++++++++++++++--
lib/libc/time/zic.c | 18 ++++++--
8 files changed, 236 insertions(+), 76 deletions(-)
diffs (truncated from 600 to 300 lines):
diff -r 6895651715b6 -r 6bc695c725c9 lib/libc/time/Makefile
--- a/lib/libc/time/Makefile Mon Mar 01 04:40:39 2021 +0000
+++ b/lib/libc/time/Makefile Mon Mar 01 04:42:14 2021 +0000
@@ -583,11 +583,19 @@
cp date '$(DESTDIR)$(BINDIR)/.'
cp -f date.1 '$(DESTDIR)$(MANDIR)/man1/.'
+# Calculate version number from git, if available.
+# Otherwise, use $(VERSION) unless it is "unknown" and there is already
+# a 'version' file, in which case reuse the existing 'version' contents
+# and append "-dirty" if the contents do not already end in "-dirty".
version: $(VERSION_DEPS)
{ (type git) >/dev/null 2>&1 && \
V=`git describe --match '[0-9][0-9][0-9][0-9][a-z]*' \
--abbrev=7 --dirty` || \
- V='$(VERSION)'; } && \
+ if test '$(VERSION)' = unknown && V=`cat $@`; then \
+ case $$V in *-dirty);; *) V=$$V-dirty;; esac; \
+ else \
+ V='$(VERSION)'; \
+ fi; } && \
printf '%s\n' "$$V" >$@.out
mv $@.out $@
@@ -872,11 +880,34 @@
LC_ALL=C sh workman.sh `expr $@ : '\(.*\)\.txt$$'` >$@.out
mv $@.out $@
+# Set file timestamps deterministically if possible,
+# so that tarballs containing the timestamps are reproducible.
+#
+# '$(SET_TIMESTAMP_N) N DEST A B C ...' sets the timestamp of the
+# file DEST to the maximum of the timestamps of the files A B C ...,
+# plus N if GNU ls and touch are available.
+SET_TIMESTAMP_N = sh -c '\
+ n=$$0 dest=$$1; shift; \
+ touch -cmr `ls -t "$$@" | sed 1q` "$$dest" && \
+ if test $$n != 0 && \
+ lsout=`ls -n --time-style="+%s" "$$dest" 2>/dev/null`; then \
+ set x $$lsout && \
+ touch -cmd @`expr $$7 + $$n` "$$dest"; \
+ else :; fi'
+# If DEST depends on A B C ... in this Makefile, callers should use
+# $(SET_TIMESTAMP_DEP) DEST A B C ..., for the benefit of any
+# downstream 'make' that considers equal timestamps to be out of date.
+# POSIX allows this 'make' behavior, and HP-UX 'make' does it.
+# If all that matters is that the timestamp be reproducible
+# and plausible, use $(SET_TIMESTAMP).
+SET_TIMESTAMP = $(SET_TIMESTAMP_N) 0
+SET_TIMESTAMP_DEP = $(SET_TIMESTAMP_N) 1
+
# Set the timestamps 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, don't bother to sync with git timestamps.
+# This uses GNU 'ls --time-style=+%s', which outputs the seconds count,
+# and GNU 'touch -d@N FILE', where N is the number of seconds since 1970.
+# If git or GNU is absent, don't bother to sync with git timestamps.
# Also, set the timestamp of each prebuilt file like 'leapseconds'
# to be the maximum of the files it depends on.
set-timestamps.out: $(EIGHT_YARDS)
@@ -894,16 +925,16 @@
fi || exit; \
done; \
fi
- touch -cmr `ls -t $(LEAP_DEPS) | sed 1q` leapseconds
+ $(SET_TIMESTAMP_DEP) leapseconds $(LEAP_DEPS)
for file in `ls $(MANTXTS) | sed 's/\.txt$$//'`; do \
- touch -cmr `ls -t $$file workman.sh | sed 1q` $$file.txt || \
+ $(SET_TIMESTAMP_DEP) $$file.txt $$file workman.sh || \
exit; \
done
- touch -cmr `ls -t $(TZDATA_ZI_DEPS) | sed 1q` tzdata.zi
- touch -cmr `ls -t $(VERSION_DEPS) | sed 1q` version
+ $(SET_TIMESTAMP_DEP) version $(VERSION_DEPS)
+ $(SET_TIMESTAMP_DEP) tzdata.zi $(TZDATA_ZI_DEPS)
touch $@
set-tzs-timestamp.out: $(TZS)
- touch -cmr `ls -t $(TZS_DEPS) | sed 1q` $(TZS)
+ $(SET_TIMESTAMP_DEP) $(TZS) $(TZS_DEPS)
touch $@
# The zics below ensure that each data file can stand on its own.
@@ -914,7 +945,10 @@
mkdir public.dir
ln $(VERSION_DEPS) public.dir
cd public.dir && $(MAKE) CFLAGS='$(GCC_DEBUG_FLAGS)' ALL
- for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi; do \
+ for i in $(TDATA_TO_CHECK) public.dir/tzdata.zi \
+ public.dir/vanguard.zi public.dir/main.zi \
+ public.dir/rearguard.zi; \
+ do \
public.dir/zic -v -d public.dir/zoneinfo $$i 2>&1 || exit; \
done
public.dir/zic -v -d public.dir/zoneinfo-all $(TDATA_TO_CHECK)
@@ -981,7 +1015,7 @@
signatures rearguard_signatures traditional_signatures: \
version set-timestamps.out rearguard.zi
VERSION=`cat version` && \
- $(MAKE) VERSION="$$VERSION" $@_version
+ $(MAKE) AWK='$(AWK)' VERSION="$$VERSION" $@_version
# These *_version rules are intended for use if VERSION is set by some
# other means. Ordinarily these rules are used only by the above
@@ -1018,12 +1052,12 @@
for f in $(TDATA) $(PACKRATDATA); do \
rearf=tzdata$(VERSION)-rearguard.dir/$$f; \
$(AWK) -v DATAFORM=rearguard -f ziguard.awk $$f >$$rearf && \
- touch -cmr `ls -t ziguard.awk $$f` $$rearf || exit; \
+ $(SET_TIMESTAMP_DEP) $$rearf ziguard.awk $$f || exit; \
done
sed '1s/$$/-rearguard/' \
<version >tzdata$(VERSION)-rearguard.dir/version
: The dummy pacificnew pacifies TZUpdater 2.3.1 and earlier.
- touch -md 2020-10-12T22:53:00Z \
+ TZ=UTC0 touch -mt 202010122253.00 \
tzdata$(VERSION)-rearguard.dir/pacificnew
touch -cmr version tzdata$(VERSION)-rearguard.dir/version
LC_ALL=C && export LC_ALL && \
@@ -1037,7 +1071,7 @@
rm -fr tzdb-$(VERSION)
mkdir tzdb-$(VERSION)
ln $(ENCHILADA) tzdb-$(VERSION)
- touch -cmr `ls -t tzdb-$(VERSION)/* | sed 1q` tzdb-$(VERSION)
+ $(SET_TIMESTAMP) tzdb-$(VERSION) tzdb-$(VERSION)/*
LC_ALL=C && export LC_ALL && \
tar $(TARFLAGS) -cf - tzdb-$(VERSION) | lzip -9 >$@.out
mv $@.out $@
@@ -1079,8 +1113,6 @@
zdump.o: version.h
zic.o: private.h tzfile.h version.h
-.KEEP_STATE:
-
.PHONY: ALL INSTALL all
.PHONY: check check_time_t_alternatives
.PHONY: check_web check_zishrink
diff -r 6895651715b6 -r 6bc695c725c9 lib/libc/time/NEWS
--- a/lib/libc/time/NEWS Mon Mar 01 04:40:39 2021 +0000
+++ b/lib/libc/time/NEWS Mon Mar 01 04:42:14 2021 +0000
@@ -1,5 +1,85 @@
News for the tz database
+Release 2021a - 2021-01-24 10:54:57 -0800
+
+ Changes to future timestamps
+
+ South Sudan changes from +03 to +02 on 2021-02-01 at 00:00.
+ (Thanks to Steffen Thorsen.)
+
+
+Release 2020f - 2020-12-29 00:17:46 -0800
+
+ Change to build procedure
+
+ 'make rearguard_tarballs' no longer generates a bad rearguard.zi,
+ fixing a 2020e bug. (Problem reported by Deborah Goldsmith.)
+
+
+Release 2020e - 2020-12-22 15:14:34 -0800
+
+ Briefly:
+ Volgograd switches to Moscow time on 2020-12-27 at 02:00.
+
+ Changes to future timestamps
+
+ Volgograd changes time zone from +04 to +03 on 2020-12-27 at 02:00.
+ (Thanks to Alexander Krivenyshev and Stepan Golosunov.)
+
+ Changes to past timestamps
+
+ Correct many pre-1986 transitions, fixing entries originally
+ derived from Shanks. The fixes include:
+ - Australia: several 1917 through 1971 transitions
+ - Bahamas: several 1941 through 1945 transitions
+ - Bermuda: several 1917 through 1956 transitions
+ - Belize: several 1942 through 1968 transitions
+ - Ghana: several 1915 through 1956 transitions
+ - Israel and Palestine: several 1940 through 1985 transitions
+ - Kenya and adjacent: several 1908 through 1960 transitions
+ - Nigeria and adjacent: correcting LMT in Lagos, and several 1905
+ through 1919 transitions
+ - Seychelles: the introduction of standard time in 1907, not 1906
+ - Vanuatu: DST in 1973-1974, and a corrected 1984 transition
+ (Thanks to P Chan.)
+
+ Because of the Australia change, Australia/Currie (King Island) is
+ no longer needed, as it is identical to Australia/Hobart for all
+ timestamps since 1970 and was therefore created by mistake.
+ Australia/Currie has been moved to the 'backward' file and its
+ corrected data moved to the 'backzone' file.
+
+ Changes to past time zone abbreviations and DST flags
+
+ To better match legislation in Turks and Caicos, the 2015 shift to
+ year-round observance of -04 is now modeled as AST throughout before
+ returning to Eastern Time with US DST in 2018, rather than as
+ maintaining EDT until 2015-11-01. (Thanks to P Chan.)
+
+ Changes to documentation
+
+ The zic man page now documents zic's coalescing of transitions
+ when a zone falls back just before DST springs forward.
+
+
+Release 2020d - 2020-10-21 11:24:13 -0700
+
+ Briefly:
+ Palestine ends DST earlier than predicted, on 2020-10-24.
+
+ Changes to past and future timestamps
+
+ Palestine ends DST on 2020-10-24 at 01:00, instead of 2020-10-31
+ as previously predicted (thanks to Sharef Mustafa.) Its
+ 2019-10-26 fall-back was at 00:00, not 01:00 (thanks to Steffen
+ Thorsen.) Its 2015-10-23 transition was at 01:00 not 00:00, and
+ its spring 2020 transition was on March 28 at 00:00, not March 27
+ (thanks to Pierre Cashon.) This affects Asia/Gaza and
+ Asia/Hebron. Assume future spring and fall transitions will be on
+ the Saturday preceding the last Sunday of March and October,
+ respectively.
+
+
Release 2020c - 2020-10-16 11:15:53 -0700
Briefly:
diff -r 6895651715b6 -r 6bc695c725c9 lib/libc/time/theory.html
--- a/lib/libc/time/theory.html Mon Mar 01 04:40:39 2021 +0000
+++ b/lib/libc/time/theory.html Mon Mar 01 04:42:14 2021 +0000
@@ -474,8 +474,8 @@
<p>
<small>These abbreviations are:
AMT Amsterdam, Asunción, Athens;
- BMT Baghdad, Bangkok, Batavia, Bern, Bogotá, Bridgetown, Brussels,
- Bucharest;
+ BMT Baghdad, Bangkok, Batavia, Bermuda, Bern, Bogotá, Bridgetown,
+ Brussels, Bucharest;
CMT Calamarca, Caracas, Chisinau, Colón, Copenhagen, Córdoba;
DMT Dublin/Dunsink;
EMT Easter;
@@ -506,6 +506,7 @@
<small>A few abbreviations also follow the pattern that
<abbr>GMT</abbr>/<abbr>BST</abbr> established for time in the UK.
They are:
+ BMT/BST for Bermuda 1890–1930,
CMT/BST for Calamarca Mean Time and Bolivian Summer Time
1890–1932,
DMT/IST for Dublin/Dunsink Mean Time and Irish Summer Time
diff -r 6895651715b6 -r 6bc695c725c9 lib/libc/time/tz-art.html
--- a/lib/libc/time/tz-art.html Mon Mar 01 04:40:39 2021 +0000
+++ b/lib/libc/time/tz-art.html Mon Mar 01 04:42:14 2021 +0000
@@ -22,6 +22,10 @@
Explaining The Mysteries Of Time Zones</a>" (2017; 2:15)
briefly says why France has more time zones than Russia.
<li>
+"<a href="https://www.youtube.com/watch?v=yRz-Dl60Lfc">Why Denmark is
+.17 Seconds Behind The World</a>" (2019; 6:29) explains why Denmark and
+the United Kingdom don't exactly follow their own law about civil time.
+<li>
"About Time" (1962; 59 minutes) is part of the
Bell Science extravaganza, with Frank Baxter, Richard Deacon, and Les Tremayne.
Its advisor was Richard Feynman, and it was voiced by Mel Blanc.
diff -r 6895651715b6 -r 6bc695c725c9 lib/libc/time/tz-link.html
--- a/lib/libc/time/tz-link.html Mon Mar 01 04:40:39 2021 +0000
+++ b/lib/libc/time/tz-link.html Mon Mar 01 04:42:14 2021 +0000
@@ -245,13 +245,12 @@
<a
href="http://userguide.icu-project.org/datetime/timezone"><abbr
title="International Components for Unicode">ICU</abbr></a>,
-<a href="https://developer.ibm.com/javasdk/support/dst/jtzu/"><abbr>IBM</abbr></a>
-and <a
-href="https://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html">Oracle</a>
-Java, <a href="https://www.joda.org/joda-time/tz_update.html">Joda-Time</a>, <a
+<a href="https://developer.ibm.com/javasdk/support/dst/jtzu/"><abbr>IBM</abbr>
+JDK</a>,
+<a href="https://www.joda.org/joda-time/tz_update.html">Joda-Time</a>, <a
href="https://dev.mysql.com/doc/refman/en/time-zone-support.html">MySQL</a>,
-and <a
-href="https://nodatime.org/userguide/tzdb">Noda Time</a> (see below).
+<a href="https://nodatime.org/userguide/tzdb">Noda Time</a>, and <a
+href="https://www.oracle.com/java/technologies/javase/tzupdater-readme.html#usage">OpenJDK/Oracle JDK</a>.
</p>
<p>Sources for the <code><abbr>tz</abbr></code> database are
<a href="https://en.wikipedia.org/wiki/UTF-8"><abbr
@@ -353,12 +352,7 @@
<a href="https://devguide.calconnect.org/Time-Zones/TZDS/">TZDIST
implementations</a> are available.
The <a href="https://www.ietf.org/mailman/listinfo/tzdist-bis">tzdist-bis
-mailing list</a> discussed the Internet draft <a
-id="TZDIST-Geolocate"
-href="https://tools.ietf.org/html/draft-murchison-tzdist-geolocate">TZDIST
-Geolocate Extension</a> (now expired), which let a client determine its timezone
-from its geographic location using a <a
-href="https://tools.ietf.org/html/rfc5870">'geo' URI</a>.</li>
+mailing list</a> discusses possible extensions.</li>
<li>The <a href="https://tools.ietf.org/html/rfc5545">
Internet Calendaring and Scheduling Core Object Specification
(iCalendar)</a> (Internet <abbr>RFC</abbr> 5445)
@@ -411,11 +405,11 @@
Home |
Main Index |
Thread Index |
Old Index