summaryrefslogtreecommitdiffstats
path: root/debian/bin/release-update
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 08:09:27 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 08:09:27 +0000
commit45acc200b4c8b4e03d0d8cb46258ef21720e90c3 (patch)
tree75adeca7e23385cb92ef6211455bc6bf3b5b231f /debian/bin/release-update
parentAdding upstream version 20230625. (diff)
downloadfirmware-nonfree-45acc200b4c8b4e03d0d8cb46258ef21720e90c3.tar.xz
firmware-nonfree-45acc200b4c8b4e03d0d8cb46258ef21720e90c3.zip
Adding debian version 20230625-2.debian/20230625-2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/bin/release-update')
-rwxr-xr-xdebian/bin/release-update95
1 files changed, 95 insertions, 0 deletions
diff --git a/debian/bin/release-update b/debian/bin/release-update
new file mode 100755
index 0000000..5eb75cd
--- /dev/null
+++ b/debian/bin/release-update
@@ -0,0 +1,95 @@
+#!/usr/bin/python3
+
+import sys
+sys.path.append(sys.path[0] + "/../lib/python")
+
+import os, re, subprocess
+import locale
+
+from debian_linux.debian import Changelog, Version
+
+def print_stable_log(log, cur_ver, new_ver):
+ log.flush() # serialise our output with git's
+ subprocess.check_call(['git', 'log', '--reverse', '--no-merges',
+ '--pretty= - %s',
+ '{}..{}'.format(cur_ver, new_ver)],
+ stdout=log)
+
+def main(repo, new_ver):
+ locale.setlocale(locale.LC_CTYPE, "C.UTF-8")
+ os.environ['GIT_DIR'] = repo + '/.git'
+
+ changelog = Changelog(version=Version)
+ cur_ver = changelog[0].version.upstream
+
+ # Nothing to update
+ if cur_ver == new_ver:
+ sys.exit(0)
+
+ new_pkg_ver = new_ver + '-1'
+
+ # Three possible cases:
+ # 1. The current version has been released so we need to add a new
+ # version to the changelog.
+ # 2. The current version has not been released so we're changing its
+ # version string.
+ # (a) There are no stable updates included in the current version,
+ # so we need to insert an introductory line, the URL(s) and
+ # git log(s) and a blank line at the top.
+ # (b) One or more stable updates are already included in the current
+ # version, so we need to insert the URL(s) and git log(s) after
+ # them.
+
+ changelog_intro = 'New upstream version:'
+
+ # Case 1
+ if changelog[0].distribution != 'UNRELEASED':
+ subprocess.check_call(['dch', '-v', new_pkg_ver, '-D', 'UNRELEASED',
+ changelog_intro])
+
+ with open('debian/changelog', 'r') as old_log:
+ with open('debian/changelog.new', 'w') as new_log:
+ line_no = 0
+ inserted = False
+ intro_line = ' * {}\n'.format(changelog_intro)
+
+ for line in old_log:
+ line_no += 1
+
+ # Case 2
+ if changelog[0].distribution == 'UNRELEASED' and line_no == 1:
+ print('{} ({}) UNRELEASED; urgency={}'
+ .format(changelog[0].source, new_pkg_ver,
+ changelog[0].urgency),
+ file=new_log)
+ continue
+
+ if not inserted:
+ # Case 2(a)
+ if line_no == 3 and line != intro_line:
+ new_log.write(intro_line)
+ print_stable_log(new_log, cur_ver, new_ver)
+ new_log.write('\n')
+ inserted = True
+ # Case 1 or 2(b)
+ elif line_no > 3 and line == '\n':
+ print_stable_log(new_log, cur_ver, new_ver)
+ inserted = True
+
+ # Check that we inserted before hitting the end of the
+ # first version entry
+ assert not (line.startswith(' -- ') and not inserted)
+
+ new_log.write(line)
+
+ os.rename('debian/changelog.new', 'debian/changelog')
+
+if __name__ == '__main__':
+ if len(sys.argv) != 3:
+ print('''\
+Usage: {} REPO VERSION
+REPO is the git repository to generate a changelog from
+VERSION is the upstream version'''.format(sys.argv[0]),
+ file=sys.stderr)
+ sys.exit(2)
+ main(*sys.argv[1:])