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 2023-04-27 20:01:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
 and      /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openSUSE-release-tools"

Thu Apr 27 20:01:32 2023 rev:462 rq:1083184 version:20230420.372c67d

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
    2023-04-05 21:35:55.830662792 +0200
+++ 
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1533/openSUSE-release-tools.changes
  2023-04-27 20:02:44.278561647 +0200
@@ -1,0 +2,54 @@
+Thu Apr 20 06:13:18 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230420.372c67d:
+  * staging-installcheck.py: Detect some edge cases in check_required_by
+
+-------------------------------------------------------------------
+Wed Apr 19 05:45:15 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230419.c0f2057:
+  * Filter out access logs with error code
+
+-------------------------------------------------------------------
+Tue Apr 18 07:28:08 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230418.aebe39c:
+  * Publish kiwi-templates-Minimal-s390x for SLE15
+
+-------------------------------------------------------------------
+Tue Apr 11 14:06:16 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230411.8639ce3:
+  * repo2fileprovides.py: Support file deps in boolean dependencies
+
+-------------------------------------------------------------------
+Tue Apr 11 13:15:13 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230411.f596472:
+  * docker_publisher.py: Add 15.5, remove 15.3
+
+-------------------------------------------------------------------
+Tue Apr 11 11:55:53 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230411.7f92b23:
+  * Fix the OBS CI workflow (#2950)
+
+-------------------------------------------------------------------
+Tue Apr 11 11:27:15 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230411.363c84c:
+  * dist: Package osrt-repo2fileprovides
+
+-------------------------------------------------------------------
+Tue Apr 11 10:51:23 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230411.816d0eb:
+  * cleanup_rings.py: Add snobol4 to whitelist
+
+-------------------------------------------------------------------
+Thu Apr 06 08:08:54 UTC 2023 - opensuse-releaset...@opensuse.org
+
+- Update to version 20230406.c548870:
+  * Add repo2fileprovides.py
+
+-------------------------------------------------------------------

Old:
----
  openSUSE-release-tools-20230329.af36a03.obscpio

New:
----
  openSUSE-release-tools-20230420.372c67d.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.0cZZUg/_old  2023-04-27 20:02:45.238567291 +0200
+++ /var/tmp/diff_new_pack.0cZZUg/_new  2023-04-27 20:02:45.242567314 +0200
@@ -20,7 +20,7 @@
 %define source_dir openSUSE-release-tools
 %define announcer_filename factory-package-news
 Name:           openSUSE-release-tools
-Version:        20230329.af36a03
+Version:        20230420.372c67d
 Release:        0
 Summary:        Tools to aid in staging and release work for openSUSE/SUSE
 License:        GPL-2.0-or-later AND MIT
@@ -396,6 +396,7 @@
 %{_bindir}/osrt-issue-diff
 %{_bindir}/osrt-legal-auto
 %{_bindir}/osrt-openqa-maintenance
+%{_bindir}/osrt-repo2fileprovides
 %{_bindir}/osrt-requestfinder
 %{_bindir}/osrt-totest-manager
 %{_datadir}/%{source_dir}
@@ -494,7 +495,6 @@
 %files repo-checker
 %{_bindir}/osrt-project-installcheck
 %{_bindir}/osrt-staging-installcheck
-%{_bindir}/osrt-maintenance-installcheck
 %{_bindir}/osrt-findfileconflicts
 %{_bindir}/osrt-maintenance-installcheck
 %{_bindir}/osrt-write_repo_susetags_file

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.0cZZUg/_old  2023-04-27 20:02:45.298567643 +0200
+++ /var/tmp/diff_new_pack.0cZZUg/_new  2023-04-27 20:02:45.302567667 +0200
@@ -1,7 +1,7 @@
 <servicedata>
   <service name="tar_scm">
     <param 
name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
-    <param 
name="changesrevision">af36a030b3d2e34f24828caf849c463ffeb2db14</param>
+    <param 
name="changesrevision">372c67d51607fb0d27e0b2413be79e1ffdabc527</param>
   </service>
 </servicedata>
 

++++++ openSUSE-release-tools-20230329.af36a03.obscpio -> 
openSUSE-release-tools-20230420.372c67d.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20230329.af36a03/.obs/workflows.yml 
new/openSUSE-release-tools-20230420.372c67d/.obs/workflows.yml
--- old/openSUSE-release-tools-20230329.af36a03/.obs/workflows.yml      
2023-03-29 11:02:25.000000000 +0200
+++ new/openSUSE-release-tools-20230420.372c67d/.obs/workflows.yml      
2023-04-20 08:12:22.000000000 +0200
@@ -1,23 +1,10 @@
 ---
 pr:
   steps:
-  - link_package:
-      source_project: openSUSE:Tools
+  - branch_package:
+      source_project: openSUSE:Tools:OSRT:TestGithub
       source_package: openSUSE-release-tools
       target_project: openSUSE:Tools:OSRT:TestGithub
-  - configure_repositories:
-      project: openSUSE:Tools:OSRT:TestGithub
-      repositories:
-      - name: openSUSE_Tumbleweed
-        paths:
-          - target_project: openSUSE:Factory
-            target_repository: snapshot
-        architectures: [ x86_64 ]
-      - name: '15.4'
-        paths:
-          - target_project: openSUSE:Tools
-            target_repository: '15.4'
-        architectures: [ x86_64 ]
   filters:
     event: pull_request
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openSUSE-release-tools-20230329.af36a03/CONTENTS.md 
new/openSUSE-release-tools-20230420.372c67d/CONTENTS.md
--- old/openSUSE-release-tools-20230329.af36a03/CONTENTS.md     2023-03-29 
11:02:25.000000000 +0200
+++ new/openSUSE-release-tools-20230420.372c67d/CONTENTS.md     2023-04-20 
08:12:22.000000000 +0200
@@ -171,6 +171,15 @@
 * Package: --
 * Usage: ?
 
+#### repo2fileprovides.py
+
+Script to generate necessary FileProvides lines needed by OBS from repo data.
+
+* Sources: [repo2fileprovides.py](repo2fileprovides.py)
+* Documentation: --
+* Package: --
+* Usage: repo2fileprovides.py primary.xml(.gz)
+
 ### Bots
 
 #### check_maintenance_incidents
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20230329.af36a03/dist/package/openSUSE-release-tools.spec
 
new/openSUSE-release-tools-20230420.372c67d/dist/package/openSUSE-release-tools.spec
--- 
old/openSUSE-release-tools-20230329.af36a03/dist/package/openSUSE-release-tools.spec
        2023-03-29 11:02:25.000000000 +0200
+++ 
new/openSUSE-release-tools-20230420.372c67d/dist/package/openSUSE-release-tools.spec
        2023-04-20 08:12:22.000000000 +0200
@@ -396,6 +396,7 @@
 %{_bindir}/osrt-issue-diff
 %{_bindir}/osrt-legal-auto
 %{_bindir}/osrt-openqa-maintenance
+%{_bindir}/osrt-repo2fileprovides
 %{_bindir}/osrt-requestfinder
 %{_bindir}/osrt-totest-manager
 %{_datadir}/%{source_dir}
@@ -494,7 +495,6 @@
 %files repo-checker
 %{_bindir}/osrt-project-installcheck
 %{_bindir}/osrt-staging-installcheck
-%{_bindir}/osrt-maintenance-installcheck
 %{_bindir}/osrt-findfileconflicts
 %{_bindir}/osrt-maintenance-installcheck
 %{_bindir}/osrt-write_repo_susetags_file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20230329.af36a03/docker_publisher.py 
new/openSUSE-release-tools-20230420.372c67d/docker_publisher.py
--- old/openSUSE-release-tools-20230329.af36a03/docker_publisher.py     
2023-03-29 11:02:25.000000000 +0200
+++ new/openSUSE-release-tools-20230420.372c67d/docker_publisher.py     
2023-04-20 08:12:22.000000000 +0200
@@ -377,16 +377,6 @@
             },
             'publisher': DockerImagePublisherRegistry(drc_tw, "latest"),
         },
-        'leap-15.3': {
-            'fetchers': {
-                'x86_64': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.3/containers/x86_64/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
-                'aarch64': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.3/containers/aarch64/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
-                'armv7l': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.3/containers_armv7/armv7l/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
-                'ppc64le': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.3/containers/ppc64le/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
-                's390x': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.3/containers/s390x/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
-            },
-            'publisher': DockerImagePublisherRegistry(drc_leap, "15.3"),
-        },
         'leap-15.4': {
             'fetchers': {
                 'x86_64': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.4/containers/x86_64/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
@@ -396,6 +386,16 @@
             },
             'publisher': DockerImagePublisherRegistry(drc_leap, "latest", 
["15.4", "15"]),
         },
+        'leap-15.5': {
+            'fetchers': {
+                'x86_64': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.5/containers/x86_64/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
+                'aarch64': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.5/containers/aarch64/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
+                'armv7l': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.5/containers_armv7/armv7l/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
+                'ppc64le': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.5/containers/ppc64le/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
+                's390x': 
DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.5/containers/s390x/opensuse-leap-image:docker";,
 maintenance_release=True),  # noqa: E501
+            },
+            'publisher': DockerImagePublisherRegistry(drc_leap, "15.5"),
+        },
     }
 
     # Parse args after defining the config - the available distros are included
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20230329.af36a03/gocd/sp.target.gocd.yaml 
new/openSUSE-release-tools-20230420.372c67d/gocd/sp.target.gocd.yaml
--- old/openSUSE-release-tools-20230329.af36a03/gocd/sp.target.gocd.yaml        
2023-03-29 11:02:25.000000000 +0200
+++ new/openSUSE-release-tools-20230420.372c67d/gocd/sp.target.gocd.yaml        
2023-04-20 08:12:22.000000000 +0200
@@ -49,7 +49,7 @@
             if [ -z "${PRODUCTS}" ]; then
               echo "[WARNNING] There is no cloud image to be released"
             fi
-            for product in kiwi-templates-Minimal 000product $PRODUCTS; do
+            for product in kiwi-templates-Minimal kiwi-templates-Minimal-s390x 
000product $PRODUCTS; do
               osc -A https://api.suse.de release SUSE:SLE-15-SP5:GA $product
             done
             sleep 600
@@ -203,7 +203,7 @@
                   done
                   osc -A https://api.suse.de release 
--target-project=SUSE:SLE-15-SP5:GA:TEST --target-repository=containers -r 
images SUSE:SLE-15-SP5:GA sles15-image
                   PRODUCTS=$(osc -A https://api.suse.de ls SUSE:SLE-15-SP5:GA 
| grep "^SLES15-SP5" | grep -v release)
-                  for product in kiwi-templates-Minimal 000product $PRODUCTS; 
do
+                  for product in kiwi-templates-Minimal 
kiwi-templates-Minimal-s390x 000product $PRODUCTS; do
                     osc -A https://api.suse.de release SUSE:SLE-15-SP5:GA 
$product
                   done
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20230329.af36a03/metrics/access/ingest.php 
new/openSUSE-release-tools-20230420.372c67d/metrics/access/ingest.php
--- old/openSUSE-release-tools-20230329.af36a03/metrics/access/ingest.php       
2023-03-29 11:02:25.000000000 +0200
+++ new/openSUSE-release-tools-20230420.372c67d/metrics/access/ingest.php       
2023-04-20 08:12:22.000000000 +0200
@@ -22,6 +22,8 @@
 
   // Only interested in GET or HEAD requests, others are invalid.
   if ($match[2] != 'GET' && $match[2] != 'HEAD') continue;
+  // Not interested on errors.
+  if ($match[4] >= '400') continue;
   $total++;
 
   // Attempt to determine for which product was the request.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20230329.af36a03/osclib/cleanup_rings.py 
new/openSUSE-release-tools-20230420.372c67d/osclib/cleanup_rings.py
--- old/openSUSE-release-tools-20230329.af36a03/osclib/cleanup_rings.py 
2023-03-29 11:02:25.000000000 +0200
+++ new/openSUSE-release-tools-20230420.372c67d/osclib/cleanup_rings.py 
2023-04-20 08:12:22.000000000 +0200
@@ -29,6 +29,8 @@
             'raspberrypi-firmware-config',
             # Added manually to notice failures early
             'vagrant',
+            # https://github.com/openSUSE/open-build-service/issues/14129
+            'snobol4',
         ]
 
     def perform(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20230329.af36a03/repo2fileprovides.py 
new/openSUSE-release-tools-20230420.372c67d/repo2fileprovides.py
--- old/openSUSE-release-tools-20230329.af36a03/repo2fileprovides.py    
1970-01-01 01:00:00.000000000 +0100
+++ new/openSUSE-release-tools-20230420.372c67d/repo2fileprovides.py    
2023-04-20 08:12:22.000000000 +0200
@@ -0,0 +1,57 @@
+#!/usr/bin/python3
+import gzip
+import sys
+from collections import defaultdict
+from lxml import etree
+
+if len(sys.argv) != 2:
+    print("Script to generate necessary FileProvides lines needed by OBS from 
repo data.", file=sys.stderr)
+    print("Usage: repo2fileprovides.py primary.xml(.gz)", file=sys.stderr)
+    sys.exit(1)
+
+repofilename = sys.argv[1]
+xmlfile = open(repofilename, 'rb')
+if repofilename.endswith('.gz'):
+    xmlfile = gzip.GzipFile(fileobj=xmlfile)
+
+NS = {'md': 'http://linux.duke.edu/metadata/common',
+      'rpm': 'http://linux.duke.edu/metadata/rpm'}
+repodata = etree.parse(xmlfile)
+
+# Step 1: Collect all provided files
+# Set of all provided files
+providedfiles = set()
+# Map of filename -> set of packages providing it
+fileprovides = defaultdict(set)
+
+for pkg in repodata.iterfind('/md:package', namespaces=NS):
+    pkgname = pkg.xpath('./md:name/text()', namespaces=NS)[0]
+    # Implicit file provides
+    for f in pkg.iterfind('./md:format/md:file', namespaces=NS):
+        filename = f.text
+        fileprovides[filename].add(pkgname)
+        providedfiles.add(filename)
+
+    # Explicit file provides
+    for filename in 
pkg.xpath("./md:format/rpm:provides/rpm:entry[starts-with(@name, '/')]/@name",
+                              namespaces=NS):
+        fileprovides[filename].add(pkgname)
+        providedfiles.add(filename)
+
+# Step 2: Collect all required files
+requiredfiles = 
set(repodata.xpath("/md:metadata/md:package/md:format/rpm:requires/rpm:entry[starts-with(@name,
 '/')]/@name",
+                                   namespaces=NS))
+
+# Split up boolean deps
+booleandeps = 
set(repodata.xpath("/md:metadata/md:package/md:format/rpm:requires/rpm:entry"
+                                 "[starts-with(@name, '(') and contains(@name, 
'/')]/@name",
+                                 namespaces=NS))
+for dep in booleandeps:
+    for capability in dep.replace('(', ' ').replace(')', ' ').split():
+        if capability[0] == '/':
+            requiredfiles.add(capability)
+
+# Step 3: For all provided files which are also required, print "FileProvides"
+# lines
+for filename in sorted(providedfiles.intersection(requiredfiles)):
+    print(f"FileProvides: {filename} {' 
'.join(sorted(fileprovides[filename]))}")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20230329.af36a03/staging-installcheck.py 
new/openSUSE-release-tools-20230420.372c67d/staging-installcheck.py
--- old/openSUSE-release-tools-20230329.af36a03/staging-installcheck.py 
2023-03-29 11:02:25.000000000 +0200
+++ new/openSUSE-release-tools-20230420.372c67d/staging-installcheck.py 
2023-04-20 08:12:22.000000000 +0200
@@ -49,6 +49,17 @@
     def check_required_by(self, fileinfo, provides, requiredby, 
built_binaries, comments):
         if requiredby.get('name') in built_binaries:
             return True
+
+        result = True
+
+        # In some cases (boolean deps?) it's possible that fileinfo_ext for A
+        # shows that A provides cap needed by B, but fileinfo_ext for B does
+        # not list cap or A at all... In that case better error out and ask for
+        # human intervention.
+        dep_found = False
+        # In case the dep was not found, give a hint what OBS might have meant.
+        possible_dep = None
+
         # extract >= and the like
         provide = provides.get('dep')
         provide = provide.split(' ')[0]
@@ -57,18 +68,44 @@
         url = api.makeurl(['build', api.project, api.cmain_repo, 'x86_64', 
'_repository', requiredby.get('name') + '.rpm'],
                           {'view': 'fileinfo_ext'})
         reverse_fileinfo = ET.parse(osc.core.http_GET(url)).getroot()
+
         for require in reverse_fileinfo.findall('requires_ext'):
             # extract >= and the like here too
             dep = require.get('dep').split(' ')[0]
             if dep != provide:
+                if provide in require.get('dep'):
+                    possible_dep = require.get('dep')
                 continue
+            dep_found = True
+            # Whether this is provided by something being deleted
+            provided_found = False
+            # Whether this is provided by something not being deleted
+            alternative_found = False
             for provided_by in require.findall('providedby'):
                 if provided_by.get('name') in built_binaries:
-                    continue
-                comments.append('  also provided by {} -> 
ignoring'.format(provided_by.get('name')))
-                return True
-        comments.append('Error: missing alternative provides for 
{}'.format(provide))
-        return False
+                    provided_found = True
+                else:
+                    comments.append('  also provided by {} -> 
ignoring'.format(provided_by.get('name')))
+                    alternative_found = True
+
+            if not alternative_found:
+                result = False
+
+            if not provided_found:
+                comments.append("  OBS doesn't see this in the reverse 
resolution though. Not sure what to do.")
+                result = False
+
+        if not dep_found:
+            comments.append("  OBS doesn't see this dep in reverse though. Not 
sure what to do.")
+            if possible_dep is not None:
+                comments.append(f'  Might be required by {possible_dep}')
+            return False
+
+        if result:
+            return True
+        else:
+            comments.append('Error: missing alternative provides for 
{}'.format(provide))
+            return False
 
     @memoize(session=True)
     def pkg_with_multibuild_flavors(self, package):

++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.0cZZUg/_old  2023-04-27 20:02:46.346573804 +0200
+++ /var/tmp/diff_new_pack.0cZZUg/_new  2023-04-27 20:02:46.350573827 +0200
@@ -1,5 +1,5 @@
 name: openSUSE-release-tools
-version: 20230329.af36a03
-mtime: 1680080545
-commit: af36a030b3d2e34f24828caf849c463ffeb2db14
+version: 20230420.372c67d
+mtime: 1681971142
+commit: 372c67d51607fb0d27e0b2413be79e1ffdabc527
 

Reply via email to