Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package opi for openSUSE:Factory checked in at 2023-01-30 17:11:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/opi (Old) and /work/SRC/openSUSE:Factory/.opi.new.32243 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opi" Mon Jan 30 17:11:43 2023 rev:38 rq:1062072 version:2.11.0 Changes: -------- --- /work/SRC/openSUSE:Factory/opi/opi.changes 2023-01-26 14:04:53.626375608 +0100 +++ /work/SRC/openSUSE:Factory/.opi.new.32243/opi.changes 2023-01-30 17:27:20.705818196 +0100 @@ -1,0 +2,6 @@ +Mon Jan 30 14:41:59 UTC 2023 - Dominik Heidler <dheid...@suse.de> + +- Version 2.11.0 +- Handle repos with multiple keys in key file (fixes #118) + +------------------------------------------------------------------- Old: ---- opi-2.10.0.tar.gz New: ---- opi-2.11.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ opi.spec ++++++ --- /var/tmp/diff_new_pack.EpNlRX/_old 2023-01-30 17:27:21.161820651 +0100 +++ /var/tmp/diff_new_pack.EpNlRX/_new 2023-01-30 17:27:21.169820694 +0100 @@ -17,7 +17,7 @@ Name: opi -Version: 2.10.0 +Version: 2.11.0 Release: 0 Summary: OBS Package Installer (CLI) License: GPL-3.0-only ++++++ opi-2.10.0.tar.gz -> opi-2.11.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-2.10.0/opi/__init__.py new/opi-2.11.0/opi/__init__.py --- old/opi-2.10.0/opi/__init__.py 2023-01-25 13:57:49.000000000 +0100 +++ new/opi-2.11.0/opi/__init__.py 2023-01-30 15:41:50.000000000 +0100 @@ -180,6 +180,10 @@ new_lines.insert(1, '') return "\n".join(new_lines) +def split_keys(keys): + for key in keys.split('-----BEGIN PGP PUBLIC KEY BLOCK-----')[1:]: + yield '-----BEGIN PGP PUBLIC KEY BLOCK-----' + key + def get_keys_from_rpmdb(): s = subprocess.check_output(["rpm", "-q", "gpg-pubkey", "--qf", '%{NAME}-%{VERSION}-%{RELEASE}\n%{PACKAGER}\n%{DESCRIPTION}\nOPI-SPLIT-TOKEN-TO-TELL-KEY-PACKAGES-APART\n']) @@ -444,28 +448,32 @@ return options[num-1] def ask_import_key(keyurl): - key = normalize_key(requests.get(keyurl.replace('$releasever', get_version() or '$releasever')).text) - for line in subprocess.check_output(["gpg", "--quiet", "--show-keys", "--with-colons", "-"], input=key.encode()).decode().strip().split("\n"): - if line.startswith("uid:"): - key_info = line.split(':')[9] - if [db_key for db_key in get_keys_from_rpmdb() if normalize_key(db_key['pubkey']) == key]: - print(f"Package signing key '{key_info}' is already present.") - else: - if ask_yes_or_no(f"Import package signing key '{key_info}'", 'y'): - tf = tempfile.NamedTemporaryFile('w') - tf.file.write(key) - tf.file.flush() - subprocess.call(['sudo', 'rpm', '--import', tf.name]) - tf.file.close() + keys = requests.get(keyurl.replace('$releasever', get_version() or '$releasever')).text + db_keys = get_keys_from_rpmdb() + for key in split_keys(keys): + for line in subprocess.check_output(["gpg", "--quiet", "--show-keys", "--with-colons", "-"], input=key.encode()).decode().strip().split("\n"): + if line.startswith("uid:"): + key_info = line.split(':')[9] + if [db_key for db_key in get_keys_from_rpmdb() if normalize_key(key) in normalize_key(db_key['pubkey'])]: + print(f"Package signing key '{key_info}' is already present.") + else: + if ask_yes_or_no(f"Import package signing key '{key_info}'", 'y'): + tf = tempfile.NamedTemporaryFile('w') + tf.file.write(key) + tf.file.flush() + subprocess.call(['sudo', 'rpm', '--import', tf.name]) + tf.file.close() def ask_keep_key(keyurl, repo_name=None): """ Ask to remove the key given by url to key file. Warns about all repos still using the key except the repo given by repo_name param. """ - urlkey = normalize_key(requests.get(keyurl.replace('$releasever', get_version() or '$releasever')).text) - keys = [key for key in get_keys_from_rpmdb() if key['pubkey'] == urlkey] - for key in keys: + urlkeys = split_keys(requests.get(keyurl.replace('$releasever', get_version() or '$releasever')).text) + urlkeys_normalized = [normalize_key(urlkey) for urlkey in urlkeys] + db_keys = get_keys_from_rpmdb() + keys_to_ask_user = [key for key in db_keys if key['pubkey'] in urlkeys_normalized] + for key in keys_to_ask_user: repos_using_this_key = [] for repo in get_repos(): if repo_name and repo['name'] == repo_name: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-2.10.0/opi/version.py new/opi-2.11.0/opi/version.py --- old/opi-2.10.0/opi/version.py 2023-01-25 13:57:49.000000000 +0100 +++ new/opi-2.11.0/opi/version.py 2023-01-30 15:41:50.000000000 +0100 @@ -1 +1 @@ -__version__ = '2.10.0' +__version__ = '2.11.0' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opi-2.10.0/opi.changes new/opi-2.11.0/opi.changes --- old/opi-2.10.0/opi.changes 2023-01-25 13:57:49.000000000 +0100 +++ new/opi-2.11.0/opi.changes 2023-01-30 15:41:50.000000000 +0100 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Mon Jan 30 14:41:42 UTC 2023 - Dominik Heidler <dheid...@suse.de> + +- Version 2.11.0 +- Handle repos with multiple keys in key file (fixes #118) + +------------------------------------------------------------------- Wed Jan 25 12:57:21 UTC 2023 - Dominik Heidler <dheid...@suse.de> - Version 2.10.0