[tz] [PROPOSED] One line per metadatum in tzdata.zi

Paul Eggert eggert at cs.ucla.edu
Tue Jul 31 07:32:06 UTC 2018


With the new metadata, version lines could be long.  E.g., 'make
DATAFORM=rearguard REDO=posix_only PACKRATDATA=backzone BACKWARD='
could generate a tzdata.zi line like this:
  # version 2018e-57-gba7f088,dataform=rearguard,redo=posix_only,ddeps=(backzone,!backward)
which is quite a mouthful and is stretching the definition of
"version".  To avoid the problem, output a separate comment line
for each metadata component instead, like this:
  # version 2018e-57-gba7f088
  # dataform rearguard
  # redo posix_only
  # ddeps backzone !backward
This is easier to read and to parse and should scale better
if we add more metadata later.
* NEWS: Mention this.
* zishrink.awk: Output a separate line for each metadatum.

2018-07-21  Paul Eggert  <eggert at cs.ucla.edu>

Use space, not comma, in tzdata.zi "# version"
* zishrink.awk: Use space instead of comma to separate original
version string from auxiliary configuration information.  This
saves two bytes and (more important) is easier for humans to read.
---
 NEWS         | 16 ++++++++--------
 zishrink.awk | 20 ++++++++++----------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/NEWS b/NEWS
index 413d649..a3fc622 100644
--- a/NEWS
+++ b/NEWS
@@ -92,14 +92,14 @@ Unreleased, experimental changes
     tzdata.zi is now more stable from release to release.  (Problem
     noted by Tom Lane.)  It is also a bit shorter.
 
-    tzdata.zi's version comment now contains information about which
-    data format was selected, which input files were used, and how
-    leap seconds are treated.  (Problems noted by Lester Caine and
-    Brian Inglis.)  If the Makefile defaults are used, no text is
-    appended to the version comment, for backward compatibility.
-    A redistributor intending to alter its copy of the files should
-    also append "-SOMETHING" to the 'version' file's first line, where
-    "SOMETHING" identifies what was changed.
+    tzdata.zi now can contain comment lines documenting configuration
+    information, such as which data format was selected, which input
+    files were used, and how leap seconds are treated.  (Problems
+    noted by Lester Caine and Brian Inglis.)  If the Makefile defaults
+    are used these comment lines are absent, for backward
+    compatibility.  A redistributor intending to alter its copy of the
+    files should also append "-LABEL" to the 'version' file's first
+    line, where "LABEL" identifies the redistributor's change.
 
 
 Release 2018e - 2018-05-01 23:42:51 -0700
diff --git a/zishrink.awk b/zishrink.awk
index 162e515..74e0de9 100644
--- a/zishrink.awk
+++ b/zishrink.awk
@@ -287,30 +287,30 @@ BEGIN {
   # that affect the output of this script, you should append '-SOMETHING'
   # to the contents of 'version', where SOMETHING identifies what was changed.
 
-  if (dataform != "main") {
-    version = version ",dataform=" dataform
-  }
-  if (redo != "posix_right") {
-    version = version ",redo=" redo
-  }
   ndeps = split(deps, dep)
   ddeps = ""
   for (i = 1; i <= ndeps; i++) {
     if (default_dep[dep[i]]) {
       default_dep[dep[i]]++
     } else {
-      ddeps = ddeps "," dep[i]
+      ddeps = ddeps " " dep[i]
     }
   }
   for (d in default_dep) {
     if (default_dep[d] == 1) {
-      ddeps = ddeps ",!" d
+      ddeps = ddeps " !" d
     }
   }
+  print "# version", version
+  if (dataform != "main") {
+    print "# dataform", dataform
+  }
+  if (redo != "posix_right") {
+    print "# redo " redo
+  }
   if (ddeps) {
-    version = version ",ddeps=(" substr(ddeps, 2) ")"
+    print "# ddeps" ddeps
   }
-  print "# version", version
   print "# This zic input file is in the public domain."
 
   prehash_rule_names()
-- 
2.7.4



More information about the tz mailing list