Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2019-10-22 15:44:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.2352 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Tue Oct 22 15:44:52 2019 rev:234 rq:741567 version:20191021.8bb85c5f Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2019-10-21 12:28:55.227996049 +0200 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.2352/openSUSE-release-tools.changes 2019-10-22 15:44:58.133684114 +0200 @@ -1,0 +2,19 @@ +Mon Oct 21 14:13:30 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20191021.8bb85c5f: + * Fix test plan URL for 15.2 + +------------------------------------------------------------------- +Sat Oct 19 14:51:07 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20191019.a97469df: + * conf.py: remove delreq-review default setting + * StagingAPI: complex delete requests are no longer used + +------------------------------------------------------------------- +Sat Oct 19 12:28:46 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20191019.24a8cf2b: + * testenv: install shadow for useradd + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20191017.180e4464.obscpio New: ---- openSUSE-release-tools-20191021.8bb85c5f.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.2kE85i/_old 2019-10-22 15:44:58.881684966 +0200 +++ /var/tmp/diff_new_pack.2kE85i/_new 2019-10-22 15:44:58.881684966 +0200 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20191017.180e4464 +Version: 20191021.8bb85c5f Release: 0 Summary: Tools to aid in staging and release work for openSUSE/SUSE License: GPL-2.0-or-later AND MIT @@ -74,6 +74,8 @@ Obsoletes: %{name}-totest-manager # no longer supported Obsoletes: osc-plugin-check_dups +# vdelreq is no longer needed/supported; delete requests are handled immediately again +Obsoletes: osc-plugin-vdelreq # Avoid needlessly building on s390x and such in various repos. # Must include noarch for older systems even though it makes no sense due to @@ -305,16 +307,6 @@ %description -n osc-plugin-staging OSC plugin for the staging workflow, see `osc staging --help`. -%package -n osc-plugin-vdelreq -Summary: OSC plugin to check for virtually accepted request -Group: Development/Tools/Other -BuildArch: noarch -Requires: osc >= 0.165.1 -Requires: osclib = %{version} - -%description -n osc-plugin-vdelreq -OSC plugin to check for virtually accepted request, see `osc vdelreq --help`. - %prep %setup -q @@ -457,7 +449,6 @@ %exclude %{_datadir}/%{source_dir}/osc-cycle.py %exclude %{_datadir}/%{source_dir}/osc-origin.py %exclude %{_datadir}/%{source_dir}/osc-staging.py -%exclude %{_datadir}/%{source_dir}/osc-vdelreq.py %exclude %{_datadir}/%{source_dir}/update_crawler.py %exclude %{_datadir}/%{source_dir}/findfileconflicts %exclude %{_datadir}/%{source_dir}/write_repo_susetags_file.pl @@ -623,9 +614,4 @@ %{_datadir}/%{source_dir}/osc-staging.py %{osc_plugin_dir}/osc-staging.py -%files -n osc-plugin-vdelreq -%defattr(-,root,root,-) -%{_datadir}/%{source_dir}/osc-vdelreq.py -%{osc_plugin_dir}/osc-vdelreq.py - %changelog ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.2kE85i/_old 2019-10-22 15:44:58.917685007 +0200 +++ /var/tmp/diff_new_pack.2kE85i/_new 2019-10-22 15:44:58.921685011 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param> - <param name="changesrevision">180e44641cfc3cd04897c2368f196486dcf15434</param> + <param name="changesrevision">292ae02cf34c5298724cae2eca374facd2d8fb1f</param> </service> </servicedata> ++++++ openSUSE-release-tools-20191017.180e4464.obscpio -> openSUSE-release-tools-20191021.8bb85c5f.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20191017.180e4464/config/announcer/openSUSE:Leap:15.2.yml new/openSUSE-release-tools-20191021.8bb85c5f/config/announcer/openSUSE:Leap:15.2.yml --- old/openSUSE-release-tools-20191017.180e4464/config/announcer/openSUSE:Leap:15.2.yml 2019-10-17 22:41:41.000000000 +0200 +++ new/openSUSE-release-tools-20191021.8bb85c5f/config/announcer/openSUSE:Leap:15.2.yml 2019-10-21 16:12:02.000000000 +0200 @@ -18,7 +18,7 @@ Please use the test plan at - https://docs.google.com/spreadsheets/d/1AGKijKpKiJCB616-bHVoNQuhWHpQLHPWCb3m1p6gXPc/edit#gid=94909276 + https://docs.google.com/spreadsheets/d/1AGKijKpKiJCB616-bHVoNQuhWHpQLHPWCb3m1p6gXPc/edit#gid=801313279 to record your testing efforts and use bugzilla to report bugs. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20191017.180e4464/dist/ci/testenv-tumbleweed/Dockerfile new/openSUSE-release-tools-20191021.8bb85c5f/dist/ci/testenv-tumbleweed/Dockerfile --- old/openSUSE-release-tools-20191017.180e4464/dist/ci/testenv-tumbleweed/Dockerfile 2019-10-17 22:41:41.000000000 +0200 +++ new/openSUSE-release-tools-20191021.8bb85c5f/dist/ci/testenv-tumbleweed/Dockerfile 2019-10-21 16:12:02.000000000 +0200 @@ -5,12 +5,12 @@ RUN zypper -n ar http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Factory/ openSUSE:Tools RUN zypper --gpg-auto-import-keys ref -RUN useradd tester -d /code/tests/home - RUN zypper in -y osc python3-nose python3-httpretty python3-pyxdg python3-PyYAML \ python3-pika python3-mock python3-cmdln python3-lxml python3-python-dateutil python3-colorama \ python3-influxdb python3-coverage python3-coveralls libxml2-tools curl python3-flake8 \ - vim vim-data strace git sudo patch openSUSE-release openSUSE-release-ftp + shadow vim vim-data strace git sudo patch openSUSE-release openSUSE-release-ftp + +RUN useradd tester -d /code/tests/home COPY run_as_tester /usr/bin # OBS does not know about executable files, so we need to tweak it manually diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20191017.180e4464/dist/package/openSUSE-release-tools.spec new/openSUSE-release-tools-20191021.8bb85c5f/dist/package/openSUSE-release-tools.spec --- old/openSUSE-release-tools-20191017.180e4464/dist/package/openSUSE-release-tools.spec 2019-10-17 22:41:41.000000000 +0200 +++ new/openSUSE-release-tools-20191021.8bb85c5f/dist/package/openSUSE-release-tools.spec 2019-10-21 16:12:02.000000000 +0200 @@ -74,6 +74,8 @@ Obsoletes: %{name}-totest-manager # no longer supported Obsoletes: osc-plugin-check_dups +# vdelreq is no longer needed/supported; delete requests are handled immediately again +Obsoletes: osc-plugin-vdelreq # Avoid needlessly building on s390x and such in various repos. # Must include noarch for older systems even though it makes no sense due to @@ -305,16 +307,6 @@ %description -n osc-plugin-staging OSC plugin for the staging workflow, see `osc staging --help`. -%package -n osc-plugin-vdelreq -Summary: OSC plugin to check for virtually accepted request -Group: Development/Tools/Other -BuildArch: noarch -Requires: osc >= 0.165.1 -Requires: osclib = %{version} - -%description -n osc-plugin-vdelreq -OSC plugin to check for virtually accepted request, see `osc vdelreq --help`. - %prep %setup -q @@ -457,7 +449,6 @@ %exclude %{_datadir}/%{source_dir}/osc-cycle.py %exclude %{_datadir}/%{source_dir}/osc-origin.py %exclude %{_datadir}/%{source_dir}/osc-staging.py -%exclude %{_datadir}/%{source_dir}/osc-vdelreq.py %exclude %{_datadir}/%{source_dir}/update_crawler.py %exclude %{_datadir}/%{source_dir}/findfileconflicts %exclude %{_datadir}/%{source_dir}/write_repo_susetags_file.pl @@ -623,9 +614,4 @@ %{_datadir}/%{source_dir}/osc-staging.py %{osc_plugin_dir}/osc-staging.py -%files -n osc-plugin-vdelreq -%defattr(-,root,root,-) -%{_datadir}/%{source_dir}/osc-vdelreq.py -%{osc_plugin_dir}/osc-vdelreq.py - %changelog diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20191017.180e4464/osc-staging.py new/openSUSE-release-tools-20191021.8bb85c5f/osc-staging.py --- old/openSUSE-release-tools-20191017.180e4464/osc-staging.py 2019-10-17 22:41:41.000000000 +0200 +++ new/openSUSE-release-tools-20191021.8bb85c5f/osc-staging.py 2019-10-21 16:12:02.000000000 +0200 @@ -69,7 +69,7 @@ def lock_needed(cmd, opts): return not( - cmd in ('acheck', 'check', 'check_duplicate_binaries', 'frozenage', 'rebuild', 'unlock') or + cmd in ('check', 'check_duplicate_binaries', 'frozenage', 'rebuild', 'unlock') or (cmd == 'list' and not opts.supersede) ) @@ -136,11 +136,6 @@ If openSUSE:* project, requests marked ready from adi stagings will also be accepted. - "acheck" will check if it is safe to accept new staging projects - As $PROJECT is syncing the right package versions between - /standard, /totest and /snapshot, it is important that the projects - are clean prior to a checkin round. - "adi" will list already staged requests, stage new requests, and supersede requests where applicable. New adi stagings will be created for new packages based on the grouping options used. The default grouping is by @@ -336,7 +331,6 @@ Usage: osc staging accept [--force] [--no-cleanup] [LETTER...] - osc staging acheck osc staging adi [--move] [--by-develproject] [--split] [REQUEST...] osc staging check [--old] [STAGING...] osc staging check_duplicate_binaries @@ -389,7 +383,6 @@ ): min_args, max_args = 1, None elif cmd in ( - 'acheck', 'check_duplicate_binaries', 'cleanup_rings', 'list', @@ -482,44 +475,21 @@ Fore.YELLOW + prj + Fore.RESET, Fore.GREEN if api.prj_frozen_enough(prj) else Fore.RED, api.days_since_last_freeze(prj))) - elif cmd == 'acheck': - # Is it safe to accept? Meaning: /totest contains what it should and is not dirty - version_totest = api.get_binary_version(api.project, "openSUSE-release.rpm", repository="totest", arch="x86_64") - if version_totest: - version_openqa = api.pseudometa_file_load('version_totest') - totest_dirty = api.is_repo_dirty(api.project, 'totest') - print("version_openqa: %s / version_totest: %s / totest_dirty: %s\n" % (version_openqa, version_totest, totest_dirty)) - else: - print("acheck is unavailable in %s!\n" % (api.project)) elif cmd == 'accept': - # Is it safe to accept? Meaning: /totest contains what it should and is not dirty - version_totest = api.get_binary_version(api.project, "openSUSE-release.rpm", repository="totest", arch="x86_64") - - if version_totest is None or opts.force: - # SLE does not have a totest_version or openqa_version - ignore it - version_openqa = version_totest - totest_dirty = False - else: - version_openqa = api.pseudometa_file_load('version_totest') - totest_dirty = api.is_repo_dirty(api.project, 'totest') - - if version_openqa == version_totest and not totest_dirty: - cmd = AcceptCommand(api) - for prj in args[1:]: - if cmd.perform(api.prj_from_letter(prj), opts.force): - cmd.reset_rebuild_data(prj) - else: - return - if not opts.no_cleanup: - if api.item_exists(api.prj_from_letter(prj)): - cmd.cleanup(api.prj_from_letter(prj)) - cmd.accept_other_new() - if opts.project.startswith('openSUSE:'): - cmd.update_factory_version() - if api.item_exists(api.crebuild): - cmd.sync_buildfailures() - else: - print("Not safe to accept: /totest is not yet synced") + cmd = AcceptCommand(api) + for prj in args[1:]: + if cmd.perform(api.prj_from_letter(prj), opts.force): + cmd.reset_rebuild_data(prj) + else: + return + if not opts.no_cleanup: + if api.item_exists(api.prj_from_letter(prj)): + cmd.cleanup(api.prj_from_letter(prj)) + cmd.accept_other_new() + if opts.project.startswith('openSUSE:'): + cmd.update_factory_version() + if api.item_exists(api.crebuild): + cmd.sync_buildfailures() elif cmd == 'unselect': if opts.message: print('Ignoring requests first') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20191017.180e4464/osc-vdelreq.py new/openSUSE-release-tools-20191021.8bb85c5f/osc-vdelreq.py --- old/openSUSE-release-tools-20191017.180e4464/osc-vdelreq.py 2019-10-17 22:41:41.000000000 +0200 +++ new/openSUSE-release-tools-20191021.8bb85c5f/osc-vdelreq.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,95 +0,0 @@ -#!/usr/bin/python - -from __future__ import print_function - -import os -import os.path -import sys - -from xml.etree import cElementTree as ET - -try: - from urllib.error import HTTPError -except ImportError: - from urllib2 import HTTPError - -import osc.core -import osc.conf - -from osc import cmdln -from osc import oscerr - -def _has_binary(self, project, package): - query = {'view': 'binarylist', 'package': package, 'multibuild': '1'} - pkg_binarylist = ET.parse(osc.core.http_GET(osc.core.makeurl(self.apiurl, ['build', project, '_result'], query=query))).getroot() - for binary in pkg_binarylist.findall('./result/binarylist/binary'): - return 'Yes' - return 'No' - - -def list_virtually_accepted_request(self, project, opts): - state_cond = "state/@name='review'+or+state/@name='revoked'" - if opts.all: - state_cond += "+or+state/@name='accepted'" - query = "match=({})+and+(action/target/@project='{}'+and+action/@type='delete')+and+"\ - "((review/@state='new'+or+review/@state='accepted')+and+review/@by_group='{}')".format(state_cond, project, opts.delreq_review) - url = osc.core.makeurl(self.apiurl, ['search', 'request'], query) - f = osc.core.http_GET(url) - root = ET.parse(f).getroot() - rqs = [] - for rq in root.findall('request'): - has_binary = 'No' - id = rq.attrib['id'] - rq_state = rq.find('state').get('name') - pkg = rq.find('action/target').get('package') - try: - osc.core.show_package_meta(self.apiurl, project, pkg) - except HTTPError as err: - if err.code == 404: - continue - raise err - - if rq_state != 'accepted': - has_binary = self._has_binary(project, pkg) - for review in rq.findall('review'): - if review.get('by_group') and review.attrib['by_group'] == opts.delreq_review: - delreq_review_state = review.attrib['state'] - - content = {"id": int(id), "package": pkg, "rq_state": rq_state, "delreq_review_state": delreq_review_state, "has_binary": has_binary} - rqs.append(content) - - rqs.sort(key=lambda d: d['id']) - for rq in rqs: - print("{} {} state is {} \n {} Virtually accept review is {} ( binary: {} )".format(str(rq['id']), - rq['package'], rq['rq_state'], "-".rjust(len(str(rq['id']))+1, ' '), rq['delreq_review_state'], rq['has_binary'])) - -@cmdln.option('--delreq-review', dest='delreq_review', metavar='DELREQREVIEW', default='factory-maintainers', - help='the additional reviews') -@cmdln.option('--all', action='store_true', default=False, help='shows all requests including accepted request') -def do_vdelreq(self, subcmd, opts, *args): - """${cmd_name}: display pending virtual accept delete request - - osc vdelreq [OPT] COMMAND PROJECT - Shows pending the virtual accept delete requests and the current state. - - ${cmd_option_list} - - "list" will list virtually accepted delete request. - - Usage: - osc vdelreq [--delreq-review DELREQREVIEW] list PROJECT - """ - - self.apiurl = self.get_api_url() - - if len(args) == 0: - raise oscerr.WrongArgs('No command given, see "osc help vdelreq"!') - if len(args) < 2: - raise oscerr.WrongArgs('No project given, see "osc help vdelreq"!') - - cmd = args[0] - if cmd in ('list'): - self.list_virtually_accepted_request(args[1], opts) - else: - raise oscerr.WrongArgs('Unknown command: %s' % cmd) - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20191017.180e4464/osclib/accept_command.py new/openSUSE-release-tools-20191021.8bb85c5f/osclib/accept_command.py --- old/openSUSE-release-tools-20191017.180e4464/osclib/accept_command.py 2019-10-17 22:41:41.000000000 +0200 +++ new/openSUSE-release-tools-20191021.8bb85c5f/osclib/accept_command.py 2019-10-21 16:12:02.000000000 +0200 @@ -46,37 +46,6 @@ rqs.append({'id': int(rq.get('id')), 'packages': pkgs, 'type': act_type}) return rqs - def virtual_accept_request_has_no_binary(self, project, package): - filelist = self.api.get_filelist_for_package(pkgname=package, project=self.api.project, expand='1', extension='spec') - pkgs = self.api.extract_specfile_short(filelist) - - for pkg in pkgs: - query = {'view': 'binarylist', 'package': pkg, 'multibuild': '1'} - pkg_binarylist = ET.parse(http_GET(self.api.makeurl(['build', project, '_result'], query=query))).getroot() - for binary in pkg_binarylist.findall('./result/binarylist/binary'): - return False - - return True - - def find_virtually_accepted_requests(self, project): - query = "match=state/@name='review'+and+(action/target/@project='{}'+and+action/@type='delete')+and+(review/@state='new'+and+review/@by_group='{}')".format(project, self.api.cdelreq_review) - url = self.api.makeurl(['search', 'request'], query) - - f = http_GET(url) - root = ET.parse(f).getroot() - - rqs = [] - for rq in root.findall('request'): - pkgs = [] - actions = rq.findall('action') - for action in actions: - targets = action.findall('target') - for t in targets: - pkgs.append(str(t.get('package'))) - - rqs.append({'id': int(rq.get('id')), 'packages': pkgs}) - return rqs - def reset_rebuild_data(self, project): data = self.api.pseudometa_file_load('support_pkg_rebuild') if data is None: @@ -94,23 +63,6 @@ if content != data: self.api.pseudometa_file_save('support_pkg_rebuild', content, 'accept command update') - def virtually_accept_delete(self, request_id, package): - self.api.add_review(request_id, by_group=self.api.cdelreq_review, msg='Request accepted. Cleanup in progress - DO NOT REVOKE!') - - filelist = self.api.get_filelist_for_package(pkgname=package, project=self.api.project, expand='1', extension='spec') - pkgs = self.api.extract_specfile_short(filelist) - - # Disable build and wipes the binary to the package and the sub-package - for pkg in pkgs: - meta = decode_it(b''.join(show_package_meta(self.api.apiurl, self.api.project, pkg))) - # Update package meta to disable build - self.api.create_package_container(self.api.project, pkg, meta=meta, disable_build=True) - wipebinaries(self.api.apiurl, self.api.project, package=pkg, repo=self.api.cmain_repo) - - # Remove package from Rings - if self.api.ring_packages.get(pkg): - delete_package(self.api.apiurl, self.api.ring_packages.get(pkg), pkg, force=True, msg="Cleanup package in Rings") - def perform(self, project, force=False): """Accept the staging project for review and submit to Factory / openSUSE 13.2 ... @@ -132,24 +84,17 @@ for req in meta['requests']: self.api.rm_from_prj(project, request_id=req['id'], msg='ready to accept') packages.append(req['package']) - msg = 'Accepting staging review for {}'.format(req['package']) oldspecs = self.api.get_filelist_for_package(pkgname=req['package'], project=self.api.project, extension='spec') - if 'type' in req and req['type'] == 'delete' and self.api.cdelreq_review: - msg += ' and started handling of virtual accept process' - print(msg) - # Virtually accept the delete request - self.virtually_accept_delete(req['id'], req['package']) - else: - print(msg) - change_request_state(self.api.apiurl, - str(req['id']), - 'accepted', - message='Accept to %s' % self.api.project, - force=force) - self.create_new_links(self.api.project, req['package'], oldspecs) + print('Accepting staging review for {}'.format(req['package'])) + change_request_state(self.api.apiurl, + str(req['id']), + 'accepted', + message='Accept to %s' % self.api.project, + force=force) + self.create_new_links(self.api.project, req['package'], oldspecs) self.api.accept_status_comment(project, packages) self.api.staging_deactivate(project) @@ -197,15 +142,6 @@ def accept_other_new(self): changed = False - if self.api.cdelreq_review: - rqlist = self.find_virtually_accepted_requests(self.api.project) - for req in rqlist: - if self.virtual_accept_request_has_no_binary(self.api.project, req['packages'][0]): - # Accepting delreq-review review - self.api.do_change_review_state(req['id'], 'accepted', - by_group=self.api.cdelreq_review, - message='Virtually accepted delete {}'.format(req['packages'][0])) - rqlist = self.find_new_requests(self.api.project) if self.api.cnonfree: rqlist += self.find_new_requests(self.api.cnonfree) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20191017.180e4464/osclib/conf.py new/openSUSE-release-tools-20191021.8bb85c5f/osclib/conf.py --- old/openSUSE-release-tools-20191017.180e4464/osclib/conf.py 2019-10-17 22:41:41.000000000 +0200 +++ new/openSUSE-release-tools-20191021.8bb85c5f/osclib/conf.py 2019-10-21 16:12:02.000000000 +0200 @@ -31,7 +31,6 @@ 'openqa': 'https://openqa.opensuse.org', 'lock': 'openSUSE:%(project)s:Staging', 'lock-ns': 'openSUSE', - 'delreq-review': 'factory-maintainers', 'main-repo': 'standard', 'pseudometa_package': 'openSUSE:%(project)s:Staging/dashboard', 'download-baseurl': 'http://download.opensuse.org/tumbleweed/', @@ -73,7 +72,6 @@ 'lock': 'openSUSE:%(project)s:Staging', 'lock-ns': 'openSUSE', 'leaper-override-group': 'leap-reviewers', - 'delreq-review': '', 'main-repo': 'standard', 'pseudometa_package': 'openSUSE:%(project)s:Staging/dashboard', 'download-baseurl': 'http://download.opensuse.org/distribution/leap/%(version)s/', @@ -167,7 +165,6 @@ 'openqa': '', 'lock': '', 'lock-ns': '', - 'delreq-review': '', '_priority': '0', # Apply defaults first }, } ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.2kE85i/_old 2019-10-22 15:44:59.405685563 +0200 +++ /var/tmp/diff_new_pack.2kE85i/_new 2019-10-22 15:44:59.405685563 +0200 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20191017.180e4464 -mtime: 1571344901 -commit: 180e44641cfc3cd04897c2368f196486dcf15434 +version: 20191021.8bb85c5f +mtime: 1571667122 +commit: 8bb85c5f4d98050e782b09453b09aea19bbfcff0