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-07-25 11:51:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1467 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Tue Jul 25 11:51:37 2023 rev:486 rq:1100547 version:20230721.2396b32 Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2023-07-24 18:26:29.302334077 +0200 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1467/openSUSE-release-tools.changes 2023-07-25 11:53:31.326302243 +0200 @@ -1,0 +2,23 @@ +Fri Jul 21 15:20:17 UTC 2023 - opensuse-releaset...@opensuse.org + +- Update to version 20230721.2396b32: + * docs/staging: remove obsolete references + * Add backup server URL and update source map + +------------------------------------------------------------------- +Fri Jul 21 15:18:49 UTC 2023 - opensuse-releaset...@opensuse.org + +- Update to version 20230721.2d37d5b: + * gocd: enable Leap 15.6 checkers + * Revert temporary fixups, these are working now + * Add a simple smoke test launching all scripts with --help + * Require typing_extensions on SLE & Leap + * Fallback import Literal & TypedDict from typing_extension + +------------------------------------------------------------------- +Fri Jul 21 15:17:21 UTC 2023 - opensuse-releaset...@opensuse.org + +- Update to version 20230721.3301485: + * Add BCI repo publishing bot + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20230721.5bc933b.obscpio New: ---- openSUSE-release-tools-20230721.2396b32.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.5dK4c3/_old 2023-07-25 11:53:32.174307209 +0200 +++ /var/tmp/diff_new_pack.5dK4c3/_new 2023-07-25 11:53:32.178307232 +0200 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20230721.5bc933b +Version: 20230721.2396b32 Release: 0 Summary: Tools to aid in staging and release work for openSUSE/SUSE License: GPL-2.0-or-later AND MIT @@ -58,6 +58,10 @@ Requires: python3-python-dateutil Requires: python3-pyxdg Requires: python3-requests +# typing extensions are needed on SLE & Leap +%if 0%{?suse_version} <= 1500 +Requires: python3-typing_extensions +%endif # bs_mirrorfull Requires: perl-Net-SSLeay ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.5dK4c3/_old 2023-07-25 11:53:32.226307513 +0200 +++ /var/tmp/diff_new_pack.5dK4c3/_new 2023-07-25 11:53:32.230307536 +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">5bc933b1b7426aba8cb75dbc25410aebfa07f974</param> + <param name="changesrevision">2396b32c141ca25b057c43758454abdc43f9131b</param> </service> </servicedata> ++++++ openSUSE-release-tools-20230721.5bc933b.obscpio -> openSUSE-release-tools-20230721.2396b32.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/.github/workflows/ci-test.yml new/openSUSE-release-tools-20230721.2396b32/.github/workflows/ci-test.yml --- old/openSUSE-release-tools-20230721.5bc933b/.github/workflows/ci-test.yml 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/.github/workflows/ci-test.yml 2023-07-21 17:19:45.000000000 +0200 @@ -42,6 +42,50 @@ if: always() run: docker-compose -f dist/ci/docker-compose.yml down + smoke-test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + image: + - registry.opensuse.org/opensuse/tumbleweed:latest + - registry.opensuse.org/opensuse/leap:15.5 + + container: ${{ matrix.image }} + steps: + - name: install git to checkout the repo + run: zypper -n in git + + - uses: actions/checkout@v3 + + - name: fix the file permissions of the repository + run: chown -R $(id -un):$(id -gn) . + + - name: add the openSUSE:Tools repository for Tumbleweed + if: ${{ contains(matrix.image, 'tumbleweed') }} + run: zypper -n ar https://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Tumbleweed/openSUSE:Tools.repo + + - name: add the openSUSE:Tools repository for Leap + if: ${{ contains(matrix.image, '15.5') }} + run: zypper -n ar https://download.opensuse.org/repositories/openSUSE:/Tools/15.5/openSUSE:Tools.repo + + - name: install the build & runtime dependencies of openSUSE-release-tool + run: | + zypper -n --gpg-auto-import-keys refresh + zypper -n source-install openSUSE-release-tools + zypper -n install openSUSE-release-tools + + - name: FIXME, install missing dependencies + run: | + zypper -n in python3-typing_extensions python3-solv python3-pika python3-openqa_client build python3-influxdb python3-bugzilla + + - name: run a simple smoke test whether --help actually works + run: | + for f in $(find . -maxdepth 1 -type f -executable -print); do + # skip completely broken scripts or those without --help + [[ " ./checknewer.py ./repo2fileprovides.py ./openqa-maintenance.py ./docker_publisher.py ./publish_distro ./bs_mirrorfull ./findfileconflicts ./write_repo_susetags_file.pl ./issue-diff.py " =~ "$f" ]] || "$f" --help + done + linters: runs-on: ubuntu-latest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/check_source.py new/openSUSE-release-tools-20230721.2396b32/check_source.py --- old/openSUSE-release-tools-20230721.5bc933b/check_source.py 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/check_source.py 2023-07-21 17:19:45.000000000 +0200 @@ -1,6 +1,5 @@ #!/usr/bin/python3 -from contextlib import suppress import difflib import glob import os @@ -248,22 +247,17 @@ pathname=copath, server_service_files=True, expand_link=True) os.rename(source_package, target_package) shutil.rmtree(os.path.join(target_package, '.osc')) - # TODO(dmllr): Fix in the source checker - with suppress(FileNotFoundError): - os.remove(os.path.join(target_package, '.gitattributes')) new_info = self.package_source_parse(source_project, source_package, source_revision, target_package) filename = new_info.get('filename', '') expected_name = target_package if filename == '_preinstallimage': expected_name = 'preinstallimage' - # TODO(dmllr): self.package_source_parse cannot handle scm_sync submissions, so skip the check for now - if not self.source_is_scm_staging_submission(source_project): - if not (filename.endswith('.kiwi') or filename == 'Dockerfile') and new_info['name'] != expected_name: - shutil.rmtree(copath) - self.review_messages['declined'] = "A package submitted as %s has to build as 'Name: %s' - found Name '%s'" % ( - target_package, expected_name, new_info['name']) - return False + if not (filename.endswith('.kiwi') or filename == 'Dockerfile') and new_info['name'] != expected_name: + shutil.rmtree(copath) + self.review_messages['declined'] = "A package submitted as %s has to build as 'Name: %s' - found Name '%s'" % ( + target_package, expected_name, new_info['name']) + return False if not self.check_service_file(target_package): return False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/dist/package/openSUSE-release-tools.spec new/openSUSE-release-tools-20230721.2396b32/dist/package/openSUSE-release-tools.spec --- old/openSUSE-release-tools-20230721.5bc933b/dist/package/openSUSE-release-tools.spec 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/dist/package/openSUSE-release-tools.spec 2023-07-21 17:19:45.000000000 +0200 @@ -58,6 +58,10 @@ Requires: python3-python-dateutil Requires: python3-pyxdg Requires: python3-requests +# typing extensions are needed on SLE & Leap +%if 0%{?suse_version} <= 1500 +Requires: python3-typing_extensions +%endif # bs_mirrorfull Requires: perl-Net-SSLeay diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/docs/staging.asciidoc new/openSUSE-release-tools-20230721.2396b32/docs/staging.asciidoc --- old/openSUSE-release-tools-20230721.5bc933b/docs/staging.asciidoc 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/docs/staging.asciidoc 2023-07-21 17:19:45.000000000 +0200 @@ -8,9 +8,8 @@ ------------ [id="intro"] -The staging plugin is used to enable the new -https://progress.opensuse.org/workflow/factory-proposal.html[factory -workflow] to work with staging projects. This plugin implements some +The staging plugin is used to enable the new factory +workflow to work with staging projects. This plugin implements some functionality that some day will be directly implemented in OBS itself. Meanwhile this plugin is used as a playground field to explore these new concepts and operations. @@ -229,10 +228,9 @@ * https://build.opensuse.org/project/show/openSUSE:Factory:Rings:0-Bootstrap[openSUSE:Factory:Rings:0-Bootstrap] * https://build.opensuse.org/project/show/openSUSE:Factory:Rings:1-MinimalX[openSUSE:Factory:Rings:1-MinimalX] -* https://build.opensuse.org/project/show/openSUSE:Factory:Rings:2-TestDVD[openSUSE:Factory:Rings:2-TestDVD] -And you can find a better description in the -https://www.youtube.com/watch?v=K-wTVGqKFR8[talk conference] +And you can find a better description in this +https://www.youtube.com/watch?v=K-wTVGqKFR8[very old presentation] from a conference celebrated in 2014 in Dubrovnik, Croatia. This command is used to check the current status of the rings and to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/bci.gocd.yaml new/openSUSE-release-tools-20230721.2396b32/gocd/bci.gocd.yaml --- old/openSUSE-release-tools-20230721.5bc933b/gocd/bci.gocd.yaml 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/bci.gocd.yaml 2023-07-21 17:19:45.000000000 +0200 @@ -127,6 +127,25 @@ osc -A https://api.suse.de/ api "/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | grep 'code="published" state="published">' && echo PUBLISHED done + SLE_BCI_15SP3.RepoPublisher: + group: BCI + lock_behavior: unlockWhenFinished + materials: + git: + git: https://github.com/openSUSE/openSUSE-release-tools.git + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-totest-manager + BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}' + stages: + - Run: + approval: manual + resources: + - staging-bot + tasks: + - script: | + export PYTHONPATH=scripts + ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-SP3 + SLE_BCI_15SP4.RelPkgs: group: BCI lock_behavior: unlockWhenFinished @@ -212,6 +231,25 @@ osc -A https://api.suse.de/ api "/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | grep 'code="published" state="published">' && echo PUBLISHED done + SLE_BCI_15SP4.RepoPublisher: + group: BCI + lock_behavior: unlockWhenFinished + materials: + git: + git: https://github.com/openSUSE/openSUSE-release-tools.git + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-totest-manager + BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}' + stages: + - Run: + approval: manual + resources: + - staging-bot + tasks: + - script: | + export PYTHONPATH=scripts + ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-SP4 + SLE_BCI_15SP5.RelPkgs: group: BCI lock_behavior: unlockWhenFinished @@ -297,3 +335,22 @@ osc -A https://api.suse.de/ api "/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | grep 'code="published" state="published">' && echo PUBLISHED done + SLE_BCI_15SP5.RepoPublisher: + group: BCI + lock_behavior: unlockWhenFinished + materials: + git: + git: https://github.com/openSUSE/openSUSE-release-tools.git + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-totest-manager + BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}' + stages: + - Run: + approval: manual + resources: + - staging-bot + tasks: + - script: | + export PYTHONPATH=scripts + ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-SP5 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/bci.gocd.yaml.erb new/openSUSE-release-tools-20230721.2396b32/gocd/bci.gocd.yaml.erb --- old/openSUSE-release-tools-20230721.5bc933b/gocd/bci.gocd.yaml.erb 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/bci.gocd.yaml.erb 2023-07-21 17:19:45.000000000 +0200 @@ -126,4 +126,23 @@ done osc -A https://api.suse.de/ api "/build/$PRJ/_result?view=summary&repository=images" | grep "result project" | grep 'code="published" state="published">' && echo PUBLISHED done + + SLE_BCI_15<%= sp %>.RepoPublisher: + group: BCI + lock_behavior: unlockWhenFinished + materials: + git: + git: https://github.com/openSUSE/openSUSE-release-tools.git + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-totest-manager + BCI_TOKEN: '{{SECRET:[opensuse.secrets][BCI_TOKEN]}}' + stages: + - Run: + approval: manual + resources: + - staging-bot + tasks: + - script: | + export PYTHONPATH=scripts + ./scripts/gocd/bci_repo_publish.py -A https://api.suse.de --verbose --debug run "--token=$BCI_TOKEN" 15-<%= sp %> <% end %> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/bci_repo_publish.py new/openSUSE-release-tools-20230721.2396b32/gocd/bci_repo_publish.py --- old/openSUSE-release-tools-20230721.5bc933b/gocd/bci_repo_publish.py 1970-01-01 01:00:00.000000000 +0100 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/bci_repo_publish.py 2023-07-21 17:19:45.000000000 +0200 @@ -0,0 +1,199 @@ +#!/usr/bin/python3 +# (c) 2023 fv...@suse.de +# GPL-2.0-or-later + +# This is a "mini ttm" for the BCI repo. Differences: +# * No :ToTest staging area +# * Only the repo is built, so it needs BCI specific openQA queries +# * The publishing location is arch specific +# * Uses a token for releasing to the publishing project + + +import cmdln +import logging +import ToolBase +import requests +import sys +import time +import re +from lxml import etree as ET +from openqa_client.client import OpenQA_Client +from osc.core import http_GET, makeurl + + +class BCIRepoPublisher(ToolBase.ToolBase): + def __init__(self): + ToolBase.ToolBase.__init__(self) + self.logger = logging.getLogger(__name__) + self.openqa = OpenQA_Client(server='https://openqa.suse.de') + + def version_of_product(self, project, package, repo, arch): + """Get the build version of the given product build, based on the binary name.""" + url = makeurl(self.apiurl, ['build', project, repo, arch, package]) + root = ET.parse(http_GET(url)).getroot() + for binary in root.findall('binary'): + result = re.match(r'.*-Build(.*)-Media1.report', binary.get('filename')) + if result: + return result.group(1) + + raise RuntimeError(f"Failed to get version of {project}/{package}") + + def mtime_of_product(self, project, package, repo, arch): + """Get the build time stamp of the given product, based on _buildenv.""" + url = makeurl(self.apiurl, ['build', project, repo, arch, package]) + root = ET.parse(http_GET(url)).getroot() + mtime = root.xpath('/binarylist/binary[@filename = "_buildenv"]/@mtime') + return mtime[0] + + def openqa_jobs_for_product(self, arch, version, build): + """Query openQA for all relevant jobs""" + values = { + 'group': 'BCI repo', + 'flavor': 'BCI-Repo-Updates', + 'arch': arch, + 'version': version, + 'build': build, + 'scope': 'current', + 'latest': '1', + } + return self.openqa.openqa_request('GET', 'jobs', values)['jobs'] + + def is_repo_published(self, project, repo): + """Validates that the given prj/repo is fully published and all builds + have succeeded.""" + url = makeurl(self.apiurl, ['build', project, '_result'], + {'view': 'summary', 'repository': repo}) + root = ET.parse(http_GET(url)).getroot() + for result in root.findall('result'): + if result.get('dirty', 'false') != 'false': + return False + if result.get('code') != 'published' or result.get('state') != 'published': + return False + + for statuscount in root.findall('statuscount'): + if statuscount.get('code') not in ('succeeded', 'disabled', 'excluded'): + return False + + return True + + def run(self, version, token=None): + build_prj = f'SUSE:SLE-{version}:Update:BCI' + + if not self.is_repo_published(build_prj, 'images'): + self.logger.info(f'{build_prj}/images not successfully built') + return + + # Build the list of packages with metainfo + packages = [] + # As long as it's the same everywhere, hardcoding this list here + # is easier and safer than trying to derive it from the package list. + for arch in ('aarch64', 'ppc64le', 's390x', 'x86_64'): + packages.append({ + 'arch': arch, + 'name': f'000product:SLE_BCI-ftp-POOL-{arch}', + 'build_prj': build_prj, + 'publish_prj': f'SUSE:Products:SLE-BCI:{version}:{arch}' + }) + + # Fetch the build numbers of built products. + # After release, the BuildXXX part vanishes, so the mtime has to be + # used instead for comparing built and published binaries. + for pkg in packages: + pkg['built_version'] = self.version_of_product(pkg['build_prj'], pkg['name'], + 'images', 'local') + pkg['built_mtime'] = self.mtime_of_product(pkg['build_prj'], pkg['name'], + 'images', 'local') + pkg['published_mtime'] = self.mtime_of_product(pkg['publish_prj'], pkg['name'], + 'images', 'local') + + # Verify that the builds for all archs are in sync + built_versions = {pkg['built_version'] for pkg in packages} + if len(built_versions) != 1: + # This should not be the case if everything is built and idle + self.logger.warning(f'Different builds found - not releasing: {packages}') + return + + # Compare versions + newer_version_available = [int(pkg['built_mtime']) > int(pkg['published_mtime']) + for pkg in packages] + if not any(newer_version_available): + self.logger.info('Current build already published, nothing to do.') + return + + # Check openQA results + openqa_passed = True + for pkg in packages: + passed = 0 + pending = 0 + failed = 0 + for job in self.openqa_jobs_for_product(arch=pkg['arch'], version=version, + build=pkg['built_version']): + if job['result'] in ('passed', 'softfailed'): + passed += 1 + elif job['result'] == 'none': + self.logger.info(f'https://openqa.suse.de/tests/{job["id"]} pending') + pending += 1 + else: + self.logger.warning(f'https://openqa.suse.de/tests/{job["id"]} failed') + failed += 1 + + if passed == 0 or pending > 0 or failed > 0: + openqa_passed = False + + if not openqa_passed: + self.logger.info('No positive result from openQA (yet)') + return + + # Trigger publishing + if token is None: + self.logger.warning('Would publish now, but no token specified') + return + + for pkg in packages: + self.logger.info(f'Releasing {pkg["name"]}...') + params = { + 'project': pkg['build_prj'], 'package': pkg['name'], + 'filter_source_repository': 'images', + 'targetproject': pkg['publish_prj'], 'targetrepository': 'images' + } + url = makeurl(self.apiurl, ['trigger', 'release'], params) + # No bindings for using tokens yet, so do the request manually + req = requests.post(url, headers={'Authorization': f'Token {token}'}) + if req.status_code != 200: + raise RuntimeError(f'Releasing failed: {req.text}') + + self.logger.info('Waiting for publishing to finish') + for pkg in packages: + while not self.is_repo_published(pkg['publish_prj'], 'images'): + self.logger.debug(f'Waiting for {pkg["publish_prj"]}') + time.sleep(20) + + +class CommandLineInterface(ToolBase.CommandLineInterface): + def __init__(self, *args, **kwargs): + ToolBase.CommandLineInterface.__init__(self, args, kwargs) + + def setup_tool(self): + tool = BCIRepoPublisher() + if self.options.debug: + logging.basicConfig(level=logging.DEBUG) + elif self.options.verbose: + logging.basicConfig(level=logging.INFO) + + return tool + + @cmdln.option('--token', help='The token for publishing. Does a dry run if not given.') + def do_run(self, subcmd, opts, project): + """${cmd_name}: run the BCI repo publisher for the specified project, + e.g. 15-SP3 + + ${cmd_usage} + ${cmd_option_list} + """ + + self.tool.run(project, token=opts.token) + + +if __name__ == "__main__": + cli = CommandLineInterface() + sys.exit(cli.main()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/pkglistgen.opensuse.gocd.yaml new/openSUSE-release-tools-20230721.2396b32/gocd/pkglistgen.opensuse.gocd.yaml --- old/openSUSE-release-tools-20230721.5bc933b/gocd/pkglistgen.opensuse.gocd.yaml 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/pkglistgen.opensuse.gocd.yaml 2023-07-21 17:19:45.000000000 +0200 @@ -129,7 +129,7 @@ - repo-checker tasks: - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Leap:16.0 -s target - Pkglistgen.openSUSE_Leap_15.5: + Pkglistgen.openSUSE_Leap_15.6: group: Leap lock_behavior: unlockWhenFinished environment_variables: @@ -145,12 +145,12 @@ approval: type: manual jobs: - openSUSE_Leap_15.5_target: + openSUSE_Leap_15.6_target: resources: - repo-checker tasks: - - script: python3 ./skippkg-finder.py -A https://api.opensuse.org -o openSUSE:Leap:15.5 -s SUSE:SLE-15-SP5:GA - - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Leap:15.5 -s target + - script: python3 ./skippkg-finder.py -A https://api.opensuse.org -o openSUSE:Leap:15.6 -s SUSE:SLE-15-SP6:GA + - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Leap:15.6 -s target Pkglistgen.openSUSE_Leap_15.4_CR: group: Leap lock_behavior: unlockWhenFinished @@ -173,7 +173,7 @@ tasks: - script: python3 ./skippkg-finder.py -A https://api.opensuse.org -o openSUSE:Leap:15.4:Images -t openSUSE:Leap:15.4:Update -s SUSE:SLE-15-SP4:Update - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p openSUSE:Leap:15.4:Images -s target - Update.Repos.Leap.openSUSE_Leap_15.5: + Update.Repos.Leap.openSUSE_Leap_15.6: group: Leap lock_behavior: unlockWhenFinished environment_variables: @@ -189,11 +189,11 @@ approval: type: manual jobs: - openSUSE_Leap_15.5: + openSUSE_Leap_15.6: resources: - repo-checker tasks: - - script: python3 ./pkglistgen.py --apiurl https://api.opensuse.org handle_update_repos openSUSE:Leap:15.5 + - script: python3 ./pkglistgen.py --apiurl https://api.opensuse.org handle_update_repos openSUSE:Leap:15.6 Update.Repos.Leap.openSUSE_Leap_15.4_Images: group: Leap lock_behavior: unlockWhenFinished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/pkglistgen.opensuse.gocd.yaml.erb new/openSUSE-release-tools-20230721.2396b32/gocd/pkglistgen.opensuse.gocd.yaml.erb --- old/openSUSE-release-tools-20230721.5bc933b/gocd/pkglistgen.opensuse.gocd.yaml.erb 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/pkglistgen.opensuse.gocd.yaml.erb 2023-07-21 17:19:45.000000000 +0200 @@ -87,7 +87,7 @@ tasks: - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p <%= project[0] %><%= options %> <% end -%> - Pkglistgen.openSUSE_Leap_15.5: + Pkglistgen.openSUSE_Leap_15.6: group: Leap lock_behavior: unlockWhenFinished environment_variables: @@ -103,7 +103,7 @@ approval: type: manual jobs: -<% ['openSUSE:Leap:15.5/target'].each do |project| +<% ['openSUSE:Leap:15.6/target'].each do |project| project=project.split('/') name=project[0].gsub(':', '_') if project.size > 1 @@ -115,7 +115,7 @@ resources: - repo-checker tasks: - - script: python3 ./skippkg-finder.py -A https://api.opensuse.org -o openSUSE:Leap:15.5 -s SUSE:SLE-15-SP5:GA + - script: python3 ./skippkg-finder.py -A https://api.opensuse.org -o openSUSE:Leap:15.6 -s SUSE:SLE-15-SP6:GA - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p <%= project[0] %><%= options %> <% end -%> Pkglistgen.openSUSE_Leap_15.4_CR: @@ -149,7 +149,7 @@ - script: python3 ./skippkg-finder.py -A https://api.opensuse.org -o openSUSE:Leap:15.4:Images -t openSUSE:Leap:15.4:Update -s SUSE:SLE-15-SP4:Update - script: python3 ./pkglistgen.py -d -A https://api.opensuse.org update_and_solve -p <%= project[0] %><%= options %> <% end -%> -<% %w(openSUSE:Leap:15.5 openSUSE:Leap:15.4:Images).each do |project| -%> +<% %w(openSUSE:Leap:15.6 openSUSE:Leap:15.4:Images).each do |project| -%> Update.Repos.Leap.<%= project.gsub(':', '_') %>: group: Leap lock_behavior: unlockWhenFinished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/rebuild-trigger.gocd.yaml new/openSUSE-release-tools-20230721.2396b32/gocd/rebuild-trigger.gocd.yaml --- old/openSUSE-release-tools-20230721.5bc933b/gocd/rebuild-trigger.gocd.yaml 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/rebuild-trigger.gocd.yaml 2023-07-21 17:19:45.000000000 +0200 @@ -143,7 +143,7 @@ ./project-installcheck.py --debug check --store home:repo-checker/rebuilds -r openSUSE_PPC GNOME:Factory ./project-installcheck.py --debug check --store home:repo-checker/rebuilds -r openSUSE_Factory GNOME:Next ./project-installcheck.py --debug check --store home:repo-checker/rebuilds -r openSUSE_PPC GNOME:Next - Trigger.Rebuild.SLE_15_SP5_Backports: + Trigger.Rebuild.SLE_15_SP6_Backports: group: openSUSE.Checkers lock_behavior: unlockWhenFinished environment_variables: @@ -161,10 +161,10 @@ - repo-checker tasks: - script: |- - echo "SLE15 SP5 Backports" - ./project-installcheck.py --debug check --store openSUSE:Backports:SLE-15-SP5:Staging/dashboard --no-rebuild openSUSE:Backports:SLE-15-SP5 - echo "SLE15 SP5 Step Backports (Rebuilds)" - ./project-installcheck.py --debug check --store home:repo-checker/rebuilds -r step openSUSE:Backports:SLE-15-SP5 + echo "SLE15 SP6 Backports" + ./project-installcheck.py --debug check --store openSUSE:Backports:SLE-15-SP6:Staging/dashboard --no-rebuild openSUSE:Backports:SLE-15-SP6 + echo "SLE15 SP6 Step Backports (Rebuilds)" + ./project-installcheck.py --debug check --store home:repo-checker/rebuilds -r step openSUSE:Backports:SLE-15-SP6 Trigger.Rebuild.Step: group: openSUSE.Checkers lock_behavior: unlockWhenFinished @@ -193,7 +193,7 @@ ./project-installcheck.py --debug check --store home:repo-checker/rebuilds -r standard openSUSE:Step:15-SP1 echo "Step 15" ./project-installcheck.py --debug check --store home:repo-checker/rebuilds -r standard openSUSE:Step:15 - Trigger.Rebuild.Leap_15_5: + Trigger.Rebuild.Leap_15_6: group: openSUSE.Checkers lock_behavior: unlockWhenFinished environment_variables: @@ -211,5 +211,5 @@ - repo-checker tasks: - script: |- - echo "Leap 15.5" - ./project-installcheck.py --debug check --store openSUSE:Leap:15.5:Staging/dashboard --no-rebuild openSUSE:Leap:15.5 + echo "Leap 15.6" + ./project-installcheck.py --debug check --store openSUSE:Leap:15.6:Staging/dashboard --no-rebuild openSUSE:Leap:15.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/staging.bot.gocd.yaml new/openSUSE-release-tools-20230721.2396b32/gocd/staging.bot.gocd.yaml --- old/openSUSE-release-tools-20230721.5bc933b/gocd/staging.bot.gocd.yaml 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/staging.bot.gocd.yaml 2023-07-21 17:19:45.000000000 +0200 @@ -114,7 +114,7 @@ osc -A https://api.opensuse.org staging -p openSUSE:Factory:NonFree unselect --cleanup osc -A https://api.opensuse.org staging -p openSUSE:Factory:NonFree repair --cleanup rm -rf $tempdir - AdiChecker.Backports.SLE-15-SP5: + AdiChecker.Backports.SLE-15-SP6: group: openSUSE.Checkers lock_behavior: unlockWhenFinished environment_variables: @@ -127,7 +127,7 @@ git: git://botmaster.suse.de/opensuse-repos.git auto_update: true whitelist: - - openSUSE:Backports:SLE-15-SP5:Staging:adi*.yaml + - openSUSE:Backports:SLE-15-SP6:Staging:adi*.yaml destination: repos stages: - Run: @@ -137,8 +137,8 @@ - repo-checker tasks: - script: |- - ./scripts/staging-installcheck.py -A https://api.opensuse.org -p openSUSE:Backports:SLE-15-SP5 - SBot.Regular.Backports.SLE-15-SP5: + ./scripts/staging-installcheck.py -A https://api.opensuse.org -p openSUSE:Backports:SLE-15-SP6 + SBot.Regular.Backports.SLE-15-SP6: group: openSUSE.Checkers lock_behavior: unlockWhenFinished timer: @@ -165,13 +165,13 @@ ln -s $PWD/osclib $tempdir/.osc-plugins export HOME=$tempdir - osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP5 rebuild - osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP5 list --supersede - osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP5 adi - osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP5 unselect --cleanup - osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP5 repair --cleanup + osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP6 rebuild + osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP6 list --supersede + osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP6 adi + osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP6 unselect --cleanup + osc -A https://api.opensuse.org staging -p openSUSE:Backports:SLE-15-SP6 repair --cleanup rm -rf $tempdir - AdiChecker.Leap.15.5: + AdiChecker.Leap.15.6: group: openSUSE.Checkers lock_behavior: unlockWhenFinished environment_variables: @@ -184,7 +184,7 @@ git: git://botmaster.suse.de/opensuse-repos.git auto_update: true whitelist: - - openSUSE:Leap:15.5:Staging:adi*.yaml + - openSUSE:Leap:15.6:Staging:adi*.yaml destination: repos stages: - Run: @@ -194,8 +194,8 @@ - repo-checker tasks: - script: |- - ./scripts/staging-installcheck.py -A https://api.opensuse.org -p openSUSE:Leap:15.5 - SBot.Regular.Leap.15.5: + ./scripts/staging-installcheck.py -A https://api.opensuse.org -p openSUSE:Leap:15.6 + SBot.Regular.Leap.15.6: group: openSUSE.Checkers lock_behavior: unlockWhenFinished timer: @@ -222,9 +222,9 @@ ln -s $PWD/osclib $tempdir/.osc-plugins export HOME=$tempdir - osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.5 rebuild - osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.5 list --supersede - osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.5 adi - osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.5 unselect --cleanup - osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.5 repair --cleanup + osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.6 rebuild + osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.6 list --supersede + osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.6 adi + osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.6 unselect --cleanup + osc -A https://api.opensuse.org staging -p openSUSE:Leap:15.6 repair --cleanup rm -rf $tempdir diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/staging.bot.gocd.yaml.erb new/openSUSE-release-tools-20230721.2396b32/gocd/staging.bot.gocd.yaml.erb --- old/openSUSE-release-tools-20230721.5bc933b/gocd/staging.bot.gocd.yaml.erb 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/staging.bot.gocd.yaml.erb 2023-07-21 17:19:45.000000000 +0200 @@ -1,6 +1,6 @@ format_version: 3 pipelines: -<% %w(Factory Factory:NonFree Backports:SLE-15-SP5 Leap:15.5).each do |project| -%> +<% %w(Factory Factory:NonFree Backports:SLE-15-SP6 Leap:15.6).each do |project| -%> <% nickname = project.gsub(':', '.') -%> AdiChecker.<%= nickname %>: group: openSUSE.Checkers diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/totestmanager.gocd.yaml new/openSUSE-release-tools-20230721.2396b32/gocd/totestmanager.gocd.yaml --- old/openSUSE-release-tools-20230721.5bc933b/gocd/totestmanager.gocd.yaml 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/totestmanager.gocd.yaml 2023-07-21 17:19:45.000000000 +0200 @@ -168,7 +168,7 @@ - script: |- install -D /home/go/config/openqa-client.conf /home/go/.config/openqa/client.conf scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.4:ARM:Images - TTM.Leap_15.5: + TTM.Leap_15.5_Images: group: openSUSE.Checkers lock_behavior: unlockWhenFinished environment_variables: @@ -188,8 +188,8 @@ tasks: - script: |- install -D /home/go/config/openqa-client.conf /home/go/.config/openqa/client.conf - scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.5 - TTM.Leap_15.5_Images: + scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.5:Images + TTM.Leap_15.5_ARM: group: openSUSE.Checkers lock_behavior: unlockWhenFinished environment_variables: @@ -209,8 +209,8 @@ tasks: - script: |- install -D /home/go/config/openqa-client.conf /home/go/.config/openqa/client.conf - scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.5:Images - TTM.Leap_15.5_ARM: + scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.5:ARM + TTM.Leap_15.5_ARM_Images: group: openSUSE.Checkers lock_behavior: unlockWhenFinished environment_variables: @@ -230,8 +230,8 @@ tasks: - script: |- install -D /home/go/config/openqa-client.conf /home/go/.config/openqa/client.conf - scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.5:ARM - TTM.Leap_15.5_ARM_Images: + scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.5:ARM:Images + TTM.Leap_15.6: group: openSUSE.Checkers lock_behavior: unlockWhenFinished environment_variables: @@ -251,7 +251,70 @@ tasks: - script: |- install -D /home/go/config/openqa-client.conf /home/go/.config/openqa/client.conf - scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.5:ARM:Images + scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.6 + TTM.Leap_15.6_Images: + group: openSUSE.Checkers + lock_behavior: unlockWhenFinished + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-totest-manager + materials: + script: + git: https://github.com/openSUSE/openSUSE-release-tools.git + destination: scripts + timer: + spec: 0 */15 * ? * * + only_on_changes: false + stages: + - Run: + approval: manual + resources: + - staging-bot + tasks: + - script: |- + install -D /home/go/config/openqa-client.conf /home/go/.config/openqa/client.conf + scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.6:Images + TTM.Leap_15.6_ARM: + group: openSUSE.Checkers + lock_behavior: unlockWhenFinished + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-totest-manager + materials: + script: + git: https://github.com/openSUSE/openSUSE-release-tools.git + destination: scripts + timer: + spec: 0 */15 * ? * * + only_on_changes: false + stages: + - Run: + approval: manual + resources: + - staging-bot + tasks: + - script: |- + install -D /home/go/config/openqa-client.conf /home/go/.config/openqa/client.conf + scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.6:ARM + TTM.Leap_15.6_ARM_Images: + group: openSUSE.Checkers + lock_behavior: unlockWhenFinished + environment_variables: + OSC_CONFIG: /home/go/config/oscrc-totest-manager + materials: + script: + git: https://github.com/openSUSE/openSUSE-release-tools.git + destination: scripts + timer: + spec: 0 */15 * ? * * + only_on_changes: false + stages: + - Run: + approval: manual + resources: + - staging-bot + tasks: + - script: |- + install -D /home/go/config/openqa-client.conf /home/go/.config/openqa/client.conf + scripts/totest-manager.py -A https://api.opensuse.org --debug run openSUSE:Leap:15.6:ARM:Images TTM.Leap_Micro_5.4: group: openSUSE.Checkers lock_behavior: unlockWhenFinished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/gocd/totestmanager.gocd.yaml.erb new/openSUSE-release-tools-20230721.2396b32/gocd/totestmanager.gocd.yaml.erb --- old/openSUSE-release-tools-20230721.5bc933b/gocd/totestmanager.gocd.yaml.erb 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/gocd/totestmanager.gocd.yaml.erb 2023-07-21 17:19:45.000000000 +0200 @@ -9,10 +9,13 @@ openSUSE:Leap:15.4:Images openSUSE:Leap:15.4:ARM openSUSE:Leap:15.4:ARM:Images - openSUSE:Leap:15.5 openSUSE:Leap:15.5:Images openSUSE:Leap:15.5:ARM openSUSE:Leap:15.5:ARM:Images + openSUSE:Leap:15.6 + openSUSE:Leap:15.6:Images + openSUSE:Leap:15.6:ARM + openSUSE:Leap:15.6:ARM:Images openSUSE:Leap:Micro:5.4 openSUSE:Leap:Micro:5.4:Images ) -%> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/metrics/access/aggregate.php new/openSUSE-release-tools-20230721.2396b32/metrics/access/aggregate.php --- old/openSUSE-release-tools-20230721.5bc933b/metrics/access/aggregate.php 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/metrics/access/aggregate.php 2023-07-21 17:19:45.000000000 +0200 @@ -7,6 +7,7 @@ $CACHE_DIR = $_SERVER['HOME'] . '/.cache/openSUSE-release-tools/metrics-access'; const PROTOCOLS = ['ipv4', 'ipv6']; const PONTIFEX = 'http://pontifex.infra.opensuse.org/logs'; +const BACKUP = 'http://backup.infra.opensuse.org'; const LANGLEY = 'http://langley.suse.de/pub/pontifex%s-opensuse.suse.de'; const VHOST = 'download.opensuse.org'; const FILENAME = 'download.opensuse.org-%s-access_log.xz'; @@ -18,18 +19,17 @@ $begin->sub(date_interval_create_from_date_string('1 day')); $source_map = [ 'ipv4' => [ - '2010-01-03' => false, - '2014-04-14' => sprintf(LANGLEY, 2) . '/' . VHOST, - '2017-12-04' => sprintf(LANGLEY, 3) . '/' . VHOST, - // 2017-12-05 has bad permissions on langley and is still on origin. - '2021-09-05' => false, + '2023-01-01' => false, + //'2014-04-14' => sprintf(LANGLEY, 2) . '/' . VHOST, + //'2017-12-04' => sprintf(LANGLEY, 3) . '/' . VHOST, + '2023-06-18' => BACKUP . '/' . VHOST, $begin->format('Y-m-d') => PONTIFEX . '/' . VHOST, 'filename' => FILENAME, ], 'ipv6' => [ '2012-12-31' => false, - '2017-12-04' => sprintf(LANGLEY, 3) . '/' . IPV6_PREFIX . VHOST, - '2021-09-05' => false, + //'2017-12-04' => sprintf(LANGLEY, 3) . '/' . IPV6_PREFIX . VHOST, + '2023-06-18' => BACKUP . '/' . IPV6_PREFIX . VHOST, $begin->format('Y-m-d') => PONTIFEX . '/' . IPV6_PREFIX . VHOST, 'filename' => IPV6_PREFIX . FILENAME, ], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/origin-manager.py new/openSUSE-release-tools-20230721.2396b32/origin-manager.py --- old/openSUSE-release-tools-20230721.5bc933b/origin-manager.py 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/origin-manager.py 2023-07-21 17:19:45.000000000 +0200 @@ -1,6 +1,11 @@ #!/usr/bin/python3 -from typing import Literal, Optional, Tuple, Union +from typing import Optional, Tuple, Union +try: + from typing import Literal +except ImportError: + from typing_extensions import Literal + from osclib.core import devel_project_get from osclib.core import package_source_hash from osclib.core import package_kind diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/osclib/comments.py new/openSUSE-release-tools-20230721.2396b32/osclib/comments.py --- old/openSUSE-release-tools-20230721.5bc933b/osclib/comments.py 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/osclib/comments.py 2023-07-21 17:19:45.000000000 +0200 @@ -1,5 +1,10 @@ from datetime import datetime -from typing import TYPE_CHECKING, Any, Dict, Generator, List, Literal, Optional, Tuple, TypedDict, Union +from typing import TYPE_CHECKING, Any, Dict, Generator, List, Optional, Tuple, Union +try: + from typing import Literal, TypedDict +except ImportError: + from typing_extensions import Literal, TypedDict + from dateutil.parser import parse as date_parse import re if TYPE_CHECKING: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/osclib/core.py new/openSUSE-release-tools-20230721.2396b32/osclib/core.py --- old/openSUSE-release-tools-20230721.5bc933b/osclib/core.py 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/osclib/core.py 2023-07-21 17:19:45.000000000 +0200 @@ -4,7 +4,12 @@ import re import socket import logging -from typing import List, Literal, Optional, Tuple, Union +from typing import List, Optional, Tuple, Union +try: + from typing import Literal +except ImportError: + from typing_extensions import Literal + from lxml import etree as ET from urllib.error import HTTPError diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20230721.5bc933b/osclib/origin.py new/openSUSE-release-tools-20230721.2396b32/osclib/origin.py --- old/openSUSE-release-tools-20230721.5bc933b/osclib/origin.py 2023-07-21 13:05:41.000000000 +0200 +++ new/openSUSE-release-tools-20230721.2396b32/osclib/origin.py 2023-07-21 17:19:45.000000000 +0200 @@ -1,6 +1,10 @@ from copy import deepcopy import logging -from typing import Any, Dict, Generator, List, Literal, NamedTuple, Optional, Tuple, TypedDict, Union +from typing import Any, Dict, Generator, List, NamedTuple, Optional, Tuple, Union +try: + from typing import Literal, TypedDict +except ImportError: + from typing_extensions import Literal, TypedDict from osc.core import ReviewState from osclib.conf import Config ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.5dK4c3/_old 2023-07-25 11:53:33.130312806 +0200 +++ /var/tmp/diff_new_pack.5dK4c3/_new 2023-07-25 11:53:33.130312806 +0200 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20230721.5bc933b -mtime: 1689937541 -commit: 5bc933b1b7426aba8cb75dbc25410aebfa07f974 +version: 20230721.2396b32 +mtime: 1689952785 +commit: 2396b32c141ca25b057c43758454abdc43f9131b