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])