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
 


Reply via email to