summaryrefslogtreecommitdiffstats
path: root/debian/bin/genpatch-rt
diff options
context:
space:
mode:
Diffstat (limited to 'debian/bin/genpatch-rt')
-rwxr-xr-xdebian/bin/genpatch-rt76
1 files changed, 42 insertions, 34 deletions
diff --git a/debian/bin/genpatch-rt b/debian/bin/genpatch-rt
index e61b5f242..c0f1a611d 100755
--- a/debian/bin/genpatch-rt
+++ b/debian/bin/genpatch-rt
@@ -1,5 +1,6 @@
#!/usr/bin/python3
+import argparse
import codecs
import io
import os
@@ -7,11 +8,10 @@ import os.path
import re
import shutil
import subprocess
-import sys
import tempfile
-def main(source, version=None):
+def main(source, version, verify_signature):
patch_dir = 'debian/patches-rt'
series_name = 'series'
old_series = set()
@@ -52,15 +52,16 @@ def main(source, version=None):
env['GIT_DIR'] = os.path.join(source, '.git')
env['DEBIAN_KERNEL_KEYRING'] = 'rt-signing-key.pgp'
- # Validate tag signature
- gpg_wrapper = os.path.join(os.getcwd(),
- "debian/bin/git-tag-gpg-wrapper")
- verify_proc = subprocess.Popen(
- ['git', '-c', 'gpg.program=%s' % gpg_wrapper,
- 'tag', '-v', 'v%s-rebase' % version],
- env=env)
- if verify_proc.wait():
- raise RuntimeError("GPG tag verification failed")
+ if verify_signature:
+ # Validate tag signature
+ gpg_wrapper = os.path.join(os.getcwd(),
+ "debian/bin/git-tag-gpg-wrapper")
+ verify_proc = subprocess.Popen(
+ ['git', '-c', 'gpg.program=%s' % gpg_wrapper,
+ 'tag', '-v', 'v%s-rebase' % version],
+ env=env)
+ if verify_proc.wait():
+ raise RuntimeError("GPG tag verification failed")
args = ['git', 'format-patch',
'v%s..v%s-rebase' % (up_ver, version)]
@@ -91,21 +92,22 @@ def main(source, version=None):
assert match, 'could not parse version string'
up_ver = match.group(1)
- # Expect an accompanying signature, and validate it
- source_sig = re.sub(r'.[gx]z$', '.sign', source)
- unxz_proc = subprocess.Popen(['xzcat', source],
- stdout=subprocess.PIPE)
- verify_output = subprocess.check_output(
- ['gpgv', '--status-fd', '1',
- '--keyring', 'debian/upstream/rt-signing-key.pgp',
- '--ignore-time-conflict', source_sig, '-'],
- stdin=unxz_proc.stdout)
- if unxz_proc.wait() or \
- not re.search(r'^\[GNUPG:\]\s+VALIDSIG\s',
- codecs.decode(verify_output),
- re.MULTILINE):
- os.write(2, verify_output) # bytes not str!
- raise RuntimeError("GPG signature verification failed")
+ if verify_signature:
+ # Expect an accompanying signature, and validate it
+ source_sig = re.sub(r'.[gx]z$', '.sign', source)
+ unxz_proc = subprocess.Popen(['xzcat', source],
+ stdout=subprocess.PIPE)
+ verify_output = subprocess.check_output(
+ ['gpgv', '--status-fd', '1',
+ '--keyring', 'debian/upstream/rt-signing-key.pgp',
+ '--ignore-time-conflict', source_sig, '-'],
+ stdin=unxz_proc.stdout)
+ if unxz_proc.wait() or \
+ not re.search(r'^\[GNUPG:\]\s+VALIDSIG\s',
+ codecs.decode(verify_output),
+ re.MULTILINE):
+ os.write(2, verify_output) # bytes not str!
+ raise RuntimeError("GPG signature verification failed")
temp_dir = tempfile.mkdtemp(prefix='rt-genpatch', dir='debian')
try:
@@ -142,11 +144,17 @@ def main(source, version=None):
if __name__ == '__main__':
- if not (1 <= len(sys.argv) <= 3):
- print('Usage: %s {TAR [RT-VERSION] | REPO RT-VERSION}' % sys.argv[0],
- file=sys.stderr)
- print('TAR is a tarball of patches.', file=sys.stderr)
- print('REPO is a git repo containing the given RT-VERSION.',
- file=sys.stderr)
- sys.exit(2)
- main(*sys.argv[1:])
+ parser = argparse.ArgumentParser(
+ description='Generate or update the rt featureset patch series')
+ parser.add_argument(
+ 'source', metavar='SOURCE', type=str,
+ help='tarball of patches or git repo containing the given RT-VERSION')
+ parser.add_argument(
+ 'version', metavar='RT-VERSION', type=str, nargs='?',
+ help='rt kernel version (optional for tarballs)')
+ parser.add_argument(
+ '--verify-signature', action=argparse.BooleanOptionalAction,
+ default=True,
+ help='verify signature on tarball (detached in .sign file) or git tag')
+ args = parser.parse_args()
+ main(args.source, args.version, args.verify_signature)