Hello community,
here is the log from the commit of package openSUSE-release-tools for
openSUSE:Factory checked in at 2020-02-24 15:54:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools"
Mon Feb 24 15:54:42 2020 rev:281 rq:778689 version:20200224.7a060087
Changes:
--------
---
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
2020-02-21 16:42:46.186082410 +0100
+++
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.26092/openSUSE-release-tools.changes
2020-02-24 15:57:08.688089104 +0100
@@ -1,0 +2,8 @@
+Mon Feb 24 07:50:27 UTC 2020 - [email protected]
+
+- Update to version 20200224.7a060087:
+ * Fix typos
+ * Some refactoring
+ * Add support for DoD repos to installcheck
+
+-------------------------------------------------------------------
Old:
----
openSUSE-release-tools-20200220.3b5f8650.obscpio
New:
----
openSUSE-release-tools-20200224.7a060087.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.fCzjT2/_old 2020-02-24 15:57:10.620093100 +0100
+++ /var/tmp/diff_new_pack.fCzjT2/_new 2020-02-24 15:57:10.620093100 +0100
@@ -20,7 +20,7 @@
%define source_dir openSUSE-release-tools
%define announcer_filename factory-package-news
Name: openSUSE-release-tools
-Version: 20200220.3b5f8650
+Version: 20200224.7a060087
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.fCzjT2/_old 2020-02-24 15:57:10.652093166 +0100
+++ /var/tmp/diff_new_pack.fCzjT2/_new 2020-02-24 15:57:10.652093166 +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">3b5f865031fbc9526d80734469d4223b1a48975a</param>
+ <param
name="changesrevision">7a06008735f42340124b2072e53164e287330667</param>
</service>
</servicedata>
++++++ openSUSE-release-tools-20200220.3b5f8650.obscpio ->
openSUSE-release-tools-20200224.7a060087.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20200220.3b5f8650/osclib/repochecks.py
new/openSUSE-release-tools-20200224.7a060087/osclib/repochecks.py
--- old/openSUSE-release-tools-20200220.3b5f8650/osclib/repochecks.py
2020-02-20 11:02:49.000000000 +0100
+++ new/openSUSE-release-tools-20200224.7a060087/osclib/repochecks.py
2020-02-24 08:48:25.000000000 +0100
@@ -1,9 +1,13 @@
import logging
import os
import re
+import requests
import subprocess
import tempfile
+import glob
from fnmatch import fnmatch
+from lxml import etree as ETL
+from osc.core import http_GET
import yaml
@@ -87,7 +91,7 @@
line = re.sub(r'(provided by [^ ]*\-[^-]*)\-[^-]*(\.\w+)$', r'\1\2', line)
return line
-def parsed_installcheck(pfile, arch, target_packages, whitelist):
+def parsed_installcheck(repos, arch, target_packages, whitelist):
reported_problems = dict()
if not len(target_packages):
@@ -100,7 +104,10 @@
return _mapping[arch]
return arch
- p = subprocess.run(['/usr/bin/installcheck', maparch2installarch(arch),
pfile],
+ if not isinstance(repos, list):
+ repos = [repos]
+
+ p = subprocess.run(['/usr/bin/installcheck', maparch2installarch(arch)] +
repos,
stdout=subprocess.PIPE, errors='backslashreplace',
text=True)
if p.returncode:
in_problem = False
@@ -162,15 +169,47 @@
return parts
+def mirrorRepomd(cachedir, url):
+ # Use repomd.xml to get the location of primary.xml.gz
+ repoindex =
ETL.fromstring(requests.get('{}/repodata/repomd.xml'.format(url)).content)
+ primarypath =
repoindex.xpath("string(./repo:data[@type='primary']/repo:location/@href)",
+ namespaces={'repo':
'http://linux.duke.edu/metadata/repo'})
+ if not primarypath.endswith(".xml.gz"):
+ raise Exception('unsupported primary format')
+
+ primarydest = os.path.join(cachedir, os.path.basename(primarypath))
+ if not os.path.exists(primarydest):
+ # Delete the old files first
+ for oldfile in glob.glob(glob.escape(cachedir) + "/*.xml.gz"):
+ os.unlink(oldfile)
+
+ with tempfile.NamedTemporaryFile(dir=cachedir) as primarytemp:
+ primarytemp.write(requests.get(url + '/' + primarypath).content)
+ os.link(primarytemp.name, primarydest)
+ return primarydest
def mirror(apiurl, project, repository, arch):
"""Call bs_mirrorfull script to mirror packages."""
directory = os.path.join(CACHEDIR, project, repository, arch)
- # return directory
if not os.path.exists(directory):
os.makedirs(directory)
+ meta = ETL.parse(http_GET('{}/public/source/{}/_meta'.format(apiurl,
project))).getroot()
+ repotag =
meta.xpath("/project/repository[@name='{}']".format(repository))[0]
+ if arch not in repotag.xpath("./arch/text()"):
+ # Arch not in this project, skip mirroring
+ return directory
+
+ download = repotag.xpath("./download[@arch='{}']".format(arch))
+ if download is not None and len(download) > 0:
+ if len(download) > 1:
+ raise Exception('Multiple download urls unsupported')
+ repotype = download[0].get('repotype')
+ if repotype != 'rpmmd':
+ raise Exception('repotype {} not supported'.format(repotype))
+ return mirrorRepomd(directory, download[0].get('url'))
+
script = os.path.join(SCRIPT_PATH, '..', 'bs_mirrorfull')
path = '/'.join((project, repository, arch))
logger.info('mirroring {}'.format(path))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/openSUSE-release-tools-20200220.3b5f8650/project-installcheck.py
new/openSUSE-release-tools-20200224.7a060087/project-installcheck.py
--- old/openSUSE-release-tools-20200220.3b5f8650/project-installcheck.py
2020-02-20 11:02:49.000000000 +0100
+++ new/openSUSE-release-tools-20200224.7a060087/project-installcheck.py
2020-02-24 08:48:25.000000000 +0100
@@ -126,8 +126,13 @@
repository_pairs = repository_path_expand(self.apiurl, project,
repository)
directories = []
+ primaryxmls = []
for pair_project, pair_repository in repository_pairs:
- directories.append(mirror(self.apiurl, pair_project,
pair_repository, arch))
+ mirrored = mirror(self.apiurl, pair_project, pair_repository, arch)
+ if os.path.isdir(mirrored):
+ directories.append(mirrored)
+ else:
+ primaryxmls.append(mirrored)
parsed = dict()
with tempfile.TemporaryDirectory(prefix='repochecker') as dir:
@@ -148,7 +153,7 @@
catalog = yaml.safe_load(file)
target_packages = catalog.get(directories[0], [])
- parsed = parsed_installcheck(pfile, arch, target_packages, [])
+ parsed = parsed_installcheck([pfile] + primaryxmls, arch,
target_packages, [])
for package in parsed:
parsed[package]['output'] =
"\n".join(parsed[package]['output'])
++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.fCzjT2/_old 2020-02-24 15:57:11.040093968 +0100
+++ /var/tmp/diff_new_pack.fCzjT2/_new 2020-02-24 15:57:11.040093968 +0100
@@ -1,5 +1,5 @@
name: openSUSE-release-tools
-version: 20200220.3b5f8650
-mtime: 1582192969
-commit: 3b5f865031fbc9526d80734469d4223b1a48975a
+version: 20200224.7a060087
+mtime: 1582530505
+commit: 7a06008735f42340124b2072e53164e287330667