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 2024-03-01 23:38:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1770 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openSUSE-release-tools" Fri Mar 1 23:38:41 2024 rev:522 rq:1154000 version:20240223.f941f9d Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2024-02-14 23:20:05.199168562 +0100 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.1770/openSUSE-release-tools.changes 2024-03-01 23:38:49.232434814 +0100 @@ -1,0 +2,44 @@ +Fri Feb 23 12:37:59 UTC 2024 - opensuse-releaset...@opensuse.org + +- Update to version 20240223.f941f9d: + * Call rabbit-repoid.py for openSUSE:Slowroll + +------------------------------------------------------------------- +Thu Feb 22 15:43:06 UTC 2024 - opensuse-releaset...@opensuse.org + +- Update to version 20240222.1748b20: + * osclib/repochecks.py: Use libsolv for checking conflicts between packages + * findfileconflicts: Quote version and release in YAML output + +------------------------------------------------------------------- +Thu Feb 22 13:43:26 UTC 2024 - opensuse-releaset...@opensuse.org + +- Update to version 20240222.db4bd75: + * Introduce new openSUSE|SUSE.Legal group and move pipelines into them + +------------------------------------------------------------------- +Wed Feb 21 10:27:20 UTC 2024 - opensuse-releaset...@opensuse.org + +- Update to version 20240221.84b76ec: + * Fix mkdir permissions argument + * Add IPv4 and IPv6 handling in one file + +------------------------------------------------------------------- +Tue Feb 20 08:47:19 UTC 2024 - opensuse-releaset...@opensuse.org + +- Update to version 20240220.9919e02: + * Maintenance setup for Leap 15.6 + +------------------------------------------------------------------- +Thu Feb 15 10:07:18 UTC 2024 - opensuse-releaset...@opensuse.org + +- Update to version 20240215.54075b0: + * Remove 15.4 and add 15.6 where missing + +------------------------------------------------------------------- +Thu Feb 15 10:05:30 UTC 2024 - opensuse-releaset...@opensuse.org + +- Update to version 20240215.9e5a7f9: + * ttm: Remove livecd size checks + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20240207.602b3d2.obscpio New: ---- openSUSE-release-tools-20240223.f941f9d.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.XCLXsv/_old 2024-03-01 23:38:49.896458825 +0100 +++ /var/tmp/diff_new_pack.XCLXsv/_new 2024-03-01 23:38:49.896458825 +0100 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20240207.602b3d2 +Version: 20240223.f941f9d 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.XCLXsv/_old 2024-03-01 23:38:49.928459982 +0100 +++ /var/tmp/diff_new_pack.XCLXsv/_new 2024-03-01 23:38:49.932460127 +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">602b3d2b1e47b7ba9397524ebd94446982f88c03</param> + <param name="changesrevision">f941f9da356c0e561c42a69596eef616ea1f2c77</param> </service> </servicedata> ++++++ openSUSE-release-tools-20240207.602b3d2.obscpio -> openSUSE-release-tools-20240223.f941f9d.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/dashboard/generate.py new/openSUSE-release-tools-20240223.f941f9d/dashboard/generate.py --- old/openSUSE-release-tools-20240207.602b3d2/dashboard/generate.py 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/dashboard/generate.py 2024-02-23 13:35:56.000000000 +0100 @@ -191,13 +191,6 @@ openqa_group='openSUSE Leap 15.5 ARMv7', openqa_version='15.5', openqa_groupid=106) fetcher.add('openSUSE:Leap:15.5:ARM:Images', nick='Leap:15.5:ARM:Images', openqa_group='openSUSE Leap 15.5 ARMv7 Images', openqa_version='15.5', openqa_groupid=104) - fetcher.add('openSUSE:Leap:15.4:Images', nick='Leap:15.4:Images', openqa_group='openSUSE Leap 15.4 Images', - openqa_version='15.4', openqa_groupid=89) - fetcher.add('openSUSE:Leap:15.4:ARM', nick='Leap:15.4:ARM', - download_url='https://download.opensuse.org/ports/armv7hl/distribution/leap/15.4/iso', - openqa_group='openSUSE Leap 15.4 ARMv7', openqa_version='15.4', openqa_groupid=92) - fetcher.add('openSUSE:Leap:15.4:ARM:Images', nick='Leap:15.4:ARM:Images', - openqa_group='openSUSE Leap 15.4 ARMv7 Images', openqa_version='15.4', openqa_groupid=91) with app.app_context(): rendered = render_template('dashboard.html', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/data/apimap.json new/openSUSE-release-tools-20240223.f941f9d/data/apimap.json --- old/openSUSE-release-tools-20240207.602b3d2/data/apimap.json 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/data/apimap.json 2024-02-23 13:35:56.000000000 +0100 @@ -18,5 +18,15 @@ "version": "15.5", "flavor": "DVD-Backports-Incidents", "distri": "opensuse" + }, + "openSUSE:Leap:15.6:Update" : { + "version": "15.6", + "flavor": "DVD-Incidents", + "distri": "opensuse" + }, + "openSUSE:Backports:SLE-15-SP6:Update" : { + "version": "15.6", + "flavor": "DVD-Backports-Incidents", + "distri": "opensuse" } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/data/incidents.json new/openSUSE-release-tools-20240223.f941f9d/data/incidents.json --- old/openSUSE-release-tools-20240207.602b3d2/data/incidents.json 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/data/incidents.json 2024-02-23 13:35:56.000000000 +0100 @@ -28,5 +28,20 @@ "FLAVOR": "DVD-Backports-Incidents", "VERSION": "15.5", "ARCH": "x86_64" + }, + "openSUSE:Leap:15.6:Update": { + "DISTRI": "opensuse", + "FLAVOR": "DVD-Incidents", + "VERSION": "15.6", + "ARCH": [ + "x86_64", + "aarch64" + ] + }, + "openSUSE:Backports:SLE-15-SP6:Update": { + "DISTRI": "opensuse", + "FLAVOR": "DVD-Backports-Incidents", + "VERSION": "15.6", + "ARCH": "x86_64" } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/data/repos.json new/openSUSE-release-tools-20240223.f941f9d/data/repos.json --- old/openSUSE-release-tools-20240207.602b3d2/data/repos.json 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/data/repos.json 2024-02-23 13:35:56.000000000 +0100 @@ -59,6 +59,36 @@ "http://download.opensuse.org/update/leap/15.5/backports/", "http://download.opensuse.org/update/leap/15.5/sle/" ] + }, + "openSUSE:Leap:15.6:Update": { + "settings": { + "OS_TEST_ISSUES": "", + "FLAVOR": "DVD-Updates", + "DISTRI": "opensuse", + "VERSION": "15.6", + "ARCH": "x86_64" + }, + "test": "textmode", + "repos": [ + "http://download.opensuse.org/update/leap/15.6/oss/", + "http://download.opensuse.org/update/leap/15.6/non-oss/", + "http://download.opensuse.org/update/leap/15.6/backports/", + "http://download.opensuse.org/update/leap/15.6/sle/" + ] + }, + "openSUSE:Backports:SLE-15-SP6:Update": { + "settings": { + "OS_TEST_ISSUES": "", + "FLAVOR": "DVD-Backports-Incidents", + "DISTRI": "opensuse", + "VERSION": "15.6", + "ARCH": "x86_64" + }, + "test": "textmode", + "repos": [ + "http://download.opensuse.org/update/leap/15.6/backports/", + "http://download.opensuse.org/update/leap/15.6/sle/" + ] } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/docker_publisher.py new/openSUSE-release-tools-20240223.f941f9d/docker_publisher.py --- old/openSUSE-release-tools-20240207.602b3d2/docker_publisher.py 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/docker_publisher.py 2024-02-23 13:35:56.000000000 +0100 @@ -377,16 +377,6 @@ }, 'publisher': DockerImagePublisherRegistry(drc_tw, "latest"), }, - '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 - 'aarch64': DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.4/containers/aarch64/opensuse-leap-image:docker", maintenance_release=True), # noqa: E501 - 'armv7l': DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.4/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.4/containers/ppc64le/opensuse-leap-image:docker", maintenance_release=True), # noqa: E501 - 's390x': DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.4/containers/s390x/opensuse-leap-image:docker", maintenance_release=True), # noqa: E501 - }, - 'publisher': DockerImagePublisherRegistry(drc_leap, "15.4"), - }, '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 @@ -397,6 +387,16 @@ }, 'publisher': DockerImagePublisherRegistry(drc_leap, "latest", ["15.5", "15"]), }, + 'leap-15.6': { + 'fetchers': { + 'x86_64': DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.6/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.6/containers/aarch64/opensuse-leap-image:docker", maintenance_release=True), # noqa: E501 + 'armv7l': DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.6/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.6/containers/ppc64le/opensuse-leap-image:docker", maintenance_release=True), # noqa: E501 + 's390x': DockerImageFetcherOBS(url="https://build.opensuse.org/public/build/openSUSE:Containers:Leap:15.6/containers/s390x/opensuse-leap-image:docker", maintenance_release=True), # noqa: E501 + }, + 'publisher': DockerImagePublisherRegistry(drc_leap, "15.6"), + }, } # 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-20240207.602b3d2/findfileconflicts new/openSUSE-release-tools-20240223.f941f9d/findfileconflicts --- old/openSUSE-release-tools-20240207.602b3d2/findfileconflicts 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/findfileconflicts 2024-02-23 13:35:56.000000000 +0100 @@ -446,8 +446,8 @@ my @sp1 = split(' ', $p1); my @sp2 = split(' ', $p2); print "- between:\n"; - print " - [$sp1[0], $sp1[1], $sp1[2], $sp1[3]]\n"; - print " - [$sp2[0], $sp2[1], $sp2[2], $sp2[3]]\n"; + print " - [$sp1[0], '$sp1[1]', '$sp1[2]', $sp1[3]]\n"; + print " - [$sp2[0], '$sp2[1]', '$sp2[2]', $sp2[3]]\n"; print " conflicts: |-\n"; print " $_\n" for (@con); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/checkers.opensuse.gocd.yaml new/openSUSE-release-tools-20240223.f941f9d/gocd/checkers.opensuse.gocd.yaml --- old/openSUSE-release-tools-20240207.602b3d2/gocd/checkers.opensuse.gocd.yaml 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/checkers.opensuse.gocd.yaml 2024-02-23 13:35:56.000000000 +0100 @@ -41,7 +41,7 @@ tasks: - script: ./maintenance-installcheck.py -A https://api.opensuse.org --user=maintenance-installcheck --debug review openSUSE.Legal.Check: - group: openSUSE.Checkers + group: openSUSE.Legal lock_behavior: unlockWhenFinished timer: spec: 0 */5 * ? * * @@ -62,7 +62,7 @@ - script: ./legal-auto.py -A https://api.opensuse.org --debug --legaldb https://legaldb.suse.de --group=legal-auto review - script: ./legal-auto.py -A https://api.opensuse.org --debug --legaldb https://legaldb.suse.de --user=licensedigger review openSUSE.Legal.Import: - group: openSUSE.Checkers + group: openSUSE.Legal lock_behavior: unlockWhenFinished timer: spec: 0 0 */3 ? * * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/checkers.suse.gocd.yaml new/openSUSE-release-tools-20240223.f941f9d/gocd/checkers.suse.gocd.yaml --- old/openSUSE-release-tools-20240207.602b3d2/gocd/checkers.suse.gocd.yaml 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/checkers.suse.gocd.yaml 2024-02-23 13:35:56.000000000 +0100 @@ -233,7 +233,7 @@ tasks: - script: ./check_source.py -A https://api.suse.de --verbose --skip-add-reviews --group factory-auto --user factory-auto review SLE.Legal.Check: - group: SLE.Checkers + group: SUSE.Legal lock_behavior: unlockWhenFinished timer: spec: 0 */5 * ? * * @@ -255,7 +255,7 @@ - script: ./legal-auto.py -A https://api.suse.de --debug --legaldb https://legaldb.suse.de --group=legal-auto review - script: ./legal-auto.py -A https://api.suse.de --debug --legaldb https://legaldb.suse.de --user=licensedigger review SLE.Legal.Import: - group: SLE.Checkers + group: SUSE.Legal lock_behavior: unlockWhenFinished timer: spec: 0 0 0 ? * * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/checkers.suse.gocd.yaml.erb new/openSUSE-release-tools-20240223.f941f9d/gocd/checkers.suse.gocd.yaml.erb --- old/openSUSE-release-tools-20240207.602b3d2/gocd/checkers.suse.gocd.yaml.erb 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/checkers.suse.gocd.yaml.erb 2024-02-23 13:35:56.000000000 +0100 @@ -233,7 +233,7 @@ tasks: - script: ./check_source.py -A https://api.suse.de --verbose --skip-add-reviews --group factory-auto --user factory-auto review SLE.Legal.Check: - group: SLE.Checkers + group: SUSE.Legal lock_behavior: unlockWhenFinished timer: spec: 0 */5 * ? * * @@ -255,7 +255,7 @@ - script: ./legal-auto.py -A https://api.suse.de --debug --legaldb https://legaldb.suse.de --group=legal-auto review - script: ./legal-auto.py -A https://api.suse.de --debug --legaldb https://legaldb.suse.de --user=licensedigger review SLE.Legal.Import: - group: SLE.Checkers + group: SUSE.Legal lock_behavior: unlockWhenFinished timer: spec: 0 0 0 ? * * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/generate.sh new/openSUSE-release-tools-20240223.f941f9d/gocd/generate.sh --- old/openSUSE-release-tools-20240207.602b3d2/gocd/generate.sh 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/generate.sh 2024-02-23 13:35:56.000000000 +0100 @@ -14,7 +14,7 @@ grep group: *.yaml | cut -d: -f3 | sort -u | while read group; do case $group in - BCI|Factory|Leap|Admin|MicroOS|Monitors|openSUSE.Checkers|SLE15.Stagings|SLE15.Target|SLE.Checkers|ALP.Stagings|ALP.Target|ALP.Checkers) + BCI|Factory|Leap|Admin|MicroOS|Monitors|openSUSE.Checkers|SLE15.Stagings|SLE15.Target|SLE.Checkers|ALP.Stagings|ALP.Target|ALP.Checkers|openSUSE.Legal|SUSE.Legal) ;; *) echo "Do not create new groups without being admin and knowing the consequences - found $group" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/monitors.gocd.yaml new/openSUSE-release-tools-20240223.f941f9d/gocd/monitors.gocd.yaml --- old/openSUSE-release-tools-20240207.602b3d2/gocd/monitors.gocd.yaml 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/monitors.gocd.yaml 2024-02-23 13:35:56.000000000 +0100 @@ -121,7 +121,7 @@ git config --global user.email "co...@suse.de" git config --global user.name "GoCD Repo Monitor" cd repos - ../scripts/gocd/rabbit-repoid.py -A https://api.opensuse.org openSUSE:Factory openSUSE:Leap openSUSE:Backports Virtualization:WSL KDE:Medias systemsmanagement:Agama SUSE:ALP + ../scripts/gocd/rabbit-repoid.py -A https://api.opensuse.org openSUSE:Factory openSUSE:Leap openSUSE:Backports Virtualization:WSL KDE:Medias systemsmanagement:Agama SUSE:ALP openSUSE:Slowroll openSUSE.ObsRsync: group: Monitors lock_behavior: unlockWhenFinished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/pkglistgen.opensuse.gocd.yaml new/openSUSE-release-tools-20240223.f941f9d/gocd/pkglistgen.opensuse.gocd.yaml --- old/openSUSE-release-tools-20240207.602b3d2/gocd/pkglistgen.opensuse.gocd.yaml 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/pkglistgen.opensuse.gocd.yaml 2024-02-23 13:35:56.000000000 +0100 @@ -151,28 +151,6 @@ tasks: - 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 - environment_variables: - OSC_CONFIG: /home/go/config/oscrc-staging-bot - timer: - spec: 0 40 * ? * * - only_on_changes: false - materials: - git: - git: https://github.com/openSUSE/openSUSE-release-tools.git - stages: - - pkglistgen: - approval: - type: manual - jobs: - openSUSE_Leap_15.4_Images_target: - resources: - - repo-checker - 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.6: group: Leap lock_behavior: unlockWhenFinished @@ -194,24 +172,3 @@ - repo-checker tasks: - 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 - environment_variables: - OSC_CONFIG: /home/go/config/oscrc-staging-bot - timer: - spec: 0 0 0 */3 * ? - only_on_changes: false - materials: - git: - git: https://github.com/openSUSE/openSUSE-release-tools.git - stages: - - Update: - approval: - type: manual - jobs: - openSUSE_Leap_15.4_Images: - resources: - - repo-checker - tasks: - - script: python3 ./pkglistgen.py --apiurl https://api.opensuse.org handle_update_repos openSUSE:Leap:15.4:Images diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/pkglistgen.opensuse.gocd.yaml.erb new/openSUSE-release-tools-20240223.f941f9d/gocd/pkglistgen.opensuse.gocd.yaml.erb --- old/openSUSE-release-tools-20240207.602b3d2/gocd/pkglistgen.opensuse.gocd.yaml.erb 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/pkglistgen.opensuse.gocd.yaml.erb 2024-02-23 13:35:56.000000000 +0100 @@ -118,38 +118,7 @@ - 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: - group: Leap - lock_behavior: unlockWhenFinished - environment_variables: - OSC_CONFIG: /home/go/config/oscrc-staging-bot - timer: - spec: 0 40 * ? * * - only_on_changes: false - materials: - git: - git: https://github.com/openSUSE/openSUSE-release-tools.git - stages: - - pkglistgen: - approval: - type: manual - jobs: -<% ['openSUSE:Leap:15.4:Images/target'].each do |project| - project=project.split('/') - name=project[0].gsub(':', '_') - if project.size > 1 - options=" -s #{project[1]}" - name = name + "_#{project[1]}" - end - -%> - <%= name %>: - resources: - - repo-checker - 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 <%= project[0] %><%= options %> -<% end -%> -<% %w(openSUSE:Leap:15.6 openSUSE:Leap:15.4:Images).each do |project| -%> +<% %w(openSUSE:Leap:15.6).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-20240207.602b3d2/gocd/totestmanager.gocd.yaml new/openSUSE-release-tools-20240223.f941f9d/gocd/totestmanager.gocd.yaml --- old/openSUSE-release-tools-20240207.602b3d2/gocd/totestmanager.gocd.yaml 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/totestmanager.gocd.yaml 2024-02-23 13:35:56.000000000 +0100 @@ -105,69 +105,6 @@ - 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:Factory:zSystems - TTM.Leap_15.4_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.4:Images - TTM.Leap_15.4_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.4:ARM - TTM.Leap_15.4_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.4:ARM:Images TTM.Leap_15.5_Images: group: openSUSE.Checkers lock_behavior: unlockWhenFinished diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/totestmanager.gocd.yaml.erb new/openSUSE-release-tools-20240223.f941f9d/gocd/totestmanager.gocd.yaml.erb --- old/openSUSE-release-tools-20240207.602b3d2/gocd/totestmanager.gocd.yaml.erb 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/totestmanager.gocd.yaml.erb 2024-02-23 13:35:56.000000000 +0100 @@ -6,9 +6,6 @@ openSUSE:Factory:LegacyX86 openSUSE:Factory:PowerPC openSUSE:Factory:zSystems - openSUSE:Leap:15.4:Images - openSUSE:Leap:15.4:ARM - openSUSE:Leap:15.4:ARM:Images openSUSE:Leap:15.5:Images openSUSE:Leap:15.5:ARM openSUSE:Leap:15.5:ARM:Images diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/vagrant-publisher.gocd.yaml new/openSUSE-release-tools-20240223.f941f9d/gocd/vagrant-publisher.gocd.yaml --- old/openSUSE-release-tools-20240207.602b3d2/gocd/vagrant-publisher.gocd.yaml 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/vagrant-publisher.gocd.yaml 2024-02-23 13:35:56.000000000 +0100 @@ -51,27 +51,27 @@ tasks: - script: | ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/ports/aarch64/tumbleweed/appliances/boxes/openSUSE-MicroOS.aarch64-ContainerHost-Vagrant.json --organization opensuse --new-box-name MicroOS-ContainerHost.aarch64 - publish_Leap-15_4_x86_64: + publish_Leap-15_5_x86_64: resources: - staging-bot tasks: - script: | - ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/distribution/leap/15.4/appliances/boxes/Leap-15.4.x86_64.json --organization opensuse --new-box-name Leap-15.4.x86_64 - publish_Leap-15_4_aarch64: + ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/distribution/leap/15.5/appliances/boxes/Leap-15.5.x86_64.json --organization opensuse --new-box-name Leap-15.5.x86_64 + publish_Leap-15_5_aarch64: resources: - staging-bot tasks: - script: | - ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/distribution/leap/15.4/appliances/boxes/Leap-15.4.aarch64-libvirt_aarch64.json --organization opensuse --new-box-name Leap-15.4.aarch64 - publish_Leap-15_5_x86_64: + ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/distribution/leap/15.5/appliances/boxes/Leap-15.5.aarch64-libvirt_aarch64.json --organization opensuse --new-box-name Leap-15.5.aarch64 + publish_Leap-15_6_x86_64: resources: - staging-bot tasks: - script: | - ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/distribution/leap/15.5/appliances/boxes/Leap-15.5.x86_64.json --organization opensuse --new-box-name Leap-15.5.x86_64 - publish_Leap-15_5_aarch64: + ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/distribution/leap/15.6/appliances/boxes/Leap-15.6.x86_64.json --organization opensuse --new-box-name Leap-15.6.x86_64 + publish_Leap-15_6_aarch64: resources: - staging-bot tasks: - script: | - ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/distribution/leap/15.5/appliances/boxes/Leap-15.5.aarch64-libvirt_aarch64.json --organization opensuse --new-box-name Leap-15.5.aarch64 + ruby obs-to-vagrantcloud.rb --url https://download.opensuse.org/distribution/leap/15.6/appliances/boxes/Leap-15.6.aarch64-libvirt_aarch64.json --organization opensuse --new-box-name Leap-15.6.aarch64 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/gocd/vagrant-publisher.gocd.yaml.erb new/openSUSE-release-tools-20240223.f941f9d/gocd/vagrant-publisher.gocd.yaml.erb --- old/openSUSE-release-tools-20240207.602b3d2/gocd/vagrant-publisher.gocd.yaml.erb 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/gocd/vagrant-publisher.gocd.yaml.erb 2024-02-23 13:35:56.000000000 +0100 @@ -21,10 +21,10 @@ ['https://download.opensuse.org/tumbleweed/appliances/boxes/openSUSE-MicroOS.x86_64-ContainerHost-Vagrant.json', 'MicroOS-ContainerHost.x86_64'], ['https://download.opensuse.org/ports/aarch64/tumbleweed/appliances/boxes/openSUSE-MicroOS.aarch64-Vagrant.json', 'MicroOS.aarch64'], ['https://download.opensuse.org/ports/aarch64/tumbleweed/appliances/boxes/openSUSE-MicroOS.aarch64-ContainerHost-Vagrant.json', 'MicroOS-ContainerHost.aarch64'], -['https://download.opensuse.org/distribution/leap/15.4/appliances/boxes/Leap-15.4.x86_64.json', 'Leap-15.4.x86_64'], -['https://download.opensuse.org/distribution/leap/15.4/appliances/boxes/Leap-15.4.aarch64-libvirt_aarch64.json', 'Leap-15.4.aarch64'], ['https://download.opensuse.org/distribution/leap/15.5/appliances/boxes/Leap-15.5.x86_64.json', 'Leap-15.5.x86_64'], ['https://download.opensuse.org/distribution/leap/15.5/appliances/boxes/Leap-15.5.aarch64-libvirt_aarch64.json', 'Leap-15.5.aarch64'], +['https://download.opensuse.org/distribution/leap/15.6/appliances/boxes/Leap-15.6.x86_64.json', 'Leap-15.6.x86_64'], +['https://download.opensuse.org/distribution/leap/15.6/appliances/boxes/Leap-15.6.aarch64-libvirt_aarch64.json', 'Leap-15.6.aarch64'], ].each do |url, box_name| %> publish_<%= box_name.gsub('.', '_') %>: resources: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/metrics/access/aggregate.php new/openSUSE-release-tools-20240223.f941f9d/metrics/access/aggregate.php --- old/openSUSE-release-tools-20240207.602b3d2/metrics/access/aggregate.php 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/metrics/access/aggregate.php 2024-02-23 13:35:56.000000000 +0100 @@ -1,11 +1,12 @@ #!/usr/bin/php <?php -use InfluxDB\Point; -use InfluxDB\Database; +use InfluxDB2\Client; +use InfluxDB2\Point; $CACHE_DIR = $_SERVER['HOME'] . '/.cache/openSUSE-release-tools/metrics-access'; const PROTOCOLS = ['ipv4', 'ipv6']; +const DOWNLOAD_OPENSUSE_ORG = 'https://download.opensuse.org/logs'; 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'; @@ -19,22 +20,24 @@ $begin->sub(date_interval_create_from_date_string('1 day')); $source_map = [ 'ipv4' => [ + // the first item defines the starting date for aggregation '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, + '2023-11-13' => DOWNLOAD_OPENSUSE_ORG . '/' . VHOST, 'filename' => FILENAME, ], 'ipv6' => [ '2012-12-31' => 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, + '2023-11-13' => DOWNLOAD_OPENSUSE_ORG . '/' . IPV6_PREFIX . VHOST, 'filename' => IPV6_PREFIX . FILENAME, ], + 'ipv4+6' => [ + '2023-11-13' => false, + $begin->format('Y-m-d') => DOWNLOAD_OPENSUSE_ORG . '/' . VHOST, + 'filename' => FILENAME, + ], ]; $end = new DateTime(key($source_map['ipv4'])); // decide about adding one day +$migration_date = new DateTime(key($source_map['ipv4+6'])); $period_reversed = date_period_reversed($end, '1 day', $begin); error_log('begin: ' . $begin->format('Y-m-d')); @@ -53,9 +56,11 @@ foreach (PROTOCOLS as $protocol) { mkdir("$CACHE_DIR/$protocol", 0755, true); } + mkdir("$CACHE_DIR/ipv4+6", 0755, true); // Avoid packaging mess while still automating, but not ideal. - passthru('cd ' . escapeshellarg($CACHE_DIR) . ' && composer require influxdb/influxdb-php ~1'); + passthru('cd ' . escapeshellarg($CACHE_DIR) . + ' && composer require influxdata/influxdb-client-php:~3.4 guzzlehttp/guzzle'); } require "$CACHE_DIR/vendor/autoload.php"; @@ -68,9 +73,10 @@ $found = []; // Walk backwards until found in cache. foreach ($period_reversed as $date) { - $date_string = $date->format('Y-m-d'); + $date_string = print_date($date); + $protocols_on_day = get_protocols($date); - foreach (PROTOCOLS as $protocol) { + foreach ($protocols_on_day as $protocol) { if (!empty($found[$protocol])) continue; if (isset($source_map[$protocol][$date_string])) $source[$protocol] = $source_map[$protocol][$date_string]; @@ -78,7 +84,7 @@ // Skip date+protocol if no source is available. if (empty($source[$protocol])) continue; - $cache_file = "$CACHE_DIR/$protocol/$date_string.json"; + $cache_file = get_cache_file($protocol, $date); if (file_exists($cache_file)) { error_log("[$date_string] [$protocol] found"); $found[$protocol] = true; @@ -88,7 +94,8 @@ } } - if (count($found) == count(PROTOCOLS)) { + // Stop when all cache files were found + if (count($found) == count($protocols_on_day)) { error_log('ingest initialization complete'); break; } @@ -98,6 +105,47 @@ subprocess_wait(1, 1); } +function print_date($date) +{ + return $date->format('Y-m-d'); +} + +// Logs before migration date have been kept in separate files for IPv4 and IPv6 addresses +function has_separate_protocol_logs($date) +{ + global $migration_date; + if ($date > $migration_date) + return false; + else + return true; +} + +function get_cache_file($protocol, $date) +{ + global $CACHE_DIR; + if (has_separate_protocol_logs($date)) + return "$CACHE_DIR/$protocol/" . print_date($date) . ".json"; + else + return "$CACHE_DIR/ipv4+6/" . print_date($date) . ".json"; +} + +function get_cache_files($date) +{ + $files = []; + foreach (get_protocols($date) as $protocol) + array_push($files, get_cache_file($protocol, $date)); + + return $files; +} + +function get_protocols($date) +{ + if (has_separate_protocol_logs($date)) + return PROTOCOLS; + else + return array("ipv4+6"); +} + function ingest($date, $source, $filename, $destination) { $url = implode('/', [ @@ -107,7 +155,7 @@ sprintf($filename, $date->format('Ymd')), ]); $command = implode(' ', [ - 'curl -s', + 'curl -s --digest --netrc', escapeshellarg($url), '| xzcat', '| ' . __DIR__ . '/ingest.php', @@ -159,14 +207,14 @@ $merged_protocol = []; $date_previous = null; foreach ($period as $date) { - $date_string = $date->format('Y-m-d'); + $date_string = print_date($date); $data = null; foreach (PROTOCOLS as $protocol) { - $cache_file = "$CACHE_DIR/$protocol/$date_string.json"; + $cache_file = get_cache_file($protocol, $date); if (!file_exists($cache_file) or !filesize($cache_file)) continue; - error_log("[$date_string] [$protocol] load cache"); + error_log("[$date_string]" . (has_separate_protocol_logs($date) ? " [$protocol]" : "") . " load cache"); $data_new = json_decode(file_get_contents($cache_file), true); if (!$data_new) { error_log('ERROR: failed to load ' . $cache_file); @@ -174,17 +222,31 @@ exit(1); } + if (isset($data_new[$protocol])) { + // new cache files have 'ipv4' and 'ipv6' array keys + $data_protocol = $data_new[$protocol]; + // we don't want to count 'total_invalid' and 'bytes' twice + if ($data) { + $data_protocol['total_invalid'] = 0; + $data_protocol['bytes'] = 0; + } else { + $data_protocol['total_invalid'] = $data_new['total_invalid']; + $data_protocol['bytes'] = $data_new['bytes']; + } + } + else + $data_protocol = $data_new; if (!isset($merged_protocol[$protocol])) $merged_protocol[$protocol] = []; - $data_new['days'] = 1; - normalize($data_new); - aggregate($intervals, $merged_protocol[$protocol], $date, $date_previous, $data_new, + $data_protocol['days'] = 1; + normalize($data_protocol); + aggregate($intervals, $merged_protocol[$protocol], $date, $date_previous, $data_protocol, ['protocol' => $protocol], 'protocol'); if ($data) { - merge($data, $data_new); + merge($data, $data_protocol); $data['days'] = 1; } else { - $data = $data_new; + $data = $data_protocol; } } @@ -213,12 +275,12 @@ function aggregate($intervals, &$merged, $date, $date_previous, $data, $tags = [], $prefix = 'access') { foreach ($intervals as $interval => $format) { - if ($interval == 'FQ') { + if ($interval === 'FQ') { $value = format_FQ($date); if (isset($date_previous)) $value_previous = format_FQ($date_previous); } - elseif ($interval == 'FY') { + elseif ($interval === 'FY') { $value = format_FY($date); if (isset($date_previous)) $value_previous = format_FY($date_previous); @@ -231,7 +293,7 @@ if (!isset($merged[$interval]) || $value != $merged[$interval]['value']) { if (!empty($merged[$interval]['data'])) { $summary = summarize($merged[$interval]['data']); - if ($prefix == 'protocol') { + if ($prefix === 'protocol') { $summary = ['-' => $summary['-']]; } $flavors = []; @@ -248,7 +310,7 @@ $count += write_flavors($interval, $date_previous, $flavors); } - if ($prefix == 'access') { + if ($prefix === 'access') { $summary = summarize_product_plus_key($merged[$interval]['data']['total_image_product']); $count += write_summary_product_plus_key($interval, $date_previous, $summary, 'image'); } @@ -313,7 +375,7 @@ if (empty($data1['total_product'][$product])) $data1['total_product'][$product] = 0; - $data1['total_product'][$product] += $data2['total_product'][$product]; + $data1['total_product'][$product] += $total; } merge_unique_products($data1['unique_product'], $data2['unique_product']); @@ -451,8 +513,7 @@ $measurement = $prefix . '_' . $interval; $points = []; foreach ($summary as $product => $fields) { - $points[] = new Point($measurement, null, - ['product' => $product] + $tags, $fields, $value->getTimestamp()); + $points[] = new Point($measurement, ['product' => $product] + $tags, $fields, $value->getTimestamp()); } write($points); return count($points); @@ -465,7 +526,8 @@ foreach ($flavors as $product => $unique_flavors) { foreach($unique_flavors as $flavor => $unique_count) { $tags = ['product' => $product, 'flavor' => $flavor]; - $points[] = new Point($measurement, $unique_count, $tags, [], $value->getTimestamp()); + $fields = ['value' => $unique_count]; + $points[] = new Point($measurement, $tags, $fields, $value->getTimestamp()); } } write($points); @@ -478,7 +540,7 @@ $points = []; foreach ($summary as $product => $pairs) { foreach ($pairs as $key => $value) { - $points[] = new Point($measurement, null, + $points[] = new Point($measurement, ['product' => $product, 'key' => $key], ['value' => $value], $date->getTimestamp()); } } @@ -488,13 +550,20 @@ function write($points) { - static $database = null; + static $client; + static $writeApi; - if (!$database) { - $database = InfluxDB\Client::fromDSN('influxdb://0.0.0.0:8086/osrt_access'); - // $database->drop(); - // $database->create(); + if (!$client) { + $client = new Client([ + "url" => "http://localhost:8086", + "token" => "", + "bucket" => "osrt_access/autogen", + "org" => "-", + "precision" => InfluxDB2\Model\WritePrecision::S + ]); + $writeApi = $client->createWriteApi(); } - if (!$database->writePoints($points, Database::PRECISION_SECONDS)) die('failed to write points'); + if (!is_null($writeApi->write($points))) + die('failed to write points'); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/metrics/access/ingest.php new/openSUSE-release-tools-20240223.f941f9d/metrics/access/ingest.php --- old/openSUSE-release-tools-20240207.602b3d2/metrics/access/ingest.php 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/metrics/access/ingest.php 2024-02-23 13:35:56.000000000 +0100 @@ -4,16 +4,21 @@ const REGEX_LINE = '/(\S+) \S+ \S+ \[([^:]+:\d+:\d+:\d+ [^\]]+)\] "(\S+)(?: (\S+) \S+)?" (\S+) (\S+) "[^"]*" "[^"]*" .* (?:size:|want:- give:- \d+ )(\S+) \S+(?: +"?(\S+-\S+-\S+-\S+-[^\s"]+|-)"? "?(dvd|ftp|mini|usb-[^"]*|livecd-[^"]*|appliance-?[^"]*|-)"?)?/'; const REGEX_PRODUCT = '#/(?:(tumbleweed)|distribution/(?:leap/)?(\d+\.\d+)|openSUSE(?:_|:/)(?:leap(?:_|:/))?(factory|tumbleweed|\d+\.\d+))#i'; const REGEX_IMAGE = '#(?:/(?:iso|live)/[^/]+-(DVD|NET|GNOME-Live|KDE-Live|Rescue-CD|Kubic-DVD)-[^/]+\.iso(?:\.torrent)?|/jeos/[^/]+-(JeOS)\.[^/]+\.(?:qcow2|vhdx|vmdk|vmx)$)#'; +const REGEX_IPV4 = '/^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$/'; +const PROTOCOLS = ['ipv4', 'ipv6']; -$total = 0; $total_invalid = 0; -$total_product = []; -$unique_product = []; -$total_image_product = []; +foreach (PROTOCOLS as $protocol) { + $total[$protocol] = 0; + $total_product[$protocol] = []; + $unique_product[$protocol] = []; + $total_image_product[$protocol] = []; +} $file = $argc == 2 ? $argv[1] : 'php://stdin'; $handle = fopen($file, 'r'); while (($line = fgets($handle)) !== false) { + $protocol = ''; if (!preg_match(REGEX_LINE, $line, $match)) { error_log('[failed to parse] ' . rtrim($line)); $total_invalid++; @@ -24,7 +29,12 @@ if ($match[3] != 'GET' && $match[3] != 'HEAD') continue; // Not interested on errors. if ($match[5] >= '400') continue; - $total++; + + if (preg_match(REGEX_IPV4, $match[1])) + $protocol = 'ipv4'; + else + $protocol = 'ipv6'; + $total[$protocol]++; // Attempt to determine for which product was the request. if (!preg_match(REGEX_PRODUCT, $match[4], $match_product)) { @@ -35,47 +45,53 @@ $values = array_filter($match_product); $product = str_replace('factory', 'tumbleweed', strtolower(next($values))); - if (!isset($total_product[$product])) $total_product[$product] = 0; - $total_product[$product] += 1; + if (!isset($total_product[$protocol][$product])) $total_product[$protocol][$product] = 0; + $total_product[$protocol][$product] += 1; if (count($match) == 10 && $match[8] != '-') { $uuid = $match[8]; - if (!isset($unique_product[$product])) $unique_product[$product] = []; - if (!isset($unique_product[$product][$uuid])) { - $unique_product[$product][$uuid] = [ + if (!isset($unique_product[$protocol][$product])) $unique_product[$protocol][$product] = []; + if (!isset($unique_product[$protocol][$product][$uuid])) { + $unique_product[$protocol][$product][$uuid] = [ 'count' => 0, 'flavor' => $match[9], 'ip' => $match[1], ]; } - $unique_product[$product][$uuid]['count'] += 1; + $unique_product[$protocol][$product][$uuid]['count'] += 1; } if (preg_match(REGEX_IMAGE, $match[4], $match_image)) { // Remove empty match groups and select non-all match. $values = array_filter($match_image); $image = next($values); - if (!isset($total_image_product[$product])) $total_image_product[$product] = []; - if (!isset($total_image_product[$product][$image])) $total_image_product[$product][$image] = 0; - $total_image_product[$product][$image] += 1; + if (!isset($total_image_product[$protocol][$product])) $total_image_product[$protocol][$product] = []; + if (!isset($total_image_product[$protocol][$product][$image])) $total_image_product[$protocol][$product][$image] = 0; + $total_image_product[$protocol][$product][$image] += 1; } } $position = ftell($handle); fclose($handle); error_log('processed ' . number_format($position) . ' bytes'); -error_log('found ' . number_format($total) . ' requests across ' . - number_format(count($total_product)) . ' products'); +error_log('found ' . number_format(array_sum($total)) . ' requests across ' . + number_format(array_sum(array_map('count', $total_product))) . ' products'); + +$output = [ + 'total_invalid' => $total_invalid, + 'bytes' => $position +]; +foreach (PROTOCOLS as $protocol) { + ksort($total_product[$protocol]); + ksort($unique_product[$protocol]); + $output[$protocol] = [ + 'total' => $total[$protocol], + 'total_product' => $total_product[$protocol], + 'unique_product' => $unique_product[$protocol], + 'total_image_product' => $total_image_product[$protocol] + ]; +} -ksort($total_product); -ksort($unique_product); if ($position) { - echo json_encode([ - 'total' => $total, - 'total_product' => $total_product, - 'unique_product' => $unique_product, - 'total_image_product' => $total_image_product, - 'total_invalid' => $total_invalid, - 'bytes' => $position, - ]) . "\n"; // JSON_PRETTY_PRINT for debugging. + echo json_encode($output) . "\n"; // JSON_PRETTY_PRINT for debugging. } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/osclib/repochecks.py new/openSUSE-release-tools-20240223.f941f9d/osclib/repochecks.py --- old/openSUSE-release-tools-20240207.602b3d2/osclib/repochecks.py 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/osclib/repochecks.py 2024-02-23 13:35:56.000000000 +0100 @@ -2,6 +2,7 @@ import os import re import requests +import solv import subprocess import tempfile import glob @@ -63,12 +64,40 @@ return True -def _fileconflicts(pfile, target_packages, whitelist): +def _do_packages_conflict(pool, pkgs): + logger.debug("Checking whether %s can be installed at once", pkgs) + jobs = [] + for pkg in pkgs: + sel = pool.select(pkg, solv.Selection.SELECTION_CANON | solv.Selection.SELECTION_DOTARCH) + if sel.isempty(): + raise RuntimeError(f"{pkg} not found in pool") + + jobs += sel.jobs(solv.Job.SOLVER_INSTALL) + + solver = pool.Solver() + problems = solver.solve(jobs) + if not problems: + return False + + for problem in problems: + logger.debug("Problem: %s", str(problem)) + + return True + + +def _fileconflicts(pfile, arch, target_packages, whitelist): script = os.path.join(SCRIPT_PATH, '..', 'findfileconflicts') p = subprocess.run(['perl', script, pfile], stdout=subprocess.PIPE) if p.returncode or len(p.stdout): output = '' conflicts = yaml.safe_load(p.stdout) + + pool = solv.Pool() + pool.setarch(arch) + repo = pool.add_repo("packages") + repo.add_susetags(solv.xfopen(pfile), pool.lookup_id(solv.SOLVID_META, solv.SUSETAGS_DEFAULTVENDOR), "en") + pool.createwhatprovides() + for conflict in conflicts: sp1 = conflict['between'][0] sp2 = conflict['between'][1] @@ -79,6 +108,12 @@ if _check_conflicts_whitelist(sp1, sp2, whitelist): continue + pkgcanon1 = _format_pkg(sp1) + pkgcanon2 = _format_pkg(sp2) + if _do_packages_conflict(pool, [pkgcanon1, pkgcanon2]): + logger.debug("Packages %s and %s with conflicting files conflict", pkgcanon1, pkgcanon2) + continue + output += "found conflict of {} with {}\n".format(_format_pkg(sp1), _format_pkg(sp2)) for file in conflict['conflicts'].split('\n'): output += " {}\n".format(file) @@ -159,7 +194,7 @@ target_packages = catalog.get(directories[0], []) parts = [] - output = _fileconflicts(pfile, target_packages, ignore_conflicts) + output = _fileconflicts(pfile, arch, target_packages, ignore_conflicts) if output: parts.append(output) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20240207.602b3d2/ttm/releaser.py new/openSUSE-release-tools-20240223.f941f9d/ttm/releaser.py --- old/openSUSE-release-tools-20240207.602b3d2/ttm/releaser.py 2024-02-07 15:42:32.000000000 +0100 +++ new/openSUSE-release-tools-20240223.f941f9d/ttm/releaser.py 2024-02-23 13:35:56.000000000 +0100 @@ -88,12 +88,6 @@ if re.match(r'.*-dvd5-.*', package): return 4700372992 # a DVD needs to match - if re.match(r'livecd-x11-.*', package) and arch == 'x86_64': - return 681574400 # not a full CD on x86 - - if re.match(r'livecd-.*', package): - return 999999999 # a GB stick - if re.match(r'.*-(dvd9-dvd|cd-DVD)-.*', package): return 8539996159 ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.XCLXsv/_old 2024-03-01 23:38:50.684487320 +0100 +++ /var/tmp/diff_new_pack.XCLXsv/_new 2024-03-01 23:38:50.688487464 +0100 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20240207.602b3d2 -mtime: 1707316952 -commit: 602b3d2b1e47b7ba9397524ebd94446982f88c03 +version: 20240223.f941f9d +mtime: 1708691756 +commit: f941f9da356c0e561c42a69596eef616ea1f2c77