Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Leap:15.2 checked in at 2020-02-25 12:19:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Leap:15.2/.openSUSE-release-tools.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Tue Feb 25 12:19:01 2020 rev:302 rq:778991 version:20200224.7a060087 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/openSUSE-release-tools/openSUSE-release-tools.changes 2020-02-21 10:54:14.539537371 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.openSUSE-release-tools.new.26092/openSUSE-release-tools.changes 2020-02-25 12:20:44.496874932 +0100 @@ -1,0 +2,14 @@ +Mon Feb 24 07:50:27 UTC 2020 - opensuse-releaset...@opensuse.org + +- Update to version 20200224.7a060087: + * Fix typos + * Some refactoring + * Add support for DoD repos to installcheck + +------------------------------------------------------------------- +Thu Feb 20 10:07:59 UTC 2020 - opensuse-releaset...@opensuse.org + +- Update to version 20200220.3b5f8650: + * fcc_submitter: update to 15.2 + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20200219.c0ab2c6b.obscpio New: ---- openSUSE-release-tools-20200224.7a060087.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.CY4ibm/_old 2020-02-25 12:20:47.576881315 +0100 +++ /var/tmp/diff_new_pack.CY4ibm/_new 2020-02-25 12:20:47.576881315 +0100 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20200219.c0ab2c6b +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.CY4ibm/_old 2020-02-25 12:20:47.616881398 +0100 +++ /var/tmp/diff_new_pack.CY4ibm/_new 2020-02-25 12:20:47.616881398 +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">c0ab2c6b6ce0c0c6a663795e651e12aff3de353e</param> + <param name="changesrevision">7a06008735f42340124b2072e53164e287330667</param> </service> </servicedata> ++++++ openSUSE-release-tools-20200219.c0ab2c6b.obscpio -> openSUSE-release-tools-20200224.7a060087.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20200219.c0ab2c6b/fcc_submitter.py new/openSUSE-release-tools-20200224.7a060087/fcc_submitter.py --- old/openSUSE-release-tools-20200219.c0ab2c6b/fcc_submitter.py 2020-02-19 13:40:39.000000000 +0100 +++ new/openSUSE-release-tools-20200224.7a060087/fcc_submitter.py 2020-02-24 08:48:25.000000000 +0100 @@ -1,8 +1,9 @@ -#!/usr/bin/python +#!/usr/bin/python3 import argparse import logging import sys +import time try: from urllib.error import HTTPError, URLError @@ -22,9 +23,10 @@ from osc import oscerr from osclib.memoize import memoize -OPENSUSE = 'openSUSE:Leap:15.1' -OPENSUSE_PREVERSION = 'openSUSE:Leap:15.0' -FCC = '{}:Staging:FactoryCandidates'.format(OPENSUSE) +OPENSUSE = 'openSUSE:Leap:15.2' +OPENSUSE_PREVERSION = 'openSUSE:Leap:15.1' +OPENSUSE_RELEASED_VERSION = ['openSUSE:Leap:15.0', 'openSUSE:Leap:15.1'] +FCC = '{}:FactoryCandidates'.format(OPENSUSE) makeurl = osc.core.makeurl http_GET = osc.core.http_GET @@ -133,7 +135,10 @@ self.apiurl = osc.conf.config['apiurl'] self.debug = osc.conf.config['debug'] self.sle_base_prjs = [ + 'SUSE:SLE-15-SP2:GA', + 'SUSE:SLE-15-SP1:Update', 'SUSE:SLE-15-SP1:GA', + 'SUSE:SLE-15:Update', 'SUSE:SLE-15:GA', 'SUSE:SLE-12-SP4:Update', 'SUSE:SLE-12-SP4:GA', @@ -309,7 +314,8 @@ target_packages = self.get_source_packages(self.to_prj) deleted_packages = self.get_deleted_packages(self.to_prj) if self.to_prj.startswith("openSUSE:"): - deleted_packages = deleted_packages + self.get_deleted_packages(OPENSUSE_PREVERSION) + for prd in OPENSUSE_RELEASED_VERSION: + deleted_packages = deleted_packages + self.get_deleted_packages(prd) pseudometa_project, pseudometa_package = project_pseudometa_package(self.apiurl, 'openSUSE:Factory') skip_pkgs_list = self.load_skip_pkgs_list(pseudometa_project, pseudometa_package).splitlines() @@ -381,7 +387,7 @@ # check package does not in the skip list match = None for elem in skip_pkgs_list: - m = re.search(elem, package) + m = re.search(str(elem), package) if m is not None: match = True @@ -398,6 +404,7 @@ logging.error('Error occurred when creating submit request') else: logging.debug('%s is exist in %s, skip!' % (package, self.to_prj)) + time.sleep(5) # dump multi specs packages print("Multi-specfile packages:") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20200219.c0ab2c6b/osclib/repochecks.py new/openSUSE-release-tools-20200224.7a060087/osclib/repochecks.py --- old/openSUSE-release-tools-20200219.c0ab2c6b/osclib/repochecks.py 2020-02-19 13:40:39.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-20200219.c0ab2c6b/project-installcheck.py new/openSUSE-release-tools-20200224.7a060087/project-installcheck.py --- old/openSUSE-release-tools-20200219.c0ab2c6b/project-installcheck.py 2020-02-19 13:40:39.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.CY4ibm/_old 2020-02-25 12:20:48.148882501 +0100 +++ /var/tmp/diff_new_pack.CY4ibm/_new 2020-02-25 12:20:48.148882501 +0100 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20200219.c0ab2c6b -mtime: 1582116039 -commit: c0ab2c6b6ce0c0c6a663795e651e12aff3de353e +version: 20200224.7a060087 +mtime: 1582530505 +commit: 7a06008735f42340124b2072e53164e287330667