Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Jan 2023 09:46:46 GMT
From:      =?utf-8?Q?Dag-Erling=20Sm=C3=B8rgrav?= <des@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 93cc70bf9ca7 - stable/13 - Bring our tzcode up to date.
Message-ID:  <202301310946.30V9kkYu041243@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by des:

URL: https://cgit.FreeBSD.org/src/commit/?id=93cc70bf9ca755bdfc43cf34cd762549fd9cba51

commit 93cc70bf9ca755bdfc43cf34cd762549fd9cba51
Author:     Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2023-01-10 15:14:27 +0000
Commit:     Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2023-01-31 09:44:19 +0000

    Bring our tzcode up to date.
    
    * Replay 2010[acflm] which had been merged but not recorded.
    * Merge 2010n.
    * Reorganize (unsplit) the code to match the upstream layout.
    * Merge 2022[cdefg].
    
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    
    (cherry picked from commit bc42155199b5b0b479311e05b07aee7f6f9c5172)
    
    tzcode: Address some compiler warnings.
    
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    
    (cherry picked from commit d5c85ac6526dcd0ac25ebdb71969c8c788d5e13b)
    
    tzcode: Move configuration into separate header.
    
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    
    (cherry picked from commit 394cf6719a3c665eabe24d96669409e0c5a78076)
    
    tzcode: Remove access() again, cf. 02ba1d993fa9.
    
    Reported by:    Coverity (CID 1250126)
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    Differential Revision: https://reviews.freebsd.org/D38035
    
    (cherry picked from commit 3e2e5eebfaa0aebb2790bbde7f35d4c6c52e2596)
    
    tzcode: Avoid memory leak if pthread_setspecific() fails.
    
    Reported by:    Coverity (CID 1018472, 1018474)
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    Differential Revision: https://reviews.freebsd.org/D38036
    
    (cherry picked from commit 96e68c393f65046c0cf69d29f89efcfee949e5de)
    
    tzcode: Fully initialize structs before use.
    
    Reported by:    Coverity (CID 1502542, 1502548)
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    Differential Revision: https://reviews.freebsd.org/D38037
    
    (cherry picked from commit 55572cff58c4208a9e532356a245676b8eed6a3e)
    
    tzcode: Silence warnings.
    
    * Ignore failure to remove our temp file.
    * Avoid a minor memory leak in the -D case.
    
    Reported by:    Coverity (CID 1502534, 1502535, 1502538)
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    Differential Revision: https://reviews.freebsd.org/D38038
    
    (cherry picked from commit 2aad7570f4e11ac94bb06c44cdc83ad1962fb97e)
    
    depend-cleanup.sh: handle zic moving one level up.
    
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    Differential Revision: https://reviews.freebsd.org/D38044
    
    (cherry picked from commit 4a158fc030b5a31efdbad8b30c9a859df553ae3c)
    
    libc: Update mktime(3) / timegm(3) tests.
    
    Sponsored by:   Klara, Inc.
    Reviewed by:    ngie
    Differential Revision:  https://reviews.freebsd.org/D38177
    
    (cherry picked from commit d8c9f80891872a54d0b21933136644d915096fe3)
    
    zoneinfo: On amd64, include 32-bit data.
    
    While there, drop the unnecessary posixrules option.
    
    Sponsored by:   Klara, Inc.
    Reviewed by:    imp, allanjude
    Differential Revision:  https://reviews.freebsd.org/D38142
    
    (cherry picked from commit 783c318fd1181d46554c31a5039db10e7f5eef49)
    
    tzcode: Document zic's -D option.
    
    Sponsored by:   Klara, Inc.
    Reviewed by:    allanjude
    Differential Revision:  https://reviews.freebsd.org/D38141
    
    (cherry picked from commit a7b1b73935f21a3dcd6fc8d86a37b92f0c9ba93f)
    
    zoneinfo: Always produce fat zoneinfo files.
    
    These aren't just needed for compatibility with i386 binaries (which need
    the 32-bit section), but potentially also for compatibility with older
    binaries on all platforms.
    
    Sponsored by:   Klara, Inc.
    Reviewed by:    emaste
    Differential Revision:  https://reviews.freebsd.org/D38194
    
    (cherry picked from commit f1021d27f73efb821213a973e1ab9366278c78f1)
    
    Fix cross-build from STABLE or older CURRENT.
    
    Previously, zic and tzsetup were both listed as install tools and basic
    bootstrap tools.  Actually, tzsetup is an install tool while zic is a
    non-basic bootstrap tool.
    
    Fixes:          783c318fd118
    Sponsored by:   Klara, Inc.
    Reviewed by:    jrtc27, emaste
    Differential Revision:  https://reviews.freebsd.org/D38195
    
    (cherry picked from commit 7a4a520064cb7fbff79560113682d6fe1a1ae9ee)
    
    Makefile.inc1: Restore adding tzsetup to _basic_bootstrap_tools
    
    ITOOLS is only the list of programs to make a copy of during install, it
    doesn't cause anything to be bootstrapped. Thus, by removing tzsetup
    from _basic_bootstrap_tools, we end up without it on non-FreeBSD, and so
    we error out trying to copy it to INSTALLTMP.
    
    Note that _basic_bootstrap_tools is only used for BOOTSTRAP_ALL_TOOLS
    (which is why zic was moved away from it). Should tzsetup evolve such
    that the host version is insufficient on older FreeBSD it can be moved
    to be more like zic, but that seems unnecessary for what is likely to
    remain a simple tool.
    
    This partially reverts commit 7a4a520064cb7fbff79560113682d6fe1a1ae9ee.
    
    Fixes:  7a4a520064cb ("Fix cross-build from STABLE or older CURRENT.")
    (cherry picked from commit d4fdfd3f9077216e52f38f7364974959c9e43168)
---
 Makefile.inc1                                 |   22 +-
 contrib/netbsd-tests/lib/libc/time/t_mktime.c |   21 +-
 contrib/tzcode/CONTRIBUTING                   |   97 +
 contrib/tzcode/LICENSE                        |    5 +
 contrib/tzcode/Makefile                       | 1250 ++++++
 contrib/tzcode/NEWS                           | 5902 +++++++++++++++++++++++++
 contrib/tzcode/README                         |   52 +
 contrib/tzcode/SECURITY                       |   15 +
 contrib/tzcode/{stdtime => }/asctime.c        |   71 +-
 contrib/tzcode/calendars                      |  173 +
 contrib/tzcode/date.1                         |  167 +
 contrib/tzcode/date.c                         |  216 +
 contrib/tzcode/difftime.c                     |   62 +
 contrib/tzcode/localtime.c                    | 2654 +++++++++++
 contrib/tzcode/newctime.3                     |  344 ++
 contrib/tzcode/newstrftime.3                  |  290 ++
 contrib/tzcode/newtzset.3                     |  350 ++
 contrib/tzcode/private.h                      |  938 ++++
 contrib/tzcode/stdtime/difftime.c             |   67 -
 contrib/tzcode/stdtime/localtime.c            | 2317 ----------
 contrib/tzcode/stdtime/private.h              |  327 --
 contrib/tzcode/stdtime/tzfile.5               |  152 -
 contrib/tzcode/stdtime/tzfile.h               |  184 -
 contrib/tzcode/strftime.c                     |  657 +++
 contrib/tzcode/theory.html                    | 1479 +++++++
 contrib/tzcode/{stdtime => }/time2posix.3     |   74 +-
 contrib/tzcode/tz-art.html                    |  636 +++
 contrib/tzcode/tz-how-to.html                 |  719 +++
 contrib/tzcode/tz-link.html                   | 1175 +++++
 contrib/tzcode/tzconfig.h                     |   19 +
 contrib/tzcode/tzfile.5                       |  492 +++
 contrib/tzcode/tzfile.h                       |  125 +
 contrib/tzcode/tzselect.8                     |  125 +
 contrib/tzcode/tzselect.ksh                   |  586 +++
 contrib/tzcode/version                        |    1 +
 contrib/tzcode/version.h                      |    3 +
 contrib/tzcode/workman.sh                     |   41 +
 contrib/tzcode/zdump.8                        |  231 +
 contrib/tzcode/zdump.c                        | 1256 ++++++
 contrib/tzcode/zic.8                          |  858 ++++
 contrib/tzcode/zic.c                          | 4049 +++++++++++++++++
 contrib/tzcode/zic/README                     |   88 -
 contrib/tzcode/zic/Theory                     |  570 ---
 contrib/tzcode/zic/ialloc.c                   |   91 -
 contrib/tzcode/zic/private.h                  |  272 --
 contrib/tzcode/zic/scheck.c                   |   68 -
 contrib/tzcode/zic/zdump.8                    |   63 -
 contrib/tzcode/zic/zdump.c                    |  668 ---
 contrib/tzcode/zic/zdump/Makefile             |   15 -
 contrib/tzcode/zic/zic.8                      |  468 --
 contrib/tzcode/zic/zic.c                      | 2756 ------------
 contrib/tzcode/zic/zic/Makefile               |   16 -
 lib/libc/gen/Makefile.inc                     |    2 +
 lib/libc/stdtime/Makefile.inc                 |   21 +-
 {contrib/tzcode => lib/libc}/stdtime/ctime.3  |    0
 lib/libc/stdtime/strftime.c                   |    1 +
 lib/libc/stdtime/strptime.c                   |    1 +
 share/zoneinfo/Makefile                       |    8 +-
 tools/build/depend-cleanup.sh                 |    6 +
 usr.sbin/Makefile                             |    1 +
 usr.sbin/zdump/Makefile                       |   11 +
 usr.sbin/{zic => }/zdump/Makefile.depend      |    0
 usr.sbin/zic/Makefile                         |   10 +-
 usr.sbin/zic/{zic => }/Makefile.depend        |    0
 usr.sbin/zic/Makefile.inc                     |    3 -
 usr.sbin/zic/README                           |   88 -
 usr.sbin/zic/zdump/Makefile                   |   15 -
 usr.sbin/zic/zic/Makefile                     |   22 -
 68 files changed, 25107 insertions(+), 8359 deletions(-)

diff --git a/Makefile.inc1 b/Makefile.inc1
index 6975ce7d843f..a3858b25d154 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -1324,10 +1324,6 @@ __installcheck_sh_check: .PHONY
 #
 # Required install tools to be saved in a scratch dir for safety.
 #
-.if ${MK_ZONEINFO} != "no"
-_zoneinfo=	zic tzsetup
-.endif
-
 .if !defined(CROSSBUILD_HOST)
 _sysctl=sysctl
 .endif
@@ -1335,14 +1331,19 @@ _sysctl=sysctl
 ITOOLS=	[ awk cap_mkdb cat chflags chmod chown cmp cp \
 	date echo egrep find grep id install ${_install-info} \
 	ln make mkdir mtree mv pwd_mkdb \
-	rm sed services_mkdb sh sort strip ${_sysctl} test true uname wc \
-	${_zoneinfo} ${LOCAL_ITOOLS}
+	rm sed services_mkdb sh sort strip ${_sysctl} test true uname wc
+
+.if ${MK_ZONEINFO} != "no"
+ITOOLS+=tzsetup
+.endif
 
 # Needed for share/man
 .if ${MK_MAN_UTILS} != "no"
 ITOOLS+=makewhatis
 .endif
 
+ITOOLS+=${LOCAL_ITOOLS}
+
 #
 # distributeworld
 #
@@ -2222,6 +2223,11 @@ _strfile=	usr.bin/fortune/strfile
 # C source for loader built in font (8x16.c).
 _vtfontcvt=	usr.bin/vtfontcvt
 
+# zic is used to compile timezone data
+.if ${MK_ZONEINFO} != "no"
+_zic=		usr.sbin/zic
+.endif
+
 # If we are not building the bootstrap because BOOTSTRAPPING is sufficient
 # we symlink the host version to $WORLDTMP instead. By doing this we can also
 # detect when a bootstrap tool is being used without the required MK_FOO.
@@ -2437,8 +2443,9 @@ _basic_bootstrap_tools+=usr.bin/jot
 _basic_bootstrap_tools+=sbin/md5
 .endif
 
+# tzsetup is needed as an install tool
 .if ${MK_ZONEINFO} != "no"
-_basic_bootstrap_tools+=usr.sbin/zic usr.sbin/tzsetup
+_basic_bootstrap_tools+=usr.sbin/tzsetup
 .endif
 
 .if defined(BOOTSTRAP_ALL_TOOLS)
@@ -2525,6 +2532,7 @@ bootstrap-tools: ${_bt}-links .PHONY
     ${_localedef} \
     ${_mkcsmapper} \
     ${_mkesdb} \
+    ${_zic} \
     ${LOCAL_BSTOOL_DIRS}
 ${_bt}-${_tool}: ${_bt}-links .PHONY .MAKE
 	${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
diff --git a/contrib/netbsd-tests/lib/libc/time/t_mktime.c b/contrib/netbsd-tests/lib/libc/time/t_mktime.c
index 1080b77eda80..63905b8bad54 100644
--- a/contrib/netbsd-tests/lib/libc/time/t_mktime.c
+++ b/contrib/netbsd-tests/lib/libc/time/t_mktime.c
@@ -1,4 +1,4 @@
-/* $NetBSD: t_mktime.c,v 1.5 2012/03/18 07:33:58 jruoho Exp $ */
+/* $NetBSD: t_mktime.c,v 1.6 2017/10/27 00:55:27 kre Exp $ */
 
 /*-
  * Copyright (c) 2011 The NetBSD Foundation, Inc.
@@ -64,18 +64,16 @@ ATF_TC_HEAD(mktime_negyear, tc)
 
 ATF_TC_BODY(mktime_negyear, tc)
 {
-#ifdef __FreeBSD__
-	atf_tc_expect_fail("needs work");
-#endif
 	struct tm tms;
 	time_t t;
 
 	(void)memset(&tms, 0, sizeof(tms));
-	tms.tm_year = ~0;
+	tms.tm_year = -1;
+	tms.tm_mday = 1;
 
 	errno = 0;
 	t = mktime(&tms);
-	ATF_REQUIRE_ERRNO(0, t != (time_t)-1);
+	ATF_REQUIRE(t != (time_t)-1);
 }
 
 ATF_TC(timegm_epoch);
@@ -95,7 +93,7 @@ ATF_TC_BODY(timegm_epoch, tc)
 	tms.tm_year = 1970 - 1900;
 	tms.tm_mday = 1;
 	t = timegm(&tms);
-	ATF_REQUIRE_ERRNO(0, t == (time_t)0);
+	ATF_REQUIRE(t == (time_t)0);
 
 	/* one second after midnight on 1 Jan 1970 */
 	(void)memset(&tms, 0, sizeof(tms));
@@ -104,7 +102,7 @@ ATF_TC_BODY(timegm_epoch, tc)
 	tms.tm_mday = 1;
 	tms.tm_sec = 1;
 	t = timegm(&tms);
-	ATF_REQUIRE_ERRNO(0, t == (time_t)1);
+	ATF_REQUIRE(t == (time_t)1);
 
 	/*
 	 * 1969-12-31 23:59:59 = one second before the epoch.
@@ -119,7 +117,8 @@ ATF_TC_BODY(timegm_epoch, tc)
 	tms.tm_min = 59;
 	tms.tm_sec = 59;
 	t = timegm(&tms);
-	ATF_REQUIRE_ERRNO(0, t == (time_t)-1);
+	ATF_REQUIRE(t == (time_t)-1);
+	/* ATF_REQUIRE(errno == 0); does not work, errno is kept clear */
 
 	/*
 	 * Another way of getting one second before the epoch:
@@ -131,7 +130,7 @@ ATF_TC_BODY(timegm_epoch, tc)
 	tms.tm_mday = 1;
 	tms.tm_sec = -1;
 	t = timegm(&tms);
-	ATF_REQUIRE_ERRNO(0, t == (time_t)-1);
+	ATF_REQUIRE(t == (time_t)-1);
 
 	/*
 	 * Two seconds before the epoch.
@@ -142,7 +141,7 @@ ATF_TC_BODY(timegm_epoch, tc)
 	tms.tm_mday = 1;
 	tms.tm_sec = -2;
 	t = timegm(&tms);
-	ATF_REQUIRE_ERRNO(0, t == (time_t)-2);
+	ATF_REQUIRE(t == (time_t)-2);
 
 }
 
diff --git a/contrib/tzcode/CONTRIBUTING b/contrib/tzcode/CONTRIBUTING
new file mode 100644
index 000000000000..4c0f56a50265
--- /dev/null
+++ b/contrib/tzcode/CONTRIBUTING
@@ -0,0 +1,97 @@
+# Contributing to the tz code and data
+
+Please do not create issues or pull requests on GitHub, as the
+proper procedure for proposing and distributing patches is via
+email as described below.
+
+The time zone database is by no means authoritative: governments
+change timekeeping rules erratically and sometimes with little
+warning, the data entries do not cover all of civil time before
+1970, and undoubtedly errors remain in the code and data.  Feel
+free to fill gaps or fix mistakes, and please email improvements
+to <tz@iana.org> for use in the future.  In your email, please give
+reliable sources that reviewers can check.
+
+## Contributing technical changes
+
+To email small changes, please run a POSIX shell command like
+'diff -u old/europe new/europe >myfix.patch', and attach
+'myfix.patch' to the email.
+
+For more-elaborate or possibly-controversial changes,
+such as renaming, adding or removing zones, please read
+"Theory and pragmatics of the tz code and data"
+<https://www.iana.org/time-zones/repository/theory.html>.
+It is also good to browse the mailing list archives
+<https://mm.icann.org/pipermail/tz/>; for examples of patches that tend
+to work well.  Additions to data should contain commentary citing
+reliable sources as justification.  Citations should use "https:" URLs
+if available.
+
+For changes that fix sensitive security-related bugs, please see the
+distribution's 'SECURITY' file.
+
+Please submit changes against either the latest release
+<https://www.iana.org/time-zones>; or the main branch of the development
+repository.  The latter is preferred.
+
+## Sample Git workflow for developing contributions
+
+If you use Git the following workflow may be helpful:
+
+  * Copy the development repository.
+
+        git clone https://github.com/eggert/tz.git
+        cd tz
+
+  * Get current with the main branch.
+
+        git checkout main
+        git pull
+
+  * Switch to a new branch for the changes.  Choose a different
+    branch name for each change set.
+
+        git checkout -b mybranch
+
+  * Sleuth by using 'git blame'.  For example, when fixing data for
+    Africa/Sao_Tome, if the command 'git blame africa' outputs a line
+    '2951fa3b (Paul Eggert 2018-01-08 09:03:13 -0800 1068) Zone
+    Africa/Sao_Tome 0:26:56 - LMT 1884', commit 2951fa3b should
+    provide some justification for the 'Zone Africa/Sao_Tome' line.
+
+  * Edit source files.  Include commentary that justifies the
+    changes by citing reliable sources.
+
+  * Debug the changes, e.g.:
+
+        make check
+        make install
+        ./zdump -v America/Los_Angeles
+
+  * For each separable change, commit it in the new branch, e.g.:
+
+        git add northamerica
+        git commit
+
+    See recent 'git log' output for the commit-message style.
+
+  * Create patch files 0001-..., 0002-..., ...
+
+        git format-patch main
+
+  * After reviewing the patch files, send the patches to <tz@iana.org>
+    for others to review.
+
+        git send-email main
+
+    For an archived example of such an email, see
+    "[PROPOSED] Fix off-by-1 error for Jamaica and T&C before 1913"
+    <https://mm.icann.org/pipermail/tz/2018-February/026122.html>.
+
+  * Start anew by getting current with the main branch again
+    (the second step above).
+
+-----
+
+This file is in the public domain.
diff --git a/contrib/tzcode/LICENSE b/contrib/tzcode/LICENSE
new file mode 100644
index 000000000000..8ba4399c622d
--- /dev/null
+++ b/contrib/tzcode/LICENSE
@@ -0,0 +1,5 @@
+Unless specified below, all files in the tz code and data (including
+this LICENSE file) are in the public domain.
+
+If the files date.c, newstrftime.3, and strftime.c are present, they
+contain material derived from BSD and use the BSD 3-clause license.
diff --git a/contrib/tzcode/Makefile b/contrib/tzcode/Makefile
new file mode 100644
index 000000000000..afb9d538a203
--- /dev/null
+++ b/contrib/tzcode/Makefile
@@ -0,0 +1,1250 @@
+# Make and install tzdb code and data.
+
+# This file is in the public domain, so clarified as of
+# 2009-05-17 by Arthur David Olson.
+
+# Package name for the code distribution.
+PACKAGE=	tzcode
+
+# Version number for the distribution, overridden in the 'tarballs' rule below.
+VERSION=	unknown
+
+# Email address for bug reports.
+BUGEMAIL=	tz@iana.org
+
+# DATAFORM selects the data format.
+# Available formats represent essentially the same data, albeit
+# possibly with minor discrepancies that users are not likely to notice.
+# To get new features and the best data right away, use:
+#	DATAFORM=	vanguard
+# To wait a while before using new features, to give downstream users
+# time to upgrade zic (the default), use:
+#	DATAFORM=	main
+# To wait even longer for new features, use:
+#	DATAFORM=	rearguard
+# Rearguard users might also want "ZFLAGS = -b fat"; see below.
+DATAFORM=		main
+
+# Change the line below for your timezone (after finding the one you want in
+# one of the $(TDATA) source files, or adding it to a source file).
+# Alternatively, if you discover you've got the wrong timezone, you can just
+# 'zic -l -' to remove it, or 'zic -l rightzone' to change it.
+# Use the command
+#	make zonenames
+# to get a list of the values you can use for LOCALTIME.
+
+LOCALTIME=	Factory
+
+# The POSIXRULES macro controls interpretation of nonstandard and obsolete
+# POSIX-like TZ settings like TZ='EET-2EEST' that lack DST transition rules.
+# Such a setting uses the rules in a template file to determine
+# "spring forward" and "fall back" days and times; the environment
+# variable itself specifies UT offsets of standard and daylight saving time.
+#
+# If POSIXRULES is '-', no template is installed; this is the default.
+#
+# Any other value for POSIXRULES is obsolete and should not be relied on, as:
+# * It does not work correctly in popular implementations such as GNU/Linux.
+# * It does not work even in tzcode, except for historical timestamps
+#   that precede the last explicit transition in the POSIXRULES file.
+#   Hence it typically does not work for current and future timestamps.
+# In short, software should avoid ruleless settings like TZ='EET-2EEST'
+# and so should not depend on the value of POSIXRULES.
+#
+# If, despite the above, you want a template for handling these settings,
+# you can change the line below (after finding the timezone you want in the
+# one of the $(TDATA) source files, or adding it to a source file).
+# Alternatively, if you discover you've got the wrong timezone, you can just
+# 'zic -p -' to remove it, or 'zic -p rightzone' to change it.
+# Use the command
+#	make zonenames
+# to get a list of the values you can use for POSIXRULES.
+
+POSIXRULES=	-
+
+# Also see TZDEFRULESTRING below, which takes effect only
+# if the time zone files cannot be accessed.
+
+
+# Installation locations.
+#
+# The defaults are suitable for Debian, except that if REDO is
+# posix_right or right_posix then files that Debian puts under
+# /usr/share/zoneinfo/posix and /usr/share/zoneinfo/right are instead
+# put under /usr/share/zoneinfo-posix and /usr/share/zoneinfo-leaps,
+# respectively.  Problems with the Debian approach are discussed in
+# the commentary for the right_posix rule (below).
+
+# Destination directory, which can be used for staging.
+# 'make DESTDIR=/stage install' installs under /stage (e.g., to
+# /stage/etc/localtime instead of to /etc/localtime).  Files under
+# /stage are not intended to work as-is, but can be copied by hand to
+# the root directory later.  If DESTDIR is empty, 'make install' does
+# not stage, but installs directly into production locations.
+DESTDIR =
+
+# Everything is installed into subdirectories of TOPDIR, and used there.
+# TOPDIR should be empty (meaning the root directory),
+# or a directory name that does not end in "/".
+# TOPDIR should be empty or an absolute name unless you're just testing.
+TOPDIR =
+
+# The default local timezone is taken from the file TZDEFAULT.
+TZDEFAULT = $(TOPDIR)/etc/localtime
+
+# The subdirectory containing installed program and data files, and
+# likewise for installed files that can be shared among architectures.
+# These should be relative file names.
+USRDIR = usr
+USRSHAREDIR = $(USRDIR)/share
+
+# "Compiled" timezone information is placed in the "TZDIR" directory
+# (and subdirectories).
+# TZDIR_BASENAME should not contain "/" and should not be ".", ".." or empty.
+TZDIR_BASENAME=	zoneinfo
+TZDIR = $(TOPDIR)/$(USRSHAREDIR)/$(TZDIR_BASENAME)
+
+# The "tzselect" and (if you do "make INSTALL") "date" commands go in:
+BINDIR = $(TOPDIR)/$(USRDIR)/bin
+
+# The "zdump" command goes in:
+ZDUMPDIR = $(BINDIR)
+
+# The "zic" command goes in:
+ZICDIR = $(TOPDIR)/$(USRDIR)/sbin
+
+# Manual pages go in subdirectories of. . .
+MANDIR = $(TOPDIR)/$(USRSHAREDIR)/man
+
+# Library functions are put in an archive in LIBDIR.
+LIBDIR = $(TOPDIR)/$(USRDIR)/lib
+
+
+# Types to try, as an alternative to time_t.
+TIME_T_ALTERNATIVES = $(TIME_T_ALTERNATIVES_HEAD) $(TIME_T_ALTERNATIVES_TAIL)
+TIME_T_ALTERNATIVES_HEAD = int_least64_t
+TIME_T_ALTERNATIVES_TAIL = int_least32_t uint_least32_t uint_least64_t
+
+# What kind of TZif data files to generate.  (TZif is the binary time
+# zone data format that zic generates; see Internet RFC 8536.)
+# If you want only POSIX time, with time values interpreted as
+# seconds since the epoch (not counting leap seconds), use
+#	REDO=		posix_only
+# below.  If you want only "right" time, with values interpreted
+# as seconds since the epoch (counting leap seconds), use
+#	REDO=		right_only
+# below.  If you want both sets of data available, with leap seconds not
+# counted normally, use
+#	REDO=		posix_right
+# below.  If you want both sets of data available, with leap seconds counted
+# normally, use
+#	REDO=		right_posix
+# below.  POSIX mandates that leap seconds not be counted; for compatibility
+# with it, use "posix_only" or "posix_right".  Use POSIX time on systems with
+# leap smearing; this can work better than unsmeared "right" time with
+# applications that are not leap second aware, and is closer to unsmeared
+# "right" time than unsmeared POSIX time is (e.g., 0.5 vs 1.0 s max error).
+
+REDO=		posix_right
+
+# Whether to put an "Expires" line in the leapseconds file.
+# Use EXPIRES_LINE=1 to put the line in, 0 to omit it.
+# The EXPIRES_LINE value matters only if REDO's value contains "right".
+# If you change EXPIRES_LINE, remove the leapseconds file before running "make".
+# zic's support for the Expires line was introduced in tzdb 2020a,
+# and was modified in tzdb 2021b to generate version 4 TZif files.
+# EXPIRES_LINE defaults to 0 for now so that the leapseconds file
+# can be given to pre-2020a zic implementations and so that TZif files
+# built by newer zic implementations can be read by pre-2021b libraries.
+EXPIRES_LINE=	0
+
+# To install data in text form that has all the information of the TZif data,
+# (optionally incorporating leap second information), use
+#	TZDATA_TEXT=	tzdata.zi leapseconds
+# To install text data without leap second information (e.g., because
+# REDO='posix_only'), use
+#	TZDATA_TEXT=	tzdata.zi
+# To avoid installing text data, use
+#	TZDATA_TEXT=
+
+TZDATA_TEXT=	leapseconds tzdata.zi
+
+# For backward-compatibility links for old zone names, use
+#	BACKWARD=	backward
+# To omit these links, use
+#	BACKWARD=
+
+BACKWARD=	backward
+
+# If you want out-of-scope and often-wrong data from the file 'backzone',
+# but only for entries listed in the backward-compatibility file zone.tab, use
+#	PACKRATDATA=	backzone
+#	PACKRATLIST=	zone.tab
+# If you want all the 'backzone' data, use
+#	PACKRATDATA=	backzone
+#	PACKRATLIST=
+# To omit this data, use
+#	PACKRATDATA=
+#	PACKRATLIST=
+
+PACKRATDATA=
+PACKRATLIST=
+
+# The name of a locale using the UTF-8 encoding, used during self-tests.
+# The tests are skipped if the name does not appear to work on this system.
+
+UTF8_LOCALE=	en_US.utf8
+
+# Non-default libraries needed to link.
+# On some hosts, this should have -lintl unless CFLAGS has -DHAVE_GETTEXT=0.
+LDLIBS=
+
+# Add the following to the end of the "CFLAGS=" line as needed to override
+# defaults specified in the source code.  "-DFOO" is equivalent to "-DFOO=1".
+#  -DDEPRECATE_TWO_DIGIT_YEARS for optional runtime warnings about strftime
+#	formats that generate only the last two digits of year numbers
+#  -DEPOCH_LOCAL if the 'time' function returns local time not UT
+#  -DEPOCH_OFFSET=N if the 'time' function returns a value N greater
+#	than what POSIX specifies, assuming local time is UT.
+#	For example, N is 252460800 on AmigaOS.
+#  -DHAVE_DECL_ASCTIME_R=0 if <time.h> does not declare asctime_r
+#  -DHAVE_DECL_ENVIRON if <unistd.h> declares 'environ'
+#  -DHAVE_DECL_TIMEGM=0 if <time.h> does not declare timegm
+#  -DHAVE_DIRECT_H if mkdir needs <direct.h> (MS-Windows)
+#  -DHAVE_GENERIC=0 if _Generic does not work*
+#  -DHAVE_GETRANDOM if getrandom works (e.g., GNU/Linux),
+#	-DHAVE_GETRANDOM=0 to avoid using getrandom
+#  -DHAVE_GETTEXT if gettext works (e.g., GNU/Linux, FreeBSD, Solaris),
+#	where LDLIBS also needs to contain -lintl on some hosts;
+#	-DHAVE_GETTEXT=0 to avoid using gettext
+#  -DHAVE_INCOMPATIBLE_CTIME_R if your system's time.h declares
+#	ctime_r and asctime_r incompatibly with the POSIX standard
+#	(Solaris when _POSIX_PTHREAD_SEMANTICS is not defined).
+#  -DHAVE_INTTYPES_H=0 if <inttypes.h> does not work*
+#  -DHAVE_LINK=0 if your system lacks a link function
+#  -DHAVE_LOCALTIME_R=0 if your system lacks a localtime_r function
+#  -DHAVE_LOCALTIME_RZ=0 if you do not want zdump to use localtime_rz
+#	localtime_rz can make zdump significantly faster, but is nonstandard.
+#  -DHAVE_MALLOC_ERRNO=0 if malloc etc. do not set errno on failure.
+#  -DHAVE_POSIX_DECLS=0 if your system's include files do not declare
+#	functions like 'link' or variables like 'tzname' required by POSIX
+#  -DHAVE_SETENV=0 if your system lacks the setenv function
+#  -DHAVE_SNPRINTF=0 if your system lacks the snprintf function
+#  -DHAVE_STDCKDINT_H=0 if neither <stdckdint.h> nor substitutes like
+#	__builtin_add_overflow work*
+#  -DHAVE_STDINT_H=0 if <stdint.h> does not work*
+#  -DHAVE_STRFTIME_L if <time.h> declares locale_t and strftime_l
+#  -DHAVE_STRDUP=0 if your system lacks the strdup function
+#  -DHAVE_STRTOLL=0 if your system lacks the strtoll function
+#  -DHAVE_SYMLINK=0 if your system lacks the symlink function
+#  -DHAVE_SYS_STAT_H=0 if <sys/stat.h> does not work*
+#  -DHAVE_TZSET=0 if your system lacks a tzset function
+#  -DHAVE_UNISTD_H=0 if <unistd.h> does not work*
+#  -DHAVE_UTMPX_H=0 if <utmpx.h> does not work*
+#  -Dlocale_t=XXX if your system uses XXX instead of locale_t
+#  -DRESERVE_STD_EXT_IDS if your platform reserves standard identifiers
+#	with external linkage, e.g., applications cannot define 'localtime'.
+#  -Dssize_t=long on hosts like MS-Windows that lack ssize_t
+#  -DSUPPRESS_TZDIR to not prepend TZDIR to file names; this has
+#	security implications and is not recommended for general use
+#  -DTHREAD_SAFE to make localtime.c thread-safe, as POSIX requires;
+#	not needed by the main-program tz code, which is single-threaded.
+#	Append other compiler flags as needed, e.g., -pthread on GNU/Linux.
+#  -Dtime_tz=\"T\" to use T as the time_t type, rather than the system time_t
+#	This is intended for internal use only; it mangles external names.
+#  -DTZ_DOMAIN=\"foo\" to use "foo" for gettext domain name; default is "tz"
+#  -DTZ_DOMAINDIR=\"/path\" to use "/path" for gettext directory;
+#	the default is system-supplied, typically "/usr/lib/locale"
+#  -DTZDEFRULESTRING=\",date/time,date/time\" to default to the specified
+#	DST transitions if the time zone files cannot be accessed
+#  -DUNINIT_TRAP if reading uninitialized storage can cause problems
+#	other than simply getting garbage data
+#  -DUSE_LTZ=0 to build zdump with the system time zone library
+#	Also set TZDOBJS=zdump.o and CHECK_TIME_T_ALTERNATIVES= below.
+#  -DZIC_BLOAT_DEFAULT=\"fat\" to default zic's -b option to "fat", and
+#	similarly for "slim".  Fat TZif files work around incompatibilities
+#	and bugs in some TZif readers, notably older ones that
+#	ignore or otherwise mishandle 64-bit data in TZif files;
+#	however, fat TZif files may trigger bugs in newer TZif readers.
+#	Slim TZif files are more efficient, and are the default.
+#  -DZIC_MAX_ABBR_LEN_WO_WARN=3
+#	(or some other number) to set the maximum time zone abbreviation length
+#	that zic will accept without a warning (the default is 6)
+#  $(GCC_DEBUG_FLAGS) if you are using recent GCC and want lots of checking
+#
+# * Options marked "*" can be omitted if your compiler is C23 compatible.
+#
+# Select instrumentation via "make GCC_INSTRUMENT='whatever'".
+GCC_INSTRUMENT = \
+  -fsanitize=undefined -fsanitize-address-use-after-scope \
+  -fsanitize-undefined-trap-on-error -fstack-protector
+# Omit -fanalyzer from GCC_DEBUG_FLAGS, as it makes GCC too slow.
+GCC_DEBUG_FLAGS = -DGCC_LINT -g3 -O3 -fno-common \
+  $(GCC_INSTRUMENT) \
+  -Wall -Wextra \
+  -Walloc-size-larger-than=100000 -Warray-bounds=2 \
+  -Wbad-function-cast -Wbidi-chars=any,ucn -Wcast-align=strict -Wdate-time \
+  -Wdeclaration-after-statement -Wdouble-promotion \
+  -Wduplicated-branches -Wduplicated-cond \
+  -Wformat=2 -Wformat-overflow=2 -Wformat-signedness -Wformat-truncation \
+  -Wimplicit-fallthrough=5 -Winit-self -Wlogical-op \
+  -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
+  -Wnull-dereference \
+  -Wold-style-definition -Woverlength-strings -Wpointer-arith \
+  -Wshadow -Wshift-overflow=2 -Wstrict-overflow \
+  -Wstrict-prototypes -Wstringop-overflow=4 \
+  -Wstringop-truncation -Wsuggest-attribute=cold \
+  -Wsuggest-attribute=const -Wsuggest-attribute=format \
+  -Wsuggest-attribute=malloc \
+  -Wsuggest-attribute=noreturn -Wsuggest-attribute=pure \
+  -Wtrampolines -Wundef -Wuninitialized -Wunused-macros -Wuse-after-free=3 \
+  -Wvariadic-macros -Wvla -Wwrite-strings \
+  -Wno-address -Wno-format-nonliteral -Wno-sign-compare \
+  -Wno-type-limits
+#
+# If your system has a "GMT offset" field in its "struct tm"s
+# (or if you decide to add such a field in your system's "time.h" file),
+# add the name to a define such as
+#	-DTM_GMTOFF=tm_gmtoff
+# to the end of the "CFLAGS=" line.  If not defined, the code attempts to
+# guess TM_GMTOFF from other macros; define NO_TM_GMTOFF to suppress this.
+# Similarly, if your system has a "zone abbreviation" field, define
+#	-DTM_ZONE=tm_zone
+# and define NO_TM_ZONE to suppress any guessing.  Although these two fields
+# not required by POSIX, a future version of POSIX is planned to require them
+# and they are widely available on GNU/Linux and BSD systems.
+#
+# The next batch of options control support for external variables
+# exported by tzcode.  In practice these variables are less useful
+# than TM_GMTOFF and TM_ZONE.  However, most of them are standardized.
+# #
+# # To omit or support the external variable "tzname", add one of:
+# #	-DHAVE_TZNAME=0 # do not support "tzname"
+# #	-DHAVE_TZNAME=1 # support "tzname", which is defined by system library
+# #	-DHAVE_TZNAME=2 # support and define "tzname"
+# # to the "CFLAGS=" line.  "tzname" is required by POSIX 1988 and later.
+# # If not defined, the code attempts to guess HAVE_TZNAME from other macros.
+# # Warning: unless time_tz is also defined, HAVE_TZNAME=1 can cause
+# # crashes when combined with some platforms' standard libraries,
+# # presumably due to memory allocation issues.
+# #
+# # To omit or support the external variables "timezone" and "daylight", add
+# #	-DUSG_COMPAT=0 # do not support
+# #	-DUSG_COMPAT=1 # support, and variables are defined by system library
+# #	-DUSG_COMPAT=2 # support and define variables
+# # to the "CFLAGS=" line; "timezone" and "daylight" are inspired by
+# # Unix Systems Group code and are required by POSIX 2008 (with XSI) and later.
+# # If not defined, the code attempts to guess USG_COMPAT from other macros.
+# #
+# # To support the external variable "altzone", add
+# #	-DALTZONE=0 # do not support
+# #	-DALTZONE=1 # support "altzone", which is defined by system library
+# #	-DALTZONE=2 # support and define "altzone"
+# # to the end of the "CFLAGS=" line; although "altzone" appeared in
+# # System V Release 3.1 it has not been standardized.
+# # If not defined, the code attempts to guess ALTZONE from other macros.
+#
+# If you want functions that were inspired by early versions of X3J11's work,
+# add
+#	-DSTD_INSPIRED
+# to the end of the "CFLAGS=" line.  This arranges for the following
+# functions to be added to the time conversion library.
+# "offtime" is like "gmtime" except that it accepts a second (long) argument
+# that gives an offset to add to the time_t when converting it.
+# "timelocal" is equivalent to "mktime".
+# "timeoff" is like "timegm" except that it accepts a second (long) argument
+# that gives an offset to use when converting to a time_t.
+# "posix2time" and "time2posix" are described in an included manual page.
+# X3J11's work does not describe any of these functions.
+# These functions may well disappear in future releases of the time
+# conversion package.
+#
+# If you don't want functions that were inspired by NetBSD, add
+#	-DNETBSD_INSPIRED=0
+# to the end of the "CFLAGS=" line.  Otherwise, the functions
+# "localtime_rz", "mktime_z", "tzalloc", and "tzfree" are added to the
+# time library, and if STD_INSPIRED is also defined the functions
+# "posix2time_z" and "time2posix_z" are added as well.
+# The functions ending in "_z" (or "_rz") are like their unsuffixed
+# (or suffixed-by-"_r") counterparts, except with an extra first
+# argument of opaque type timezone_t that specifies the timezone.
+# "tzalloc" allocates a timezone_t value, and "tzfree" frees it.
+#
+# If you want to allocate state structures in localtime, add
+#	-DALL_STATE
+# to the end of the "CFLAGS=" line.  Storage is obtained by calling malloc.
+#
+# NIST-PCTS:151-2, Version 1.4, (1993-12-03) is a test suite put
+# out by the National Institute of Standards and Technology
+# which claims to test C and Posix conformance.  If you want to pass PCTS, add
+#	-DPCTS
+# to the end of the "CFLAGS=" line.
+#
+# If you want strict compliance with XPG4 as of 1994-04-09, add
+#	-DXPG4_1994_04_09
+# to the end of the "CFLAGS=" line.  This causes "strftime" to always return
+# 53 as a week number (rather than 52 or 53) for January days before
+# January's first Monday when a "%V" format is used and January 1
+# falls on a Friday, Saturday, or Sunday.
+
+CFLAGS=
+
+# Linker flags.  Default to $(LFLAGS) for backwards compatibility
+# to release 2012h and earlier.
+
+LDFLAGS=	$(LFLAGS)
+
+# For leap seconds, this Makefile uses LEAPSECONDS='-L leapseconds' in
+# submake command lines.  The default is no leap seconds.
+
+LEAPSECONDS=
+
+# The zic command and its arguments.
+
+zic=		./zic
+ZIC=		$(zic) $(ZFLAGS)
+
+# To shrink the size of installed TZif files,
+# append "-r @N" to omit data before N-seconds-after-the-Epoch.
+# To grow the files and work around bugs in older applications,
+# possibly at the expense of introducing bugs in newer ones,
+# append "-b fat"; see ZIC_BLOAT_DEFAULT above.
+# See the zic man page for more about -b and -r.
+ZFLAGS=
+
+# How to use zic to install TZif files.
+
+ZIC_INSTALL=	$(ZIC) -d '$(DESTDIR)$(TZDIR)' $(LEAPSECONDS)
+
+# The name of a Posix-compliant 'awk' on your system.
+# mawk 1.3.3 and Solaris 10 /usr/bin/awk do not work.
+# Also, it is better (though not essential) if 'awk' supports UTF-8,
+# and unfortunately mawk and busybox awk do not support UTF-8.
+# Try AWK=gawk or AWK=nawk if your awk has the abovementioned problems.
+AWK=		awk
+
+# The full path name of a Posix-compliant shell, preferably one that supports
+# the Korn shell's 'select' statement as an extension.
+# These days, Bash is the most popular.
+# It should be OK to set this to /bin/sh, on platforms where /bin/sh
+# lacks 'select' or doesn't completely conform to Posix, but /bin/bash
+# is typically nicer if it works.
+KSHELL=		/bin/bash
+
+# Name of curl <https://curl.haxx.se/>, used for HTML validation.
+CURL=		curl
+
+# Name of GNU Privacy Guard <https://gnupg.org/>, used to sign distributions.
+GPG=		gpg
+
+# This expensive test requires USE_LTZ.
+# To suppress it, define this macro to be empty.
+CHECK_TIME_T_ALTERNATIVES = check_time_t_alternatives
+
+# SAFE_CHAR is a regular expression that matches a safe character.
+# Some parts of this distribution are limited to safe characters;
+# others can use any UTF-8 character.
+# For now, the safe characters are a safe subset of ASCII.
+# The caller must set the shell variable 'sharp' to the character '#',
+# since Makefile macros cannot contain '#'.
+# TAB_CHAR is a single tab character, in single quotes.
+TAB_CHAR=	'	'
+SAFE_CHARSET1=	$(TAB_CHAR)' !\"'$$sharp'$$%&'\''()*+,./0123456789:;<=>?@'
+SAFE_CHARSET2=	'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\^_`'
+SAFE_CHARSET3=	'abcdefghijklmnopqrstuvwxyz{|}~'
+SAFE_CHARSET=	$(SAFE_CHARSET1)$(SAFE_CHARSET2)$(SAFE_CHARSET3)
+SAFE_CHAR=	'[]'$(SAFE_CHARSET)'-]'
+
+# These characters are Latin-1, and so are likely to be displayable
+# even in editors with limited character sets.
+UNUSUAL_OK_LATIN_1 = «°±»½¾×
+# This IPA symbol is represented in Unicode as the composition of
+# U+0075 and U+032F, and U+032F is not considered alphabetic by some
+# grep implementations that do not grok composition.
+UNUSUAL_OK_IPA = u̯
+# Non-ASCII non-letters that OK_CHAR allows, as these characters are
+# useful in commentary.
+UNUSUAL_OK_CHARSET= $(UNUSUAL_OK_LATIN_1)$(UNUSUAL_OK_IPA)
+
+# Put this in a bracket expression to match spaces.
+s = [:space:]
+
+# OK_CHAR matches any character allowed in the distributed files.
+# This is the same as SAFE_CHAR, except that UNUSUAL_OK_CHARSET and
+# multibyte letters are also allowed so that commentary can contain a
+# few safe symbols and people's names and can quote non-English sources.
+# Other non-letters are limited to ASCII renderings for the
+# convenience of maintainers using XEmacs 21.5.34, which by default
+# mishandles Unicode characters U+0100 and greater.
+OK_CHAR=	'[][:alpha:]$(UNUSUAL_OK_CHARSET)'$(SAFE_CHARSET)'-]'
+
+# SAFE_LINE matches a line of safe characters.
+# SAFE_SHARP_LINE is similar, except any OK character can follow '#';
+# this is so that comments can contain non-ASCII characters.
+# OK_LINE matches a line of OK characters.
+SAFE_LINE=	'^'$(SAFE_CHAR)'*$$'
+SAFE_SHARP_LINE='^'$(SAFE_CHAR)'*('$$sharp$(OK_CHAR)'*)?$$'
+OK_LINE=	'^'$(OK_CHAR)'*$$'
+
+# Flags to give 'tar' when making a distribution.
+# Try to use flags appropriate for GNU tar.
+GNUTARFLAGS= --format=pax --pax-option='delete=atime,delete=ctime' \
+  --numeric-owner --owner=0 --group=0 \
+  --mode=go+u,go-w --sort=name
+TARFLAGS=	`if tar $(GNUTARFLAGS) --version >/dev/null 2>&1; \
+		 then echo $(GNUTARFLAGS); \
+		 else :; \
+		 fi`
+
+# Flags to give 'gzip' when making a distribution.
*** 33390 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202301310946.30V9kkYu041243>