Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2019-02-08 12:13:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Fri Feb 8 12:13:02 2019 rev:163 rq:672351 version:20190207.b99d841 Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2019-01-28 20:49:19.853849099 +0100 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.28833/openSUSE-release-tools.changes 2019-02-08 12:13:30.657466849 +0100 @@ -1,0 +2,46 @@ +Thu Feb 07 05:50:13 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20190207.b99d841: + * Fix arch-whitelist to apply to staging projects + * Filter the repositories_pairs depending on the target archs + * Don't try to filter staging archs + * Calculcate the whitelist for letter stagings purely on config + * Expand all repositories but ignore archs with 404 + * repo_checker: remove explicit target project repository layer for letter stagings. + * repo_checker: provide repo_checker-binary-whitelist-ring config option. + +------------------------------------------------------------------- +Wed Feb 06 04:45:10 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20190206.61c0f67: + * Map i686 packages to i586 to find kernel-pae-devel + +------------------------------------------------------------------- +Tue Feb 05 07:30:47 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20190205.ee7cdc2: + * ReviewBot: catch exception for adding devel project review + * conf: use backports-reviewers for backports + +------------------------------------------------------------------- +Wed Jan 30 15:58:44 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20190130.7d1fa2f: + * Fix E117: over-indented (flake8 update on TW) + * Fix format in rabbitmq debug + +------------------------------------------------------------------- +Wed Jan 30 15:08:47 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20190130.f66fd52: + * fix incompatible repo id tagging for openSUSE products + +------------------------------------------------------------------- +Sat Jan 26 17:26:37 UTC 2019 - opensuse-releaset...@opensuse.org + +- Update to version 20190126.da4ba5d: + * Support connecting suse in PubSubConsumer + * Only use amqp_prefix as config + * Reduce debug level for channel close + +------------------------------------------------------------------- @@ -169 +215 @@ -Tue Nov 27 05:34:07 UTC 2018 - opensuse-packag...@opensuse.org +Tue Nov 27 05:34:07 UTC 2018 - opensuse-releaset...@opensuse.org @@ -232 +278 @@ -Wed Nov 21 09:07:22 UTC 2018 - opensuse-packag...@opensuse.org +Wed Nov 21 09:07:22 UTC 2018 - opensuse-releaset...@opensuse.org Old: ---- openSUSE-release-tools-20190124.535533d.obscpio New: ---- openSUSE-release-tools-20190207.b99d841.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.aRGXUz/_old 2019-02-08 12:13:31.389466575 +0100 +++ /var/tmp/diff_new_pack.aRGXUz/_new 2019-02-08 12:13:31.397466572 +0100 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20190124.535533d +Version: 20190207.b99d841 Release: 0 Summary: Tools to aid in staging and release work for openSUSE/SUSE License: GPL-2.0-or-later AND MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.aRGXUz/_old 2019-02-08 12:13:31.433466559 +0100 +++ /var/tmp/diff_new_pack.aRGXUz/_new 2019-02-08 12:13:31.433466559 +0100 @@ -6,6 +6,7 @@ <param name="changesgenerate">enable</param> <param name="extract">dist/package/openSUSE-release-tools.spec</param> <param name="filename">openSUSE-release-tools</param> + <param name="changesauthor">opensuse-releaset...@opensuse.org</param> </service> <service name="set_version" mode="disabled" /> <service name="tar" mode="buildtime" /> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.aRGXUz/_old 2019-02-08 12:13:31.453466551 +0100 +++ /var/tmp/diff_new_pack.aRGXUz/_new 2019-02-08 12:13:31.453466551 +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">be05e42da82321679b12cfd898b0b239740e3434</param> + <param name="changesrevision">5d70263e89c8580d57bff08f1afdad3b286f2c32</param> </service> -</servicedata> +</servicedata> \ No newline at end of file ++++++ openSUSE-release-tools-20190124.535533d.obscpio -> openSUSE-release-tools-20190207.b99d841.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/CreatePackageDescr.pm new/openSUSE-release-tools-20190207.b99d841/CreatePackageDescr.pm --- old/openSUSE-release-tools-20190124.535533d/CreatePackageDescr.pm 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/CreatePackageDescr.pm 2019-02-07 06:43:02.000000000 +0100 @@ -69,8 +69,11 @@ Build::Rpm::add_flagsvers(\%qq, 5052, 5054, 5053) if $qq{5052}; # supplements Build::Rpm::add_flagsvers(\%qq, 5055, 5057, 5056) if $qq{5055}; # enhances + $arch = $qq{'ARCH'}[0]; + # some packages are more equal than others + $arch = 'i586' if $arch eq 'i686'; $out .= sprintf( "=Pkg: %s %s %s %s\n", - $name, $qq{'VERSION'}[0], $qq{'RELEASE'}[0], $qq{'ARCH'}[0] ); + $name, $qq{'VERSION'}[0], $qq{'RELEASE'}[0], $arch ); $out .= "+Flx:\n"; my @modes = @{ $qq{1030} || [] }; my @basenames = @{ $qq{BASENAMES} || [] }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/PubSubConsumer.py new/openSUSE-release-tools-20190207.b99d841/PubSubConsumer.py --- old/openSUSE-release-tools-20190124.535533d/PubSubConsumer.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/PubSubConsumer.py 2019-02-07 06:43:02.000000000 +0100 @@ -1,6 +1,6 @@ import logging import pika - +import sys class PubSubConsumer(object): """This is an example consumer that will handle unexpected interactions @@ -16,7 +16,7 @@ """ - def __init__(self, amqp_url, logger): + def __init__(self, amqp_prefix, logger): """Create a new instance of the consumer class, passing in the AMQP URL used to connect to RabbitMQ. @@ -27,7 +27,7 @@ self._channel = None self._closing = False self._consumer_tag = None - self._url = amqp_url + self._prefix = amqp_prefix self.logger = logger def connect(self): @@ -38,8 +38,15 @@ :rtype: pika.SelectConnection """ - self.logger.info('Connecting to %s', self._url) - return pika.SelectConnection(pika.URLParameters(self._url), + self.logger.info('Connecting to %s', self._prefix) + account = 'opensuse' + server = 'rabbit.opensuse.org' + if self._prefix == 'suse': + account = 'suse' + server = 'rabbit.suse.de' + credentials = pika.PlainCredentials(account, account) + parameters = pika.ConnectionParameters(server, 5671, '/', credentials, ssl=True, socket_timeout=10) + return pika.SelectConnection(parameters, self.on_connection_open, stop_ioloop_on_close=False) @@ -122,7 +129,7 @@ :param str reply_text: The text reason the channel was closed """ - self.logger.warning('Channel %i was closed: (%s) %s', + self.logger.info('Channel %i was closed: (%s) %s', channel, reply_code, reply_text) self._connection.close() @@ -321,8 +328,10 @@ '-35s %(lineno) -5d: %(message)s') logging.basicConfig(level=logging.INFO, format=LOG_FORMAT) - example = PubSubConsumer('amqps://opensuse:opens...@rabbit.opensuse.org', - logging.getLogger(__name__)) + amqp_prefix = 'opensuse' + if len(sys.argv) > 1: + amqp_prefix = sys.argv[1] + example = PubSubConsumer(amqp_prefix, logging.getLogger(__name__)) try: example.run() except KeyboardInterrupt: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/ReviewBot.py new/openSUSE-release-tools-20190207.b99d841/ReviewBot.py --- old/openSUSE-release-tools-20190124.535533d/ReviewBot.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/ReviewBot.py 2019-02-07 06:43:02.000000000 +0100 @@ -309,7 +309,15 @@ self.logger.warning('no devel project found for {}/{}'.format(project, package)) return False - self.add_review(request, by_project=devel_project, by_package=devel_package, msg=message) + try: + self.add_review(request, by_project=devel_project, by_package=devel_package, msg=message) + except HTTPError as e: + # could happen when the bot is not actually a reviewer and has no permissions + if e.code != 403: + raise e + self.logger.error('failed to add devel project review for {}/{}'.format(devel_project, devel_package)) + return False + return True def devel_project_review_ensure(self, request, project, package, message='submitter not devel maintainer'): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/build-fail-reminder.py new/openSUSE-release-tools-20190207.b99d841/build-fail-reminder.py --- old/openSUSE-release-tools-20190124.535533d/build-fail-reminder.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/build-fail-reminder.py 2019-02-07 06:43:02.000000000 +0100 @@ -34,7 +34,7 @@ return '{} {} {} {}'.format(self.firstfail, self.reminded, self.bug, self.remindCount) def jdefault(o): - return o.__dict__ + return o.__dict__ MAIL_TEMPLATES = ( u"""Dear %(recepient)s, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/deptool.py new/openSUSE-release-tools-20190207.b99d841/deptool.py --- old/openSUSE-release-tools-20190124.535533d/deptool.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/deptool.py 2019-02-07 06:43:02.000000000 +0100 @@ -301,22 +301,22 @@ logger.error("%s not found", n) continue for s in sel.solvables(): - prov = s.lookup_deparray(solv.SOLVABLE_PROVIDES, 0) - if not prov: - logger.error("%s doesn't provide anything") + prov = s.lookup_deparray(solv.SOLVABLE_PROVIDES, 0) + if not prov: + logger.error("%s doesn't provide anything") + continue + for p in prov: + sel = self.pool.matchdepid(p, solv.Selection.SELECTION_REL | solv.Selection.SELECTION_FLAT, kindid) + if sel.isempty(): + logger.debug('nothing %s %s', kind.lower(), p) continue - for p in prov: - sel = self.pool.matchdepid(p, solv.Selection.SELECTION_REL | solv.Selection.SELECTION_FLAT, kindid) - if sel.isempty(): - logger.debug('nothing %s %s', kind.lower(), p) + for r in sel.solvables(): + if kindid == solv.SOLVABLE_PROVIDES and r == s: continue - for r in sel.solvables(): - if kindid == solv.SOLVABLE_PROVIDES and r == s: - continue - if not kindprinted: - print(kind) - kindprinted = True - print(' {}: {}-{}@{}'.format(p, r.name, r.evr, r.arch)) + if not kindprinted: + print(kind) + kindprinted = True + print(' {}: {}-{}@{}'.format(p, r.name, r.evr, r.arch)) @cmdln.option("-r", "--repo", dest="repo", action="append", help="repo to use") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/leaper.py new/openSUSE-release-tools-20190207.b99d841/leaper.py --- old/openSUSE-release-tools-20190124.535533d/leaper.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/leaper.py 2019-02-07 06:43:02.000000000 +0100 @@ -443,9 +443,9 @@ # disabled for reference. Needed again for 16.0 probably if False and self.source_in_factory and target_project.startswith('openSUSE:Leap:15.0') \ and self.is_package_in_project('openSUSE:Leap:42.3'+subprj, package): - self.logger.info('package was in 42.3') - self.do_check_maintainer_review = False - return True + self.logger.info('package was in 42.3') + self.do_check_maintainer_review = False + return True is_fine_if_factory = True self.needs_release_manager = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/osclib/conf.py new/openSUSE-release-tools-20190207.b99d841/osclib/conf.py --- old/openSUSE-release-tools-20190124.535533d/osclib/conf.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/osclib/conf.py 2019-02-07 06:43:02.000000000 +0100 @@ -132,7 +132,7 @@ 'lock': 'openSUSE:%(project)s:Staging', 'lock-ns': 'openSUSE', 'onlyadi': True, - 'leaper-override-group': 'leap-reviewers', + 'leaper-override-group': 'backports-reviewers', 'review-team': 'opensuse-review-team', 'legal-review-group': 'legal-auto', # review-team optionally added by leaper.py. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/osclib/core.py new/openSUSE-release-tools-20190207.b99d841/osclib/core.py --- old/openSUSE-release-tools-20190124.535533d/osclib/core.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/osclib/core.py 2019-02-07 06:43:02.000000000 +0100 @@ -393,7 +393,13 @@ # just checking the mtimes of the repository's binaries url = makeurl(apiurl, ['build', project, repository, arch, '_repository']) from osclib.util import sha1_short - return sha1_short(http_GET(url).read()) + try: + return sha1_short(http_GET(url).read()) + except HTTPError as e: + # e.g. staging projects inherit the project config from 'ports' repository. + # but that repository does not contain the archs we want, as such it has no state + if e.code != 404: + raise e def repository_state(apiurl, project, repository, archs=[]): if not len(archs): @@ -403,7 +409,9 @@ # binaries published in repository. As such request binary list and hash. combined_state = [] for arch in archs: - combined_state.append(repository_arch_state(apiurl, project, repository, arch)) + state = repository_arch_state(apiurl, project, repository, arch) + if state: + combined_state.append(state) from osclib.util import sha1_short return sha1_short(combined_state) @@ -411,7 +419,9 @@ states = [] for project, repository in repository_pairs: - states.append(repository_state(apiurl, project, repository, archs)) + state = repository_state(apiurl, project, repository, archs) + if state: + states.append(state) return states diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/pkglistgen/cli.py new/openSUSE-release-tools-20190207.b99d841/pkglistgen/cli.py --- old/openSUSE-release-tools-20190124.535533d/pkglistgen/cli.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/pkglistgen/cli.py 2019-02-07 06:43:02.000000000 +0100 @@ -77,9 +77,12 @@ main_repo = target_config['main-repo'] + # used by product converter + # these needs to be kept in sync with OBS config if apiurl.find('suse.de') > 0: - # used by product converter os.environ['OBS_NAME'] = 'build.suse.de' + if apiurl.find('opensuse.org') > 0: + os.environ['OBS_NAME'] = 'build.opensuse.org' # special case for all if opts.scope == ['all']: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/rabbit-openqa.py new/openSUSE-release-tools-20190207.b99d841/rabbit-openqa.py --- old/openSUSE-release-tools-20190124.535533d/rabbit-openqa.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/rabbit-openqa.py 2019-02-07 06:43:02.000000000 +0100 @@ -160,8 +160,8 @@ class Listener(PubSubConsumer): - def __init__(self, amqp_prefix, amqp_url, openqa_url): - super(Listener, self).__init__(amqp_url, logging.getLogger(__name__)) + def __init__(self, amqp_prefix, openqa_url): + super(Listener, self).__init__(amqp_prefix, logging.getLogger(__name__)) self.projects = [] self.amqp_prefix = amqp_prefix self.openqa_url = openqa_url @@ -214,7 +214,7 @@ p.check_published_repo(str(payload['project']), str(payload['repo']), str(payload['buildid'])) def on_openqa_job(self, iso): - self.logger.debug('openqa_job_change', iso) + self.logger.debug('openqa_job_change %s', iso) for p in self.projects: p.openqa_job_change(iso) @@ -249,16 +249,14 @@ if apiurl.endswith('suse.de'): amqp_prefix = 'suse' - amqp_url = "amqps://suse:s...@rabbit.suse.de" openqa_url = 'https://openqa.suse.de' else: amqp_prefix = 'opensuse' - amqp_url = "amqps://opensuse:opens...@rabbit.opensuse.org" openqa_url = 'https://openqa.opensuse.org' logging.basicConfig(level=logging.INFO) - l = Listener(amqp_prefix, amqp_url, openqa_url) + l = Listener(amqp_prefix, openqa_url) url = makeurl(apiurl, ['search', 'project', 'id'], {'match': 'attribute/@name="OSRT:OpenQAMapping"'}) f = http_GET(url) root = ET.parse(f).getroot() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20190124.535533d/repo_checker.py new/openSUSE-release-tools-20190207.b99d841/repo_checker.py --- old/openSUSE-release-tools-20190124.535533d/repo_checker.py 2019-01-24 12:39:50.000000000 +0100 +++ new/openSUSE-release-tools-20190207.b99d841/repo_checker.py 2019-02-07 06:43:02.000000000 +0100 @@ -29,6 +29,7 @@ from osclib.core import repository_path_search from osclib.core import repository_path_expand from osclib.core import repositories_states +from osclib.core import repository_arch_state from osclib.core import repositories_published from osclib.core import target_archs from osclib.cycle import CycleDetector @@ -63,9 +64,12 @@ self.logger.error(ERROR_REPO_SPECIFIED.format(project)) return + config = Config.get(self.apiurl, project) + arch_whitelist = config.get('repo_checker-arch-whitelist') + repository_pairs = repository_path_expand(self.apiurl, project, repository) state_hash = self.repository_state(repository_pairs, False) - self.repository_check(repository_pairs, state_hash, False, bool(post_comments)) + self.repository_check(repository_pairs, state_hash, False, bool(post_comments), arch_whitelist=arch_whitelist) def package_comments(self, project, repository): self.logger.info('{} package comments'.format(len(self.package_results))) @@ -106,26 +110,16 @@ self.comment_write(state='seen', result=reference, bot_name_suffix=bot_name_suffix, project=comment_project, package=comment_package, message=message) - def target_archs(self, project, repository): + def target_archs(self, project, repository, arch_whitelist=None): archs = target_archs(self.apiurl, project, repository) # Check for arch whitelist and use intersection. - whitelist = Config.get(self.apiurl, project).get('repo_checker-arch-whitelist') - if whitelist: - archs = list(set(whitelist.split(' ')).intersection(set(archs))) + if arch_whitelist: + archs = list(set(arch_whitelist.split(' ')).intersection(set(archs))) # 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.""" @@ -357,7 +351,7 @@ @memoize(ttl=60, session=True) def repository_state(self, repository_pairs, simulate_merge): - archs = self.target_archs_from_prairs(repository_pairs, simulate_merge) + archs = self.target_archs(repository_pairs[0][0], repository_pairs[0][1]) states = repositories_states(self.apiurl, repository_pairs, archs) if simulate_merge: @@ -381,13 +375,25 @@ return None @memoize(session=True) - def repository_check(self, repository_pairs, state_hash, simulate_merge, post_comments=False): + def repository_check(self, repository_pairs, state_hash, simulate_merge, whitelist=None, arch_whitelist=None, post_comments=False): comment = [] project, repository = repository_pairs[0] self.logger.info('checking {}/{}@{}[{}]'.format( project, repository, state_hash, len(repository_pairs))) - archs = self.target_archs_from_prairs(repository_pairs, simulate_merge) + archs = self.target_archs(project, repository, arch_whitelist) + new_pairs = [] + for pair in repository_pairs: + has_all = True + for arch in archs: + if not repository_arch_state(self.apiurl, pair[0], pair[1], arch): + has_all = False + break + # ignore repositories only inherited for config + if has_all: + new_pairs.append(pair) + repository_pairs = new_pairs + published = repositories_published(self.apiurl, repository_pairs, archs) if not self.force: @@ -428,7 +434,8 @@ if simulate_merge: ignore = self.simulated_merge_ignore(repository_pairs[0], repository_pairs[1], arch) - whitelist = self.binary_whitelist(repository_pairs[0], repository_pairs[1], arch) + if not whitelist: + whitelist = self.binary_whitelist(repository_pairs[0], repository_pairs[1], arch) results = { 'cycle': self.cycle_check(repository_pairs[0], repository_pairs[1], arch), @@ -546,12 +553,7 @@ self.logger.info('{} not ready due to staging build failure(s)'.format(request.reqid)) return None - # Staging setup is convoluted and thus the repository setup does not - # contain a path to the target project. Instead the ports repository - # is used to import the target prjconf. As such the staging group - # repository must be explicitly layered on top of target project. - repository_pairs.append([stage_info['prj'], repository]) - repository_pairs.extend(repository_path_expand(self.apiurl, action.tgt_project, repository)) + repository_pairs.extend(repository_path_expand(self.apiurl, stage_info['prj'], repository)) else: # Find a repository which links to target project "main" repository. repository = repository_path_search( @@ -569,8 +571,21 @@ if not isinstance(repository_pairs, list): return repository_pairs + # use project_only results by default as reference + whitelist = None + config = Config.get(self.apiurl, action.tgt_project) + staging = config.get('staging') + arch_whitelist = config.get('repo_checker-arch-whitelist') + if staging: + api = self.staging_api(staging) + if not api.is_adi_project(repository_pairs[0][0]): + # For "leaky" ring packages in letter stagings, where the + # repository setup does not include the target project, that are + # not intended to to have all run-time dependencies satisfied. + whitelist = config.get('repo_checker-binary-whitelist-ring', '').split(' ') + state_hash = self.repository_state(repository_pairs, True) - if not self.repository_check(repository_pairs, state_hash, True): + if not self.repository_check(repository_pairs, state_hash, True, arch_whitelist=arch_whitelist, whitelist=whitelist): return None self.review_messages['accepted'] = 'cycle and install check passed' ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.aRGXUz/_old 2019-02-08 12:13:32.053466326 +0100 +++ /var/tmp/diff_new_pack.aRGXUz/_new 2019-02-08 12:13:32.057466326 +0100 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20190124.535533d -mtime: 1548329990 -commit: 535533d62c27ea85d89ad417445b1cf01b229455 +version: 20190207.b99d841 +mtime: 1549518182 +commit: b99d841e96482efa1775eb6aaccf471814f29d70