Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2022-03-06 18:15:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1958 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Sun Mar 6 18:15:47 2022 rev:390 rq:959618 version:20220305.b51fd11b Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2022-03-05 14:45:20.839730145 +0100 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1958/openSUSE-release-tools.changes 2022-03-06 18:16:02.587828179 +0100 @@ -1,0 +2,8 @@ +Sat Mar 05 14:21:38 UTC 2022 - opensuse-releaset...@opensuse.org + +- Update to version 20220305.b51fd11b: + * gocd: Fix rare failure to push to notifications repo + * pkglistgen: Only solve one project at a time + * Installcheck: Ignore requires to packages with delete requests + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20220304.1479a628.obscpio New: ---- openSUSE-release-tools-20220305.b51fd11b.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.4ghEip/_old 2022-03-06 18:16:04.667828461 +0100 +++ /var/tmp/diff_new_pack.4ghEip/_new 2022-03-06 18:16:04.675828462 +0100 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20220304.1479a628 +Version: 20220305.b51fd11b 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.4ghEip/_old 2022-03-06 18:16:04.735828470 +0100 +++ /var/tmp/diff_new_pack.4ghEip/_new 2022-03-06 18:16:04.739828470 +0100 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param> - <param name="changesrevision">e3f0a13b96dd1a69f70b7fb5884176b3bf142646</param> + <param name="changesrevision">b51fd11be1a2f0dfc9dbaaa55bbb52e26b59835a</param> </service> </servicedata> ++++++ openSUSE-release-tools-20220304.1479a628.obscpio -> openSUSE-release-tools-20220305.b51fd11b.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220304.1479a628/gocd/notify-obs_rsync.py new/openSUSE-release-tools-20220305.b51fd11b/gocd/notify-obs_rsync.py --- old/openSUSE-release-tools-20220304.1479a628/gocd/notify-obs_rsync.py 2022-03-04 14:18:20.000000000 +0100 +++ new/openSUSE-release-tools-20220305.b51fd11b/gocd/notify-obs_rsync.py 2022-03-05 15:21:03.000000000 +0100 @@ -58,6 +58,11 @@ openqa = OpenQA_Client(server=args.openqa) + # make sure we avoid a race between gocd polling the notifications repo and + # scheduling a notify job because of other changes. In that case gocd schedules + # a new job on outdated notifications repo and we can't push + subprocess.run(f'cd {args.to} && git pull') + interesting_repos = dict() list = openqa.openqa_request('GET', 'obs_rsync') for repopair in list: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220304.1479a628/gocd/pkglistgen.opensuse.gocd.yaml new/openSUSE-release-tools-20220305.b51fd11b/gocd/pkglistgen.opensuse.gocd.yaml --- old/openSUSE-release-tools-20220304.1479a628/gocd/pkglistgen.opensuse.gocd.yaml 2022-03-04 14:18:20.000000000 +0100 +++ new/openSUSE-release-tools-20220305.b51fd11b/gocd/pkglistgen.opensuse.gocd.yaml 2022-03-05 15:21:03.000000000 +0100 @@ -23,13 +23,13 @@ - script: | python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory -s target --only-release-packages python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory -s target - openSUSE_Factory_rings: + openSUSE_Factory_ring1: resources: - repo-checker tasks: - script: | - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory -s rings --only-release-packages - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory -s rings + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory -s ring1 --only-release-packages + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory -s ring1 openSUSE_Factory_ARM_target: resources: - repo-checker @@ -37,13 +37,13 @@ - script: | python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:ARM -s target --only-release-packages python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:ARM -s target - openSUSE_Factory_ARM_rings: + openSUSE_Factory_ARM_ring1: resources: - repo-checker tasks: - script: | - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:ARM -s rings --only-release-packages - python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:ARM -s rings + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:ARM -s ring1 --only-release-packages + python3 -u ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Factory:ARM -s ring1 openSUSE_Factory_PowerPC: resources: - repo-checker diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220304.1479a628/gocd/pkglistgen.opensuse.gocd.yaml.erb new/openSUSE-release-tools-20220305.b51fd11b/gocd/pkglistgen.opensuse.gocd.yaml.erb --- old/openSUSE-release-tools-20220304.1479a628/gocd/pkglistgen.opensuse.gocd.yaml.erb 2022-03-04 14:18:20.000000000 +0100 +++ new/openSUSE-release-tools-20220305.b51fd11b/gocd/pkglistgen.opensuse.gocd.yaml.erb 2022-03-05 15:21:03.000000000 +0100 @@ -16,7 +16,7 @@ approval: type: manual jobs: -<% ['openSUSE:Factory/target', 'openSUSE:Factory/rings', 'openSUSE:Factory:ARM/target', 'openSUSE:Factory:ARM/rings', 'openSUSE:Factory:PowerPC', 'openSUSE:Factory:zSystems', 'openSUSE:Factory:RISCV'].each do |project| +<% ['openSUSE:Factory/target', 'openSUSE:Factory/ring1', 'openSUSE:Factory:ARM/target', 'openSUSE:Factory:ARM/ring1', 'openSUSE:Factory:PowerPC', 'openSUSE:Factory:zSystems', 'openSUSE:Factory:RISCV'].each do |project| project=project.split('/') name=project[0].gsub(':', '_') if project.size > 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220304.1479a628/pkglistgen/cli.py new/openSUSE-release-tools-20220305.b51fd11b/pkglistgen/cli.py --- old/openSUSE-release-tools-20220304.1479a628/pkglistgen/cli.py 2022-03-04 14:18:20.000000000 +0100 +++ new/openSUSE-release-tools-20220305.b51fd11b/pkglistgen/cli.py 2022-03-05 15:21:03.000000000 +0100 @@ -7,18 +7,17 @@ import re import ToolBase -import traceback import logging from osc import conf from osclib.conf import Config from osclib.stagingapi import StagingAPI -from pkglistgen.tool import PkgListGen +from pkglistgen.tool import PkgListGen, MismatchedRepoException from pkglistgen.update_repo_handler import update_project class CommandLineInterface(ToolBase.CommandLineInterface): - SCOPES = ['target', 'rings', 'staging'] + SCOPES = ['target', 'ring1'] def __init__(self, *args, **kwargs): ToolBase.CommandLineInterface.__init__(self, args, kwargs) @@ -45,7 +44,7 @@ @cmdln.option('-f', '--force', action='store_true', help='continue even if build is in progress') @cmdln.option('-p', '--project', help='target project') - @cmdln.option('-s', '--scope', action='append', help='scope on which to operate ({}, staging:$letter)'.format(', '.join(SCOPES))) + @cmdln.option('-s', '--scope', help='scope on which to operate ({}, staging:$letter)'.format(', '.join(SCOPES))) @cmdln.option('--no-checkout', action='store_true', help='reuse checkout in cache') @cmdln.option('--stop-after-solve', action='store_true', help='only create group files') @cmdln.option('--staging', help='Only solve that one staging') @@ -57,9 +56,10 @@ ${cmd_option_list} """ + print(opts.scope) if opts.staging: match = re.match('(.*):Staging:(.*)', opts.staging) - opts.scope = ['staging:' + match.group(2)] + opts.scope = 'staging:' + match.group(2) if opts.project: raise ValueError('--staging and --project conflict') opts.project = match.group(1) @@ -93,34 +93,22 @@ try: self.tool.reset() self.tool.dry_run = self.options.dry - if self.tool.update_and_solve_target(api, target_project, target_config, main_repo, - project=project, scope=scope, force=opts.force, - no_checkout=opts.no_checkout, - only_release_packages=opts.only_release_packages, - stop_after_solve=opts.stop_after_solve): - self.error_occured = True - except Exception: - # Print exception, but continue to prevent problems effecting one - # project from killing the whole process. Downside being a common - # error will be duplicated for each project. Common exceptions could - # be excluded if a set list is determined, but that is likely not - # practical. - traceback.print_exc() - self.error_occured = True - - for scope in opts.scope: - if scope.startswith('staging:'): - letter = re.match('staging:(.*)', scope).group(1) - solve_project(api.prj_from_short(letter), 'staging') - elif scope == 'target': - solve_project(target_project, scope) - elif scope == 'rings': - solve_project(api.rings[1], scope) - elif scope == 'staging': - letters = api.get_staging_projects_short() - for letter in letters: - solve_project(api.prj_from_short(letter), scope) - else: - raise ValueError('scope "{}" must be one of: {}'.format(scope, ', '.join(self.SCOPES))) - - return self.error_occured + return self.tool.update_and_solve_target(api, target_project, target_config, main_repo, + project=project, scope=scope, force=opts.force, + no_checkout=opts.no_checkout, + only_release_packages=opts.only_release_packages, + stop_after_solve=opts.stop_after_solve) + except MismatchedRepoException: + logging.error("Failed to create weakremovers.inc due to mismatch in repos - project most likey started building again.") + return True + + scope = opts.scope + if scope.startswith('staging:'): + letter = re.match('staging:(.*)', scope).group(1) + return solve_project(api.prj_from_short(letter), 'staging') + elif scope == 'target': + return solve_project(target_project, scope) + elif scope == 'ring1': + return solve_project(api.rings[1], scope) + else: + raise ValueError('scope "{}" must be one of: {}'.format(scope, ', '.join(self.SCOPES))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20220304.1479a628/staging-installcheck.py new/openSUSE-release-tools-20220305.b51fd11b/staging-installcheck.py --- old/openSUSE-release-tools-20220304.1479a628/staging-installcheck.py 2022-03-04 14:18:20.000000000 +0100 +++ new/openSUSE-release-tools-20220305.b51fd11b/staging-installcheck.py 2022-03-05 15:21:03.000000000 +0100 @@ -70,17 +70,23 @@ comments.append('Error: missing alternative provides for {}'.format(provide)) return False - def check_delete_request(self, req, to_ignore, comments): + def check_delete_request(self, req, to_ignore, to_delete, comments): package = req.get('package') if package in to_ignore or self.ignore_deletes: self.logger.info('Delete request for package {} ignored'.format(package)) return True - built_binaries = set([]) + built_binaries = set() file_infos = [] for fileinfo in fileinfo_ext_all(self.api.apiurl, self.api.project, self.api.cmain_repo, 'x86_64', package): built_binaries.add(fileinfo.find('name').text) file_infos.append(fileinfo) + # extend the others - this asks for a refactoring, but we don't handle tons of delete requests often + for ptd in to_delete: + if package == ptd: + continue + for fileinfo in fileinfo_ext_all(self.api.apiurl, self.api.project, self.api.cmain_repo, 'x86_64', ptd): + built_binaries.add(fileinfo.find('name').text) result = True for fileinfo in file_infos: @@ -90,10 +96,10 @@ what_depends_on = depends_on(api.apiurl, api.project, api.cmain_repo, [package], True) - # filter out dependency on package itself (happens with eg - # java bootstrapping itself with previous build) - if package in what_depends_on: - what_depends_on.remove(package) + # filter out packages to be deleted + for package in to_delete: + if package in what_depends_on: + what_depends_on.remove(package) if len(what_depends_on): comments.append('{} is still a build requirement of:\n\n- {}'.format( @@ -165,9 +171,15 @@ self.logger.error('no project status for {}'.format(project)) return False + # collect packages to be deleted + to_delete = set() + for req in status.findall('staged_requests/request'): + if req.get('type') == 'delete': + to_delete.add(req.get('package')) + for req in status.findall('staged_requests/request'): if req.get('type') == 'delete': - result = result and self.check_delete_request(req, to_ignore, result_comment) + result = result and self.check_delete_request(req, to_ignore, to_delete, result_comment) for arch in architectures: # hit the first repository in the target project (if existant) ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.4ghEip/_old 2022-03-06 18:16:05.427828564 +0100 +++ /var/tmp/diff_new_pack.4ghEip/_new 2022-03-06 18:16:05.431828565 +0100 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20220304.1479a628 -mtime: 1646399900 -commit: 1479a628529da330c8b79c3c72580caa185e4bc9 +version: 20220305.b51fd11b +mtime: 1646490063 +commit: b51fd11be1a2f0dfc9dbaaa55bbb52e26b59835a