Handle tweaked NEWS headings & protocol change.
authorWayne Davison <wayne@opencoder.net>
Sun, 5 Jul 2020 05:41:16 +0000 (22:41 -0700)
committerWayne Davison <wayne@opencoder.net>
Sun, 5 Jul 2020 06:11:46 +0000 (23:11 -0700)
packaging/pkglib.py
packaging/release-rsync

index e0a3fe8cf11cdd39e6aabd2c1cc4842476dd74e9..b201bf771769c8bee327cd8e0655428d145711d1 100644 (file)
@@ -217,7 +217,7 @@ def get_rsync_version():
 
 
 def get_NEWS_version_info():
-    rel_re = re.compile(r'^\| \d{2} \w{3} \d{4}\s+\|\s+(?P<ver>\d+\.\d+\.\d+)\s+\|\s+(?P<pdate>\d{2} \w{3} \d{4}\s+)?\|\s+(?P<pver>\d+)\s+\|')
+    rel_re = re.compile(r'^\| \S{2} \w{3} \d{4}\s+\|\s+(?P<ver>\d+\.\d+\.\d+)\s+\|\s+(?P<pdate>\d{2} \w{3} \d{4})?\s+\|\s+(?P<pver>\d+)\s+\|')
     last_version = last_protocol_version = None
     pdate = { }
 
@@ -233,12 +233,11 @@ def get_NEWS_version_info():
                     pdate[m['ver']] = m['pdate']
                 if m['ver'] == last_version:
                     last_protocol_version = m['pver']
-                    break
 
     if not last_protocol_version:
         die(f"Unable to determine protocol_version for {last_version}.")
 
-    return last_version, last_protocol_version
+    return last_version, last_protocol_version, pdate
 
 
 def get_protocol_versions():
index 05ec577a48ad5a3600eacfe2e477bf5cf631f1c8..d1a3f590d66dfb33debc6d66940921c08a9a41f5 100755 (executable)
@@ -60,7 +60,7 @@ def main():
     curversion = get_rsync_version()
 
     # All version values are strings!
-    lastversion, last_protocol_version = get_NEWS_version_info()
+    lastversion, last_protocol_version, pdate = get_NEWS_version_info()
     protocol_version, subprotocol_version = get_protocol_versions()
 
     version = curversion
@@ -116,11 +116,8 @@ def main():
         release += '.' + pre
 
     finalversion = re.sub(r'pre\d+', '', version)
-    if protocol_version == last_protocol_version:
-        proto_changed = 'unchanged'
-        proto_change_date = ' ' * 11
-    else:
-        proto_changed = 'changed'
+    proto_changed = protocol_version != last_protocol_version
+    if proto_changed:
         if finalversion in pdate:
             proto_change_date = pdate[finalversion]
         else:
@@ -129,6 +126,8 @@ def main():
                 if re.match(r'^\d\d \w\w\w \d\d\d\d$', ans):
                     break
             proto_change_date = ans
+    else:
+        proto_change_date = ' ' * 11
 
     if 'pre' in lastversion:
         if not pre:
@@ -189,14 +188,17 @@ About to:
             txt = replace_or_die(x_re, r'%s \1' % cl_today, txt, f"Unable to update ChangeLog header in {fn}")
         elif fn == 'rsync.h':
             x_re = re.compile('(#define\s+SUBPROTOCOL_VERSION)\s+(\d+)')
-            repl = lambda m: m[1] + ' ' + '0' if not pre or proto_changed != 'changed' else 1 if m[2] == '0' else m[2]
+            repl = lambda m: m[1] + ' ' + ('0' if not pre or proto_changed else 1 if m[2] == '0' else m[2])
             txt = replace_or_die(x_re, repl, txt, f"Unable to find SUBPROTOCOL_VERSION define in {fn}")
         elif fn == 'NEWS.md':
             efv = re.escape(finalversion)
-            x_re = re.compile(r'^<.+>\s+# NEWS for rsync %s \(UNRELEASED\)\s+Protocol: .+\n' % efv)
+            x_re = re.compile(r'^<.+>\s+# NEWS for rsync %s \(UNRELEASED\)\s+## Changes in this version:\n' % efv
+                    + r'(\n### PROTOCOL NUMBER:\s+- The protocol number was changed to \d+\.\n)?')
             rel_day = 'UNRELEASED' if pre else today
             repl = (f'<a name="{finalversion}"></a>\n\n# NEWS for rsync {finalversion} ({rel_day})\n\n'
-                + f"Protocol: {protocol_version} ({proto_changed})\n")
+                + '## Changes in this version:\n')
+            if proto_changed:
+                repl += f'\n### PROTOCOL NUMBER:\n\n - The protocol number was changed to {protocol_version}.\n'
             good_top = re.sub(r'\(.*?\)', '(UNRELEASED)', repl, 1)
             msg = f"The top lines of {fn} are not in the right format.  It should be:\n" + good_top
             txt = replace_or_die(x_re, repl, txt, msg)