Revert "Revert "Fix scripts/packages/convert_changelog to read the changelog correctly""

Roll-forward with fix: the original change did not produced any changelog if
this was not a release branch, use a default, empty one in that case. The
debian version number will then be LAST_VERSION~HEAD

This reverts commit e4cf9aa8b63173326cfe72ba76be4303bc038def.

--
Change-Id: I9e19b1132570ea20d90053734418f2703b1a641e
Reviewed-on: https://cr.bazel.build/7976
PiperOrigin-RevId: 142525180
MOS_MIGRATED_REVID=142525180
diff --git a/scripts/packages/convert_changelog.py b/scripts/packages/convert_changelog.py
index 78edbda..07ed9d4 100644
--- a/scripts/packages/convert_changelog.py
+++ b/scripts/packages/convert_changelog.py
@@ -18,28 +18,39 @@
 import sys
 
 
-def main(input_file, output_file):
+def main(input_file, changelog_file, output_file):
   changelog_out = open(output_file, "w")
-  time_stamp = None
-  with open(input_file, "r") as changelog_in:
-    for line in changelog_in:
+  changelog = None
+  version = None
+  with open(input_file, "r") as status_file:
+    for line in status_file:
       line = line.strip()
 
-      if line.startswith("```") or line.startswith("Baseline"):
-        continue
+      if line.startswith("RELEASE_NOTES"):
+        changelog = line[14:].strip().replace("\f", "\n")
+      elif line.startswith("RELEASE_NAME"):
+        version = line[13:].strip()
 
-      if line.startswith("## Release"):
-        if time_stamp:
-          changelog_out.write(
-              "\n -- The Bazel Authors <bazel-dev@googlegroups.com>  %s\n\n" %
-              time_stamp)
-        parts = line.split(" ")
-        version = parts[2]
-        time_stamp = datetime.strptime(
-            parts[3], "(%Y-%m-%d)").strftime("%a, %d %b %Y %H:%M:%S +0100")
-        changelog_out.write("bazel (%s) unstable; urgency=low\n" % version)
+  if changelog:
+    time_stamp = None
+    lines = changelog.split("\n")
+    header = lines[0]
+    lines = lines[4:]  # Skip the header
+    if lines[0] == "Cherry picks:":
+      # Skip cherry picks list
+      i = 1
+      while lines[i].strip():
+        i += 1
+      lines = lines[i + 1:]
 
-      elif line.startswith("+") or line.startswith("-"):
+    # Process header
+    parts = header.split(" ")
+    time_stamp = datetime.strptime(
+        parts[2], "(%Y-%m-%d)").strftime("%a, %d %b %Y %H:%M:%S +0100")
+    changelog_out.write("bazel (%s) unstable; urgency=low\n" % version)
+
+    for line in lines:
+      if line.startswith("+") or line.startswith("-"):
         parts = line.split(" ")
         line = "*" + line[1:]
         changelog_out.write("  %s\n" % line)
@@ -54,7 +65,24 @@
       changelog_out.write(
           "\n -- The Bazel Authors <bazel-dev@googlegroups.com>  %s\n\n" %
           time_stamp)
-
+  else:
+    # Develeopment version, generate a changelog from the change log file
+    with open(changelog_file, "r") as changelog_in:
+      for line in changelog_in:
+        line = line.strip()
+        if line.startswith("## Release"):
+          parts = line.split(" ")
+          version = parts[2]
+          time_stamp = datetime.strptime(
+              parts[3], "(%Y-%m-%d)").strftime("%a, %d %b %Y %H:%M:%S +0100")
+          changelog_out.write("bazel (%s~HEAD) unstable; urgency=low\n" %
+                              version)
+          changelog_out.write("    Development version\n")
+          changelog_out.write(
+              "\n -- The Bazel Authors <bazel-dev@googlegroups.com>  %s\n\n" %
+              time_stamp)
+          # Stop after parsing latest release
+          return
 
 if __name__ == "__main__":
-  main(sys.argv[1], sys.argv[2])
+  main(sys.argv[1], sys.argv[2], sys.argv[3])