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
 

Reply via email to