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 - [email protected]
+
+- 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 - [email protected]
+
+- 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