Hello community,

here is the log from the commit of package openSUSE-release-tools for 
openSUSE:Factory checked in at 2018-04-30 22:54:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
 and      /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openSUSE-release-tools"

Mon Apr 30 22:54:57 2018 rev:88 rq:602092 version:20180427.add0eb7

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
    2018-04-27 16:09:26.550026327 +0200
+++ 
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new/openSUSE-release-tools.changes
       2018-04-30 22:58:20.121782012 +0200
@@ -1,0 +2,17 @@
+Fri Apr 27 15:56:47 UTC 2018 - opensuse-releaset...@opensuse.org
+
+- Update to version 20180427.add0eb7:
+  * [openqa-maintenance] Don't accept incidents waiting for build
+  * osclib/check_duplicate_binaries: ignore any package arch that differs from 
arch.
+  * osclib/check_duplicate_binaries: rewrite to use package_binary_list().
+  * osclib/core: binary_src_debug: include nosrc as ignored arch.
+  * osclib/core: package_binary_list: provide strip_multibuild option.
+  * osclib/check_duplicate_binaries: drop unused imports post lnussel rework.
+
+-------------------------------------------------------------------
+Thu Apr 26 17:10:14 UTC 2018 - opensuse-releaset...@opensuse.org
+
+- Update to version 20180426.2550cb4:
+  * osclib/check_duplicate_binaries: ignore s/glibc.i686/glibc:i686/.
+
+-------------------------------------------------------------------

Old:
----
  openSUSE-release-tools-20180426.2282f15.obscpio

New:
----
  openSUSE-release-tools-20180427.add0eb7.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.Io5CS4/_old  2018-04-30 22:58:23.309665689 +0200
+++ /var/tmp/diff_new_pack.Io5CS4/_new  2018-04-30 22:58:23.313665543 +0200
@@ -20,7 +20,7 @@
 %define source_dir openSUSE-release-tools
 %define announcer_filename factory-package-news
 Name:           openSUSE-release-tools
-Version:        20180426.2282f15
+Version:        20180427.add0eb7
 Release:        0
 Summary:        Tools to aid in staging and release work for openSUSE/SUSE
 License:        GPL-2.0-or-later AND MIT

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.Io5CS4/_old  2018-04-30 22:58:23.385662915 +0200
+++ /var/tmp/diff_new_pack.Io5CS4/_new  2018-04-30 22:58:23.385662915 +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">2282f15cf32167d4eddadce3a87205e44e5e0a59</param>
+    <param 
name="changesrevision">add0eb7927dde22dc83b06ae66b3027fbbe83228</param>
   </service>
 </servicedata>

++++++ openSUSE-release-tools-20180426.2282f15.obscpio -> 
openSUSE-release-tools-20180427.add0eb7.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20180426.2282f15/oqamaint/openqabot.py 
new/openSUSE-release-tools-20180427.add0eb7/oqamaint/openqabot.py
--- old/openSUSE-release-tools-20180426.2282f15/oqamaint/openqabot.py   
2018-04-26 17:55:07.000000000 +0200
+++ new/openSUSE-release-tools-20180427.add0eb7/oqamaint/openqabot.py   
2018-04-27 17:55:47.000000000 +0200
@@ -3,7 +3,6 @@
 from datetime import date
 import md5
 from pprint import pformat
-import re
 from urllib2 import HTTPError
 from osclib.comments import CommentAPI
 
@@ -42,7 +41,6 @@
         self.project_settings = {}
         self.api_map = {}
         self.bot_name = 'openqa'
-
         self.force = False
         self.openqa = None
         self.commentapi = CommentAPI(self.apiurl)
@@ -227,7 +225,7 @@
 
     def request_get_openqa_status(self, req):
         types = {a.type for a in req.actions}
-        if not 'maintenance_release' in types:
+        if 'maintenance_release' not in types:
             return [], QA_UNKNOWN
 
         src_prjs = {a.src_project for a in req.actions}
@@ -256,7 +254,7 @@
             if not foundissue:
                 self.logger.info("Repo job {} not for {} - 
ignoring".format(job['id'], incident_id))
                 return jobs, QA_INPROGRESS
-            #print(foundissue, incident_id, json.dumps(job['settings'], 
indent=4))
+            # print(foundissue, incident_id, json.dumps(job['settings'], 
indent=4))
 
         jobs += repo_jobs
         return jobs, self.calculate_qa_status(jobs)
@@ -375,17 +373,18 @@
         return msg.rstrip('\n')
 
     def check_one_request(self, req):
-        ret = None
-
         try:
             jobs, qa_state = self.request_get_openqa_status(req)
             self.logger.debug("request %s state %s", req.reqid, qa_state)
             msg = None
             if qa_state == QA_UNKNOWN:
-                if not jobs:
+                incident_id = 
req.findall('.action/source')[0].get('project').split(":")[-1]
+                if not jobs and incident_id not in self.wait_for_build:
                     msg = "no openQA tests defined"
                     self.comment_write(state='done', message=msg, request=req, 
result='accepted')
                     return True
+                else:
+                    self.logger.debug("request {} waits for 
build".format(req.request_id))
             elif qa_state == QA_FAILED or qa_state == QA_PASSED:
                 if qa_state == QA_PASSED:
                     msg = "openQA tests passed\n"
@@ -430,7 +429,7 @@
         issues['OS_TEST_ISSUES'] = issues.get('OS_TEST_ISSUES', product_prefix)
         required_issue = pmap.get('required_issue', False)
         for key, prefix in issues.items():
-            #self.logger.debug("KP {} {}".format(key, prefix) + str(job))
+            # self.logger.debug("KP {} {}".format(key, prefix) + str(job))
             channel = prefix
             if arch:
                 channel += arch
@@ -457,6 +456,7 @@
             if not job.get('openqa_build'):
                 job['openqa_build'] = update.get_max_revision(job)
             if not job.get('openqa_build'):
+                self.wait_for_build.add(str(job['id']))
                 return []
             self.incident_repos.setdefault(product_prefix, dict())[
                 str(job['id'])] = job.get('openqa_build')
@@ -497,6 +497,7 @@
     # for SUSE we use mesh for openSUSE we limit the jobs to open release 
requests
     def check_opensuse_incidents(self):
         requests = []
+        self.wait_for_build = set()
         for prj in self.tgt_repo[self.openqa.baseurl].keys():
             requests += self.ids_project(prj, 'maintenance_release')
 
@@ -504,7 +505,7 @@
         issues = dict()
         for req in requests:
             types = set([a.type for a in req.actions])
-            if not 'maintenance_release' in types:
+            if 'maintenance_release' not in types:
                 continue
 
             src_prjs = set([a.src_project for a in req.actions])
@@ -512,10 +513,9 @@
                 raise Exception("can't handle maintenance_release from 
different incidents")
             build = src_prjs.pop()
             tgt_prjs = set([a.tgt_project for a in req.actions])
-            ret = []
             for prj in tgt_prjs:
                 # ignore e.g. Backports
-                if not prj in self.project_settings:
+                if prj not in self.project_settings:
                     continue
 
                 incident_id = build.split(':')[-1]
@@ -527,6 +527,7 @@
             s['OS_TEST_ISSUES'] = ','.join(sorted(issues.get(prj, set())))
 
     def check_suse_incidents(self):
+        self.wait_for_build = set()
         for inc in 
requests.get('https://maintenance.suse.de/api/incident/active/').json():
             self.logger.info("Incident number: {}".format(inc))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20180426.2282f15/oqamaint/update.py 
new/openSUSE-release-tools-20180427.add0eb7/oqamaint/update.py
--- old/openSUSE-release-tools-20180426.2282f15/oqamaint/update.py      
2018-04-26 17:55:07.000000000 +0200
+++ new/openSUSE-release-tools-20180427.add0eb7/oqamaint/update.py      
2018-04-27 17:55:47.000000000 +0200
@@ -45,7 +45,7 @@
             if not xml.ok:
                 self.logger.info("{} skipped .. need wait".format(crepo))
                 # if one fails, we skip it and wait
-                return None
+                return False
             root = ET.fromstring(xml.text)
             rev = root.find('.//{http://linux.duke.edu/metadata/repo}revision')
             rev = int(rev.text)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20180426.2282f15/osclib/check_duplicate_binaries_command.py
 
new/openSUSE-release-tools-20180427.add0eb7/osclib/check_duplicate_binaries_command.py
--- 
old/openSUSE-release-tools-20180426.2282f15/osclib/check_duplicate_binaries_command.py
      2018-04-26 17:55:07.000000000 +0200
+++ 
new/openSUSE-release-tools-20180427.add0eb7/osclib/check_duplicate_binaries_command.py
      2018-04-27 17:55:47.000000000 +0200
@@ -1,64 +1,35 @@
 from __future__ import print_function
-from osc.core import http_GET
-from osclib.core import package_list
+from osclib.core import package_binary_list
 from osclib.core import target_archs
-from xml.etree import cElementTree as ET
-from pprint import pprint
-import re
-import urllib2
 import yaml
 
 
 class CheckDuplicateBinariesCommand(object):
     def __init__(self, api):
         self.api = api
-        # some packages create packages with the same name but
-        # different architecture than built for.
-        self.ignore_extra_archs = {
-            'i586': {
-                'glibc.i686': ('i686',)
-            },
-            'x86_64': {
-                'syslinux': ('s390x', 'ppc64le',)
-            }
-        }
 
     def perform(self, save=False):
         duplicates = {}
         for arch in sorted(target_archs(self.api.apiurl, self.api.project), 
reverse=True):
-            url = self.api.makeurl(['build', self.api.project, 'standard', 
arch], { 'view': 'binaryversions' })
-            data = http_GET(url)
-            root = ET.parse(data).getroot()
-
+            package_binaries, _ = package_binary_list(
+                self.api.apiurl, self.api.project, 'standard', arch,
+                strip_multibuild=False, exclude_src_debug=True)
             binaries = {}
-            for packagenode in root.findall('.//binaryversionlist'):
-                package = packagenode.get('package')
-                for binarynode in packagenode.findall('binary'):
-                    binary = binarynode.get('name')
-                    # StagingAPI.fileinfo_ext(), but requires lots of calls.
-                    match = re.match(r'(.*)-([^-]+)-([^-]+)\.([^-\.]+)\.rpm', 
binary)
-                    if not match:
-                        continue
-                    parch = match.group(4)
-                    if parch in ('src', 'nosrc'):
-                        continue
-
-                    name = match.group(1)
-
-                    if arch in self.ignore_extra_archs \
-                        and package in self.ignore_extra_archs[arch] \
-                        and parch in self.ignore_extra_archs[arch][package]:
-                        continue
-
-                    binaries.setdefault(arch, {})
-                    if name in binaries[arch]:
-                        duplicates.setdefault(arch, {})
-                        duplicates[arch].setdefault(name, set()).add(package)
-                        duplicates[arch][name].add(binaries[arch][name])
+            for pb in package_binaries:
+                if pb.arch != 'noarch' and pb.arch != arch:
+                    continue
+
+                binaries.setdefault(arch, {})
+
+                if pb.name in binaries[arch]:
+                    duplicates.setdefault(arch, {})
+                    duplicates[arch].setdefault(pb.name, set())
+                    duplicates[arch][pb.name].add(pb.package)
+                    duplicates[arch][pb.name].add(binaries[arch][pb.name])
 
-                        continue
+                    continue
 
-                    binaries[arch][name] = package
+                binaries[arch][pb.name] = pb.package
 
         # convert sets to lists for readable yaml
         for arch in duplicates.keys():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20180426.2282f15/osclib/core.py 
new/openSUSE-release-tools-20180427.add0eb7/osclib/core.py
--- old/openSUSE-release-tools-20180426.2282f15/osclib/core.py  2018-04-26 
17:55:07.000000000 +0200
+++ new/openSUSE-release-tools-20180427.add0eb7/osclib/core.py  2018-04-27 
17:55:47.000000000 +0200
@@ -121,7 +121,7 @@
     return parsed
 
 @memoize(session=True)
-def package_binary_list(apiurl, project, repository, arch, package=None, 
exclude_src_debug=False):
+def package_binary_list(apiurl, project, repository, arch, package=None, 
strip_multibuild=True, exclude_src_debug=False):
     path = ['build', project, repository, arch]
     if package:
         path.append(package)
@@ -131,9 +131,10 @@
     package_binaries = []
     binary_map = {} # last duplicate wins
     for binary_list in root:
-        # Strip off multibuild extra to provide actual package name. The full
-        # value may be useful for duplicate check.
-        package = binary_list.get('package').split(':', 1)[0]
+        package = binary_list.get('package')
+        if strip_multibuild:
+            package = package.split(':', 1)[0]
+
         for binary in binary_list:
             filename = binary.get('name')
             result = re.match(RPM_REGEX, filename)
@@ -153,6 +154,7 @@
 def binary_src_debug(binary):
     return (
         binary.arch == 'src' or
+        binary.arch == 'nosrc' or
         binary.name.endswith('-debuginfo') or
         binary.name.endswith('-debugsource')
     )

++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.Io5CS4/_old  2018-04-30 22:58:24.277630368 +0200
+++ /var/tmp/diff_new_pack.Io5CS4/_new  2018-04-30 22:58:24.281630222 +0200
@@ -1,5 +1,5 @@
 name: openSUSE-release-tools
-version: 20180426.2282f15
-mtime: 1524758107
-commit: 2282f15cf32167d4eddadce3a87205e44e5e0a59
+version: 20180427.add0eb7
+mtime: 1524844547
+commit: add0eb7927dde22dc83b06ae66b3027fbbe83228
 


Reply via email to