Hello community,
here is the log from the commit of package openSUSE-release-tools for
openSUSE:Factory checked in at 2018-06-19 12:00:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Tue Jun 19 12:00:40 2018 rev:103 rq:616654 version:20180614.3b99137
Changes:
--------
---
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
2018-06-08 23:15:53.799129736 +0200
+++
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new/openSUSE-release-tools.changes
2018-06-19 12:00:56.372100239 +0200
@@ -1,0 +2,18 @@
+Thu Jun 14 05:12:28 UTC 2018 - [email protected]
+
+- Update to version 20180614.3b99137:
+ * dist/ci/Dockerfile: add python2-pyOpenSSL as dependency.
+ * TTM: Add norelease option for use with OSD
+ * Refactor _check_project into ReviewBot
+ * Also release 000product:openSUSE-ftp-ftp-armv7hl for Leap 15.0 ports
+ * dist: Require python2-pika by totest-manager (new amqp dependency)
+ * legal-auto: autopep8
+ * Add retried_GET
+ * Do not pass md5 but revision
+ * Use UTC for created
+ * Add project sub command to legal auto
+ * pkglistgen: log unsorted locale packages
+ * update-crawler: also log where requests came from
+ * Handle armv6/armv7 with totest manager as well
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20180604.ce0a143.obscpio
New:
----
openSUSE-release-tools-20180614.3b99137.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.ueawa2/_old 2018-06-19 12:00:57.384062666 +0200
+++ /var/tmp/diff_new_pack.ueawa2/_new 2018-06-19 12:00:57.388062517 +0200
@@ -20,7 +20,7 @@
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20180604.ce0a143
+Version: 20180614.3b99137
Release: 0
Summary: Tools to aid in staging and release work for openSUSE/SUSE
License: GPL-2.0-or-later AND MIT
@@ -202,6 +202,7 @@
# TODO Update requirements.
Requires: osclib = %{version}
Requires: python-openqa_client
+Requires: python2-pika
%description totest-manager
Manages product ToTest repository workflow and openQA interaction
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ueawa2/_old 2018-06-19 12:00:57.452060141 +0200
+++ /var/tmp/diff_new_pack.ueawa2/_new 2018-06-19 12:00:57.452060141 +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">f728cea30b605621e2103acb591f248371f23091</param>
+ <param
name="changesrevision">c3df9508696dbca3b8e0835704814442ac1871dc</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20180604.ce0a143.obscpio ->
openSUSE-release-tools-20180614.3b99137.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openSUSE-release-tools-20180604.ce0a143/ReviewBot.py
new/openSUSE-release-tools-20180614.3b99137/ReviewBot.py
--- old/openSUSE-release-tools-20180604.ce0a143/ReviewBot.py 2018-06-04
22:09:07.000000000 +0200
+++ new/openSUSE-release-tools-20180614.3b99137/ReviewBot.py 2018-06-14
07:05:13.000000000 +0200
@@ -45,6 +45,8 @@
from osc import conf
import osc.core
import urllib2
+from itertools import count
+
class ReviewBot(object):
"""
@@ -574,6 +576,50 @@
self.comment_handler_remove()
+ def _check_matching_srcmd5(self, project, package, rev, history_limit = 5):
+ """check if factory sources contain the package and revision. check
head and history"""
+ self.logger.debug("checking %s in %s"%(package, project))
+ try:
+ si = osc.core.show_package_meta(self.apiurl, project, package)
+ except (urllib2.HTTPError, urllib2.URLError):
+ si = None
+ if si is None:
+ self.logger.debug("new package")
+ return None
+ else:
+ si = self.get_sourceinfo(project, package)
+ if rev == si.verifymd5:
+ self.logger.debug("srcmd5 matches")
+ return True
+
+ if history_limit:
+ self.logger.debug("%s not the latest version, checking history",
rev)
+ u = osc.core.makeurl(self.apiurl, [ 'source', project, package,
'_history' ], { 'limit': history_limit })
+ try:
+ r = osc.core.http_GET(u)
+ except urllib2.HTTPError as e:
+ self.logger.debug("package has no history!?")
+ return None
+
+ root = ET.parse(r).getroot()
+ # we need this complicated construct as obs doesn't honor
+ # the 'limit' parameter use above for obs interconnect:
+ # https://github.com/openSUSE/open-build-service/issues/2545
+ for revision, i in zip(reversed(root.findall('revision')),
count()):
+ node = revision.find('srcmd5')
+ if node is None:
+ continue
+ self.logger.debug("checking %s"%node.text)
+ if node.text == rev:
+ self.logger.debug("got it, rev %s"%revision.get('rev'))
+ return True
+ if i == history_limit:
+ break
+
+ self.logger.debug("srcmd5 not found in history either")
+
+ return False
+
class CommentFromLogHandler(logging.Handler):
def __init__(self, level=logging.INFO):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180604.ce0a143/check_source_in_factory.py
new/openSUSE-release-tools-20180614.3b99137/check_source_in_factory.py
--- old/openSUSE-release-tools-20180604.ce0a143/check_source_in_factory.py
2018-06-04 22:09:07.000000000 +0200
+++ new/openSUSE-release-tools-20180614.3b99137/check_source_in_factory.py
2018-06-14 07:05:13.000000000 +0200
@@ -35,7 +35,6 @@
import urllib2
import yaml
import ReviewBot
-from itertools import count
class FactorySourceChecker(ReviewBot.ReviewBot):
@@ -77,7 +76,7 @@
self.review_messages['declined'] = 'the package needs to be accepted
in {} first'.format(' or '.join(projects))
for project in projects:
self.logger.info("Checking in project %s" % project)
- good = self._check_project(project, target_package,
src_srcinfo.verifymd5)
+ good = self._check_matching_srcmd5(project, target_package,
src_srcinfo.verifymd5, self.history_limit)
if good:
self.logger.info("{} is in {}".format(target_package, project))
return good
@@ -103,48 +102,6 @@
return projects
- def _check_project(self, project, package, rev):
- """check if factory sources contain the package and revision. check
head and history"""
- self.logger.debug("checking %s in %s"%(package, project))
- try:
- si = osc.core.show_package_meta(self.apiurl, project, package)
- except (urllib2.HTTPError, urllib2.URLError):
- si = None
- if si is None:
- self.logger.debug("new package")
- return None
- else:
- si = self.get_sourceinfo(project, package)
- if rev == si.verifymd5:
- self.logger.debug("srcmd5 matches")
- return True
-
- self.logger.debug("%s not the latest version, checking history", rev)
- u = osc.core.makeurl(self.apiurl, [ 'source', project, package,
'_history' ], { 'limit': self.history_limit })
- try:
- r = osc.core.http_GET(u)
- except urllib2.HTTPError as e:
- self.logger.debug("package has no history!?")
- return None
-
- root = ET.parse(r).getroot()
- # we need this complicated construct as obs doesn't honor
- # the 'limit' parameter use above for obs interconnect:
- # https://github.com/openSUSE/open-build-service/issues/2545
- for revision, i in zip(reversed(root.findall('revision')), count()):
- node = revision.find('srcmd5')
- if node is None:
- continue
- self.logger.debug("checking %s"%node.text)
- if node.text == rev:
- self.logger.debug("got it, rev %s"%revision.get('rev'))
- return True
- if i == self.history_limit:
- break
-
- self.logger.debug("srcmd5 not found in history either")
- return False
-
def _check_requests(self, project, package, rev):
self.logger.debug("checking requests")
prjprefix = ''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180604.ce0a143/dist/ci/Dockerfile
new/openSUSE-release-tools-20180614.3b99137/dist/ci/Dockerfile
--- old/openSUSE-release-tools-20180604.ce0a143/dist/ci/Dockerfile
2018-06-04 22:09:07.000000000 +0200
+++ new/openSUSE-release-tools-20180614.3b99137/dist/ci/Dockerfile
2018-06-14 07:05:13.000000000 +0200
@@ -12,6 +12,7 @@
obs-service-* \
osc \
python-packaging \
+ python2-pyOpenSSL \
sudo
# `osc build` directories that are effective to cache:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180604.ce0a143/dist/package/openSUSE-release-tools.spec
new/openSUSE-release-tools-20180614.3b99137/dist/package/openSUSE-release-tools.spec
---
old/openSUSE-release-tools-20180604.ce0a143/dist/package/openSUSE-release-tools.spec
2018-06-04 22:09:07.000000000 +0200
+++
new/openSUSE-release-tools-20180614.3b99137/dist/package/openSUSE-release-tools.spec
2018-06-14 07:05:13.000000000 +0200
@@ -202,6 +202,7 @@
# TODO Update requirements.
Requires: osclib = %{version}
Requires: python-openqa_client
+Requires: python2-pika
%description totest-manager
Manages product ToTest repository workflow and openQA interaction
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/openSUSE-release-tools-20180604.ce0a143/leaper.py
new/openSUSE-release-tools-20180614.3b99137/leaper.py
--- old/openSUSE-release-tools-20180604.ce0a143/leaper.py 2018-06-04
22:09:07.000000000 +0200
+++ new/openSUSE-release-tools-20180614.3b99137/leaper.py 2018-06-14
07:05:13.000000000 +0200
@@ -186,7 +186,7 @@
if devel_package is None:
devel_package = package
if self.is_package_in_project(devel_project, devel_package):
- if self.factory._check_project(devel_project,
devel_package, src_srcinfo.verifymd5) == True:
+ if self._check_matching_srcmd5(devel_project,
devel_package, src_srcinfo.verifymd5) == True:
self.logger.info('matching sources in
{}/{}'.format(devel_project, devel_package))
return True
else:
@@ -266,7 +266,7 @@
return True
# submitted from elsewhere but is in :Update
else:
- good =
self.factory._check_project('openSUSE:Leap:15.0:Update', target_package,
src_srcinfo.verifymd5)
+ good =
self._check_matching_srcmd5('openSUSE:Leap:15.0:Update', target_package,
src_srcinfo.verifymd5)
if good:
self.logger.info("submission found in 15.0")
return good
@@ -285,7 +285,7 @@
if oldorigin.startswith('openSUSE:Factory'):
# check if an attempt to switch to SLE package is made
for sp in ('SP1:GA', 'SP1:Update'):
- good =
self.factory._check_project('SUSE:SLE-15-{}'.format(sp), target_package,
src_srcinfo.verifymd5)
+ good =
self._check_matching_srcmd5('SUSE:SLE-15-{}'.format(sp), target_package,
src_srcinfo.verifymd5)
if good:
self.logger.info("request sources come from
SLE")
self.needs_release_manager = True
@@ -305,7 +305,7 @@
prj = 'openSUSE:Leap:{}:SLE-workarounds'.format(v)
if self.is_package_in_project( prj, target_package):
self.logger.info("found package in %s", prj)
- if not self.factory._check_project(prj,
+ if not self._check_matching_srcmd5(prj,
target_package,
src_srcinfo.verifymd5):
self.logger.info("sources in %s are NOT identical",
@@ -413,7 +413,7 @@
def _check_factory(self, target_package, src_srcinfo,
target_project='openSUSE:Factory'):
for subprj in ('', ':NonFree', ':Live'):
prj = ''.join((target_project, subprj))
- good = self.factory._check_project(prj, target_package,
src_srcinfo.verifymd5)
+ good = self._check_matching_srcmd5(prj, target_package,
src_srcinfo.verifymd5)
if good:
return good
good = self.factory._check_requests(prj, target_package,
src_srcinfo.verifymd5)
@@ -424,7 +424,7 @@
return False
def _check_project_and_request(self, project, target_package, src_srcinfo):
- good = self.factory._check_project(project, target_package,
src_srcinfo.verifymd5)
+ good = self._check_matching_srcmd5(project, target_package,
src_srcinfo.verifymd5)
if good:
return good
good = self.factory._check_requests(project, target_package,
src_srcinfo.verifymd5)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180604.ce0a143/legal-auto.py
new/openSUSE-release-tools-20180614.3b99137/legal-auto.py
--- old/openSUSE-release-tools-20180604.ce0a143/legal-auto.py 2018-06-04
22:09:07.000000000 +0200
+++ new/openSUSE-release-tools-20180614.3b99137/legal-auto.py 2018-06-14
07:05:13.000000000 +0200
@@ -31,37 +31,54 @@
import cmdln
import requests as REQ
import json
+import time
+import urllib2
try:
from xml.etree import cElementTree as ET
except ImportError:
import cElementTree as ET
+try:
+ import cPickle as pickle
+except:
+ import pickle
+
import osc.conf
import osc.core
import ReviewBot
from osclib.comments import CommentAPI
+http_GET = osc.core.http_GET
+
class LegalAuto(ReviewBot.ReviewBot):
def __init__(self, *args, **kwargs):
ReviewBot.ReviewBot.__init__(self, *args, **kwargs)
- self.do_comments = True
self.legaldb = None
self.legaldb_headers = {}
- self.commentapi = CommentAPI(self.apiurl)
self.apinick = None
self.message = None
if self.ibs:
self.apinick = 'ibs#'
else:
self.apinick = 'obs#'
- self.override_allow = False # Handled via external tool.
+ self.override_allow = False # Handled via external tool.
self.request_default_return = True
+ def retried_GET(self, url):
+ try:
+ return http_GET(url)
+ except urllib2.HTTPError, e:
+ if 500 <= e.code <= 599:
+ print 'Retrying {}'.format(url)
+ time.sleep(1)
+ return self.retried_GET(url)
+ raise e
+
def request_priority(self):
prio = self.request.priority or 'moderate'
prios = {'low': 1, 'moderate': 2, 'important': 3, 'critical': 4}
@@ -78,7 +95,7 @@
def create_db_entry(self, src_project, src_package, src_rev):
params = {'api': self.apiurl, 'project': src_project, 'package':
src_package,
'external_link': self.request_nick(),
- 'created': self.request.statehistory[0].when}
+ 'created': self.request.statehistory[0].when + ' UTC'}
if src_rev:
params['rev'] = src_rev
url = osc.core.makeurl(self.legaldb, ['packages'], params)
@@ -96,6 +113,8 @@
self.logger.info("%s/%s@%s -> %s/%s" % (src_project,
src_package, src_rev,
target_project, target_package))
to_review = self.open_reviews.get(self.request_nick(), None)
+ if to_review:
+ self.logger.info("Found " + json.dumps(to_review))
to_review = to_review or self.create_db_entry(
src_project, src_package, src_rev)
if not to_review:
@@ -121,7 +140,7 @@
user = report.get('reviewing_user', None)
if not user:
self.message = 'declined'
- print self.message
+ print("unacceptable without user %d" % report.get('id'))
return None
comment = report.get('result', None)
if comment:
@@ -129,16 +148,27 @@
user, comment)
else:
self.message = "@{} declined the legal report".format(user)
- print self.message
return None
return False
# print url, json.dumps(report)
self.message = 'ok'
return True
+ def check_one_request(self, req):
+ self.message = None
+ result = super(LegalAuto, self).check_one_request(req)
+ if result is None and self.message is not None:
+ print(self.message, req.reqid)
+ return result
+
+ def check_action__default(self, req, a):
+ self.logger.error("unhandled request type %s" % a.type)
+ return True
+
def prepare_review(self):
url = osc.core.makeurl(self.legaldb, ['requests'])
- req = REQ.get(url, headers=self.legaldb_headers).json()
+ req = REQ.get(url, headers=self.legaldb_headers)
+ req = req.json()
self.open_reviews = {}
requests = []
for hash in req['requests']:
@@ -178,6 +208,108 @@
by_user=self.review_user,
message=self.message)
self.delete_from_db(req.reqid)
+ def _pkl_path(self):
+ CACHE_DIR = os.path.expanduser('~/.cache/osc-plugin-factory')
+ return os.path.join(CACHE_DIR, 'legaldb')
+
+ def update_project(self, project):
+ try:
+ with open(self._pkl_path(), 'rb') as pkl_file:
+ self.pkg_cache = pickle.load(pkl_file)
+ except (IOError, EOFError):
+ self.pkg_cache = {}
+
+ self.packages = []
+ # we can't create packages for requests - we need a nonewpackages=1
first
+ # self._query_requests(project)
+ self._query_sources(project)
+ self._save_pkl()
+ url = osc.core.makeurl(self.legaldb, ['products', project])
+ request = REQ.patch(url, headers=self.legaldb_headers, data={'id':
self.packages}).json()
+
+ def _save_pkl(self):
+ pkl_file = open(self._pkl_path(), 'wb')
+ pickle.dump(self.pkg_cache, pkl_file)
+ pkl_file.close()
+
+ def _query_sources(self, project):
+ url = osc.core.makeurl(
+ self.apiurl, ['source', project], {'view': 'info'})
+ f = self.retried_GET(url)
+ root = ET.parse(f).getroot()
+ #root = ET.fromstring(open('prj.info').read())
+ for si in root.findall('sourceinfo'):
+ if si.findall('error'):
+ continue
+ package = si.get('package')
+ if ':' in package:
+ continue
+ if package == 'patchinfo' or package.startswith('patchinfo.'):
+ continue
+ # handle maintenance links - we only want the latest
+ match = re.match(r'(\S+)\.\d+$', package)
+ if match:
+ if si.find('filename').text == match.group(1) + '.spec':
+ continue
+ match = re.match(r'(\S+)\.imported_\d+$', package)
+ if match:
+ continue
+ skip = False
+ for l in si.findall('linked'):
+ lpackage = l.get('package')
+ # strip sle11's .imported_ suffix
+ lpackage = re.sub(r'\.imported_\d+$', '', lpackage)
+ # check if the lpackage is origpackage.NUMBER
+ match = re.match(r'(\S+)\.\d+$', lpackage)
+ if match and match.group(1) == package:
+ lpackage = package
+ if package != lpackage:
+ print "SKIP", package, "it links to", lpackage
+ skip = True
+ break
+ if skip:
+ continue
+ self.packages.append(self._add_source(project, project, package,
si.get('rev')))
+
+ def _query_requests(self, project):
+ match = "(state/@name='new' or state/@name='review') and
(action/target/@project='{}')"
+ match = match.format(project)
+ url = osc.core.makeurl(
+ self.apiurl, ['search', 'request'], {'match': match})
+ f = osc.core.http_GET(url)
+ root = ET.parse(f).getroot()
+ for rq in root.findall('request'):
+ for a in rq.findall('action'):
+ if not a.attrib['type'] in ('submit', 'maintenance_incident'):
+ continue
+ source = a.find('source')
+ revision = source.attrib.get('rev')
+ src_project = source.attrib['project']
+ package = source.attrib['package']
+ self._add_source(project, src_project, package, revision)
+
+ def _add_source(self, tproject, sproject, package, revision):
+ params = {'api': self.apiurl, 'project': sproject, 'package': package,
+ 'external_link': tproject}
+ if revision:
+ params['rev'] = revision
+ hkey = hash(json.dumps(params, sort_keys=True))
+ if hkey in self.pkg_cache:
+ return self.pkg_cache[hkey]
+
+ params['priority'] = 1
+ url = osc.core.makeurl(self.legaldb, ['packages'], params)
+
+ try:
+ obj = REQ.post(url, headers=self.legaldb_headers).json()
+ except:
+ return None
+ if not 'saved' in obj:
+ return None
+ print "PKG", tproject, sproject, package, revision, obj['saved']['id']
+ self.pkg_cache[hkey] = obj['saved']['id']
+ return self.pkg_cache[hkey]
+
class CommandLineInterface(ReviewBot.CommandLineInterface):
@@ -188,24 +320,28 @@
def get_optparser(self):
parser = ReviewBot.CommandLineInterface.get_optparser(self)
- parser.add_option("--no-comment", dest='comment', action="store_false",
- default=True, help="don't actually post comments to
obs")
parser.add_option("--legaldb", dest='legaldb', metavar='URL',
default='http://legaldb.suse.de', help="Use
different legaldb deployment")
parser.add_option("--token", dest='token', metavar='STRING',
default=False, help="Use token to authenticate")
return parser
+ def do_project(self, subcmd, opts, *projects):
+ """${cmd_name}: Overloaded to create/update product
+ """
+ for project in projects:
+ self.checker.update_project(project)
+
def setup_checker(self):
if not self.options.user and not self.options.group:
self.options.group = 'legal-auto'
bot = ReviewBot.CommandLineInterface.setup_checker(self)
- bot.do_comments = self.options.comment
bot.legaldb = self.options.legaldb
if self.options.token:
bot.legaldb_headers['Authorization'] = 'Token ' +
self.options.token
return bot
+
if __name__ == "__main__":
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.WARNING)
@@ -213,4 +349,3 @@
app = CommandLineInterface()
sys.exit(app.main())
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180604.ce0a143/pkglistgen.py
new/openSUSE-release-tools-20180614.3b99137/pkglistgen.py
--- old/openSUSE-release-tools-20180604.ce0a143/pkglistgen.py 2018-06-04
22:09:07.000000000 +0200
+++ new/openSUSE-release-tools-20180614.3b99137/pkglistgen.py 2018-06-14
07:05:13.000000000 +0200
@@ -527,6 +527,7 @@
def _check_supplements(self):
tocheck = set()
+ tocheck_locales = set()
for arch in self.architectures:
pool = self._prepare_pool(arch)
sel = pool.Selection()
@@ -539,6 +540,11 @@
if d.startswith('namespace:modalias') or
d.startswith('namespace:filesystem'):
tocheck.add(s.name)
+ for l in self.locales:
+ i = pool.str2id('locale({})'.format(l))
+ for s in pool.whatprovides(i):
+ tocheck_locales.add(s.name)
+
all_grouped = set()
for g in self.groups.values():
if g.solved:
@@ -549,6 +555,9 @@
for p in tocheck - all_grouped:
logger.warn('package %s has supplements but is not grouped', p)
+ for p in tocheck_locales - all_grouped:
+ logger.warn('package %s provides supported locale but is not
grouped', p)
+
def _prepare_pool(self, arch):
pool = solv.Pool()
pool.setarch(arch)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180604.ce0a143/totest-manager.py
new/openSUSE-release-tools-20180614.3b99137/totest-manager.py
--- old/openSUSE-release-tools-20180604.ce0a143/totest-manager.py
2018-06-04 22:09:07.000000000 +0200
+++ new/openSUSE-release-tools-20180614.3b99137/totest-manager.py
2018-06-14 07:05:13.000000000 +0200
@@ -54,7 +54,7 @@
livecd_repo = 'images'
livecd_archs = ['i586', 'x86_64']
- def __init__(self, project, dryrun=False, api_url=None,
openqa_server='https://openqa.opensuse.org', test_subproject=None):
+ def __init__(self, project, dryrun=False, norelease=False, api_url=None,
openqa_server='https://openqa.opensuse.org', test_subproject=None):
self.project = project
self.dryrun = dryrun
if not api_url:
@@ -351,9 +351,6 @@
# meant to use the totest manager.
if repo.get('repository') in ('ports', 'factory',
'images_staging'):
continue
- # ignore 32bit for now. We're only interesed in aarch64 here
- if repo.get('arch') in ('armv6l', 'armv7l'):
- continue
if repo.get('dirty', '') == 'true':
logger.info('%s %s %s -> %s' % (repo.get('project'),
repo.get('repository'),
repo.get('arch'), 'dirty'))
@@ -468,7 +465,7 @@
baseurl = ['source', project, package]
url = self.api.makeurl(baseurl, query=query)
- if self.dryrun:
+ if self.dryrun or self.norelease:
logger.info("release %s/%s (%s)" % (project, package, set_release))
else:
self.api.retried_POST(url)
@@ -487,14 +484,14 @@
def update_totest(self, snapshot=None):
release = 'Snapshot%s' % snapshot if snapshot else None
logger.info('Updating snapshot %s' % snapshot)
- if not self.dryrun:
+ if not (self.dryrun or self.norelease):
self.api.switch_flag_in_prj(self.test_project, flag='publish',
state='disable')
self._release(set_release=release)
def publish_factory_totest(self):
logger.info('Publish test project content')
- if not self.dryrun:
+ if not (self.dryrun or self.norelease):
self.api.switch_flag_in_prj(
self.test_project, flag='publish', state='enable')
@@ -619,7 +616,7 @@
self.update_totest(new_snapshot)
def write_version_to_dashboard(self, target, version):
- if not self.dryrun:
+ if not (self.dryrun or self.norelease):
self.api.dashboard_content_ensure('version_%s' % target, version,
comment='Update version')
@@ -645,7 +642,7 @@
baseurl = ['source', project, package]
url = self.api.makeurl(baseurl, query=query)
- if self.dryrun:
+ if self.dryrun or self.norelease:
logger.info("release %s/%s (%s)" % (project, package, set_release))
else:
self.api.retried_POST(url)
@@ -823,6 +820,7 @@
]
ftp_products = ['000product:openSUSE-ftp-ftp-aarch64',
+ '000product:openSUSE-ftp-ftp-armv7hl',
]
livecd_products = []
@@ -933,6 +931,7 @@
parser = cmdln.CmdlnOptionParser(self)
parser.add_option("--dry", action="store_true", help="dry run")
parser.add_option("--debug", action="store_true", help="debug output")
+ parser.add_option("--norelease", action="store_true", help="do not
trigger release in build service")
parser.add_option("--verbose", action="store_true", help="verbose")
parser.add_option(
"--osc-debug", action="store_true", help="osc debug output")
@@ -981,7 +980,7 @@
project, ', '.join(self.totest_class))
raise cmdln.CmdlnUserError(msg)
- return self.totest_class[project](project, self.options.dry,
self.options.obs_api_url, self.options.openqa_server)
+ return self.totest_class[project](project, self.options.dry,
self.options.norelease, self.options.obs_api_url, self.options.openqa_server)
@cmdln.option('-n', '--interval', metavar="minutes", type="int",
help="periodic interval in minutes")
def do_run(self, subcmd, opts, project='openSUSE:Factory'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20180604.ce0a143/update_crawler.py
new/openSUSE-release-tools-20180614.3b99137/update_crawler.py
--- old/openSUSE-release-tools-20180604.ce0a143/update_crawler.py
2018-06-04 22:09:07.000000000 +0200
+++ new/openSUSE-release-tools-20180614.3b99137/update_crawler.py
2018-06-14 07:05:13.000000000 +0200
@@ -177,7 +177,7 @@
srcrev = xml.get('verifymd5')
logging.debug('rev {}'.format(srcrev))
if srcrev == rev:
- logging.debug('{}: found existing request
{}'.format(dst_package, r.reqid))
+ logging.debug('{}: found existing request {}
{}/{}'.format(dst_package, r.reqid, a.src_project, src_project))
foundrev = True
return foundrev
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.ueawa2/_old 2018-06-19 12:00:58.752011875 +0200
+++ /var/tmp/diff_new_pack.ueawa2/_new 2018-06-19 12:00:58.752011875 +0200
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20180604.ce0a143
-mtime: 1528142947
-commit: ce0a1431ef6d6a2399ab4b7596281440b242faa8
+version: 20180614.3b99137
+mtime: 1528952713
+commit: 3b991374ae061d40196efdc63c88720908cc077c