Date: Mon, 19 Aug 2019 03:09:03 +0000 (UTC) From: Thomas Munro <tmunro@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r509250 - in head/misc/zoneinfo: . files Message-ID: <201908190309.x7J393EJ059418@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: tmunro (src committer) Date: Mon Aug 19 03:09:03 2019 New Revision: 509250 URL: https://svnweb.freebsd.org/changeset/ports/509250 Log: misc/zoneinfo: install zone1970.tab and other fixes Install zone1970.tab in addition to zone.tab (like D20646 for base). The old logic to remove countries from zone.tab doesn't port to zone1970.tab since some lines might have to be patched more than once. Replace it with some awk. Remove LEAPFILE reference that wasn't being set anyway. Fix plist entry for Etc/UCT, which is (since 2019a) part of "backward" and not present otherwise. Make BACKWARD not be the default, since (a) it's not the base system's default and (b) that stuff is all deprecated. Update comment about check-plist to include a reminder to check both with and without BACKWARD (this would have caught the existing plist error). Remove no-longer-needed include of bsd.port.pre.mk. Fix location and name of iso3166 file in comments in zone1970.tab, also to match base system. Add back a test-pkgplist target, because it turns out check-plist is not strict enough to handle the case of moving entries into or out of the "backward" set; check-plist doesn't error if a file is present in STAGEDIR but is commented out in the plist, but we want that to be noticed. Submitted by: Andrew Gierth <andrew@tao11.riddles.org.uk> Reviewed by: philip, skreuzer, tmunro Approved by: skreuzer (maintainer), allanjude (src mentor) Differential Revision: https://reviews.freebsd.org/D20981 Added: head/misc/zoneinfo/files/patch-etcetera (contents, props changed) head/misc/zoneinfo/files/patch-zone1970.tab (contents, props changed) Deleted: head/misc/zoneinfo/files/patchremove-ax head/misc/zoneinfo/files/patchremove-bl head/misc/zoneinfo/files/patchremove-bq head/misc/zoneinfo/files/patchremove-cw head/misc/zoneinfo/files/patchremove-gg head/misc/zoneinfo/files/patchremove-im head/misc/zoneinfo/files/patchremove-je head/misc/zoneinfo/files/patchremove-me head/misc/zoneinfo/files/patchremove-mf head/misc/zoneinfo/files/patchremove-rs head/misc/zoneinfo/files/patchremove-ss head/misc/zoneinfo/files/patchremove-sx Modified: head/misc/zoneinfo/Makefile head/misc/zoneinfo/pkg-plist Modified: head/misc/zoneinfo/Makefile ============================================================================== --- head/misc/zoneinfo/Makefile Mon Aug 19 02:51:09 2019 (r509249) +++ head/misc/zoneinfo/Makefile Mon Aug 19 03:09:03 2019 (r509250) @@ -3,6 +3,7 @@ PORTNAME= zoneinfo DISTVERSION= 2019b +PORTREVISION= 1 CATEGORIES= misc MASTER_SITES= https://data.iana.org/time-zones/releases/ \ ftp://ftp.iana.org/tz/releases/ @@ -18,61 +19,88 @@ PREFIX= /usr NO_ARCH= yes OPTIONS_DEFINE= BACKWARD -OPTIONS_DEFAULT= BACKWARD +OPTIONS_DEFAULT= OPTIONS_SUB= yes -BACKWARD_DESC= Include backwards compatible zones +BACKWARD_DESC= Include backwards compatible zones +BACKWARD_VARS= tzfiles+=backward TZFILES= africa antarctica asia australasia etcetera europe \ factory northamerica southamerica systemv POSIXRULES= America/New_York -.include <bsd.port.options.mk> +# Run both of: +# "make DEVELOPER=1 WITHOUT=BACKWARD do-clean test-pkgplist" +# and +# "make DEVELOPER=1 WITH=BACKWARD do-clean test-pkgplist" +# before commiting! -.if ${PORT_OPTIONS:MBACKWARD} -TZFILES+= backward -.endif - -# Run with "DEVELOPER=1 make check-plist" before commiting! - # Make sure it breaks when the distfile isn't there anymore. .if !defined(PACKAGE_BUILDING) MASTER_SITES+= http://people.freebsd.org/~edwin/ .endif -.include <bsd.port.pre.mk> +# tzsetup objects (fatally) if any entry in zone.tab or zone1970.tab +# refers to a country code that doesn't exist in misc/iso3166. While +# arguably that should be fixed, for compatibility we remove such +# entries here to avoid the problem. +# +# This used to be done by adding patch files for each country to +# remove, but that doesn't work for zone1970.tab. +# +# We generate a list of all 2-letter codes that are NOT in iso3166; +# then, for any entry in zone.tab or zone1970.tab that contains a bad +# code: first emit a commented-out version of the line, then a version +# with the bad codes stripped out of the first field (unless this +# leaves the first field empty). -# The following country codes can be missing from /usr/share/misc/iso3166 and -# shouldn't appear in the zoneinfo file. -MISSING= ax bl bq cw gg im je me mf rs ss sx +post-patch: + cd ${WRKSRC}; \ + badc=$$(${AWK} '/^[^\#]/ { t[$$1]=1; }; \ + END { for (i=0; i<676; ++i) { \ + c = sprintf("%c%c", 65+int(i/26), 65+(i%26)); \ + if (!(c in t)) print c; \ + } \ + }' \ + /usr/share/misc/iso3166 | \ + ${SED} -n -e '1h; 1!H; $${g;s/\n/|/g;p;}'); \ + for fn in zone.tab zone1970.tab; do \ + ${MV} $${fn} $${fn}.bak; \ + ${AWK} -v FS="\t" -v OFS="\t" -v re="(^|,)($${badc})" \ + '/^[^#]/ && $$1 ~ re { \ + print "#" $$0; \ + gsub(re,"",$$1); \ + sub(/^,/,"",$$1); \ + }; \ + $$1 != "" { print; }' <$${fn}.bak >$${fn}; \ + done -.ifndef NOMISSING -.for M in ${MISSING} -HAS_${M:tu}!= ${GREP} -c ^${M:tu} /usr/share/misc/iso3166 || ${TRUE} -.if ${HAS_${M:tu}} == "0" -EXTRA_PATCHES+= ${FILESDIR}/patchremove-${M} -.endif -.endfor -.endif - do-build: umask 022; \ cd ${WRKSRC}; \ zic -d ${WRKSRC}/zoneinfo -p ${POSIXRULES} -m ${NOBINMODE} \ - ${LEAPFILE} -y ${.OBJDIR}/yearistype ${TZFILES} + -y ${.OBJDIR}/yearistype ${TZFILES} do-install: ${MKDIR} ${STAGEDIR}${PREFIX}/share/zoneinfo - ${CP} -R -p ${WRKSRC}/zoneinfo/ ${STAGEDIR}${PREFIX}/share/zoneinfo + (cd ${WRKSRC}/zoneinfo && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/share/zoneinfo) ${INSTALL_DATA} ${WRKSRC}/zone.tab ${STAGEDIR}${PREFIX}/share/zoneinfo + ${INSTALL_DATA} ${WRKSRC}/zone1970.tab ${STAGEDIR}${PREFIX}/share/zoneinfo -test-patches: -.for M in ${MISSING} - make clean - NOMISSING=1 EXTRA_PATCHES=${FILESDIR}/patchremove-${M} make patch -.endfor +# check-plist is too lenient for us; it doesn't care if there are +# files in the stage dir that are commented out in plist due to port +# options. But we need to check for an exact match, otherwise the +# final package may be incorrect if entries move into or out of the +# "backward" file. +# +# So this rule makes the additional check that there must be no file in +# STAGEDIR not accounted for by .plist-files-no-comments. -test-pkgplist: - for f in $$(find work/stage/usr/share/zoneinfo/ | sed -e 's,work/stage/usr/share/zoneinfo/,,' ); do if [ $$(grep -c $$f pkg-plist) -eq 0 ]; then echo $$f; fi ; done +test-pkgplist: check-plist + @(cd ${STAGEDIR} && ${FIND} . -type f -print) | \ + ${SED} -e 's:^[.]::' | sort | \ + ${COMM} -23 -- - ${WRKDIR}/.plist-files-no-comments | \ + while read -r f; do echo "MISSING FROM PLIST: $$f" >&2; echo fail; done | \ + ! ${GREP} fail >/dev/null -.include <bsd.port.post.mk> +.include <bsd.port.mk> Added: head/misc/zoneinfo/files/patch-etcetera ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/misc/zoneinfo/files/patch-etcetera Mon Aug 19 03:09:03 2019 (r509250) @@ -0,0 +1,14 @@ +--- etcetera.orig 2019-07-23 03:26:15 UTC ++++ etcetera +@@ -22,8 +22,10 @@ Zone Etc/UTC 0 - UTC + + # The following link uses older naming conventions, + # but it belongs here, not in the file 'backward', +-# as functions like gmtime load the "GMT" file to handle leap seconds properly. ++# as functions like gmtime load the "UTC" file to handle leap seconds properly. + # We want this to work even on installations that omit the other older names. ++Link Etc/UTC UTC ++# Do the same for GMT for compatibility reasons. + Link Etc/GMT GMT + + Link Etc/UTC Etc/Universal Added: head/misc/zoneinfo/files/patch-zone1970.tab ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/misc/zoneinfo/files/patch-zone1970.tab Mon Aug 19 03:09:03 2019 (r509250) @@ -0,0 +1,12 @@ +--- zone1970.tab.orig 2019-06-22 19:39:01 UTC ++++ zone1970.tab +@@ -9,7 +9,8 @@ + # UTF-8 encoding. The columns of the table are as follows: + # + # 1. The countries that overlap the timezone, as a comma-separated list +-# of ISO 3166 2-character country codes. See the file 'iso3166.tab'. ++# of ISO 3166 2-character country codes. ++# See the file '/usr/share/misc/iso3166'. + # 2. Latitude and longitude of the timezone's principal location + # in ISO 6709 sign-degrees-minutes-seconds format, + # either ±DDMM±DDDMM or ±DDMMSS±DDDMMSS, Modified: head/misc/zoneinfo/pkg-plist ============================================================================== --- head/misc/zoneinfo/pkg-plist Mon Aug 19 02:51:09 2019 (r509249) +++ head/misc/zoneinfo/pkg-plist Mon Aug 19 03:09:03 2019 (r509250) @@ -351,7 +351,6 @@ %%DATADIR%%/Etc/GMT-9 %%DATADIR%%/Etc/GMT0 %%DATADIR%%/Etc/Greenwich -%%DATADIR%%/Etc/UCT %%DATADIR%%/Etc/UTC %%DATADIR%%/Etc/Universal %%DATADIR%%/Etc/Zulu @@ -472,9 +471,11 @@ %%DATADIR%%/Pacific/Tongatapu %%DATADIR%%/Pacific/Wake %%DATADIR%%/Pacific/Wallis +%%DATADIR%%/UTC %%DATADIR%%/WET %%DATADIR%%/posixrules %%DATADIR%%/zone.tab +%%DATADIR%%/zone1970.tab %%BACKWARD%%%%DATADIR%%/Africa/Asmera %%BACKWARD%%%%DATADIR%%/Africa/Timbuktu %%BACKWARD%%%%DATADIR%%/America/Argentina/ComodRivadavia @@ -542,6 +543,7 @@ %%BACKWARD%%%%DATADIR%%/Cuba %%BACKWARD%%%%DATADIR%%/Egypt %%BACKWARD%%%%DATADIR%%/Eire +%%BACKWARD%%%%DATADIR%%/Etc/UCT %%BACKWARD%%%%DATADIR%%/Europe/Belfast %%BACKWARD%%%%DATADIR%%/Europe/Tiraspol %%BACKWARD%%%%DATADIR%%/GB @@ -589,7 +591,6 @@ %%BACKWARD%%%%DATADIR%%/US/Mountain %%BACKWARD%%%%DATADIR%%/US/Pacific %%BACKWARD%%%%DATADIR%%/US/Samoa -%%BACKWARD%%%%DATADIR%%/UTC %%BACKWARD%%%%DATADIR%%/Universal %%BACKWARD%%%%DATADIR%%/W-SU %%BACKWARD%%%%DATADIR%%/Zulu
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201908190309.x7J393EJ059418>