Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2018-11-08 09:47:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Thu Nov 8 09:47:23 2018 rev:141 rq:644728 version:20181025.5558473 Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2018-10-23 20:42:24.836399257 +0200 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new/openSUSE-release-tools.changes 2018-11-08 09:47:43.277154111 +0100 @@ -1,0 +2,25 @@ +Thu Oct 25 18:49:00 UTC 2018 - opensuse-releaset...@opensuse.org + +- Update to version 20181025.5558473: + * repo_checker: filter repository published check by arch. + * repo_checker: repository_state_last(): switch to simulate_merge as arg. + * repo_checker: repository_state(): limit meta revision to simulate merge. + * repo_checker: repository_state(): filter by relevant archs. + * repo_checker: extract arch determination as target_archs_from_prairs(). + * osclib/core: provide archs filter for repository state and published queries. + +------------------------------------------------------------------- +Thu Oct 25 18:24:53 UTC 2018 - opensuse-releaset...@opensuse.org + +- Update to version 20181025.3ad87ff: + * manager_42: remove extra newline to avoid flake8 E301. + * flake8: utilize raw strings to avoid invalid escape character warnings. + * flake8: ignore W504. + +------------------------------------------------------------------- +Tue Oct 23 08:01:54 UTC 2018 - opensuse-releaset...@opensuse.org + +- Update to version 20181023.f7ea85e: + * Fix deployment problems on rabbit-openqa + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20181023.9b1618e.obscpio New: ---- openSUSE-release-tools-20181025.5558473.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.NWsuR8/_old 2018-11-08 09:47:44.909152192 +0100 +++ /var/tmp/diff_new_pack.NWsuR8/_new 2018-11-08 09:47:44.909152192 +0100 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20181023.9b1618e +Version: 20181025.5558473 Release: 0 Summary: Tools to aid in staging and release work for openSUSE/SUSE License: GPL-2.0-or-later AND MIT @@ -222,7 +222,7 @@ BuildArch: noarch # TODO Update requirements. Requires: osclib = %{version} -Requires: python-openqa_client +Requires: python2-openqa_client Requires: python2-pika %description totest-manager @@ -298,6 +298,8 @@ Group: Development/Tools/Other BuildArch: noarch Requires: osc >= 0.159.0 +Requires: python2-openqa_client +Requires: python2-pika %description rabbit-openqa Bot listening to AMQP bus and syncs openQA job status into OBS for @@ -399,8 +401,8 @@ %systemd_postun %pre rabbit-openqa -getent passwd osrt-rabit-openqa > /dev/null || \ - useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-rabbit-openqa" osrt-rabit-openqa +getent passwd osrt-rabbit-openqa > /dev/null || \ + useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-rabbit-openqa" osrt-rabbit-openqa exit 0 %postun rabbit-openqa ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.NWsuR8/_old 2018-11-08 09:47:44.957152136 +0100 +++ /var/tmp/diff_new_pack.NWsuR8/_new 2018-11-08 09:47:44.957152136 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param> - <param name="changesrevision">9b1618e7c51660bb6870efcbdf686cb8645abcbb</param> + <param name="changesrevision">55584739996331a3660216cb8ea4bcadca3bc60a</param> </service> </servicedata> ++++++ openSUSE-release-tools-20181023.9b1618e.obscpio -> openSUSE-release-tools-20181025.5558473.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/.flake8 new/openSUSE-release-tools-20181025.5558473/.flake8 --- old/openSUSE-release-tools-20181023.9b1618e/.flake8 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/.flake8 2018-10-25 20:44:10.000000000 +0200 @@ -1,4 +1,4 @@ [flake8] exclude = .open-build-service/, abichecker, openqa, openqa-maintenance.py max-line-length = 100 -ignore = E501,F401,E302,E228,E128,E251,E201,E202,E203,E305,F841,E265,E261,E266,E712,E401,E126,E502,E222,E241,E711,E226,E125,E123,W293,W391,E731,E101,E227,E713,E225,E124,E221,E127,E701,E714,W503,E129,E303,E741,E722 +ignore = E501,F401,E302,E228,E128,E251,E201,E202,E203,E305,F841,E265,E261,E266,E712,E401,E126,E502,E222,E241,E711,E226,E125,E123,W293,W391,E731,E101,E227,E713,E225,E124,E221,E127,E701,E714,W503,W504,E129,E303,E741,E722 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/dist/package/openSUSE-release-tools.spec new/openSUSE-release-tools-20181025.5558473/dist/package/openSUSE-release-tools.spec --- old/openSUSE-release-tools-20181023.9b1618e/dist/package/openSUSE-release-tools.spec 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/dist/package/openSUSE-release-tools.spec 2018-10-25 20:44:10.000000000 +0200 @@ -222,7 +222,7 @@ BuildArch: noarch # TODO Update requirements. Requires: osclib = %{version} -Requires: python-openqa_client +Requires: python2-openqa_client Requires: python2-pika %description totest-manager @@ -298,6 +298,8 @@ Group: Development/Tools/Other BuildArch: noarch Requires: osc >= 0.159.0 +Requires: python2-openqa_client +Requires: python2-pika %description rabbit-openqa Bot listening to AMQP bus and syncs openQA job status into OBS for @@ -399,8 +401,8 @@ %systemd_postun %pre rabbit-openqa -getent passwd osrt-rabit-openqa > /dev/null || \ - useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-rabbit-openqa" osrt-rabit-openqa +getent passwd osrt-rabbit-openqa > /dev/null || \ + useradd -r -m -s /sbin/nologin -c "user for openSUSE-release-tools-rabbit-openqa" osrt-rabbit-openqa exit 0 %postun rabbit-openqa diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/factory-package-news/announcer.py new/openSUSE-release-tools-20181025.5558473/factory-package-news/announcer.py --- old/openSUSE-release-tools-20181023.9b1618e/factory-package-news/announcer.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/factory-package-news/announcer.py 2018-10-25 20:44:10.000000000 +0200 @@ -99,7 +99,7 @@ if loc is None: raise Exception("empty location!") - m = re.search('(?:Snapshot|Build)([\d.]+)-Media', loc) + m = re.search(r'(?:Snapshot|Build)([\d.]+)-Media', loc) if m is None: raise Exception("failed to parse %s"%loc) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/leaper.py new/openSUSE-release-tools-20181025.5558473/leaper.py --- old/openSUSE-release-tools-20181023.9b1618e/leaper.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/leaper.py 2018-10-25 20:44:10.000000000 +0200 @@ -164,7 +164,7 @@ if review_result == None: other_projects_to_check = [] - m = re.match('SUSE:SLE-(\d+)(?:-SP(\d+)):', target_project) + m = re.match(r'SUSE:SLE-(\d+)(?:-SP(\d+)):', target_project) if m: sle_version = int(m.group(1)) sp_version = int(m.group(2)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/manager_42.py new/openSUSE-release-tools-20181025.5558473/manager_42.py --- old/openSUSE-release-tools-20181023.9b1618e/manager_42.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/manager_42.py 2018-10-25 20:44:10.000000000 +0200 @@ -268,7 +268,6 @@ return srcmd5, historyrevs[srcmd5] return None, None - # check if we can find the srcmd5 in any of our underlay # projects def check_one_package(self, package): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/metrics.py new/openSUSE-release-tools-20181025.5558473/metrics.py --- old/openSUSE-release-tools-20181023.9b1618e/metrics.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/metrics.py 2018-10-25 20:44:10.000000000 +0200 @@ -331,7 +331,7 @@ # Extract Factory "release schedule" from Tumbleweed snapshot list. command = 'rsync rsync.opensuse.org::opensuse-full/opensuse/tumbleweed/iso/Changes.* | ' \ - 'grep -oP "Changes\.\K\d{5,}"' + 'grep -oP "' + r'Changes\.\K\d{5,}' + '"' snapshots = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE).communicate()[0] for date in snapshots.split(): release_schedule[datetime.strptime(date, '%Y%m%d')] = 'Snapshot {}'.format(date) @@ -547,9 +547,9 @@ if args.wipe_cache: Cache.delete_all() if args.heavy_cache: - Cache.PATTERNS['/search/request'] = sys.maxint - Cache.PATTERNS['/source/[^/]+/{}/_history'.format(package)] = sys.maxint - Cache.PATTERNS['/source/[^/]+/{}/[^/]+\?rev=.*'.format(package)] = sys.maxint + Cache.PATTERNS[r'/search/request'] = sys.maxint + Cache.PATTERNS[r'/source/[^/]+/{}/_history'.format(package)] = sys.maxint + Cache.PATTERNS[r'/source/[^/]+/{}/[^/]+\?rev=.*'.format(package)] = sys.maxint Cache.init('metrics') Config(apiurl, args.project) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/osclib/cache.py new/openSUSE-release-tools-20181025.5558473/osclib/cache.py --- old/openSUSE-release-tools-20181023.9b1618e/osclib/cache.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/osclib/cache.py 2018-10-25 20:44:10.000000000 +0200 @@ -71,32 +71,32 @@ TTL_SHORT = 5 * 60 TTL_DUPLICATE = 3 PATTERNS = { - '/build/[^/]+/_result': TTL_DUPLICATE, + r'/build/[^/]+/_result': TTL_DUPLICATE, # For cycles when run via repo-checker cache non-stagings. - '/build/(?:[^/](?!:Staging:))+/[^/]+/[^/]+/_builddepinfo$': TTL_MEDIUM, + r'/build/(?:[^/](?!:Staging:))+/[^/]+/[^/]+/_builddepinfo$': TTL_MEDIUM, # Group members cannot be guaranteed, but change rarely. - '/group/[^/?]+$': TTL_SHORT, + r'/group/[^/?]+$': TTL_SHORT, # Clear target project cache upon request acceptance. - '/request/(\d+)\?.*newstate=accepted': TTL_DUPLICATE, - "/search/package\?match=\[@project='([^']+)'\]$": TTL_LONG, + r'/request/(\d+)\?.*newstate=accepted': TTL_DUPLICATE, + r"/search/package\?match=\[@project='([^']+)'\]$": TTL_LONG, # Potentially expire the latest_updated since it will be the only way to # tell after an adi staging is removed. For now just cache the calls # that occur in rapid succession. - "/search/project/id\?match=starts-with\(@name,'([^']+)\:'\)$": TTL_DUPLICATE, + r"/search/project/id\?match=starts-with\(@name,'([^']+)\:'\)$": TTL_DUPLICATE, # List of all projects may change, but relevant ones rarely. - '/source$': TTL_LONG, + r'/source$': TTL_LONG, # Sources will be expired with project, could be done on package level. - '/source/([^/?]+)(?:\?.*)?$': TTL_LONG, + r'/source/([^/?]+)(?:\?.*)?$': TTL_LONG, # Project will be marked changed when packages are added/removed. - '/source/([^/]+)/_meta$': TTL_LONG, - '/source/([^/]+)/(?:[^/]+)/(?:_meta|_link)$': TTL_LONG, - '/source/([^/]+)/dashboard/[^/]+': TTL_LONG, - '/source/([^/]+)/_attribute/[^/]+': TTL_MEDIUM, + r'/source/([^/]+)/_meta$': TTL_LONG, + r'/source/([^/]+)/(?:[^/]+)/(?:_meta|_link)$': TTL_LONG, + r'/source/([^/]+)/dashboard/[^/]+': TTL_LONG, + r'/source/([^/]+)/_attribute/[^/]+': TTL_MEDIUM, # Handles clearing local cache on package deletes. Lots of queries like # updating project info, comment, and package additions. - '/source/([^/]+)/(?:[^/?]+)(?:\?[^/]+)?$': TTL_LONG, + r'/source/([^/]+)/(?:[^/?]+)(?:\?[^/]+)?$': TTL_LONG, # Presumably users are not interweaving in short windows. - '/statistics/latest_updated': TTL_SHORT, + r'/statistics/latest_updated': TTL_SHORT, } last_updated = {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/osclib/core.py new/openSUSE-release-tools-20181025.5558473/osclib/core.py --- old/openSUSE-release-tools-20181023.9b1618e/osclib/core.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/osclib/core.py 2018-10-25 20:44:10.000000000 +0200 @@ -28,7 +28,7 @@ from osclib.memoize import memoize BINARY_REGEX = r'(?:.*::)?(?P<filename>(?P<name>.*)-(?P<version>[^-]+)-(?P<release>[^-]+)\.(?P<arch>[^-\.]+))' -RPM_REGEX = BINARY_REGEX + '\.rpm' +RPM_REGEX = BINARY_REGEX + r'\.rpm' BinaryParsed = namedtuple('BinaryParsed', ('package', 'filename', 'name', 'arch')) @memoize(session=True) @@ -392,31 +392,34 @@ from osclib.util import sha1_short return sha1_short(http_GET(url).read()) -def repository_state(apiurl, project, repository): +def repository_state(apiurl, project, repository, archs=[]): + if not len(archs): + archs = target_archs(apiurl, project, repository) + # Unfortunately, the state hash reflects the published state and not the # binaries published in repository. As such request binary list and hash. combined_state = [] - for arch in target_archs(apiurl, project, repository): + for arch in archs: combined_state.append(repository_arch_state(apiurl, project, repository, arch)) from osclib.util import sha1_short return sha1_short(combined_state) -def repositories_states(apiurl, repository_pairs): +def repositories_states(apiurl, repository_pairs, archs=[]): states = [] for project, repository in repository_pairs: - states.append(repository_state(apiurl, project, repository)) + states.append(repository_state(apiurl, project, repository, archs)) return states -def repository_published(apiurl, project, repository): +def repository_published(apiurl, project, repository, archs=[]): root = ETL.fromstringlist(show_results_meta( - apiurl, project, multibuild=True, repository=[repository])) + apiurl, project, multibuild=True, repository=[repository], arch=archs)) return not len(root.xpath('result[@state!="published" and @state!="unpublished"]')) -def repositories_published(apiurl, repository_pairs): +def repositories_published(apiurl, repository_pairs, archs=[]): for project, repository in repository_pairs: - if not repository_published(apiurl, project, repository): + if not repository_published(apiurl, project, repository, archs): return (project, repository) return True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/osclib/stagingapi.py new/openSUSE-release-tools-20181025.5558473/osclib/stagingapi.py --- old/openSUSE-release-tools-20181023.9b1618e/osclib/stagingapi.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/osclib/stagingapi.py 2018-10-25 20:44:10.000000000 +0200 @@ -265,7 +265,7 @@ return package_info def extract_specfile_short(self, filelist): - packages = [spec[:-5] for spec in filelist if re.search('\.spec$', spec)] + packages = [spec[:-5] for spec in filelist if re.search(r'\.spec$', spec)] return packages diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/pkglistgen.py new/openSUSE-release-tools-20181025.5558473/pkglistgen.py --- old/openSUSE-release-tools-20181023.9b1618e/pkglistgen.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/pkglistgen.py 2018-10-25 20:44:10.000000000 +0200 @@ -487,7 +487,7 @@ # only comment first time comment = None x = ET.tostring(x, pretty_print=True) - x = re.sub('\s*<!-- reason:', ' <!-- reason:', x) + x = re.sub(r'\s*<!-- reason:', ' <!-- reason:', x) # fh.write(ET.tostring(x, pretty_print = True, doctype = '<?xml version="1.0" encoding="UTF-8"?>')) fh.write(x) return summary diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/rabbit-openqa.py new/openSUSE-release-tools-20181025.5558473/rabbit-openqa.py --- old/openSUSE-release-tools-20181023.9b1618e/rabbit-openqa.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/rabbit-openqa.py 2018-10-25 20:44:10.000000000 +0200 @@ -227,7 +227,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser( description='Bot to sync openQA status to OBS') - parser.add_argument("--apiurl", '-A', type=str, default='https://api.opensuse.org', help='API URL of OBS') + parser.add_argument("--apiurl", '-A', type=str, help='API URL of OBS') parser.add_argument('-s', '--staging', type=str, default=None, help='staging project letter') parser.add_argument('-f', '--force', action='store_true', default=False, @@ -239,10 +239,10 @@ args = parser.parse_args() - osc.conf.get_config() + osc.conf.get_config(override_apiurl = args.apiurl) osc.conf.config['debug'] = args.debug - apiurl = args.apiurl + apiurl = osc.conf.config['apiurl'] if apiurl.endswith('suse.de'): amqp_prefix = 'suse' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/repo_checker.py new/openSUSE-release-tools-20181025.5558473/repo_checker.py --- old/openSUSE-release-tools-20181023.9b1618e/repo_checker.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/repo_checker.py 2018-10-25 20:44:10.000000000 +0200 @@ -64,7 +64,7 @@ return repository_pairs = repository_path_expand(self.apiurl, project, repository) - state_hash = self.repository_state(repository_pairs) + state_hash = self.repository_state(repository_pairs, False) self.repository_check(repository_pairs, state_hash, False, bool(post_comments)) def package_comments(self, project, repository): @@ -117,6 +117,15 @@ # Trick to prioritize x86_64. return sorted(archs, reverse=True) + @memoize(session=True) + def target_archs_from_prairs(self, repository_pairs, simulate_merge): + if simulate_merge: + # Restrict top layer archs to the whitelisted archs from merge layer. + return set(target_archs(self.apiurl, repository_pairs[0][0], repository_pairs[0][1])).intersection( + set(self.target_archs(repository_pairs[1][0], repository_pairs[1][1]))) + + return self.target_archs(repository_pairs[0][0], repository_pairs[0][1]) + @memoize(ttl=60, session=True, add_invalidate=True) def mirror(self, project, repository, arch): """Call bs_mirrorfull script to mirror packages.""" @@ -347,24 +356,27 @@ return filename @memoize(ttl=60, session=True) - def repository_state(self, repository_pairs): - states = repositories_states(self.apiurl, repository_pairs) - states.append(str(project_meta_revision(self.apiurl, repository_pairs[0][0]))) + def repository_state(self, repository_pairs, simulate_merge): + archs = self.target_archs_from_prairs(repository_pairs, simulate_merge) + states = repositories_states(self.apiurl, repository_pairs, archs) + + if simulate_merge: + states.append(str(project_meta_revision(self.apiurl, repository_pairs[0][0]))) return sha1_short(states) @memoize(ttl=60, session=True) - def repository_state_last(self, project, repository, pseudometa): - if pseudometa: - filename = self.project_pseudometa_file_name(project, repository) - content = project_pseudometa_file_load(self.apiurl, project, filename) - if content: - return content.splitlines()[0] - else: + def repository_state_last(self, project, repository, simulate_merge): + if simulate_merge: comments = self.comment_api.get_comments(project_name=project) _, info = self.comment_api.comment_find(comments, '::'.join([self.bot_name, repository])) if info: return info.get('build') + else: + filename = self.project_pseudometa_file_name(project, repository) + content = project_pseudometa_file_load(self.apiurl, project, filename) + if content: + return content.splitlines()[0] return None @@ -375,10 +387,11 @@ self.logger.info('checking {}/{}@{}[{}]'.format( project, repository, state_hash, len(repository_pairs))) - published = repositories_published(self.apiurl, repository_pairs) + archs = self.target_archs_from_prairs(repository_pairs, simulate_merge) + published = repositories_published(self.apiurl, repository_pairs, archs) if not self.force: - if state_hash == self.repository_state_last(project, repository, not simulate_merge): + if state_hash == self.repository_state_last(project, repository, simulate_merge): self.logger.info('{} build unchanged'.format(project)) # TODO keep track of skipped count for cycle summary return None @@ -395,14 +408,9 @@ # Drop non-published repository information and thus reduce to boolean. published = published is True - if simulate_merge: - # Restrict top layer archs to the whitelisted archs from merge layer. - archs = set(target_archs(self.apiurl, project, repository)).intersection( - set(self.target_archs(repository_pairs[1][0], repository_pairs[1][1]))) - else: + if not simulate_merge: # Top of pseudometa file. comment.append(state_hash) - archs = self.target_archs(project, repository) if post_comments: # Stores parsed install_check() results grouped by package. @@ -561,7 +569,7 @@ if not isinstance(repository_pairs, list): return repository_pairs - state_hash = self.repository_state(repository_pairs) + state_hash = self.repository_state(repository_pairs, True) if not self.repository_check(repository_pairs, state_hash, True): return None @@ -603,7 +611,7 @@ if not isinstance(repository_pairs, list): return repository_pairs - state_hash = self.repository_state(repository_pairs) + state_hash = self.repository_state(repository_pairs, True) if not self.repository_check(repository_pairs, state_hash, True): return None @@ -618,7 +626,7 @@ if not isinstance(repository_pairs, list): return repository_pairs - state_hash = self.repository_state(repository_pairs) + state_hash = self.repository_state(repository_pairs, True) if not self.repository_check(repository_pairs, state_hash, True): return None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20181023.9b1618e/tests/obs.py new/openSUSE-release-tools-20181025.5558473/tests/obs.py --- old/openSUSE-release-tools-20181023.9b1618e/tests/obs.py 2018-10-23 06:38:17.000000000 +0200 +++ new/openSUSE-release-tools-20181025.5558473/tests/obs.py 2018-10-25 20:44:10.000000000 +0200 @@ -689,7 +689,7 @@ return response - @DELETE(re.compile('/source/openSUSE:Factory:Staging:[B|C]/\w+')) + @DELETE(re.compile(r'/source/openSUSE:Factory:Staging:[B|C]/\w+')) def delete_package(self, request, uri, headers): """Delete a source package from a Staging project.""" package = re.search(r'/source/([\w:]+/\w+)', uri).group(1) ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.NWsuR8/_old 2018-11-08 09:47:45.629151346 +0100 +++ /var/tmp/diff_new_pack.NWsuR8/_new 2018-11-08 09:47:45.633151341 +0100 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20181023.9b1618e -mtime: 1540269497 -commit: 9b1618e7c51660bb6870efcbdf686cb8645abcbb +version: 20181025.5558473 +mtime: 1540493050 +commit: 55584739996331a3660216cb8ea4bcadca3bc60a