openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
January 2025
- 1 participants
- 414 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000release-packages for openSUSE:Factory checked in at 2025-01-09 15:41:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000release-packages (Old)
and /work/SRC/openSUSE:Factory/.000release-packages.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000release-packages"
Thu Jan 9 15:41:38 2025 rev:3308 rq: version:unknown
Changes:
--------
--- /work/SRC/openSUSE:Factory/000release-packages/Aeon-release.changes 2025-01-09 10:27:55.985330330 +0100
+++ /work/SRC/openSUSE:Factory/.000release-packages.new.1881/Aeon-release.changes 2025-01-09 15:41:39.749378215 +0100
@@ -2 +2 @@
-Thu Jan 09 09:27:53 UTC 2025 - openSUSE <packaging(a)lists.opensuse.org>
+Thu Jan 09 14:41:37 UTC 2025 - openSUSE <packaging(a)lists.opensuse.org>
Kalpa-release.changes: same change
MicroOS-release.changes: same change
openSUSE-Addon-NonOss-release.changes: same change
openSUSE-release.changes: same change
stub.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ Aeon-release.spec ++++++
--- /var/tmp/diff_new_pack.EB8beX/_old 2025-01-09 15:41:41.361445199 +0100
+++ /var/tmp/diff_new_pack.EB8beX/_new 2025-01-09 15:41:41.361445199 +0100
@@ -17,7 +17,7 @@
Name: Aeon-release
-Version: 20250108
+Version: 20250109
Release: 0
Summary: Aeon
License: GPL-2.0-or-later
@@ -174,9 +174,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = Aeon
-Provides: product(Aeon) = 20250108-0
+Provides: product(Aeon) = 20250109-0
Provides: product-label() = Aeon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aaeon%3A20250108
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aaeon%3A20250109
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(Aeon)
@@ -192,7 +192,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(Aeon) = 20250108-0
+Provides: product_flavor(Aeon) = 20250109-0
Summary: Aeon%{?betaversion: %{betaversion}}
%description appliance
@@ -257,11 +257,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>Aeon</name>
- <version>20250108</version>
+ <version>20250109</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:aeon:20250108</cpeid>
+ <cpeid>cpe:/o:opensuse:aeon:20250109</cpeid>
<productline>Aeon</productline>
<register>
<pool>
++++++ Kalpa-release.spec ++++++
--- /var/tmp/diff_new_pack.EB8beX/_old 2025-01-09 15:41:41.385446196 +0100
+++ /var/tmp/diff_new_pack.EB8beX/_new 2025-01-09 15:41:41.385446196 +0100
@@ -17,7 +17,7 @@
Name: Kalpa-release
-Version: 20250108
+Version: 20250109
Release: 0
Summary: openSUSE Kalpa
License: GPL-2.0-or-later
@@ -174,9 +174,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = Kalpa
-Provides: product(Kalpa) = 20250108-0
+Provides: product(Kalpa) = 20250109-0
Provides: product-label() = openSUSE%20Kalpa
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Akalpa%3A20250108
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Akalpa%3A20250109
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(Kalpa)
@@ -192,7 +192,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(Kalpa) = 20250108-0
+Provides: product_flavor(Kalpa) = 20250109-0
Summary: openSUSE Kalpa%{?betaversion: %{betaversion}}
%description appliance
@@ -257,11 +257,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>Kalpa</name>
- <version>20250108</version>
+ <version>20250109</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:kalpa:20250108</cpeid>
+ <cpeid>cpe:/o:opensuse:kalpa:20250109</cpeid>
<productline>Kalpa</productline>
<register>
<pool>
++++++ MicroOS-release.spec ++++++
--- /var/tmp/diff_new_pack.EB8beX/_old 2025-01-09 15:41:41.413447360 +0100
+++ /var/tmp/diff_new_pack.EB8beX/_new 2025-01-09 15:41:41.417447526 +0100
@@ -17,7 +17,7 @@
Name: MicroOS-release
-Version: 20250108
+Version: 20250109
Release: 0
Summary: openSUSE MicroOS
License: GPL-2.0-or-later
@@ -179,9 +179,9 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = MicroOS
-Provides: product(MicroOS) = 20250108-0
+Provides: product(MicroOS) = 20250109-0
Provides: product-label() = openSUSE%20MicroOS
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20250108
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Amicroos%3A20250109
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-endoflife()
Requires: product_flavor(MicroOS)
@@ -197,7 +197,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(MicroOS) = 20250108-0
+Provides: product_flavor(MicroOS) = 20250109-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description dvd
@@ -213,7 +213,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(MicroOS) = 20250108-0
+Provides: product_flavor(MicroOS) = 20250109-0
Summary: openSUSE MicroOS%{?betaversion: %{betaversion}}
%description appliance
@@ -278,11 +278,11 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>MicroOS</name>
- <version>20250108</version>
+ <version>20250109</version>
<release>0</release>
<endoflife></endoflife>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:microos:20250108</cpeid>
+ <cpeid>cpe:/o:opensuse:microos:20250109</cpeid>
<productline>MicroOS</productline>
<register>
<pool>
++++++ openSUSE-Addon-NonOss-release.spec ++++++
--- /var/tmp/diff_new_pack.EB8beX/_old 2025-01-09 15:41:41.445448689 +0100
+++ /var/tmp/diff_new_pack.EB8beX/_new 2025-01-09 15:41:41.445448689 +0100
@@ -18,7 +18,7 @@
Name: openSUSE-Addon-NonOss-release
%define product openSUSE-Addon-NonOss
-Version: 20250108
+Version: 20250109
#!BcntSyncTag: openSUSE-Addon-NonOss
Release: 0
Summary: openSUSE NonOSS Addon
@@ -26,9 +26,9 @@
Group: System/Fhs
Provides: %name-%version
Provides: product() = openSUSE%2DAddon%2DNonOss
-Provides: product(openSUSE-Addon-NonOss) = 20250108-0
+Provides: product(openSUSE-Addon-NonOss) = 20250109-0
Provides: product-label() = non%20oss%20addon
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20250108
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%2Daddon%2Dnonoss%3A20250109
@@ -48,10 +48,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE-Addon-NonOss</name>
- <version>20250108</version>
+ <version>20250109</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20250108</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse-addon-nonoss:20250109</cpeid>
<register>
<pool>
</pool>
++++++ openSUSE-release.spec ++++++
--- /var/tmp/diff_new_pack.EB8beX/_old 2025-01-09 15:41:41.473449853 +0100
+++ /var/tmp/diff_new_pack.EB8beX/_new 2025-01-09 15:41:41.477450019 +0100
@@ -20,7 +20,7 @@
#define betaversion %{nil}
%define codename Tumbleweed
Name: openSUSE-release
-Version: 20250108
+Version: 20250109
Release: 0
# 0 is the product release, not the build release of this package
Summary: openSUSE Tumbleweed
@@ -185,7 +185,7 @@
%include %{SOURCE100}
Provides: %name-%version
Provides: product() = openSUSE
-Provides: product(openSUSE) = 20250108-0
+Provides: product(openSUSE) = 20250109-0
%ifarch x86_64
Provides: product-register-target() = openSUSE%2DTumbleweed%2Dx86_64
%endif
@@ -199,7 +199,7 @@
Provides: product-register-target() = openSUSE%2DTumbleweed%2Daarch64
%endif
Provides: product-label() = openSUSE
-Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20250108
+Provides: product-cpeid() = cpe%3A%2Fo%3Aopensuse%3Aopensuse%3A20250109
Provides: product-url(releasenotes) = http%3A%2F%2Fdoc.opensuse.org%2Frelease%2Dnotes%2Fx86_64%2FopenSUSE%2FTumbleweed%2Frelease%2Dnotes%2DopenSUSE.rpm
Provides: product-url(repository) = http%3A%2F%2Fdownload.opensuse.org%2Ftumbleweed%2Frepo%2Foss%2F
Requires: product_flavor(openSUSE)
@@ -213,7 +213,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(ftp)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description ftp
@@ -228,7 +228,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(mini)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description mini
@@ -243,7 +243,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(dvd)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description dvd
@@ -258,7 +258,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-kde)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-kde
@@ -273,7 +273,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-x11)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-x11
@@ -288,7 +288,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-gnome)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-gnome
@@ -303,7 +303,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(livecd-xfce)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description livecd-xfce
@@ -318,7 +318,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-kde)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-kde
@@ -333,7 +333,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-gnome)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-gnome
@@ -348,7 +348,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(usb-x11)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description usb-x11
@@ -363,7 +363,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance
@@ -378,7 +378,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-docker)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-docker
@@ -393,7 +393,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-kvm)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-kvm
@@ -408,7 +408,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vmware)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vmware
@@ -423,7 +423,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-openstack)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-openstack
@@ -438,7 +438,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-hyperv)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-hyperv
@@ -453,7 +453,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-vagrant)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-vagrant
@@ -468,7 +468,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-wsl)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-wsl
@@ -483,7 +483,7 @@
Group: System/Fhs
Provides: product_flavor()
Provides: flavor(appliance-custom)
-Provides: product_flavor(openSUSE) = 20250108-0
+Provides: product_flavor(openSUSE) = 20250109-0
Summary: openSUSE Tumbleweed%{?betaversion: %{betaversion}}
%description appliance-custom
@@ -566,10 +566,10 @@
<product schemeversion="0">
<vendor>openSUSE</vendor>
<name>openSUSE</name>
- <version>20250108</version>
+ <version>20250109</version>
<release>0</release>
<arch>%{_target_cpu}</arch>
- <cpeid>cpe:/o:opensuse:opensuse:20250108</cpeid>
+ <cpeid>cpe:/o:opensuse:opensuse:20250109</cpeid>
<productline>openSUSE</productline>
<register>
<target>openSUSE-Tumbleweed-x86_64</target>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package s2n for openSUSE:Factory checked in at 2025-01-09 15:12:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/s2n (Old)
and /work/SRC/openSUSE:Factory/.s2n.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "s2n"
Thu Jan 9 15:12:08 2025 rev:17 rq:1236137 version:1.5.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/s2n/s2n.changes 2024-11-21 15:19:41.744117682 +0100
+++ /work/SRC/openSUSE:Factory/.s2n.new.1881/s2n.changes 2025-01-09 15:12:55.453955321 +0100
@@ -1,0 +2,61 @@
+Tue Jan 7 10:19:36 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 1.5.10
+ * refactor(bench): remove historical benchmarks (#4940)
+ * fix: pem parsing detection of last cert errors (#4908)
+ * docs: specify s2n_blob growable conditions (#4943)
+ * chore(bindings): move tokio examples to dedicated folder (#4954)
+ * chore: fix GHA for merge-queue (#4973)
+ * chore(binding): release 0.3.8 (#4969)
+ * (chore): Installs Nix in AL2023 Buildspec (#4934)
+ * build(deps): bump the all-gha-updates group in /.github/workflows with 5 updates (#4961)
+ * feat(s2n-tls-hyper): Add support for negotiating HTTP/2 (#4924)
+ * tests: allow TLS1.2 with RSA-PSS certs in integ tests (#4949)
+ * ci: update CRT test ubuntu version to ubuntu24 (#4964)
+ * feat(bindings): enable application owned certs (#4937)
+ * ci: batch dependabot updates (#4959)
+ * ci(refactor): deprecate Omnibus (#4953)
+ * build(deps): bump actions/cache from 2.1.4 to 4.1.2 in /.github/workflows (#4928)
+ * build(deps): bump peaceiris/actions-gh-pages from 3 to 4 in /.github/workflows (#4921)
+ * build(deps): bump cross-platform-actions/action from 0.23.0 to 0.26.0 in /.github/workflows (#4951)
+ * build(deps): bump github/codeql-action from 2 to 3 in /.github/workflows (#4917)
+ * ci: add change directory to third-party-src logic (#4950)
+ * feat: TLS1.2 support for RSA-PSS certificates (#4927)
+ * feat: feature probe S2N_LIBCRYPTO_SUPPORTS_ENGINE (#4878)
+ * test(bindings): run unit tests under asan (#4948)
+ * ci(refactor): remove ASAN from Omnibus and GeneralBatch (#4946)
+ * ci(refactor): remove fuzz tests from Omnibus (#4945)
+ * refactor: add a s2n_libcrypto_is_openssl() helper function (#4930)
+ * fix(s2n-tls-hyper): Add proper IPv6 address formatting (#4938)
+ * ci: add openssl-1.0.2-fips to fuzz test (#4942)
+ * ci(refactor): remove Valgrind checks from omnibus and generalBatch (#4913)
+ * fix(bindings): address clippy issues from 1.83 (#4941)
+ * test: pin tests to explicit TLS 1.2/TLS 1.3 policy (#4926)
+ * (chore): Fixes team-label github action (#4935)
+ * chore: add new team member (#4939)
+ * upgrade cmake version to 3.9 (#4933)
+ * ci: add awslc-fips and openssl-1.0.2-fips to valgrind (#4912)
+ * chore(bindings): feature gate network testsa and relax http status assertions (#4907)
+ * chore: Ocsp timeout adjustment (#4866)
+ * build(deps): bump aws-actions/configure-aws-credentials from 4.0.1 to 4.0.2 in /.github/workflows (#4892)
+ * test: expand s2n_record_read testing to both TLS1.3 and TLS1.2 (#4903)
+ * test: pin optional client auth test to a TLS 1.2 policy (#4914)
+ * feat: add alert mappings for certificate errors (#4919)
+ * doc: document generating bindings with prebuilt libs2n (#4872)
+ * ci: Move kTLS test out of GeneralBatch (#4904)
+ * build(deps): bump actions/checkout from 3 to 4 in /.github/workflows (#4888)
+ * test(s2n-tls-hyper): matching on s2n-tls error (#4906)
+ * build(deps): bump nixbuild/nix-quick-install-action from 21 to 29 in /.github/workflows (#4890)
+ * build(deps): bump JulienKode/team-labeler-action from 0.1.1 to 1.3 in /.github/workflows (#4889)
+ * tests: pin tests to a numbered TLS1.2 policy (#4905)
+ * test: remove load system certs functionality for s2n_default_tls13_config (#4897)
+ * doc: add information about s2n-tls software architecture (#4868)
+ * ci: grant dependabot status update permissions (#4898)
+ * ci: fixes for cargo audit (#4895)
+ * test(s2n-tls-hyper): Add localhost http tests (#4838)
+ * test: add rust well-known-endpoint tests (#4884)
+ * chore: bindings release 0.3.7 (#4894)
+ * chore: add a cargo audit action (#4862)
+ * ci: add open fds valgrind check (#4851)
+
+-------------------------------------------------------------------
Old:
----
v1.5.9.tar.gz
New:
----
v1.5.10.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ s2n.spec ++++++
--- /var/tmp/diff_new_pack.PDBA4Z/_old 2025-01-09 15:12:55.985977439 +0100
+++ /var/tmp/diff_new_pack.PDBA4Z/_new 2025-01-09 15:12:55.989977606 +0100
@@ -19,7 +19,7 @@
%define library_version 1.0.0
%define library_soversion 0unstable
Name: s2n
-Version: 1.5.9
+Version: 1.5.10
Release: 0
Summary: AWS implementation of the TLS/SSL protocols
License: Apache-2.0
++++++ v1.5.9.tar.gz -> v1.5.10.tar.gz ++++++
++++ 8863 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-crt-cpp for openSUSE:Factory checked in at 2025-01-09 15:12:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-crt-cpp (Old)
and /work/SRC/openSUSE:Factory/.aws-crt-cpp.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-crt-cpp"
Thu Jan 9 15:12:08 2025 rev:22 rq:1236136 version:0.29.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-crt-cpp/aws-crt-cpp.changes 2025-01-01 23:04:32.528167071 +0100
+++ /work/SRC/openSUSE:Factory/.aws-crt-cpp.new.1881/aws-crt-cpp.changes 2025-01-09 15:12:54.533917070 +0100
@@ -1,0 +2,6 @@
+Tue Jan 7 10:22:36 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.29.8
+ * Update CRT dependencies by @sfod in (#692)
+
+-------------------------------------------------------------------
Old:
----
v0.29.7.tar.gz
New:
----
v0.29.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-crt-cpp.spec ++++++
--- /var/tmp/diff_new_pack.mUet7X/_old 2025-01-09 15:12:54.965935031 +0100
+++ /var/tmp/diff_new_pack.mUet7X/_new 2025-01-09 15:12:54.965935031 +0100
@@ -20,7 +20,7 @@
%define library_soversion 1
Name: aws-crt-cpp
-Version: 0.29.7
+Version: 0.29.8
Release: 0
Summary: AWS C++ wrapper for AWS SDK C libraries
License: Apache-2.0
++++++ v0.29.7.tar.gz -> v0.29.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-crt-cpp-0.29.7/VERSION new/aws-crt-cpp-0.29.8/VERSION
--- old/aws-crt-cpp-0.29.7/VERSION 2024-12-07 01:42:49.000000000 +0100
+++ new/aws-crt-cpp-0.29.8/VERSION 2024-12-19 21:42:36.000000000 +0100
@@ -1 +1 @@
-0.29.7
+0.29.8
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-common for openSUSE:Factory checked in at 2025-01-09 15:12:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-common (Old)
and /work/SRC/openSUSE:Factory/.aws-c-common.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-common"
Thu Jan 9 15:12:07 2025 rev:17 rq:1236134 version:0.10.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-common/aws-c-common.changes 2024-12-08 11:38:48.677811292 +0100
+++ /work/SRC/openSUSE:Factory/.aws-c-common.new.1881/aws-c-common.changes 2025-01-09 15:12:53.793886304 +0100
@@ -1,0 +2,6 @@
+Tue Jan 7 10:24:45 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.10.6
+ * Fix dependency build failure on old cmake versions by @sfod in (#1176)
+
+-------------------------------------------------------------------
Old:
----
v0.10.5.tar.gz
New:
----
v0.10.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-common.spec ++++++
--- /var/tmp/diff_new_pack.exVQT7/_old 2025-01-09 15:12:54.189902768 +0100
+++ /var/tmp/diff_new_pack.exVQT7/_new 2025-01-09 15:12:54.189902768 +0100
@@ -19,7 +19,7 @@
%define library_version 1.0.0
%define library_soversion 1
Name: aws-c-common
-Version: 0.10.5
+Version: 0.10.6
Release: 0
Summary: Core C99 package for AWS SDK for C
License: Apache-2.0
++++++ v0.10.5.tar.gz -> v0.10.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.10.5/cmake/AwsPrebuildDependency.cmake new/aws-c-common-0.10.6/cmake/AwsPrebuildDependency.cmake
--- old/aws-c-common-0.10.5/cmake/AwsPrebuildDependency.cmake 2024-12-04 01:05:05.000000000 +0100
+++ new/aws-c-common-0.10.6/cmake/AwsPrebuildDependency.cmake 2024-12-11 00:52:51.000000000 +0100
@@ -36,8 +36,8 @@
list(APPEND cmakeCommand ${cmakeOptionalVariables})
# The following variables should always be used.
+ list(APPEND cmakeCommand -H${AWS_PREBUILD_SOURCE_DIR})
list(APPEND cmakeCommand -B${depBinaryDir})
- list(APPEND cmakeCommand ${AWS_PREBUILD_SOURCE_DIR})
list(APPEND cmakeCommand -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
list(APPEND cmakeCommand -DCMAKE_PREFIX_PATH=${ESCAPED_PREFIX_PATH})
list(APPEND cmakeCommand -DCMAKE_INSTALL_PREFIX=${depInstallDir})
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package qt6-qtpbfimageformat for openSUSE:Factory checked in at 2025-01-09 15:11:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-qtpbfimageformat (Old)
and /work/SRC/openSUSE:Factory/.qt6-qtpbfimageformat.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-qtpbfimageformat"
Thu Jan 9 15:11:54 2025 rev:3 rq:1236099 version:4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-qtpbfimageformat/qt6-qtpbfimageformat.changes 2024-10-06 17:53:18.352430806 +0200
+++ /work/SRC/openSUSE:Factory/.qt6-qtpbfimageformat.new.1881/qt6-qtpbfimageformat.changes 2025-01-09 15:12:43.953477191 +0100
@@ -1,0 +2,7 @@
+Wed Jan 8 01:07:27 CET 2025 - tumic(a)cbox.cz
+
+- Update to version 4.0
+ * Removed Google Protocol buffers dependency.
+ * Removed the related pkgconfig.patch
+
+-------------------------------------------------------------------
Old:
----
QtPBFImagePlugin-3.2.tar.gz
pkgconfig.patch
New:
----
QtPBFImagePlugin-4.0.tar.gz
BETA DEBUG BEGIN:
Old: * Removed Google Protocol buffers dependency.
* Removed the related pkgconfig.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ qt6-qtpbfimageformat.spec ++++++
--- /var/tmp/diff_new_pack.wWFDGp/_old 2025-01-09 15:12:44.657506461 +0100
+++ /var/tmp/diff_new_pack.wWFDGp/_new 2025-01-09 15:12:44.657506461 +0100
@@ -19,22 +19,19 @@
# See also http://en.opensuse.org/openSUSE:Specfile_guidelines
Name: qt6-qtpbfimageformat
-Version: 3.2
+Version: 4.0
Release: 1
Summary: Qt6 PBF Image Format Plugin
License: LGPL-3.0-only
Group: Development/Libraries/X11
Url: https://github.com/tumic0/QtPBFImagePlugin
Source0: https://github.com/tumic0/QtPBFImagePlugin/archive/%{version}/QtPBFImagePlu…
-# PATCH-FIX-OPENSUSE pkgconfig.patch - fix for broken OpenSUSE linker
-Patch0: pkgconfig.patch
BuildRequires: gcc-c++
BuildRequires: make
%if 0%{?suse_version}
BuildRequires: qt6-core-devel
BuildRequires: qt6-gui-devel
-BuildRequires: protobuf-devel
BuildRequires: zlib-devel
%else
%if 0%{?fedora_version}
@@ -42,16 +39,13 @@
BuildRequires: qt6-qtbase-gui
BuildRequires: qt6-qtbase-devel
BuildRequires: zlib-devel
-BuildRequires: protobuf-lite-devel
%else
# Mageia
BuildRequires: libqt6core-devel
BuildRequires: libqt6gui-devel
%ifarch x86_64
-BuildRequires: lib64protobuf-devel
BuildRequires: lib64zlib-devel
%else
-BuildRequires: libprotobuf-devel
BuildRequires: libzlib-devel
%endif
%endif
++++++ QtPBFImagePlugin-3.2.tar.gz -> QtPBFImagePlugin-4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/.appveyor.yml new/QtPBFImagePlugin-4.0/.appveyor.yml
--- old/QtPBFImagePlugin-3.2/.appveyor.yml 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/.appveyor.yml 2025-01-08 00:36:27.000000000 +0100
@@ -1,4 +1,4 @@
-version: 3.2.{build}
+version: 4.0.{build}
configuration:
- Release
@@ -7,26 +7,25 @@
- Visual Studio 2022
environment:
- VCPKGDIR: C:\tools\vcpkg\installed\x64-windows-static-md
+ VCPKGDIR: C:\tools\vcpkg\installed\x64-windows-static-md-release
matrix:
- QTDIR: C:\Qt\5.15\msvc2019_64
- - QTDIR: C:\Qt\6.7\msvc2019_64
+ - QTDIR: C:\Qt\6.8\msvc2022_64
install:
- cmd: |-
- set PATH=%QTDIR%\bin;%VCPKGDIR%\tools\protobuf;%PATH%
+ set PATH=%QTDIR%\bin;%PATH%
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
- vcpkg install protobuf:x64-windows-static-md
- vcpkg install zlib:x64-windows-static-md
+ vcpkg install zlib:x64-windows-static-md-release
copy /y %VCPKGDIR%\lib\zlib.lib %VCPKGDIR%\lib\zlibstatic.lib
build_script:
- cmd: |-
- qmake PROTOBUF=%VCPKGDIR% ZLIB=%VCPKGDIR% pbfplugin.pro
+ qmake ZLIB=%VCPKGDIR% pbfplugin.pro
nmake release
artifacts:
-- path: release\pbf3.dll
+- path: release\pbf4.dll
cache:
- C:\tools\vcpkg\installed\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/.github/workflows/android.yml new/QtPBFImagePlugin-4.0/.github/workflows/android.yml
--- old/QtPBFImagePlugin-3.2/.github/workflows/android.yml 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/.github/workflows/android.yml 2025-01-08 00:36:27.000000000 +0100
@@ -12,10 +12,6 @@
steps:
- name: Checkout
uses: actions/checkout@v4
- - name: Install protobuf compiler
- run: |
- sudo apt-get update
- sudo apt-get install protobuf-compiler
- name: set up JDK 11
uses: actions/setup-java@v4
with:
@@ -41,10 +37,8 @@
version: '6.4.0'
target: 'android'
arch: 'android_arm64_v8a'
- - name: Install Android Google Protocol Buffers
- run: git clone https://github.com/tumic0/android_protobuf.git
- name: Configure build
- run: qmake pbfplugin.pro PROTOBUF=android_protobuf
+ run: qmake pbfplugin.pro
- name: Build project
run: make -j2
- name: Upload artifacts
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/.github/workflows/linux.yml new/QtPBFImagePlugin-4.0/.github/workflows/linux.yml
--- old/QtPBFImagePlugin-3.2/.github/workflows/linux.yml 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/.github/workflows/linux.yml 2025-01-08 00:36:27.000000000 +0100
@@ -15,7 +15,7 @@
- name: Install dependencies
run: |
sudo apt-get update
- sudo apt-get install qtbase5-dev qtbase5-dev-tools qt5-qmake libprotobuf-dev protobuf-compiler zlib1g-dev
+ sudo apt-get install qtbase5-dev qtbase5-dev-tools qt5-qmake zlib1g-dev
- name: Configure build
run: qmake pbfplugin.pro
- name: Build project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/.github/workflows/osx.yml new/QtPBFImagePlugin-4.0/.github/workflows/osx.yml
--- old/QtPBFImagePlugin-3.2/.github/workflows/osx.yml 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/.github/workflows/osx.yml 2025-01-08 00:36:27.000000000 +0100
@@ -6,36 +6,22 @@
- master
jobs:
- qt5:
- name: QtPBFImagePlugin Qt5 build
+ build:
+ name: QtPBFImagePlugin
runs-on: macos-latest
steps:
- - name: Set environment variables
- run: echo "PATH=/opt/homebrew/opt/qt@5/bin:/opt/homebrew/opt/protobuf@21/bin:$PATH" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v4
- - name: Install dependencies
- run: |
- brew update
- brew install qt@5 protobuf@21
+ - name: Install Qt
+ uses: jurplel/install-qt-action@v4
+ with:
+ version: '6.8.1'
- name: Configure build
- run: qmake PROTOBUF=/opt/homebrew/opt/protobuf@21 pbfplugin.pro
- - name: Build project
- run: make -j3
-
- qt6:
- name: QtPBFImagePlugin Qt6 build
- runs-on: macos-latest
- steps:
- - name: Set environment variables
- run: echo "PATH=/opt/homebrew/opt/qt@6/bin:/opt/homebrew/opt/protobuf@21/bin:$PATH" >> $GITHUB_ENV
- - name: Checkout
- uses: actions/checkout@v4
- - name: Install dependencies
- run: |
- brew update
- brew install qt@6 protobuf@21
- - name: Configure build
- run: qmake PROTOBUF=/opt/homebrew/opt/protobuf@21 pbfplugin.pro
+ run: qmake pbfplugin.pro QMAKE_APPLE_DEVICE_ARCHS="x86_64h arm64"
- name: Build project
run: make -j3
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ path: libpbf.dylib
+ name: libpbf.dylib
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/.gitignore new/QtPBFImagePlugin-4.0/.gitignore
--- old/QtPBFImagePlugin-3.2/.gitignore 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/.gitignore 2025-01-08 00:36:27.000000000 +0100
@@ -1,10 +1,6 @@
# Object files
*.o
-# Protobuf stuff
-protobuf/vector_tile.pb.cc
-protobuf/vector_tile.pb.h
-
# Qt stuff
/.qmake.stash
moc_*.cpp
@@ -14,4 +10,4 @@
# lib
libpbf.so
-pbf.dylib
+libpbf.dylib
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/README.md new/QtPBFImagePlugin-4.0/README.md
--- old/QtPBFImagePlugin-3.2/README.md 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/README.md 2025-01-08 00:36:27.000000000 +0100
@@ -68,41 +68,38 @@
## Build
### Requirements
* Qt5 >= 5.11 or Qt6
-* Google Protocol Buffers (protobuf-lite)
* Zlib
### Build steps
-#### Linux
+#### Linux, OS X and Android
```shell
qmake pbfplugin.pro
make
```
#### Windows
```shell
-qmake PROTOBUF=path/to/protobuf ZLIB=path/to/zlib pbfplugin.pro
+qmake ZLIB=path/to/zlib pbfplugin.pro
nmake
```
-#### OS X
-```shell
-qmake PROTOBUF=path/to/protobuf pbfplugin.pro
-make
-```
## Install
Copy the plugin to the system Qt image plugins path to make it work. You may
-also set the QT_PLUGIN_PATH system variable before starting the application. For
-Linux, there are RPM and DEB [packages](https://build.opensuse.org/project/show/home:tumic:QtPBFImagePlug…
+also set the QT_PLUGIN_PATH system variable before starting the application.
+For Linux, there are RPM and DEB [packages](https://build.opensuse.org/project/show/home:tumic:QtPBFImagePlug…
for most common distros available on OBS.
## Limitations
-* Only data that is part of the PBF file is displayed. External layers defined in the
-style are ignored.
-* Text PBF features must have a unique id (OpenMapTiles >= v3.7) for the text layout
-algorithm to work properly.
-* Expressions are not supported in the styles, only property functions are implemented.
+* Only data that is part of the PBF file is displayed. External layers defined
+in the style are ignored.
+* Text PBF features must have a unique id (OpenMapTiles >= v3.7) for the text
+layout algorithm to work properly. Additionally, the tile buffer must be large
+enough to contain all neighboring text features overlapping to the tile bounds
+(only data from the tile itself can be drawn to the resulting image).
+* Expressions are not supported in the styles, only property functions are
+implemented.
## Changelog
-[Changelog](https://build.opensuse.org/package/view_file/home:tumic:QtPBFImagePlugin/QtPBFImagePlugin/libqt5-qtpbfimageformat.changes)
+[Changelog](https://build.opensuse.org/projects/home:tumic:QtPBFImagePlugin/packages/QtPBFImagePlugin/files/qt6-qtpbfimageformat.changes)
## Status
A picture is worth a thousand words.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/pbfplugin.pro new/QtPBFImagePlugin-4.0/pbfplugin.pro
--- old/QtPBFImagePlugin-3.2/pbfplugin.pro 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/pbfplugin.pro 2025-01-08 00:36:27.000000000 +0100
@@ -2,13 +2,10 @@
TEMPLATE = lib
CONFIG += plugin
QT += gui
-VERSION = 3.2
+VERSION = 4.0
-PROTOS = protobuf/vector_tile.proto
-include(protobuf/vector_tile.pri)
-
-INCLUDEPATH += ./protobuf
HEADERS += src/pbfhandler.h \
+ src/data.h \
src/pbfplugin.h \
src/gzip.h \
src/pbf.h \
@@ -23,6 +20,7 @@
src/textitem.h \
src/sprites.h
SOURCES += src/pbfplugin.cpp \
+ src/data.cpp \
src/pbfhandler.cpp \
src/gzip.cpp \
src/pbf.cpp \
@@ -40,31 +38,24 @@
DEFINES += QT_NO_DEPRECATED_WARNINGS
unix:!macx:!android {
- LIBS += -lprotobuf-lite \
- -lz
+ LIBS += -lz
target.path += $$[QT_INSTALL_PLUGINS]/imageformats
INSTALLS += target
}
win32 {
- INCLUDEPATH += $$PROTOBUF/include \
- $$ZLIB/include
- LIBS += $$PROTOBUF/lib/libprotobuf-lite.lib \
- $$ZLIB/lib/zlibstatic.lib
+ INCLUDEPATH += $$ZLIB/include
+ LIBS += $$ZLIB/lib/zlibstatic.lib
QMAKE_TARGET_PRODUCT = QtPBFImagePlugin
QMAKE_TARGET_DESCRIPTION = Qt $$QT_VERSION MVT/PBF image plugin
- QMAKE_TARGET_COPYRIGHT = Copyright (c) 2018-2024 Martin Tuma
+ QMAKE_TARGET_COPYRIGHT = Copyright (c) 2018-2025 Martin Tuma
}
macx {
- INCLUDEPATH += $$PROTOBUF/include
- LIBS += $$PROTOBUF/lib/libprotobuf-lite.a \
- -lz
+ LIBS += -lz
}
android {
- INCLUDEPATH += $$PROTOBUF/include
- LIBS += $$PROTOBUF/$$ANDROID_TARGET_ARCH/libprotobuf-lite.a \
- -lz
+ LIBS += -lz
top_builddir=$$shadowed($$PWD)
DESTDIR = $$top_builddir/plugins
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/protobuf/vector_tile.pri new/QtPBFImagePlugin-4.0/protobuf/vector_tile.pri
--- old/QtPBFImagePlugin-3.2/protobuf/vector_tile.pri 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/protobuf/vector_tile.pri 1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-INCLUDEPATH += $$PWD
-DEPENDPATH += $$PWD
-
-protobuf_decl.name = protobuf headers
-protobuf_decl.input = PROTOS
-protobuf_decl.output = ${QMAKE_FILE_IN_PATH}/${QMAKE_FILE_BASE}.pb.h
-protobuf_decl.commands = protoc --cpp_out=${QMAKE_FILE_IN_PATH} --proto_path=${QMAKE_FILE_IN_PATH} ${QMAKE_FILE_NAME}
-protobuf_decl.variable_out = HEADERS
-QMAKE_EXTRA_COMPILERS += protobuf_decl
-
-protobuf_impl.name = protobuf sources
-protobuf_impl.input = PROTOS
-protobuf_impl.output = ${QMAKE_FILE_IN_PATH}/${QMAKE_FILE_BASE}.pb.cc
-protobuf_impl.depends = ${QMAKE_FILE_IN_PATH}/${QMAKE_FILE_BASE}.pb.h
-protobuf_impl.commands = $$escape_expand(\n)
-protobuf_impl.variable_out = SOURCES
-QMAKE_EXTRA_COMPILERS += protobuf_impl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/protobuf/vector_tile.proto new/QtPBFImagePlugin-4.0/protobuf/vector_tile.proto
--- old/QtPBFImagePlugin-3.2/protobuf/vector_tile.proto 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/protobuf/vector_tile.proto 1970-01-01 01:00:00.000000000 +0100
@@ -1,78 +0,0 @@
-package vector_tile;
-
-option optimize_for = LITE_RUNTIME;
-
-message Tile {
-
- // GeomType is described in section 4.3.4 of the specification
- enum GeomType {
- UNKNOWN = 0;
- POINT = 1;
- LINESTRING = 2;
- POLYGON = 3;
- }
-
- // Variant type encoding
- // The use of values is described in section 4.1 of the specification
- message Value {
- // Exactly one of these values must be present in a valid message
- optional string string_value = 1;
- optional float float_value = 2;
- optional double double_value = 3;
- optional int64 int_value = 4;
- optional uint64 uint_value = 5;
- optional sint64 sint_value = 6;
- optional bool bool_value = 7;
-
- extensions 8 to max;
- }
-
- // Features are described in section 4.2 of the specification
- message Feature {
- optional uint64 id = 1 [ default = 0 ];
-
- // Tags of this feature are encoded as repeated pairs of
- // integers.
- // A detailed description of tags is located in sections
- // 4.2 and 4.4 of the specification
- repeated uint32 tags = 2 [ packed = true ];
-
- // The type of geometry stored in this feature.
- optional GeomType type = 3 [ default = UNKNOWN ];
-
- // Contains a stream of commands and parameters (vertices).
- // A detailed description on geometry encoding is located in
- // section 4.3 of the specification.
- repeated uint32 geometry = 4 [ packed = true ];
- }
-
- // Layers are described in section 4.1 of the specification
- message Layer {
- // Any compliant implementation must first read the version
- // number encoded in this message and choose the correct
- // implementation for this version number before proceeding to
- // decode other parts of this message.
- required uint32 version = 15 [ default = 1 ];
-
- required string name = 1;
-
- // The actual features in this tile.
- repeated Feature features = 2;
-
- // Dictionary encoding for keys
- repeated string keys = 3;
-
- // Dictionary encoding for values
- repeated Value values = 4;
-
- // Although this is an "optional" field it is required by the specification.
- // See https://github.com/mapbox/vector-tile-spec/issues/47
- optional uint32 extent = 5 [ default = 4096 ];
-
- extensions 16 to max;
- }
-
- repeated Layer layers = 3;
-
- extensions 16 to 8191;
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/src/data.cpp new/QtPBFImagePlugin-4.0/src/data.cpp
--- old/QtPBFImagePlugin-3.2/src/data.cpp 1970-01-01 01:00:00.000000000 +0100
+++ new/QtPBFImagePlugin-4.0/src/data.cpp 2025-01-08 00:36:27.000000000 +0100
@@ -0,0 +1,347 @@
+#include "data.h"
+
+#define TYPE(tag) (tag & 0x07)
+#define FIELD(tag) (tag >> 3)
+
+#define VARINT 0
+#define I64 1
+#define LEN 2
+#define I32 5
+
+struct CTX
+{
+ CTX(const QByteArray &ba)
+ : bp(ba.constData()), be(bp + ba.size()) {}
+
+ const char *bp;
+ const char *be;
+ quint32 tag;
+};
+
+static inline qint64 zigzag64decode(quint64 value)
+{
+ return static_cast<qint64>((value >> 1u) ^ static_cast<quint64>(
+ -static_cast<qint64>(value & 1u)));
+}
+
+template<typename T>
+static bool varint(CTX &ctx, T &val)
+{
+ unsigned int shift = 0;
+ val = 0;
+
+ while (ctx.bp < ctx.be) {
+ val |= ((quint8)*ctx.bp & 0x7F) << shift;
+ shift += 7;
+ if (!((quint8)*ctx.bp++ & 0x80))
+ return true;
+ }
+
+ return false;
+}
+
+static bool length(CTX &ctx, qint32 &val)
+{
+ if (TYPE(ctx.tag) != LEN)
+ return false;
+
+ if (!varint(ctx, val))
+ return false;
+
+ return (val >= 0);
+}
+
+static bool str(CTX &ctx, QByteArray &val)
+{
+ qint32 len;
+
+ if (!length(ctx, len))
+ return false;
+ if (ctx.bp + len > ctx.be)
+ return false;
+
+ val = QByteArray::fromRawData(ctx.bp, len);
+ ctx.bp += len;
+
+ return true;
+}
+
+static bool dbl(CTX &ctx, double &val)
+{
+ if (TYPE(ctx.tag) != I64)
+ return false;
+ if (ctx.bp + sizeof(val) > ctx.be)
+ return false;
+
+ memcpy(&val, ctx.bp, sizeof(val));
+ ctx.bp += sizeof(val);
+
+ return true;
+}
+
+static bool flt(CTX &ctx, float &val)
+{
+ if (TYPE(ctx.tag) != I32)
+ return false;
+ if (ctx.bp + sizeof(val) > ctx.be)
+ return false;
+
+ memcpy(&val, ctx.bp, sizeof(val));
+ ctx.bp += sizeof(val);
+
+ return true;
+}
+
+static bool packed(CTX &ctx, QVector<quint32> &vals)
+{
+ quint32 v;
+
+ if (TYPE(ctx.tag) == LEN) {
+ qint32 len;
+ if (!varint(ctx, len) || len < 0)
+ return false;
+ const char *ee = ctx.bp + len;
+ if (ee > ctx.be)
+ return false;
+ while (ctx.bp < ee) {
+ if (!varint(ctx, v))
+ return false;
+ vals.append(v);
+ }
+ return (ctx.bp == ee);
+ } else if (TYPE(ctx.tag) == VARINT) {
+ if (!varint(ctx, v))
+ return false;
+ vals.append(v);
+ return true;
+ } else
+ return false;
+}
+
+static bool skip(CTX &ctx)
+{
+ qint32 len = 0;
+
+ switch (TYPE(ctx.tag)) {
+ case VARINT:
+ return varint(ctx, len);
+ case I64:
+ len = 8;
+ break;
+ case LEN:
+ if (!varint(ctx, len) || len < 0)
+ return false;
+ break;
+ case I32:
+ len = 4;
+ break;
+ default:
+ return false;
+ }
+
+ if (ctx.bp + len > ctx.be)
+ return false;
+ ctx.bp += len;
+
+ return true;
+}
+
+static bool value(CTX &ctx, QVariant &val)
+{
+ QByteArray ba;
+ quint64 num;
+ double dnum;
+ float fnum;
+ qint32 len;
+
+ if (!length(ctx, len))
+ return false;
+
+ const char *ee = ctx.bp + len;
+ if (ee > ctx.be)
+ return false;
+
+ while (ctx.bp < ee) {
+ if (!varint(ctx, ctx.tag))
+ return false;
+
+ switch (FIELD(ctx.tag)) {
+ case 1:
+ if (!str(ctx, ba))
+ return false;
+ val = QVariant(ba);
+ break;
+ case 2:
+ if (!flt(ctx, fnum))
+ return false;
+ val = QVariant(fnum);
+ break;
+ case 3:
+ if (!dbl(ctx, dnum))
+ return false;
+ val = QVariant(dnum);
+ break;
+ case 4:
+ if (TYPE(ctx.tag) != VARINT)
+ return false;
+ if (!varint(ctx, num))
+ return false;
+ val = QVariant(static_cast<qint64>(num));
+ break;
+ case 5:
+ if (TYPE(ctx.tag) != VARINT)
+ return false;
+ if (!varint(ctx, num))
+ return false;
+ val = QVariant(num);
+ break;
+ case 6:
+ if (TYPE(ctx.tag) != VARINT)
+ return false;
+ if (!varint(ctx, num))
+ return false;
+ val = QVariant(zigzag64decode(num));
+ break;
+ case 7:
+ if (TYPE(ctx.tag) != VARINT)
+ return false;
+ if (!varint(ctx, num))
+ return false;
+ val = QVariant(num ? true : false);
+ break;
+ default:
+ if (!skip(ctx))
+ return false;
+ }
+ }
+
+ return (ctx.bp == ee);
+}
+
+static bool feature(CTX &ctx, Data::Feature &f)
+{
+ qint32 len;
+ quint32 e;
+
+ if (!length(ctx, len))
+ return false;
+
+ const char *ee = ctx.bp + len;
+ if (ee > ctx.be)
+ return false;
+
+ while (ctx.bp < ee) {
+ if (!varint(ctx, ctx.tag))
+ return false;
+
+ switch (FIELD(ctx.tag)) {
+ case 1:
+ if (TYPE(ctx.tag) != VARINT)
+ return false;
+ if (!varint(ctx, f.id))
+ return false;
+ break;
+ case 2:
+ if (!packed(ctx, f.tags))
+ return false;
+ break;
+ case 3:
+ if (TYPE(ctx.tag) != VARINT)
+ return false;
+ if (!varint(ctx, e))
+ return false;
+ if (e > Data::GeomType::POLYGON)
+ return false;
+ f.type = static_cast<Data::GeomType>(e);
+ break;
+ case 4:
+ if (!packed(ctx, f.geometry))
+ return false;
+ break;
+ default:
+ if (!skip(ctx))
+ return false;
+ }
+ }
+
+ return (ctx.bp == ee);
+}
+
+static bool layer(CTX &ctx, Data::Layer &l)
+{
+ qint32 len;
+
+ if (!length(ctx, len))
+ return false;
+
+ const char *ee = ctx.bp + len;
+ if (ee > ctx.be)
+ return false;
+
+ while (ctx.bp < ee) {
+ if (!varint(ctx, ctx.tag))
+ return false;
+
+ switch (FIELD(ctx.tag)) {
+ case 1:
+ if (!str(ctx, l.name))
+ return false;
+ break;
+ case 2:
+ l.features.append(Data::Feature());
+ if (!feature(ctx, l.features.last()))
+ return false;
+ break;
+ case 3:
+ l.keys.append(QByteArray());
+ if (!str(ctx, l.keys.last()))
+ return false;
+ break;
+ case 4:
+ l.values.append(QVariant());
+ if (!value(ctx, l.values.last()))
+ return false;
+ break;
+ case 5:
+ if (TYPE(ctx.tag) != VARINT)
+ return false;
+ if (!varint(ctx, l.extent))
+ return false;
+ break;
+ case 15:
+ if (TYPE(ctx.tag) != VARINT)
+ return false;
+ if (!varint(ctx, l.version))
+ return false;
+ break;
+ default:
+ if (!skip(ctx))
+ return false;
+ }
+ }
+
+ return (ctx.bp == ee);
+}
+
+bool Data::load(const QByteArray &ba)
+{
+ CTX ctx(ba);
+
+ while (ctx.bp < ctx.be) {
+ if (!varint(ctx, ctx.tag))
+ return false;
+
+ switch (FIELD(ctx.tag)) {
+ case 3:
+ _layers.append(Layer());
+ if (!layer(ctx, _layers.last()))
+ return false;
+ break;
+ default:
+ if (!skip(ctx))
+ return false;
+ }
+ }
+
+ return (ctx.bp == ctx.be);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/src/data.h new/QtPBFImagePlugin-4.0/src/data.h
--- old/QtPBFImagePlugin-3.2/src/data.h 1970-01-01 01:00:00.000000000 +0100
+++ new/QtPBFImagePlugin-4.0/src/data.h 2025-01-08 00:36:27.000000000 +0100
@@ -0,0 +1,47 @@
+#ifndef DATA_H
+#define DATA_H
+
+#include <QByteArray>
+#include <QVector>
+#include <QVariant>
+
+class Data
+{
+public:
+ enum GeomType {
+ UNKNOWN = 0,
+ POINT = 1,
+ LINESTRING = 2,
+ POLYGON = 3
+ };
+
+ struct Feature
+ {
+ Feature() : id(0), type(UNKNOWN) {}
+
+ quint64 id;
+ QVector<quint32> tags;
+ GeomType type;
+ QVector<quint32> geometry;
+ };
+
+ struct Layer
+ {
+ Layer() : version(1), extent(4096) {}
+
+ quint32 version;
+ QByteArray name;
+ QVector<Feature> features;
+ QVector<QByteArray> keys;
+ QVector<QVariant> values;
+ quint32 extent;
+ };
+
+ bool load(const QByteArray &ba);
+ const QVector<Layer> &layers() const {return _layers;}
+
+private:
+ QVector<Layer> _layers;
+};
+
+#endif // DATA_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/src/pbf.cpp new/QtPBFImagePlugin-4.0/src/pbf.cpp
--- old/QtPBFImagePlugin-3.2/src/pbf.cpp 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/src/pbf.cpp 2025-01-08 00:36:27.000000000 +0100
@@ -4,7 +4,6 @@
#define LINE_TO 2
#define CLOSE_PATH 7
-
static inline qint32 zigzag32decode(quint32 value)
{
return static_cast<qint32>((value >> 1u) ^ static_cast<quint32>(
@@ -16,26 +15,6 @@
return QPoint(zigzag32decode(v1), zigzag32decode(v2));
}
-static QVariant value(const vector_tile::Tile_Value &val)
-{
- if (val.has_bool_value())
- return QVariant(val.bool_value());
- else if (val.has_int_value())
- return QVariant((qlonglong)val.int_value());
- else if (val.has_sint_value())
- return QVariant((qlonglong)val.sint_value());
- else if (val.has_uint_value())
- return QVariant((qulonglong)val.uint_value());
- else if (val.has_float_value())
- return QVariant(val.float_value());
- else if (val.has_double_value())
- return QVariant(val.double_value());
- else if (val.has_string_value())
- return QVariant(QByteArray::fromStdString(val.string_value()));
- else
- return QVariant();
-}
-
const QVariant *PBF::Feature::value(const QByteArray &key) const
{
const KeyHash &keys(_layer->keys());
@@ -43,10 +22,10 @@
if (it == keys.constEnd())
return 0;
- google::protobuf::uint32 index = *it;
- for (int i = 0; i < _data->tags_size(); i = i + 2)
- if (_data->tags(i) == index)
- return &(_layer->values().at(_data->tags(i+1)));
+ quint32 index = *it;
+ for (int i = 0; i < _data->tags.size(); i = i + 2)
+ if (_data->tags.at(i) == index)
+ return &(_layer->values().at(_data->tags.at(i+1)));
return 0;
}
@@ -56,15 +35,15 @@
QPoint cursor;
QPainterPath path;
- for (int i = 0; i < _data->geometry_size(); i++) {
- quint32 g = _data->geometry(i);
+ for (int i = 0; i < _data->geometry.size(); i++) {
+ quint32 g = _data->geometry.at(i);
unsigned cmdId = g & 0x7;
unsigned cmdCount = g >> 3;
if (cmdId == MOVE_TO) {
for (unsigned j = 0; j < cmdCount; j++) {
- QPoint offset = parameters(_data->geometry(i+1),
- _data->geometry(i+2));
+ QPoint offset = parameters(_data->geometry.at(i+1),
+ _data->geometry.at(i+2));
i += 2;
cursor += offset;
path.moveTo(QPointF(cursor.x() * factor.width(),
@@ -72,8 +51,8 @@
}
} else if (cmdId == LINE_TO) {
for (unsigned j = 0; j < cmdCount; j++) {
- QPoint offset = parameters(_data->geometry(i+1),
- _data->geometry(i+2));
+ QPoint offset = parameters(_data->geometry.at(i+1),
+ _data->geometry.at(i+2));
i += 2;
cursor += offset;
path.lineTo(QPointF(cursor.x() * factor.width(),
@@ -88,27 +67,23 @@
return path;
}
-PBF::Layer::Layer(const vector_tile::Tile_Layer *data) : _data(data)
+PBF::Layer::Layer(const Data::Layer *layer) : _data(layer)
{
- _keys.reserve(data->keys_size());
- for (int i = 0; i < data->keys_size(); i++)
- _keys.insert(QByteArray::fromStdString(data->keys(i)), i);
- _values.reserve(data->values_size());
- for (int i = 0; i < data->values_size(); i++)
- _values.append(value(data->values(i)));
-
- _features.reserve(data->features_size());
- for (int i = 0; i < data->features_size(); i++)
- _features.append(Feature(&(data->features(i)), this));
+ _keys.reserve(layer->keys.size());
+ for (int i = 0; i < layer->keys.size(); i++)
+ _keys.insert(layer->keys.at(i), i);
+
+ _features.reserve(layer->features.size());
+ for (int i = 0; i < layer->features.size(); i++)
+ _features.append(Feature(&(layer->features.at(i)), this));
std::sort(_features.begin(), _features.end());
}
-PBF::PBF(const vector_tile::Tile &tile)
+PBF::PBF(const Data &data)
{
- for (int i = 0; i < tile.layers_size(); i++) {
- const vector_tile::Tile_Layer &layer = tile.layers(i);
- _layers.insert(QByteArray::fromStdString(layer.name()),
- new Layer(&layer));
+ for (int i = 0; i < data.layers().size(); i++) {
+ const Data::Layer &layer = data.layers().at(i);
+ _layers.insert(layer.name, new Layer(&layer));
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/src/pbf.h new/QtPBFImagePlugin-4.0/src/pbf.h
--- old/QtPBFImagePlugin-3.2/src/pbf.h 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/src/pbf.h 2025-01-08 00:36:27.000000000 +0100
@@ -5,10 +5,10 @@
#include <QVector>
#include <QHash>
#include <QPainterPath>
-#include "vector_tile.pb.h"
+#include "data.h"
-typedef QHash<QByteArray, google::protobuf::uint32> KeyHash;
+typedef QHash<QByteArray, quint32> KeyHash;
class PBF
{
@@ -19,17 +19,17 @@
{
public:
Feature() : _data(0), _layer(0) {}
- Feature(const vector_tile::Tile_Feature *data, const Layer *layer)
+ Feature(const Data::Feature *data, const Layer *layer)
: _data(data), _layer(layer) {}
const QVariant *value(const QByteArray &key) const;
- vector_tile::Tile_GeomType type() const {return _data->type();}
+ Data::GeomType type() const {return _data->type;}
QPainterPath path(const QSizeF &factor) const;
friend bool operator<(const Feature &f1, const Feature &f2);
private:
- const vector_tile::Tile_Feature *_data;
+ const Data::Feature *_data;
const Layer *_layer;
};
@@ -37,22 +37,21 @@
{
public:
- Layer(const vector_tile::Tile_Layer *data);
+ Layer(const Data::Layer *layer);
const QVector<Feature> &features() const {return _features;}
- const QVector<QVariant> &values() const {return _values;}
+ const QVector<QVariant> &values() const {return _data->values;}
const KeyHash &keys() const {return _keys;}
- const vector_tile::Tile_Layer *data() const {return _data;}
+ const Data::Layer *data() const {return _data;}
private:
- const vector_tile::Tile_Layer *_data;
+ const Data::Layer *_data;
QVector<Feature> _features;
- QVector<QVariant> _values;
KeyHash _keys;
};
- PBF(const vector_tile::Tile &tile);
+ PBF(const Data &data);
~PBF();
const QHash<QByteArray, Layer*> &layers() const {return _layers;}
@@ -62,6 +61,6 @@
};
inline bool operator<(const PBF::Feature &f1, const PBF::Feature &f2)
- {return f1._data->id() < f2._data->id();}
+ {return f1._data->id < f2._data->id;}
#endif // PBF_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/src/pbfhandler.cpp new/QtPBFImagePlugin-4.0/src/pbfhandler.cpp
--- old/QtPBFImagePlugin-3.2/src/pbfhandler.cpp 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/src/pbfhandler.cpp 2025-01-08 00:36:27.000000000 +0100
@@ -3,6 +3,7 @@
#include <QtEndian>
#include <QDebug>
#include "gzip.h"
+#include "data.h"
#include "tile.h"
#include "style.h"
#include "pbfhandler.h"
@@ -73,8 +74,8 @@
}
} else if (isPlainPBF(magic))
ba = device()->readAll();
- vector_tile::Tile data;
- if (!data.ParseFromArray(ba.constData(), ba.size())) {
+ Data data;
+ if (!data.load(ba)) {
qCritical() << "Invalid PBF data";
return false;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/QtPBFImagePlugin-3.2/src/style.cpp new/QtPBFImagePlugin-4.0/src/style.cpp
--- old/QtPBFImagePlugin-3.2/src/style.cpp 2024-10-06 13:24:08.000000000 +0200
+++ new/QtPBFImagePlugin-4.0/src/style.cpp 2025-01-08 00:36:27.000000000 +0100
@@ -14,16 +14,16 @@
#include "style.h"
-static vector_tile::Tile_GeomType geometryType(const QString &str)
+static Data::GeomType geometryType(const QString &str)
{
if (str == "Point")
- return vector_tile::Tile_GeomType_POINT;
+ return Data::GeomType::POINT;
else if (str == "LineString")
- return vector_tile::Tile_GeomType_LINESTRING;
+ return Data::GeomType::LINESTRING;
else if (str == "Polygon")
- return vector_tile::Tile_GeomType_POLYGON;
+ return Data::GeomType::POLYGON;
else
- return vector_tile::Tile_GeomType_UNKNOWN;
+ return Data::GeomType::UNKNOWN;
}
static QVariant variant(const QJsonValue &val)
@@ -680,15 +680,15 @@
void Style::drawLayer(const PBF::Layer &pbfLayer, const Layer &styleLayer,
Tile &tile)
{
- if (pbfLayer.data()->version() > 2)
+ if (pbfLayer.data()->version > 2)
return;
if (!styleLayer.isVisible())
return;
QSizeF factor(tile.size().width() / tile.scale().x() /
- (qreal)pbfLayer.data()->extent(), tile.size().height() / tile.scale().y()
- / (qreal)pbfLayer.data()->extent());
+ (qreal)pbfLayer.data()->extent, tile.size().height() / tile.scale().y()
+ / (qreal)pbfLayer.data()->extent);
tile.painter().save();
setupLayer(tile, styleLayer);
++++++ debian.changelog ++++++
--- /var/tmp/diff_new_pack.wWFDGp/_old 2025-01-09 15:12:44.757510619 +0100
+++ /var/tmp/diff_new_pack.wWFDGp/_new 2025-01-09 15:12:44.761510785 +0100
@@ -1,3 +1,9 @@
+qt5-pbf-image-plugin (4.0) stable; urgency=low
+
+ * Removed Google Protocol buffers dependency.
+
+ -- Martin Tuma <tumic(a)cbox.cz> Wed, 08 Jan 2025 01:10:03 +0100
+
qt5-pbf-image-plugin (3.2) stable; urgency=low
* Improved rendering performance.
++++++ debian.control ++++++
--- /var/tmp/diff_new_pack.wWFDGp/_old 2025-01-09 15:12:44.805512614 +0100
+++ /var/tmp/diff_new_pack.wWFDGp/_new 2025-01-09 15:12:44.809512781 +0100
@@ -2,7 +2,7 @@
Section: libs
Priority: optional
Maintainer: Martin Tuma <tumic(a)cbox.cz>
-Build-Depends: debhelper (>= 9), qtbase5-dev, qtbase5-dev-tools, qt5-qmake, libprotobuf-dev, protobuf-compiler, zlib1g-dev
+Build-Depends: debhelper (>= 9), qtbase5-dev, qtbase5-dev-tools, qt5-qmake, zlib1g-dev
Homepage: https://github.com/tumic0/QtPBFImagePlugin
Package: qt5-pbf-image-plugin
++++++ qtpbfplugin.dsc ++++++
--- /var/tmp/diff_new_pack.wWFDGp/_old 2025-01-09 15:12:44.841514111 +0100
+++ /var/tmp/diff_new_pack.wWFDGp/_new 2025-01-09 15:12:44.845514277 +0100
@@ -1,10 +1,10 @@
Format: 1.0
Source: qt5-pbf-image-plugin
-Version: 3.2-1
+Version: 4.0-1
Binary: qt5-pbf-image-plugin
Maintainer: Martin Tuma <tumic(a)cbox.cz>
Architecture: any
-Build-Depends: debhelper (>= 9), qtbase5-dev, qtbase5-dev-tools, qt5-qmake, libprotobuf-dev, protobuf-compiler, zlib1g-dev
+Build-Depends: debhelper (>= 9), qtbase5-dev, qtbase5-dev-tools, qt5-qmake, zlib1g-dev
Files:
- 00000000000000000000000000000000 0 QtPBFImagePlugin-3.2.tar.gz
+ 00000000000000000000000000000000 0 QtPBFImagePlugin-4.0.tar.gz
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package cilium-cli for openSUSE:Factory checked in at 2025-01-09 15:11:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cilium-cli (Old)
and /work/SRC/openSUSE:Factory/.cilium-cli.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cilium-cli"
Thu Jan 9 15:11:45 2025 rev:82 rq:1236096 version:0.16.23
Changes:
--------
--- /work/SRC/openSUSE:Factory/cilium-cli/cilium-cli.changes 2024-12-11 21:09:01.432707982 +0100
+++ /work/SRC/openSUSE:Factory/.cilium-cli.new.1881/cilium-cli.changes 2025-01-09 15:12:41.781386887 +0100
@@ -1,0 +2,65 @@
+Thu Jan 09 06:40:23 UTC 2025 - opensuse_buildservice(a)ojkastl.de
+
+- Update to version 0.16.23:
+ * Minor Changes:
+ - cli: aws mixed nodes install fix (cilium/cilium#36336,
+ @viktor-kurchenko)
+ * Bugfixes:
+ - Cilium CLI fix for AWS ENI mode (cilium/cilium#36887,
+ @viktor-kurchenko)
+ - Restore the original flag semantics for
+ --egress-masquerade-interfaces to the same as v1.17.0-pre.2
+ or earlier (cilium/cilium#36504, @viktor-kurchenko)
+ * CI Changes:
+ - Add --external-other-target parameter to cilium CLI
+ connectivity tests. (cilium/cilium#36080, @wedaly)
+ - Change client-egress-l7-tls tests to sequential because flaky
+ (cilium/cilium#36568, @youngnick)
+ - cilium-cli/connectivity: fix IPv6 feature check for 2ndary
+ node IPv6 (cilium/cilium#36513, @tklauser)
+ - cilium-cli: Add envoy log pattern in error check
+ (cilium/cilium#36498, @sayboras)
+ - Fix cilium CLI connectivity tests in IPv6-only clusters.
+ (cilium/cilium#36026, @wedaly)
+ * Misc Changes:
+ - chore(deps): update all-dependencies (main)
+ (cilium/cilium#36706, @cilium-renovate[bot])
+ - chore(deps): update docker.io/library/golang:1.23.4 docker
+ digest to 7003184 (main) (cilium/cilium#36604,
+ @cilium-renovate[bot])
+ - chore(deps): update docker.io/library/golang:1.23.4 docker
+ digest to 7ea4c9d (main) (cilium/cilium#36808,
+ @cilium-renovate[bot])
+ - ci/connectivity: Don't apply cnp to conn-disrupt pods in
+ 1.15, 1.14 (cilium/cilium#36682, @jschwinger233)
+ - cilium-cli: skip some IPv6 connectivity tests for Cilium<1.14
+ when IPsec is enabled (cilium/cilium#36664, @jschwinger233)
+ - Isolate node-to-node encryption tests to wireguard
+ (cilium/cilium#36556, @ldelossa)
+ - chore(deps): update all github action dependencies (minor) by
+ @renovate in #2887
+ - Update stable release to v0.16.22 by @tklauser in #2888
+ - chore(deps): update module golang.org/x/crypto to v0.31.0
+ [security] by @renovate in #2889
+ - chore(deps): update all github action dependencies (minor) by
+ @renovate in #2890
+ - Dockerfile: drop syntax comment by @tklauser in #2893
+ - chore(deps): update dependency kubernetes-sigs/kind to
+ v0.26.0 by @renovate in #2892
+ - chore(deps): update dependency cilium/cilium to v1.16.5 by
+ @renovate in #2894
+ - chore(deps): update actions/upload-artifact action to v4.5.0
+ by @renovate in #2896
+ - chore(deps): update module golang.org/x/net to v0.33.0
+ [security] by @renovate in #2895
+ - chore(deps): update golangci/golangci-lint docker tag to
+ v1.63.0 by @renovate in #2899
+ - chore(deps): update golangci/golangci-lint docker tag to
+ v1.63.4 by @renovate in #2902
+ - chore(deps): update helm/kind-action action to v1.12.0 by
+ @renovate in #2901
+ - chore(deps): update softprops/action-gh-release action to
+ v2.2.1 by @renovate in #2905
+ - Prepare for v0.16.23 release by @michi-covalent in #2903
+
+-------------------------------------------------------------------
Old:
----
cilium-cli-0.16.22.obscpio
New:
----
cilium-cli-0.16.23.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cilium-cli.spec ++++++
--- /var/tmp/diff_new_pack.p0hO23/_old 2025-01-09 15:12:43.681465882 +0100
+++ /var/tmp/diff_new_pack.p0hO23/_new 2025-01-09 15:12:43.681465882 +0100
@@ -1,7 +1,7 @@
#
# spec file for package cilium-cli
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define executable_name cilium
Name: cilium-cli
-Version: 0.16.22
+Version: 0.16.23
Release: 0
Summary: CLI to install, manage & troubleshoot Kubernetes clusters running Cilium
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.p0hO23/_old 2025-01-09 15:12:43.721467545 +0100
+++ /var/tmp/diff_new_pack.p0hO23/_new 2025-01-09 15:12:43.725467712 +0100
@@ -3,7 +3,7 @@
<param name="url">https://github.com/cilium/cilium-cli</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="revision">v0.16.22</param>
+ <param name="revision">v0.16.23</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="changesgenerate">enable</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.p0hO23/_old 2025-01-09 15:12:43.749468709 +0100
+++ /var/tmp/diff_new_pack.p0hO23/_new 2025-01-09 15:12:43.749468709 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/cilium/cilium-cli</param>
- <param name="changesrevision">c52e8c38e6d6235bd8e6e961199a984275547d6f</param></service></servicedata>
+ <param name="changesrevision">f313219850d324b516748ff7b00a6f9fa30d34ae</param></service></servicedata>
(No newline at EOF)
++++++ cilium-cli-0.16.22.obscpio -> cilium-cli-0.16.23.obscpio ++++++
/work/SRC/openSUSE:Factory/cilium-cli/cilium-cli-0.16.22.obscpio /work/SRC/openSUSE:Factory/.cilium-cli.new.1881/cilium-cli-0.16.23.obscpio differ: char 49, line 1
++++++ cilium-cli.obsinfo ++++++
--- /var/tmp/diff_new_pack.p0hO23/_old 2025-01-09 15:12:43.793470539 +0100
+++ /var/tmp/diff_new_pack.p0hO23/_new 2025-01-09 15:12:43.797470705 +0100
@@ -1,5 +1,5 @@
name: cilium-cli
-version: 0.16.22
-mtime: 1733845574
-commit: c52e8c38e6d6235bd8e6e961199a984275547d6f
+version: 0.16.23
+mtime: 1736354038
+commit: f313219850d324b516748ff7b00a6f9fa30d34ae
++++++ stable.txt ++++++
--- /var/tmp/diff_new_pack.p0hO23/_old 2025-01-09 15:12:43.817471537 +0100
+++ /var/tmp/diff_new_pack.p0hO23/_new 2025-01-09 15:12:43.821471703 +0100
@@ -1,2 +1,2 @@
-v1.16.4
+v1.16.5
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/cilium-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.cilium-cli.new.1881/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package skupper for openSUSE:Factory checked in at 2025-01-09 15:11:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/skupper (Old)
and /work/SRC/openSUSE:Factory/.skupper.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "skupper"
Thu Jan 9 15:11:42 2025 rev:4 rq:1236091 version:1.8.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/skupper/skupper.changes 2024-11-05 15:41:19.394835615 +0100
+++ /work/SRC/openSUSE:Factory/.skupper.new.1881/skupper.changes 2025-01-09 15:12:28.972854989 +0100
@@ -1,0 +2,11 @@
+Thu Jan 09 06:39:58 UTC 2025 - opensuse_buildservice(a)ojkastl.de
+
+- Update to version 1.8.3:
+ * update for 1.8.3
+ * remove external process log (#1865)
+ * Fixes internal console-auth implementation (#1833)
+ * Ensure podman service containers bind correct hosts (#1799)
+ * Update test images for ARM and OCP 3.11 (#1652)
+ * Add stability to TestGateway and TestBasic tests (#1766)
+
+-------------------------------------------------------------------
Old:
----
skupper-1.8.2.obscpio
New:
----
skupper-1.8.3.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ skupper.spec ++++++
--- /var/tmp/diff_new_pack.VH5S0Z/_old 2025-01-09 15:12:31.024939992 +0100
+++ /var/tmp/diff_new_pack.VH5S0Z/_new 2025-01-09 15:12:31.064941649 +0100
@@ -1,7 +1,7 @@
#
# spec file for package skupper
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define __arch_install_post export NO_BRP_STRIP_DEBUG=true
Name: skupper
-Version: 1.8.2
+Version: 1.8.3
Release: 0
Summary: Virtual Application Network, enabling rich hybrid cloud communication
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.VH5S0Z/_old 2025-01-09 15:12:31.576962859 +0100
+++ /var/tmp/diff_new_pack.VH5S0Z/_new 2025-01-09 15:12:31.616964516 +0100
@@ -3,7 +3,7 @@
<param name="url">https://github.com/skupperproject/skupper</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="revision">1.8.2</param>
+ <param name="revision">1.8.3</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param>
</service>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.VH5S0Z/_old 2025-01-09 15:12:31.800972138 +0100
+++ /var/tmp/diff_new_pack.VH5S0Z/_new 2025-01-09 15:12:31.828973297 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/skupperproject/skupper</param>
- <param name="changesrevision">149f4a5588c532d6ab1fc489b19ca24633e521e7</param></service></servicedata>
+ <param name="changesrevision">f9c88e4e90f0a7f916e9b5d29e8dce5d2340f78e</param></service></servicedata>
(No newline at EOF)
++++++ generated.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/client/generated/libpod/client/containers/container_rename_libpod_parameters.go new/client/generated/libpod/client/containers/container_rename_libpod_parameters.go
--- old/client/generated/libpod/client/containers/container_rename_libpod_parameters.go 2024-11-04 21:06:38.431534035 +0100
+++ new/client/generated/libpod/client/containers/container_rename_libpod_parameters.go 2025-01-09 07:40:40.545883570 +0100
@@ -63,15 +63,15 @@
/* Name.
- New name for the container
+ Full or partial ID or full name of the container to rename
*/
- QueryName string
+ PathName string
/* Name.
- Full or partial ID or full name of the container to rename
+ New name for the container
*/
- PathName string
+ QueryName string
timeout time.Duration
Context context.Context
@@ -126,17 +126,6 @@
o.HTTPClient = client
}
-// WithQueryName adds the name to the container rename libpod params
-func (o *ContainerRenameLibpodParams) WithQueryName(name string) *ContainerRenameLibpodParams {
- o.SetQueryName(name)
- return o
-}
-
-// SetQueryName adds the name to the container rename libpod params
-func (o *ContainerRenameLibpodParams) SetQueryName(name string) {
- o.QueryName = name
-}
-
// WithPathName adds the name to the container rename libpod params
func (o *ContainerRenameLibpodParams) WithPathName(name string) *ContainerRenameLibpodParams {
o.SetPathName(name)
@@ -148,6 +137,17 @@
o.PathName = name
}
+// WithQueryName adds the name to the container rename libpod params
+func (o *ContainerRenameLibpodParams) WithQueryName(name string) *ContainerRenameLibpodParams {
+ o.SetQueryName(name)
+ return o
+}
+
+// SetQueryName adds the name to the container rename libpod params
+func (o *ContainerRenameLibpodParams) SetQueryName(name string) {
+ o.QueryName = name
+}
+
// WriteToRequest writes these params to a swagger request
func (o *ContainerRenameLibpodParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
@@ -156,6 +156,11 @@
}
var res []error
+ // path param name
+ if err := r.SetPathParam("name", o.PathName); err != nil {
+ return err
+ }
+
// query param name
qrName := o.QueryName
qName := qrName
@@ -166,11 +171,6 @@
}
}
- // path param name
- if err := r.SetPathParam("name", o.PathName); err != nil {
- return err
- }
-
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/client/generated/libpod/client/containers/container_restore_libpod_parameters.go new/client/generated/libpod/client/containers/container_restore_libpod_parameters.go
--- old/client/generated/libpod/client/containers/container_restore_libpod_parameters.go 2024-11-04 21:06:39.874846900 +0100
+++ new/client/generated/libpod/client/containers/container_restore_libpod_parameters.go 2025-01-09 07:40:40.639217090 +0100
@@ -100,15 +100,15 @@
/* Name.
- the name of the container when restored from a tar. can only be used with import
+ the name or id of the container
*/
- QueryName *string
+ PathName string
/* Name.
- the name or id of the container
+ the name of the container when restored from a tar. can only be used with import
*/
- PathName string
+ QueryName *string
/* PrintStats.
@@ -241,17 +241,6 @@
o.LeaveRunning = leaveRunning
}
-// WithQueryName adds the name to the container restore libpod params
-func (o *ContainerRestoreLibpodParams) WithQueryName(name *string) *ContainerRestoreLibpodParams {
- o.SetQueryName(name)
- return o
-}
-
-// SetQueryName adds the name to the container restore libpod params
-func (o *ContainerRestoreLibpodParams) SetQueryName(name *string) {
- o.QueryName = name
-}
-
// WithPathName adds the name to the container restore libpod params
func (o *ContainerRestoreLibpodParams) WithPathName(name string) *ContainerRestoreLibpodParams {
o.SetPathName(name)
@@ -263,6 +252,17 @@
o.PathName = name
}
+// WithQueryName adds the name to the container restore libpod params
+func (o *ContainerRestoreLibpodParams) WithQueryName(name *string) *ContainerRestoreLibpodParams {
+ o.SetQueryName(name)
+ return o
+}
+
+// SetQueryName adds the name to the container restore libpod params
+func (o *ContainerRestoreLibpodParams) SetQueryName(name *string) {
+ o.QueryName = name
+}
+
// WithPrintStats adds the printStats to the container restore libpod params
func (o *ContainerRestoreLibpodParams) WithPrintStats(printStats *bool) *ContainerRestoreLibpodParams {
o.SetPrintStats(printStats)
@@ -395,6 +395,11 @@
}
}
+ // path param name
+ if err := r.SetPathParam("name", o.PathName); err != nil {
+ return err
+ }
+
if o.QueryName != nil {
// query param name
@@ -412,11 +417,6 @@
}
}
- // path param name
- if err := r.SetPathParam("name", o.PathName); err != nil {
- return err
- }
-
if o.PrintStats != nil {
// query param printStats
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/client/generated/libpod/client/containers_compat/container_rename_parameters.go new/client/generated/libpod/client/containers_compat/container_rename_parameters.go
--- old/client/generated/libpod/client/containers_compat/container_rename_parameters.go 2024-11-04 21:06:53.817982497 +0100
+++ new/client/generated/libpod/client/containers_compat/container_rename_parameters.go 2025-01-09 07:40:41.392551925 +0100
@@ -63,15 +63,15 @@
/* Name.
- New name for the container
+ Full or partial ID or full name of the container to rename
*/
- QueryName string
+ PathName string
/* Name.
- Full or partial ID or full name of the container to rename
+ New name for the container
*/
- PathName string
+ QueryName string
timeout time.Duration
Context context.Context
@@ -126,17 +126,6 @@
o.HTTPClient = client
}
-// WithQueryName adds the name to the container rename params
-func (o *ContainerRenameParams) WithQueryName(name string) *ContainerRenameParams {
- o.SetQueryName(name)
- return o
-}
-
-// SetQueryName adds the name to the container rename params
-func (o *ContainerRenameParams) SetQueryName(name string) {
- o.QueryName = name
-}
-
// WithPathName adds the name to the container rename params
func (o *ContainerRenameParams) WithPathName(name string) *ContainerRenameParams {
o.SetPathName(name)
@@ -148,6 +137,17 @@
o.PathName = name
}
+// WithQueryName adds the name to the container rename params
+func (o *ContainerRenameParams) WithQueryName(name string) *ContainerRenameParams {
+ o.SetQueryName(name)
+ return o
+}
+
+// SetQueryName adds the name to the container rename params
+func (o *ContainerRenameParams) SetQueryName(name string) {
+ o.QueryName = name
+}
+
// WriteToRequest writes these params to a swagger request
func (o *ContainerRenameParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
@@ -156,6 +156,11 @@
}
var res []error
+ // path param name
+ if err := r.SetPathParam("name", o.PathName); err != nil {
+ return err
+ }
+
// query param name
qrName := o.QueryName
qName := qrName
@@ -166,11 +171,6 @@
}
}
- // path param name
- if err := r.SetPathParam("name", o.PathName); err != nil {
- return err
- }
-
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/client/generated/libpod/models/swag_network_connect_request.go new/client/generated/libpod/models/swag_network_connect_request.go
--- old/client/generated/libpod/models/swag_network_connect_request.go 2024-11-04 21:06:31.384967300 +0100
+++ new/client/generated/libpod/models/swag_network_connect_request.go 2025-01-09 07:40:40.075882632 +0100
@@ -48,6 +48,10 @@
res = append(res, err)
}
+ if err := m.validateStaticMac(formats); err != nil {
+ res = append(res, err)
+ }
+
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
@@ -75,6 +79,23 @@
return nil
}
+func (m *SwagNetworkConnectRequest) validateStaticMac(formats strfmt.Registry) error {
+ if swag.IsZero(m.StaticMac) { // not required
+ return nil
+ }
+
+ if err := m.StaticMac.Validate(formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("static_mac")
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("static_mac")
+ }
+ return err
+ }
+
+ return nil
+}
+
// ContextValidate validate this swag network connect request based on the context it is used
func (m *SwagNetworkConnectRequest) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
var res []error
@@ -83,6 +104,10 @@
res = append(res, err)
}
+ if err := m.contextValidateStaticMac(ctx, formats); err != nil {
+ res = append(res, err)
+ }
+
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
@@ -105,6 +130,20 @@
}
return nil
+}
+
+func (m *SwagNetworkConnectRequest) contextValidateStaticMac(ctx context.Context, formats strfmt.Registry) error {
+
+ if err := m.StaticMac.ContextValidate(ctx, formats); err != nil {
+ if ve, ok := err.(*errors.Validation); ok {
+ return ve.ValidateName("static_mac")
+ } else if ce, ok := err.(*errors.CompositeError); ok {
+ return ce.ValidateName("static_mac")
+ }
+ return err
+ }
+
+ return nil
}
// MarshalBinary interface implementation
++++++ skupper-1.8.2.obscpio -> skupper-1.8.3.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/cmd/flow-collector/deploy.yaml new/skupper-1.8.3/cmd/flow-collector/deploy.yaml
--- old/skupper-1.8.2/cmd/flow-collector/deploy.yaml 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/cmd/flow-collector/deploy.yaml 2025-01-08 19:00:52.000000000 +0100
@@ -66,7 +66,7 @@
#type: RuntimeDefault
containers:
- name: skupper-flow-collector
- image: quay.io/skupper/flow-collector:1.8.2
+ image: quay.io/skupper/flow-collector:1.8.3
imagePullPolicy: Always
securityContext:
capabilities:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/cmd/flow-collector/handlers.go new/skupper-1.8.3/cmd/flow-collector/handlers.go
--- old/skupper-1.8.2/cmd/flow-collector/handlers.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/cmd/flow-collector/handlers.go 2025-01-08 19:00:52.000000000 +0100
@@ -1,10 +1,14 @@
package main
import (
+ "bytes"
"fmt"
"io"
"log"
"net/http"
+ "os"
+ "path/filepath"
+ "regexp"
"github.com/skupperproject/skupper/pkg/flow"
)
@@ -226,3 +230,70 @@
log.Printf("COLLECTOR: rangequery proxy response write error: %s", err.Error())
}
}
+
+func noAuth(h http.HandlerFunc) http.HandlerFunc {
+ return h
+}
+
+// basicAuthHandler handles basic auth for multiple users.
+type basicAuthHandler map[string]string
+
+func newBasicAuthHandler(root string) (basicAuthHandler, error) {
+ basicUsers := make(basicAuthHandler)
+
+ // Restrict usernames to files begining with an alphanumeric character
+ // Omits hidden files
+ fileRexp := regexp.MustCompile(`^[a-zA-Z0-9].*$`)
+
+ entries, err := os.ReadDir(root)
+ if err != nil {
+ return basicUsers, err
+ }
+ var buf bytes.Buffer
+ for _, entry := range entries {
+ if entry.IsDir() {
+ continue
+ }
+ username := entry.Name()
+
+ if !fileRexp.MatchString(username) {
+ continue
+ }
+ path := filepath.Join(root, username)
+ f, err := os.Open(path)
+ if err != nil {
+ log.Printf("COLLECTOR: basic auth file open %q error: %s", path, err.Error())
+ continue
+ }
+ defer f.Close()
+
+ buf.Reset()
+ if _, err := io.Copy(&buf, f); err != nil {
+ log.Printf("COLLECTOR: basic auth file read %q error: %s", path, err.Error())
+ continue
+ }
+
+ basicUsers[username] = buf.String()
+ }
+ return basicUsers, nil
+}
+
+func (h basicAuthHandler) HandlerFunc(next http.HandlerFunc) http.HandlerFunc {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ user, password, ok := r.BasicAuth()
+
+ if ok && h.check(user, password) {
+ next.ServeHTTP(w, r)
+ return
+ }
+ w.Header().Set("WWW-Authenticate", "Basic realm=skupper")
+ http.Error(w, "Unauthorized", http.StatusUnauthorized)
+ })
+}
+
+func (h basicAuthHandler) check(user, given string) bool {
+ if required, ok := h[user]; ok {
+ return given == required
+ }
+ return false
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/cmd/flow-collector/handlers_test.go new/skupper-1.8.3/cmd/flow-collector/handlers_test.go
--- old/skupper-1.8.2/cmd/flow-collector/handlers_test.go 1970-01-01 01:00:00.000000000 +0100
+++ new/skupper-1.8.3/cmd/flow-collector/handlers_test.go 2025-01-08 19:00:52.000000000 +0100
@@ -0,0 +1,96 @@
+package main
+
+import (
+ "net/http"
+ "net/http/httptest"
+ "os"
+ "path/filepath"
+ "testing"
+)
+
+func TestBasic(t *testing.T) {
+ configuredUsers := map[string]string{
+ "test-user": "plaintext-password",
+ "admin": "p@ssword!",
+ }
+ tmpDir := t.TempDir()
+ writeUser := func(usr, pwd string) {
+ userFile, err := os.Create(filepath.Join(tmpDir, usr))
+ if err != nil {
+ t.Fatal(err)
+ }
+ defer userFile.Close()
+ userFile.Write([]byte(pwd))
+ }
+ for usr, pwd := range configuredUsers {
+ writeUser(usr, pwd)
+ }
+ writeUser("unreadable", "test") // ensure unreadable files are gracefully skipped
+ os.Chmod(filepath.Join(tmpDir, "unreadable"), 0220)
+
+ BasicAuth, err := newBasicAuthHandler(tmpDir)
+ if err != nil {
+ t.Fatal("unexpected error", err)
+ }
+
+ tstSrv := httptest.NewTLSServer(BasicAuth.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
+ rw.Write([]byte("OK"))
+ }))
+ defer tstSrv.Close()
+ client := tstSrv.Client()
+ assertStatusCode := func(expected int, req *http.Request) {
+ t.Helper()
+ resp, err := client.Do(req)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if resp.StatusCode != expected {
+ t.Fatalf("expected http %d: got %d", expected, resp.StatusCode)
+ }
+ }
+ unauthenticated, _ := http.NewRequest(http.MethodGet, tstSrv.URL, nil)
+ assertStatusCode(401, unauthenticated)
+
+ incorrectPass, _ := http.NewRequest(http.MethodGet, tstSrv.URL, nil)
+ incorrectPass.SetBasicAuth("test-user", "X"+configuredUsers["test-user"])
+ assertStatusCode(401, incorrectPass)
+
+ incorrectUser, _ := http.NewRequest(http.MethodGet, tstSrv.URL, nil)
+ incorrectUser.SetBasicAuth("test-user-x", configuredUsers["test-user"])
+ assertStatusCode(401, incorrectPass)
+
+ unreadableUser, _ := http.NewRequest(http.MethodGet, tstSrv.URL, nil)
+ unreadableUser.SetBasicAuth("unreadable", "test")
+ assertStatusCode(401, unreadableUser)
+
+ mixedUserPass, _ := http.NewRequest(http.MethodGet, tstSrv.URL, nil)
+ mixedUserPass.SetBasicAuth("admin", configuredUsers["test-user"])
+ assertStatusCode(401, mixedUserPass)
+
+ for usr, pwd := range configuredUsers {
+ req, _ := http.NewRequest(http.MethodGet, tstSrv.URL, nil)
+ req.SetBasicAuth(usr, pwd)
+ assertStatusCode(200, req)
+ }
+}
+
+func FuzzBasic(f *testing.F) {
+ const (
+ tUser = "skupper"
+ tPassword = "P@ssword!"
+ )
+ basic := basicAuthHandler{
+ tUser: tPassword,
+ }
+ f.Add(tUser, tPassword)
+ f.Add(tPassword, tUser)
+ f.Add(tUser, "")
+ f.Add("", tPassword)
+ f.Fuzz(func(t *testing.T, user, password string) {
+ expected := user == tUser && password == tPassword
+ out := basic.check(user, password)
+ if expected != out {
+ t.Errorf("%q:%q does not match %q:%q", user, password, tUser, tPassword)
+ }
+ })
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/cmd/flow-collector/main.go new/skupper-1.8.3/cmd/flow-collector/main.go
--- old/skupper-1.8.2/cmd/flow-collector/main.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/cmd/flow-collector/main.go 2025-01-08 19:00:52.000000000 +0100
@@ -4,16 +4,13 @@
"context"
"encoding/base64"
"encoding/json"
- "errors"
"flag"
"fmt"
- "io"
"log"
"net/http"
_ "net/http/pprof"
"os"
"os/signal"
- "path"
"strconv"
"syscall"
"time"
@@ -55,8 +52,13 @@
AuthMode string `json:"authType"`
}
-var onlyOneSignalHandler = make(chan struct{})
-var shutdownSignals = []os.Signal{os.Interrupt, syscall.SIGTERM}
+var (
+ // authenticated made variable to be swapped out at startup
+ authenticated func(next http.HandlerFunc) http.HandlerFunc = noAuth
+
+ onlyOneSignalHandler = make(chan struct{})
+ shutdownSignals = []os.Signal{os.Interrupt, syscall.SIGTERM}
+)
func getConnectInfo(file string) (connectJson, error) {
cj := connectJson{}
@@ -102,46 +104,6 @@
})
}
-func authenticate(dir string, user string, password string) bool {
- filename := path.Join(dir, user)
- file, err := os.Open(filename)
- if err != nil {
- if errors.Is(err, os.ErrNotExist) {
- log.Printf("COLLECTOR: Failed to authenticate %s, no such user exists", user)
- } else {
- log.Printf("COLLECTOR: Failed to authenticate %s: %s", user, err)
- }
- return false
- }
- defer file.Close()
-
- bytes, err := io.ReadAll(file)
- if err != nil {
- log.Printf("COLLECTOR: Failed to authenticate %s: %s", user, err)
- return false
- }
- return string(bytes) == password
-}
-
-func authenticated(h http.HandlerFunc) http.HandlerFunc {
- dir := os.Getenv("FLOW_USERS")
-
- if dir != "" {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- user, password, ok := r.BasicAuth()
-
- if ok && authenticate(dir, user, password) {
- h.ServeHTTP(w, r)
- } else {
- w.Header().Set("WWW-Authenticate", "Basic realm=skupper")
- http.Error(w, "Unauthorized", http.StatusUnauthorized)
- }
- })
- } else {
- return h
- }
-}
-
func getOpenshiftUser(r *http.Request) UserResponse {
userResponse := UserResponse{
Username: "",
@@ -208,6 +170,20 @@
http.Error(w, "Unauthorized", http.StatusUnauthorized)
}
+func configureAuth() error {
+ root := os.Getenv("FLOW_USERS")
+ if root == "" {
+ return nil
+ }
+ log.Printf("COLLECTOR: Configuring basic auth handler from %q \n", root)
+ basic, err := newBasicAuthHandler(root)
+ if err != nil {
+ return err
+ }
+ authenticated = basic.HandlerFunc
+ return nil
+}
+
func main() {
flags := flag.NewFlagSet(os.Args[0], flag.ExitOnError)
// if -version used, report and exit
@@ -219,7 +195,6 @@
fmt.Println(version.Version)
os.Exit(0)
}
-
// Startup message
log.Printf("COLLECTOR: Starting Skupper Flow collector controller version %s \n", version.Version)
@@ -297,6 +272,10 @@
}
}
+ if err := configureAuth(); err != nil {
+ log.Fatalf("unrecoverable error setting up authentication: %s", err)
+ }
+
tlsConfig := certs.GetTlsConfigRetriever(true, types.ControllerConfigPath+"tls.crt", types.ControllerConfigPath+"tls.key", types.ControllerConfigPath+"ca.crt")
conn, err := getConnectInfo(types.ControllerConfigPath + "connect.json")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/cmd/site-controller/deploy-watch-all-ns.yaml new/skupper-1.8.3/cmd/site-controller/deploy-watch-all-ns.yaml
--- old/skupper-1.8.2/cmd/site-controller/deploy-watch-all-ns.yaml 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/cmd/site-controller/deploy-watch-all-ns.yaml 2025-01-08 19:00:52.000000000 +0100
@@ -194,7 +194,7 @@
type: RuntimeDefault
containers:
- name: site-controller
- image: quay.io/skupper/site-controller:1.8.2
+ image: quay.io/skupper/site-controller:1.8.3
securityContext:
capabilities:
drop:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/cmd/site-controller/deploy-watch-current-ns.yaml new/skupper-1.8.3/cmd/site-controller/deploy-watch-current-ns.yaml
--- old/skupper-1.8.2/cmd/site-controller/deploy-watch-current-ns.yaml 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/cmd/site-controller/deploy-watch-current-ns.yaml 2025-01-08 19:00:52.000000000 +0100
@@ -137,7 +137,7 @@
type: RuntimeDefault
containers:
- name: site-controller
- image: quay.io/skupper/site-controller:1.8.2
+ image: quay.io/skupper/site-controller:1.8.3
securityContext:
capabilities:
drop:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/pkg/domain/podman/service.go new/skupper-1.8.3/pkg/domain/podman/service.go
--- old/skupper-1.8.2/pkg/domain/podman/service.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/pkg/domain/podman/service.go 2025-01-08 19:00:52.000000000 +0100
@@ -195,7 +195,7 @@
var svcRouterConfig *qdr.RouterConfig
var svcRouterConfigStr string
var configVolume *container.Volume
- svcRouterConfig, svcRouterConfigStr, err = domain.CreateRouterServiceConfig(site, routerConfig, servicePodman)
+ svcRouterConfig, svcRouterConfigStr, err = domain.CreateRouterServiceConfig(site, routerConfig, servicePodman, servicePodman.GetContainerName())
// Creating directory inside skupper-internal volume to store config for service router
configFile := path.Join(servicePodman.Address, types.TransportConfigFile)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/pkg/domain/podman/service_test.go new/skupper-1.8.3/pkg/domain/podman/service_test.go
--- old/skupper-1.8.2/pkg/domain/podman/service_test.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/pkg/domain/podman/service_test.go 2025-01-08 19:00:52.000000000 +0100
@@ -4,11 +4,14 @@
package podman
import (
+ "fmt"
+ "strconv"
"testing"
"github.com/skupperproject/skupper/api/types"
"github.com/skupperproject/skupper/client/container"
"github.com/skupperproject/skupper/pkg/domain"
+ "github.com/skupperproject/skupper/pkg/qdr"
"gotest.tools/assert"
)
@@ -161,3 +164,191 @@
}
})
}
+
+func TestCreateRouterServiceConfig(t *testing.T) {
+
+ fakeService := func(address string, ports []int, containerName string) *Service {
+ svc := &Service{
+ ServiceCommon: &domain.ServiceCommon{
+ Address: address,
+ Ports: ports,
+ Protocol: "tcp",
+ },
+ ContainerName: containerName,
+ }
+ return svc
+ }
+ site := &Site{
+ SiteCommon: &domain.SiteCommon{
+ Name: "my-site-name",
+ Id: "my-site-id",
+ },
+ }
+ parentConfig := &qdr.RouterConfig{
+ LogConfig: map[string]qdr.LogConfig{
+ "DEFAULT": qdr.LogConfig{
+ Module: "DEFAULT",
+ Enable: "info+",
+ },
+ },
+ }
+ egressResolvers := func(service *Service) {
+ service.AddEgressResolver(&domain.EgressResolverHost{
+ Host: "10.0.0.1",
+ Ports: map[int]int{8080: 8080},
+ })
+ service.AddEgressResolver(&domain.EgressResolverHost{
+ Host: "10.0.0.2",
+ Ports: map[int]int{8080: 8081},
+ })
+ }
+ scenarios := []struct {
+ name string
+ service *Service
+ modifier func(*Service)
+ expError bool
+ }{
+ {
+ name: "basic-service-tcp",
+ service: fakeService("address", []int{8080}, ""),
+ },
+ {
+ name: "basic-service-tcp-custom-container",
+ service: fakeService("address", []int{8080}, "custom-address"),
+ },
+ {
+ name: "basic-service-tcp-multiple-ports",
+ service: fakeService("address", []int{8080, 8081, 8082}, ""),
+ },
+ {
+ name: "basic-service-http",
+ service: fakeService("address", []int{8080}, ""),
+ modifier: func(service *Service) {
+ service.Protocol = "http"
+ },
+ },
+ {
+ name: "basic-service-http2",
+ service: fakeService("address", []int{8080}, ""),
+ modifier: func(service *Service) {
+ service.Protocol = "http2"
+ },
+ },
+ {
+ name: "basic-service-tls",
+ service: fakeService("address", []int{8080}, ""),
+ modifier: func(service *Service) {
+ service.TlsCredentials = "my-credentials"
+ },
+ },
+ {
+ name: "basic-service-tcp-with-targets",
+ service: fakeService("address", []int{8080}, ""),
+ modifier: egressResolvers,
+ },
+ {
+ name: "basic-service-http-with-targets",
+ service: fakeService("address", []int{8080}, ""),
+ modifier: func(service *Service) {
+ service.Protocol = "http"
+ egressResolvers(service)
+ },
+ },
+ {
+ name: "basic-service-http2-with-targets",
+ service: fakeService("address", []int{8080}, ""),
+ modifier: func(service *Service) {
+ service.Protocol = "http2"
+ egressResolvers(service)
+ },
+ },
+ }
+ for _, scenario := range scenarios {
+ t.Run(scenario.name, func(t *testing.T) {
+ if scenario.modifier != nil {
+ scenario.modifier(scenario.service)
+ }
+ routerConfig, routerConfigStr, err := domain.CreateRouterServiceConfig(site, parentConfig, scenario.service, scenario.service.GetContainerName())
+ if scenario.expError {
+ assert.Assert(t, err != nil)
+ return
+ }
+ assert.Assert(t, err == nil)
+ assert.Assert(t, routerConfig != nil)
+ assert.Assert(t, routerConfigStr != "")
+
+ var expectedTcpListeners int
+ var expectedHttpListeners int
+ var expectedPorts = len(scenario.service.Ports)
+ switch scenario.service.Protocol {
+ case "tcp":
+ expectedTcpListeners = expectedPorts
+ case "http":
+ expectedHttpListeners = expectedPorts
+ case "http2":
+ expectedHttpListeners = expectedPorts
+ }
+ assert.Equal(t, len(routerConfig.Bridges.TcpListeners), expectedTcpListeners)
+ assert.Equal(t, len(routerConfig.Bridges.HttpListeners), expectedHttpListeners)
+
+ var sslProfilesExpected = 1
+ if scenario.service.IsTls() {
+ sslProfilesExpected++
+ }
+ assert.Equal(t, sslProfilesExpected, len(routerConfig.SslProfiles))
+
+ for _, port := range scenario.service.Ports {
+ addressIndex := fmt.Sprintf("%s:%d", scenario.service.Address, port)
+ if expectedTcpListeners > 0 {
+ tcpListener := routerConfig.Bridges.TcpListeners[addressIndex]
+ if scenario.service.ContainerName == "" {
+ assert.Equal(t, tcpListener.Host, scenario.service.Address)
+ } else {
+ assert.Equal(t, tcpListener.Host, scenario.service.ContainerName)
+ }
+ assert.Equal(t, tcpListener.Address, addressIndex)
+ assert.Equal(t, tcpListener.Port, strconv.Itoa(port))
+
+ assert.Equal(t, len(scenario.service.GetEgressResolvers()), len(routerConfig.Bridges.TcpConnectors))
+ for _, egressResolver := range scenario.service.GetEgressResolvers() {
+ egresses, err := egressResolver.Resolve()
+ assert.Assert(t, err)
+ for _, egress := range egresses {
+ targetHost := egress.GetHost()
+ for _, targetPort := range egress.GetPorts() {
+ connectorName := fmt.Sprintf("%s@%s:%d:%d", scenario.service.Address, targetHost, port, targetPort)
+ connector, ok := routerConfig.Bridges.TcpConnectors[connectorName]
+ assert.Assert(t, ok)
+ assert.Equal(t, strconv.Itoa(targetPort), connector.Port)
+ }
+ }
+ }
+ } else {
+ httpListener := routerConfig.Bridges.HttpListeners[addressIndex]
+ if scenario.service.ContainerName == "" {
+ assert.Equal(t, httpListener.Host, scenario.service.Address)
+ } else {
+ assert.Equal(t, httpListener.Host, scenario.service.ContainerName)
+ }
+ assert.Equal(t, httpListener.Address, addressIndex)
+ assert.Equal(t, httpListener.Port, strconv.Itoa(port))
+
+ assert.Equal(t, len(scenario.service.GetEgressResolvers()), len(routerConfig.Bridges.HttpConnectors))
+ for _, egressResolver := range scenario.service.GetEgressResolvers() {
+ egresses, err := egressResolver.Resolve()
+ assert.Assert(t, err)
+ for _, egress := range egresses {
+ targetHost := egress.GetHost()
+ for _, targetPort := range egress.GetPorts() {
+ connectorName := fmt.Sprintf("%s@%s:%d:%d", scenario.service.Address, targetHost, port, targetPort)
+ connector, ok := routerConfig.Bridges.HttpConnectors[connectorName]
+ assert.Assert(t, ok)
+ assert.Equal(t, strconv.Itoa(targetPort), connector.Port)
+ }
+ }
+ }
+ }
+ }
+ })
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/pkg/domain/podman/site_test.go new/skupper-1.8.3/pkg/domain/podman/site_test.go
--- old/skupper-1.8.2/pkg/domain/podman/site_test.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/pkg/domain/podman/site_test.go 2025-01-08 19:00:52.000000000 +0100
@@ -460,7 +460,7 @@
}, {
ID: strings.Replace(uuid.New().String(), "-", "", -1),
Name: "nginx",
- Image: "docker.io/nginxinc/nginx-unprivileged:stable-alpine",
+ Image: "quay.io/skupper/nginx-unprivileged:stable-alpine",
Labels: map[string]string{},
Networks: map[string]container.ContainerNetworkInfo{
"skupper": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/pkg/domain/service.go new/skupper-1.8.3/pkg/domain/service.go
--- old/skupper-1.8.2/pkg/domain/service.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/pkg/domain/service.go 2025-01-08 19:00:52.000000000 +0100
@@ -199,7 +199,7 @@
}
}
-func CreateRouterServiceConfig(site Site, parentRouterConfig *qdr.RouterConfig, service Service) (*qdr.RouterConfig, string, error) {
+func CreateRouterServiceConfig(site Site, parentRouterConfig *qdr.RouterConfig, service Service, serviceHostname string) (*qdr.RouterConfig, string, error) {
// Create router config
siteName := fmt.Sprintf("%s-%s", site.GetName(), service.GetAddress())
@@ -241,6 +241,7 @@
case "tcp":
svcRouterConfig.AddTcpListener(qdr.TcpEndpoint{
Name: listenerName,
+ Host: serviceHostname,
Port: listenerPort,
Address: listenerAddr,
SiteId: siteId,
@@ -249,6 +250,7 @@
case "http":
svcRouterConfig.AddHttpListener(qdr.HttpEndpoint{
Name: listenerName,
+ Host: serviceHostname,
Port: listenerPort,
Address: listenerAddr,
SiteId: siteId,
@@ -258,6 +260,7 @@
case "http2":
svcRouterConfig.AddHttpListener(qdr.HttpEndpoint{
Name: listenerName,
+ Host: serviceHostname,
Port: listenerPort,
Address: listenerAddr,
SiteId: siteId,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/pkg/flow/flow_mem_driver.go new/skupper-1.8.3/pkg/flow/flow_mem_driver.go
--- old/skupper-1.8.2/pkg/flow/flow_mem_driver.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/pkg/flow/flow_mem_driver.go 2025-01-08 19:00:52.000000000 +0100
@@ -2804,7 +2804,6 @@
diff := uint64(time.Now().UnixNano())/uint64(time.Microsecond) - diffTime
found := false
if diff > wait && flow.Process == nil {
- log.Printf("COLLECTOR: Associating flow %s to external process %s\n", flow.Identity, processName)
for _, process := range fc.Processes {
if process.Name != nil && *process.Name == processName {
flow.Process = &process.Identity
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/pkg/images/images.go new/skupper-1.8.3/pkg/images/images.go
--- old/skupper-1.8.2/pkg/images/images.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/pkg/images/images.go 2025-01-08 19:00:52.000000000 +0100
@@ -2,12 +2,12 @@
const (
DefaultImageRegistry string = "quay.io/skupper"
- RouterImageName string = "skupper-router:2.7.2"
- ServiceControllerImageName string = "service-controller:1.8.2"
- ControllerPodmanImageName string = "controller-podman:1.8.2"
- ConfigSyncImageName string = "config-sync:1.8.2"
- FlowCollectorImageName string = "flow-collector:1.8.2"
- SiteControllerImageName string = "site-controller:1.8.2"
+ RouterImageName string = "skupper-router:2.7.3"
+ ServiceControllerImageName string = "service-controller:1.8.3"
+ ControllerPodmanImageName string = "controller-podman:1.8.3"
+ ConfigSyncImageName string = "config-sync:1.8.3"
+ FlowCollectorImageName string = "flow-collector:1.8.3"
+ SiteControllerImageName string = "site-controller:1.8.3"
PrometheusImageRegistry string = "quay.io/prometheus"
PrometheusServerImageName string = "prometheus:v2.42.0"
OauthProxyImageRegistry string = "quay.io/openshift"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/images/Containerfile.hey new/skupper-1.8.3/test/images/Containerfile.hey
--- old/skupper-1.8.2/test/images/Containerfile.hey 1970-01-01 01:00:00.000000000 +0100
+++ new/skupper-1.8.3/test/images/Containerfile.hey 2025-01-08 19:00:52.000000000 +0100
@@ -0,0 +1,26 @@
+ARG TARGETPLATFORM
+
+FROM --platform=$TARGETPLATFORM golang:1.21 AS builder
+
+ARG TARGETOS
+ARG TARGETARCH
+
+WORKDIR /go/src/app
+RUN git clone https://github.com/rakyll/hey.git ./
+RUN GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o hey ./hey.go
+
+FROM --platform=$TARGETPLATFORM registry.access.redhat.com/ubi9-minimal
+
+# The image needs to be compatible with the older entry point used
+# in the previous version
+RUN ln -s /app/hey /usr/bin/hey_linux_amd64
+
+# Create user and group and switch to user's context
+RUN microdnf -y install shadow-utils \
+&& microdnf clean all
+RUN useradd --uid 10000 runner
+USER 10000
+
+WORKDIR /app
+COPY --from=builder /go/src/app/hey .
+CMD ["/app/hey"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/images/Containerfile.iperf3 new/skupper-1.8.3/test/images/Containerfile.iperf3
--- old/skupper-1.8.2/test/images/Containerfile.iperf3 1970-01-01 01:00:00.000000000 +0100
+++ new/skupper-1.8.3/test/images/Containerfile.iperf3 2025-01-08 19:00:52.000000000 +0100
@@ -0,0 +1,18 @@
+ARG TARGETPLATFORM
+
+FROM --platform=$TARGETPLATFORM quay.io/fedora/fedora-minimal
+
+LABEL description="A supporting test image"
+LABEL maintainer="Skupper project"
+LABEL origin=https://github.com/skupperproject/skupper/blob/main/test/images
+
+EXPOSE 5201
+
+# Create user and group and switch to user's context
+RUN microdnf -y install iperf3 shadow-utils \
+&& microdnf clean all
+RUN useradd --uid 10000 runner
+USER 10000
+
+CMD []
+ENTRYPOINT ["/usr/bin/iperf3"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/images/Containerfile.nghttp2 new/skupper-1.8.3/test/images/Containerfile.nghttp2
--- old/skupper-1.8.2/test/images/Containerfile.nghttp2 1970-01-01 01:00:00.000000000 +0100
+++ new/skupper-1.8.3/test/images/Containerfile.nghttp2 2025-01-08 19:00:52.000000000 +0100
@@ -0,0 +1,11 @@
+ARG TARGETPLATFORM
+
+FROM --platform=$TARGETPLATFORM alpine:latest
+
+LABEL description="A supporting test image containing nghttp2 (client, server and load tester), for Skupper testing. By default, this image does not start any nghttp2 project; the user needs to overwrite CMD with the command they want"
+LABEL maintainer="Skupper project"
+LABEL origin=https://github.com/skupperproject/skupper/blob/main/test/images
+
+RUN apk add --no-cache nghttp2
+
+CMD ["ls"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/images/Containerfile.wrk new/skupper-1.8.3/test/images/Containerfile.wrk
--- old/skupper-1.8.2/test/images/Containerfile.wrk 1970-01-01 01:00:00.000000000 +0100
+++ new/skupper-1.8.3/test/images/Containerfile.wrk 2025-01-08 19:00:52.000000000 +0100
@@ -0,0 +1,17 @@
+ARG TARGETPLATFORM
+
+FROM --platform=$TARGETPLATFORM registry.fedoraproject.org/fedora-minimal AS build
+
+RUN microdnf -y install gcc git make unzip openssl-devel && microdnf -y clean all
+
+WORKDIR /home/root
+RUN git clone https://github.com/wg/wrk.git
+
+WORKDIR /home/root/wrk
+RUN make WITH_OPENSSL=/usr
+
+FROM registry.fedoraproject.org/fedora-minimal
+
+COPY --from=build /home/root/wrk/wrk /usr/bin/wrk
+
+CMD ["/usr/bin/wrk"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/images/Containerfile.wrk2 new/skupper-1.8.3/test/images/Containerfile.wrk2
--- old/skupper-1.8.2/test/images/Containerfile.wrk2 1970-01-01 01:00:00.000000000 +0100
+++ new/skupper-1.8.3/test/images/Containerfile.wrk2 2025-01-08 19:00:52.000000000 +0100
@@ -0,0 +1,13 @@
+ARG TARGETPLATFORM
+
+FROM --platform=$TARGETPLATFORM alpine:latest as builder
+
+RUN apk add --update alpine-sdk openssl-dev zlib-dev && apk add --no-cache git && git clone https://github.com/giltene/wrk2.git && cd wrk2 && make && mv wrk /bin/
+
+
+FROM alpine:latest
+
+RUN apk add --update libgcc openssl zlib
+COPY --from=builder /bin/wrk /bin/
+
+CMD ["/bin/sh"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/images/Dockerfile.nghttp2 new/skupper-1.8.3/test/images/Dockerfile.nghttp2
--- old/skupper-1.8.2/test/images/Dockerfile.nghttp2 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/images/Dockerfile.nghttp2 1970-01-01 01:00:00.000000000 +0100
@@ -1,9 +0,0 @@
-FROM alpine:latest
-
-LABEL description="A supporting test image containing nghttp2 (client, server and load tester), for Skupper testing. By default, this image does not start any nghttp2 project; the user needs to overwrite CMD with the command they want"
-LABEL maintainer="Skupper project"
-LABEL origin=https://github.com/skupperproject/skupper/blob/main/test/images
-
-RUN apk add --no-cache nghttp2
-
-CMD ["ls"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/images/Makefile new/skupper-1.8.3/test/images/Makefile
--- old/skupper-1.8.2/test/images/Makefile 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/images/Makefile 2025-01-08 19:00:52.000000000 +0100
@@ -1,30 +1,35 @@
# This make file provides three operations:
#
-# - Copy a list of images (hardcoded below) to a main repository (by default,
-# quay.io/skupper)
-# - Generate and push images to that same repository, based on Dockerfiles
-# - Copy both lists of images above (external and generated) to another,
-# configurable repository
+# - Copy (replicate) a list of images (hardcoded below) to a main repository
+# (by default, quay.io/skupper), possibly modifying and reassembling them
+# - Generate and push images to that same repository, based on Containerfiles
+# located on this directory
+# - Copy both lists of images above (replicated and generated) to another,
+# configurable repository, along with other two lists, which are generally
+# used from their original locations ('other' and 'external').
#
# See the README.md for the rationale of each of them.
#
-# The basic operation is to copy or generate-and-push a single image into
+# The basic operation is to replicate or generate-and-push a single image into
# the MAIN_REPO:
#
# make docker.io/svagi/nghttp2
+# make docker.io/nginxinc/nginx-unprivileged
# make nghttp2
#
-# The possible values are those listed on EXTERNAL_IMAGES and GENERATED_IMAGES.
+# The possible values are those listed on REPLICATED_IMAGES, REASSEMBLED_IMAGES
+# and GENERATED_IMAGES.
#
# You can also only build an image (and not push it). Just add _build to the
# image name listed in GENERATED_IMAGES:
#
# make nghttp2_build
#
-# Alternativelly, one can build/push or copy all generated, all external, or
-# all of them:
+# Alternativelly, one can build/push or copy all generated, all replicated, all
+# reassembled, or all of them:
#
-# make external_images
+# make replicated_images
+# make reassembled_images
# make generated_images
# make everything
#
@@ -35,9 +40,9 @@
# As with any Makefile, you can configure the execution by setting variables
# on the make invocation:
#
-# make MAIN_REPO=quay.io/dhashimo docker.io/ssorj/quiver
+# make MAIN_REPO=quay.io/dhashimo docker.io/library/redis:alpine
#
-# The command above will copy docker.io/ssorj/quiver into the quay repository
+# The command above will copy docker.io/library/redis:alpine into the quay repository
# quay.io/dhashimo, instead of the default MAIN_REPO
#
# make MAIN_REPO=quay.io/dhashimo everything
@@ -50,15 +55,16 @@
#
# make COPY_REPO=192.168.0.1:5000/internal copy
#
-# The command above will copy all images (external and generated, as listed
-# below) from the MAIN_REPO into the 'internal' repository within the
-# registry running at 192.168.0.1:5000.
+# The command above will copy all images (replicated, generated, reassembled,
+# external and other, as listed below) from the MAIN_REPO into the 'internal'
+# repository within the registry running at 192.168.0.1:5000.
#
# Individual items can also be specified. For that, just add '_copy' to
# their main target names:
#
# make COPY_REPO=192.168.0.1:5000/internal nghttp2_copy
-# make COPY_REPO=192.168.0.1:5000/internal docker.io/ssorj/quiver_copy
+# make COPY_REPO=192.168.0.1:5000/internal docker.io/library/redis:alpine_copy
+# make COPY_REPO=192.168.0.1:5000/internal docker.io/nginxinc/nginx-unprivileged_copy
#
# This Makefile is intended to be executed manually, with the login of
# individual users, and not by a robot account on a CI.
@@ -80,32 +86,89 @@
# That is required for their use with Openshift 3.11
FORMAT_OPTIONS = --format docker
TRANSFORM_OPTIONS = --format v2s2
+PLATFORM = linux/amd64,linux/arm64
# Repositories
MAIN_REPO = quay.io/skupper
COPY_REPO = localhost:5000/local
-# This is the list of external images that will be copied to $(MAIN_REPO). If
+# Set this to copy a specific tag from quay.io/skupper/skupper-tests on
+# the copy operation. If you do so, include the colon - ":1.5"
+SKUPPER_TESTS_IMAGE_VERSION =
+
+# This is the list of replicated images that will be copied to $(MAIN_REPO). If
# the image specifies a tag, make sure to escape the colon with a backslash
# (such as in docker.io/library/mongo\:5.0). Otherwise, you'll get an error
# like `multiple target patterns. Stop.`
-EXTERNAL_IMAGES := \
- docker.io/nginxinc/nginx-unprivileged \
- docker.io/ssorj/quiver \
+REPLICATED_IMAGES := \
+ docker.io/library/postgres\:9.5 \
+
+
+# These manifest lists require special handling; they contain 'images' with
+# os/arch/variant "unknown" and the following entry in LayersData.Annotations:
+#
+# in-toto.io/predicate-type": "https://slsa.dev/provenance/v0.2
+#
+# That makes a plain skopeo copy --all --format v2s2 to fail with an error
+# like the one below:
+#
+# copying image 8/14 from manifest list: creating an updated image manifest: Unknown media type during manifest conversion: "application/vnd.in-toto+json"
+#
+# (see https://github.com/containers/skopeo/issues/1874)
+#
+# For that reason, we need to first copy the image locally, change its
+# manifest, and only then copy it to its destination.
+REASSEMBLED_IMAGES := \
+ docker.io/library/mongo\:5.0 \
docker.io/library/postgres \
docker.io/library/redis \
- docker.io/maistra/examples-bookinfo-productpage-v1\:0.12.0 \
- docker.io/maistra/examples-bookinfo-ratings-v1\:0.12.0 \
- docker.io/maistra/examples-bookinfo-details-v1\:0.12.0 \
- docker.io/maistra/examples-bookinfo-reviews-v3\:0.12.0 \
- docker.io/library/mongo\:5.0 \
- docker.io/nginxinc/nginx-unprivileged\:stable-alpine
+ docker.io/nginxinc/nginx-unprivileged \
+ docker.io/nginxinc/nginx-unprivileged\:stable-alpine \
+ docker.io/library/redis\:alpine \
+ docker.io/istio/examples-bookinfo-productpage-v1\:1.19.1 \
+ docker.io/istio/examples-bookinfo-ratings-v1\:1.19.1 \
+ docker.io/istio/examples-bookinfo-details-v1\:1.19.1 \
+ docker.io/istio/examples-bookinfo-reviews-v3\:1.19.1
# These are the images that are generated by this Makefile (as opposed to
# created elsewhere and just copied here). To add a new image, simply create
-# Dockerfile.IMAGENAME and add the IMAGENAME below.
+# Containerfile.IMAGENAME and add the IMAGENAME below.
GENERATED_IMAGES := \
- nghttp2
+ hey \
+ iperf3 \
+ nghttp2 \
+ wrk
+
+# wrk2 does not support ARM: https://github.com/giltene/wrk2/issues/104
+
+# These are generated by other repositories under https://github.com/skupperproject/,
+# and placed directly on quay. We list them here, so they can be part of the list of images
+# to be copied to a private repo
+OTHER_IMAGES := \
+ quay.io/skupper/wrk2 \
+ quay.io/skupper/tcp-go-echo \
+ quay.io/skupper/hello-world-frontend \
+ quay.io/skupper/hello-world-backend \
+ quay.io/skupper/skupper-tests${SKUPPER_TESTS_IMAGE_VERSION}
+
+# These images are external to the project, and they are not copied into our quay;
+# the tests access them with their original names, and we do not do any special
+# handling on them. They are listed here just so they can be used on the copy
+# operation.
+EXTERNAL_IMAGES := \
+ quay.io/ssorj/quiver \
+ gcr.io/google-samples/microservices-demo/adservice\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/cartservice\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/checkoutservice\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/currencyservice\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/emailservice\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/frontend\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/loadgenerator\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/paymentservice\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/productcatalogservice\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/recommendationservice\:v0.10.1 \
+ gcr.io/google-samples/microservices-demo/shippingservice\:v0.10.1 \
+ registry.access.redhat.com/rhscl/postgresql-95-rhel7
# --- end of configuration ---
@@ -116,7 +179,10 @@
# The copy target names, to be used with the copy operation
generated_copy := $(patsubst %,%_copy,$(GENERATED_IMAGES))
-external_copy := $(patsubst %,%_copy,$(EXTERNAL_IMAGES))
+replicated_copy := $(patsubst %,%_copy,$(REPLICATED_IMAGES))
+reassembled_copy := $(patsubst %,%_copy,$(REASSEMBLED_IMAGES))
+external_copy := $(patsubst %,%_copy,$(EXTERNAL_IMAGES))
+other_copy := $(patsubst %,%_copy,$(OTHER_IMAGES))
# We don't want someone to just run `make` and start copying stuff
# around, so instead the default operation is to just give some
@@ -129,52 +195,118 @@
@echo Normal use, however, is to select individual targets.
@echo Check Makefile contents for documentation.
-# For a generated image, we simply have a Dockerfile named after it and call
+# For a generated image, we simply have a Containerfile named after it and call
# `podman build` on it, tagging it on the MAIN_REPO
+# TODO: list Containerfiles as pre-reqs?
$(generated_build): TARGET = $(patsubst %_build,%,$@)
$(generated_build):
- $(PODMAN) build $(FORMAT_OPTIONS) --file Dockerfile.$(TARGET) --tag $(MAIN_REPO)/$(TARGET)
+ # Generate $(TARGET)
+# First, we need to remove any existing manifest, as the command below is additive
+# (it would append builds to an existing manifest)
+ -$(PODMAN) manifest rm $(MAIN_REPO)/$(TARGET)
+ $(PODMAN) build --platform $(PLATFORM) --no-cache $(FORMAT_OPTIONS) --file Containerfile.$(TARGET) --manifest $(MAIN_REPO)/$(TARGET)
-# This is generic the push target, for images built here (GENERATED_IMAGES)
+# This is the generic push target, for images built here (GENERATED_IMAGES)
# Each image depends on its respective _build target
%: %_build
- $(PODMAN) push $(MAIN_REPO)/$@
+ $(PODMAN) manifest push $(MAIN_REPO)/$@
# Shortcut targets
-external_images: $(EXTERNAL_IMAGES)
+replicated_images: $(REPLICATED_IMAGES)
+reassembled_images: $(REASSEMBLED_IMAGES)
generated_images: $(GENERATED_IMAGES)
-everything: external_images generated_images
+# note OTHER_IMAGES and EXTERNAL_IMAGES are not part of 'everything', as these
+# are already in the places where the tests get them from; they're used only
+# on the copy operation
+everything: replicated_images generated_images reassembled_images
-# This is the main target for the external images; it copies them from their
+# This is the main target for the replicated images; it copies them from their
# original locations _into_ MAIN_REPO. Do not confuse this for the `copy` operation
# below, that copies _from_ MAIN_REPO into COPY_REPO.
#
# The first line prepares a target-local TARGET variable, which contains only
+# the last part of the URL (the image name proper + tag)
+$(REPLICATED_IMAGES): TARGET = $(shell echo "$@" | sed s_.*/__ )
+$(REPLICATED_IMAGES):
+ # Copy $(TARGET) from the replicated list
+ $(SKOPEO) copy --all $(TRANSFORM_OPTIONS) \
+ docker://$@ \
+ docker://$(MAIN_REPO)/$(TARGET)
+
+# This is the main target for the reassembled images; it copies them from their
+# original locations to a temporary directory, modifies the manifest.json and then
+# copies them _into_ MAIN_REPO.
+#
+# The first line prepares a target-local TARGET variable, which contains only
# the last part of the URL
-$(EXTERNAL_IMAGES): TARGET = $(shell echo "$@" | sed s_.*/__ )
-$(EXTERNAL_IMAGES):
- $(SKOPEO) copy $(TRANSFORM_OPTIONS) \
+$(REASSEMBLED_IMAGES): TARGET = $(shell echo "$@" | sed s_.*/__ )
+$(REASSEMBLED_IMAGES): REASSEMBLE_TMPDIR ::= /tmp/$(shell mktemp -d image-reassembly-XXX )
+$(REASSEMBLED_IMAGES):
+ # Reassemble $(TARGET)
+ $(SKOPEO) copy --all \
docker://$@ \
+ dir://$(REASSEMBLE_TMPDIR)
+
+ ls $(REASSEMBLE_TMPDIR)
+
+ jq \
+ '(.manifests[] | select (.platform.os == "unknown")) |= del (.) | del (..|nulls)' \
+ $(REASSEMBLE_TMPDIR)/manifest.json > $(REASSEMBLE_TMPDIR)/manifest.json.new
+
+ mv $(REASSEMBLE_TMPDIR)/manifest.json.new $(REASSEMBLE_TMPDIR)/manifest.json
+
+ $(SKOPEO) copy --all $(TRANSFORM_OPTIONS) \
+ dir://$(REASSEMBLE_TMPDIR) \
docker://$(MAIN_REPO)/$(TARGET)
+ rm -rf $(REASSEMBLE_TMPDIR)
+
#
# Copy operation
#
-copy: $(generated_copy) $(external_copy)
+copy: $(generated_copy) $(replicated_copy) $(reassembled_copy) $(external_copy) $(other_copy)
-# The targets for external and generated images are basically the same; the
+# The targets for replicated and generated images are basically the same; the
# only difference is the way the original/main target needs to be manipulated
# to generate the image name+tag (saved in the target-local variable TARGET).
$(generated_copy): TARGET = $(patsubst %_copy,%,$@)
$(generated_copy):
- $(SKOPEO) copy $(TRANSFORM_OPTIONS) \
+ # copy $(TARGET) from generated list
+ $(SKOPEO) copy --all $(TRANSFORM_OPTIONS) \
docker://$(MAIN_REPO)/$(TARGET) \
docker://$(COPY_REPO)/$(TARGET)
-# Remove _copy, but also everything till the last /
-$(external_copy): TARGET = $(shell echo "$@" | sed -e "s/_copy$$//" -e 's_.*/__' )
-$(external_copy):
- $(SKOPEO) copy $(TRANSFORM_OPTIONS) \
+# Remove _copy, but also everything till the last "/" (registry and prefix),
+# as we'll use MAIN_REPO and COPY_REPO, instead.
+$(replicated_copy): TARGET = $(shell echo "$@" | sed -e "s/_copy$$//" -e 's_.*/__' )
+$(replicated_copy):
+ # copy $(TARGET) from the replicated list
+ $(SKOPEO) copy --all $(TRANSFORM_OPTIONS) \
docker://$(MAIN_REPO)/$(TARGET) \
docker://$(COPY_REPO)/$(TARGET)
+
+$(reassembled_copy): TARGET = $(shell echo "$@" | sed -e "s/_copy$$//" -e 's_.*/__' )
+$(reassembled_copy):
+ # copy $(TARGET) from the reassembled list
+ $(SKOPEO) copy --all $(TRANSFORM_OPTIONS) \
+ docker://$(MAIN_REPO)/$(TARGET) \
+ docker://$(COPY_REPO)/$(TARGET)
+
+# OTHER_IMAGES reside on quay.io/skupper, but are not originally generated or
+# copied by this Makefile; still, when doing the copy operation, we can set them
+# to be read from a different MAIN_REPO
+$(other_copy): TARGET = $(shell echo "$@" | sed -e "s/_copy$$//" -e 's_.*/__' )
+$(other_copy):
+ # copy $(TARGET) from the other list
+ $(SKOPEO) copy --all $(TRANSFORM_OPTIONS) \
+ docker://$(MAIN_REPO)/$(TARGET) \
+ docker://$(COPY_REPO)/$(TARGET)
+
+# Here, the copy is from the original registry
+$(external_copy): TARGET = $(patsubst %_copy,%,$@)
+$(external_copy):
+ # copy $(TARGET) from the external list
+ $(SKOPEO) copy --all $(TRANSFORM_OPTIONS) \
+ docker://$(TARGET) \
+ docker://$(COPY_REPO)/$(TARGET)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/images/README.md new/skupper-1.8.3/test/images/README.md
--- old/skupper-1.8.2/test/images/README.md 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/images/README.md 2025-01-08 19:00:52.000000000 +0100
@@ -1,4 +1,4 @@
-# Images for external dependencies
+# Images for external test dependencies
The Makefile on this directory allows for the manipulation of container images
pertaining to external test dependencies, such as Mongo or quiver.
@@ -9,7 +9,7 @@
The second operation was created in response to an image used by our tests that
stopped getting updates, while the actual project continued to evolve. It
-builds images from Dockerfile and pushes them into our Quay repo.
+builds images from Containerfiles and pushes them into our Quay repo.
Finally, the third one also allows for the running of tests on disconnected
clusters, which cannot access the original locations of these dependencies to
@@ -26,6 +26,10 @@
contained on the Makefile. Skupper images (such as the router or controller)
are not copied by this operation.
+Note also that it is not a simple copy. As Skupper can run on some older
+Kubernetes that do not support the OCI format, there are some transformations
+done during the copy as well.
+
See the Makefile contents for information on how to execute the different
operations.
@@ -33,5 +37,5 @@
# skupper-test image
Note that the `skupper-test` image used by Skupper integration is part of
-Skupper's own test code, so it's build by the main Makefile at ../.., and not
+Skupper's own test code, so it's built by the main Makefile at ../.., and not
here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/acceptance/custom/basic/basic.go new/skupper-1.8.3/test/integration/acceptance/custom/basic/basic.go
--- old/skupper-1.8.2/test/integration/acceptance/custom/basic/basic.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/acceptance/custom/basic/basic.go 2025-01-08 19:00:52.000000000 +0100
@@ -76,9 +76,21 @@
const secretFile = "/tmp/public_basic_1_secret.yaml"
if tokenType == "claim" {
- err = pub1Cluster.VanClient.TokenClaimCreateFile(ctx, types.DefaultVanName, []byte(createOptsPublic.Password), 15*time.Minute, 1, secretFile)
+ err = utils.RetryError(3*time.Second, 5, func() error {
+ err := pub1Cluster.VanClient.TokenClaimCreateFile(ctx, types.DefaultVanName, []byte(createOptsPublic.Password), 15*time.Minute, 1, secretFile)
+ if err == nil {
+ return nil
+ }
+ return err
+ })
} else {
- err = pub1Cluster.VanClient.ConnectorTokenCreateFile(ctx, types.DefaultVanName, secretFile)
+ err = utils.RetryError(3*time.Second, 5, func() error {
+ err := pub1Cluster.VanClient.ConnectorTokenCreateFile(ctx, types.DefaultVanName, secretFile)
+ if err == nil {
+ return nil
+ }
+ return err
+ })
}
assert.Assert(t, err)
@@ -232,6 +244,7 @@
skip: base.MultipleClusters(),
skipReason: SkipReasonIngressNone,
testSync: true,
+ tokenType: "claim",
createOptsPublic: types.SiteConfigSpec{
SkupperName: "",
RouterMode: string(types.TransportModeInterior),
@@ -297,9 +310,10 @@
},
},
{
- id: "interiors-ingress-default",
- doc: "Connecting two interiors with ingress=default (route if available or loadbalancer)",
- testSync: false,
+ id: "interiors-ingress-default",
+ doc: "Connecting two interiors with ingress=default (route if available or loadbalancer)",
+ testSync: false,
+ tokenType: "claim",
createOptsPublic: types.SiteConfigSpec{
SkupperName: "",
RouterMode: string(types.TransportModeInterior),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/examples/custom/hipstershop/hipstershop.go new/skupper-1.8.3/test/integration/examples/custom/hipstershop/hipstershop.go
--- old/skupper-1.8.2/test/integration/examples/custom/hipstershop/hipstershop.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/examples/custom/hipstershop/hipstershop.go 2025-01-08 19:00:52.000000000 +0100
@@ -10,6 +10,7 @@
"github.com/skupperproject/skupper/api/types"
"github.com/skupperproject/skupper/pkg/utils"
+ "github.com/skupperproject/skupper/test/utils/arch"
"github.com/skupperproject/skupper/test/utils/base"
"github.com/skupperproject/skupper/test/utils/constants"
"github.com/skupperproject/skupper/test/utils/k8s"
@@ -50,6 +51,11 @@
prv1, err := testRunner.GetPrivateContext(1)
assert.Assert(t, err)
+ // Hipstershop is currently supported only on amd64
+ //
+ // https://github.com/GoogleCloudPlatform/microservices-demo/issues/622#issuec…
+ assert.Assert(t, arch.Skip(t, pub1, pub2, prv1))
+
// creating namespaces
assert.Assert(t, pub1.CreateNamespace())
assert.Assert(t, pub2.CreateNamespace())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/examples/http/http.go new/skupper-1.8.3/test/integration/examples/http/http.go
--- old/skupper-1.8.2/test/integration/examples/http/http.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/examples/http/http.go 2025-01-08 19:00:52.000000000 +0100
@@ -643,7 +643,7 @@
{
Name: "h1heybase",
Image: "quay.io/skupper/hey",
- Command: []string{"hey_linux_amd64"},
+ Command: []string{"/app/hey"},
ImagePullPolicy: apiv1.PullAlways,
},
},
@@ -809,7 +809,7 @@
}
}
-func runTests(t *testing.T, r base.ClusterTestRunner) {
+func runTests(t *testing.T, r *base.ClusterTestRunnerBase) {
pubCluster1, err := r.GetPublicContext(1)
assert.Assert(t, err)
@@ -891,7 +891,7 @@
runHeyTestTable(t, pubCluster1)
}
-func setup(ctx context.Context, t *testing.T, r base.ClusterTestRunner) {
+func setup(ctx context.Context, t *testing.T, r *base.ClusterTestRunnerBase) {
prv1Cluster, err := r.GetPrivateContext(1)
assert.Assert(t, err)
@@ -1003,13 +1003,18 @@
}
-func Run(ctx context.Context, t *testing.T, r base.ClusterTestRunner) {
+func Run(ctx context.Context, t *testing.T, r *base.ClusterTestRunnerBase) {
defer tearDown(ctx, r)
+ defer func() {
+ if t.Failed() {
+ r.DumpTestInfo("TestHttp")
+ }
+ }()
setup(ctx, t, r)
runTests(t, r)
}
-func tearDown(ctx context.Context, r base.ClusterTestRunner) {
+func tearDown(ctx context.Context, r *base.ClusterTestRunnerBase) {
prv1Cluster, _ := r.GetPrivateContext(1)
// Deleting Skupper services
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/examples/tcp_echo/tcp_echo.go new/skupper-1.8.3/test/integration/examples/tcp_echo/tcp_echo.go
--- old/skupper-1.8.2/test/integration/examples/tcp_echo/tcp_echo.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/examples/tcp_echo/tcp_echo.go 2025-01-08 19:00:52.000000000 +0100
@@ -177,13 +177,17 @@
endTime = time.Now().Add(constants.ImagePullingAndResourceCreationTimeout)
job, err := k8s.WaitForJob(pub1Cluster.Namespace, pub1Cluster.VanClient.KubeClient, jobName, endTime.Sub(time.Now()))
+ if err != nil {
+ pub1Cluster.KubectlExec("logs job/" + jobName)
+ }
assert.Assert(t, err)
- pub1Cluster.KubectlExec("logs job/" + jobName)
k8s.AssertJob(t, job)
job, err = k8s.WaitForJob(prv1Cluster.Namespace, prv1Cluster.VanClient.KubeClient, jobName, endTime.Sub(time.Now()))
+ if err != nil {
+ prv1Cluster.KubectlExec("logs job/" + jobName)
+ }
assert.Assert(t, err)
- prv1Cluster.KubectlExec("logs job/" + jobName)
k8s.AssertJob(t, job)
netcatJobName := fmt.Sprintf("netcat-%s", svc.Address)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/performance/amqp_test.go new/skupper-1.8.3/test/integration/performance/amqp_test.go
--- old/skupper-1.8.2/test/integration/performance/amqp_test.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/performance/amqp_test.go 2025-01-08 19:00:52.000000000 +0100
@@ -14,6 +14,7 @@
"testing"
"time"
+ "github.com/skupperproject/skupper/pkg/images"
"github.com/skupperproject/skupper/test/integration/performance/common"
"github.com/skupperproject/skupper/test/utils/base"
"github.com/skupperproject/skupper/test/utils/k8s"
@@ -222,7 +223,7 @@
func getAmqpDeployment() *appsv1.Deployment {
dep, _ := k8s.NewDeployment("amqp-server", "", k8s.DeploymentOpts{
- Image: "quay.io/skupper/skupper-router:2.6.1",
+ Image: images.GetRouterImageName(),
Labels: map[string]string{"app": "amqp-server"},
})
return dep
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/performance/common/perfrunner.go new/skupper-1.8.3/test/integration/performance/common/perfrunner.go
--- old/skupper-1.8.2/test/integration/performance/common/perfrunner.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/performance/common/perfrunner.go 2025-01-08 19:00:52.000000000 +0100
@@ -11,6 +11,7 @@
"github.com/skupperproject/skupper/api/types"
"github.com/skupperproject/skupper/pkg/kube"
"github.com/skupperproject/skupper/pkg/utils"
+ "github.com/skupperproject/skupper/test/utils/arch"
"github.com/skupperproject/skupper/test/utils/base"
"github.com/skupperproject/skupper/test/utils/constants"
"github.com/skupperproject/skupper/test/utils/k8s"
@@ -69,6 +70,18 @@
}
for _, job := range app.Client.Jobs {
+ if job.Job.Labels["type"] == "wrk2" {
+ // wrk2 is not available for arm64
+ // https://github.com/giltene/wrk2/issues/104
+ err, skip := arch.Check(clientCluster)
+ if skip {
+ logger.Printf("! Skipping job %q: %v", job.Name, err)
+ continue
+ }
+ if err != nil {
+ return err
+ }
+ }
resultInfo := resultInfo{job: job}
stepLog.Printf("- Running client job %s at %s", job.Name, clientCluster.Namespace)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/performance/common/setup.go new/skupper-1.8.3/test/integration/performance/common/setup.go
--- old/skupper-1.8.2/test/integration/performance/common/setup.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/performance/common/setup.go 2025-01-08 19:00:52.000000000 +0100
@@ -22,6 +22,7 @@
"github.com/skupperproject/skupper/pkg/kube"
pkgutils "github.com/skupperproject/skupper/pkg/utils"
"github.com/skupperproject/skupper/test/utils"
+ "github.com/skupperproject/skupper/test/utils/arch"
"github.com/skupperproject/skupper/test/utils/base"
"github.com/skupperproject/skupper/test/utils/constants"
v1 "k8s.io/api/core/v1"
@@ -37,6 +38,13 @@
debug bool
)
+// Tests do not have access to common.testRunner, so they can call this
+// function to check on cluster architectures, and skip accordingly.
+func CheckArch(t *testing.T) error {
+ err := arch.Skip(t, testRunner.ClusterContexts...)
+ return err
+}
+
func DebugMode() bool {
return debug
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/performance/http_test.go new/skupper-1.8.3/test/integration/performance/http_test.go
--- old/skupper-1.8.2/test/integration/performance/http_test.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/performance/http_test.go 2025-01-08 19:00:52.000000000 +0100
@@ -324,7 +324,7 @@
for _, clients := range settings.clients {
// wrk job
jobWrkName := fmt.Sprintf("%s-wrk-clients-%d", jobPrefix, clients)
- labelsWrk := map[string]string{"job": jobWrkName}
+ labelsWrk := map[string]string{"job": jobWrkName, "type": "wrk"}
job := &batchv1.Job{
ObjectMeta: metav1.ObjectMeta{Name: jobWrkName, Labels: labelsWrk},
Spec: batchv1.JobSpec{
@@ -355,7 +355,7 @@
log.Printf("rate is required for wrk2 - setting to (default) %d", wrk2Rate)
}
jobWrk2Name := fmt.Sprintf("%s-wrk2-rate-%d-clients-%d", jobPrefix, wrk2Rate, clients)
- labelsWrk2 := map[string]string{"job": jobWrk2Name}
+ labelsWrk2 := map[string]string{"job": jobWrk2Name, "type": "wrk2"}
job = &batchv1.Job{
ObjectMeta: metav1.ObjectMeta{Name: jobWrk2Name, Labels: labelsWrk2},
Spec: batchv1.JobSpec{
@@ -374,6 +374,7 @@
},
},
}
+
jobs = append(jobs, common.JobInfo{
Name: jobWrk2Name,
Clients: clients,
@@ -382,7 +383,7 @@
// hey job
jobHeyName := fmt.Sprintf("%s-hey-clients-%d", jobPrefix, clients)
- labelsHey := map[string]string{"job": jobHeyName}
+ labelsHey := map[string]string{"job": jobHeyName, "type": "hey"}
heyArgs := []string{"-z", strconv.Itoa(settings.duration) + "s", "-c", strconv.Itoa(clients)}
if settings.rate > 0 {
heyArgs = append(heyArgs, "-q", strconv.Itoa(settings.rate))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/integration/performance/postgres_test.go new/skupper-1.8.3/test/integration/performance/postgres_test.go
--- old/skupper-1.8.2/test/integration/performance/postgres_test.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/integration/performance/postgres_test.go 2025-01-08 19:00:52.000000000 +0100
@@ -45,6 +45,10 @@
}
func TestPostgres(t *testing.T) {
+ // TestPostgres is currently not functional for ARM
+ // https://github.com/skupperproject/skupper/issues/1650
+ common.CheckArch(t)
+
settings := parsePostgresSettings()
p := &PostgresTest{
Name: "postgres",
@@ -61,6 +65,7 @@
LatencyUnit: common.LatencyUnitMs,
}
assert.Assert(t, common.RunPerformanceTest(p))
+
}
func (p *PostgresTest) App() common.PerformanceApp {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/utils/arch/k8s.go new/skupper-1.8.3/test/utils/arch/k8s.go
--- old/skupper-1.8.2/test/utils/arch/k8s.go 1970-01-01 01:00:00.000000000 +0100
+++ new/skupper-1.8.3/test/utils/arch/k8s.go 2025-01-08 19:00:52.000000000 +0100
@@ -0,0 +1,55 @@
+package arch
+
+import (
+ "context"
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/skupperproject/skupper/test/utils/base"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+// If the target clusters are found to contain any non-amd64 nodes, return true.
+//
+// Notice that only the cluster is checked to be amd64; if the VM needs checked,
+// use build flags or some other technique.
+//
+// Usage: check first skip; only check err if skip is false. If skip is true, error
+// will be non-nil, with information on why skipping
+//
+// TODO: make it more granular, allow for hibrid clusters?
+// TODO: allow for list of accepted archs?
+func Check(clusters ...*base.ClusterContext) (err error, skip bool) {
+
+ ctx, cancel := context.WithTimeout(context.Background(), time.Minute*10)
+ defer cancel()
+
+ for _, c := range clusters {
+ list, err := c.VanClient.KubeClient.CoreV1().Nodes().List(ctx, v1.ListOptions{})
+ if err != nil {
+ return err, false
+ }
+ for _, node := range list.Items {
+ arch := node.Labels["beta.kubernetes.io/arch"]
+ if arch != "amd64" {
+ return fmt.Errorf(
+ "at least one cluster node is not amd64 -- skipping (%s at %s is %q)",
+ node.Name,
+ c.VanClient.RestConfig.Host,
+ arch,
+ ), true
+ }
+ }
+ }
+ return nil, false
+}
+
+// Calls arch.Check, and skip the test as needed
+func Skip(t *testing.T, clusters ...*base.ClusterContext) error {
+ err, skip := Check(clusters...)
+ if skip {
+ t.Skipf("%v", err)
+ }
+ return err
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/utils/k8s/job.go new/skupper-1.8.3/test/utils/k8s/job.go
--- old/skupper-1.8.2/test/utils/k8s/job.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/utils/k8s/job.go 2025-01-08 19:00:52.000000000 +0100
@@ -175,19 +175,29 @@
case <-timeoutCh:
return nil, fmt.Errorf("Timeout: Job is still active: %s", jobName)
case <-tick:
- job, _ := jobsClient.Get(context.TODO(), jobName, metav1.GetOptions{})
+ job, err := jobsClient.Get(context.TODO(), jobName, metav1.GetOptions{})
+
+ if err != nil {
+ return nil, err // Handle the error
+ }
if job.Status.Active > 0 {
fmt.Println("Job is still active")
} else if len(job.Status.Conditions) > 0 {
- if job.Status.Conditions[0].Type == batchv1.JobComplete {
- fmt.Println("Job Successful!")
- return job, nil
- } else if job.Status.Conditions[0].Type == batchv1.JobFailed {
- statusJson, _ := json.Marshal(job.Status)
- fmt.Printf("Job failed?, status = %v\n", string(statusJson))
- return job, fmt.Errorf("Job failed. Status: %s", string(statusJson))
+ for _, condition := range job.Status.Conditions {
+ switch condition.Type {
+ case batchv1.JobComplete:
+ fmt.Println("Job Successful!")
+ return job, nil
+ case batchv1.JobFailed:
+ statusJson, _ := json.Marshal(job.Status)
+ fmt.Printf("Job failed?, status = %v\n", string(statusJson))
+ return job, fmt.Errorf("Job failed. Status: %s", string(statusJson))
+ }
}
+ // No terminal condition detected above
+ statusJson, _ := json.Marshal(job.Status)
+ fmt.Printf("Job is not active, but it is neither successful nor failed. Status:\n%v\n", string(statusJson))
} else {
fmt.Println("Waiting on job condition")
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/skupper-1.8.2/test/utils/tools/curl.go new/skupper-1.8.3/test/utils/tools/curl.go
--- old/skupper-1.8.2/test/utils/tools/curl.go 2024-11-04 12:08:20.000000000 +0100
+++ new/skupper-1.8.3/test/utils/tools/curl.go 2025-01-08 19:00:52.000000000 +0100
@@ -204,7 +204,7 @@
},
Spec: v1.PodSpec{
Containers: []v1.Container{
- {Name: "curl", Image: "curlimages/curl", Command: strings.Split("tail -f /dev/null", " ")},
+ {Name: "curl", Image: "quay.io/curl/curl", Command: strings.Split("tail -f /dev/null", " ")},
},
RestartPolicy: v1.RestartPolicyAlways,
TerminationGracePeriodSeconds: &terminationPeriodSecs,
++++++ skupper.obsinfo ++++++
--- /var/tmp/diff_new_pack.VH5S0Z/_old 2025-01-09 15:12:33.301034319 +0100
+++ /var/tmp/diff_new_pack.VH5S0Z/_new 2025-01-09 15:12:33.301034319 +0100
@@ -1,5 +1,5 @@
name: skupper
-version: 1.8.2
-mtime: 1730718500
-commit: 149f4a5588c532d6ab1fc489b19ca24633e521e7
+version: 1.8.3
+mtime: 1736359252
+commit: f9c88e4e90f0a7f916e9b5d29e8dce5d2340f78e
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/skupper/vendor.tar.gz /work/SRC/openSUSE:Factory/.skupper.new.1881/vendor.tar.gz differ: char 12, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package apko for openSUSE:Factory checked in at 2025-01-09 15:11:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/apko (Old)
and /work/SRC/openSUSE:Factory/.apko.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apko"
Thu Jan 9 15:11:40 2025 rev:32 rq:1236094 version:0.22.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/apko/apko.changes 2025-01-07 20:54:28.851546674 +0100
+++ /work/SRC/openSUSE:Factory/.apko.new.1881/apko.changes 2025-01-09 15:12:24.264659963 +0100
@@ -1,0 +2,12 @@
+Thu Jan 09 06:40:49 UTC 2025 - opensuse_buildservice(a)ojkastl.de
+
+- Update to version 0.22.6:
+ * Base32-encode etag values (#1470)
+ * build(deps): bump docker/setup-qemu-action from 3.2.0 to 3.3.0
+ (#1469)
+ * Add the extra flags to `build-minirootfs` (#1467)
+ * Fix logging output of user.GID (#1466)
+ * build(deps): bump google.golang.org/api from 0.214.0 to 0.215.0
+ (#1465)
+
+-------------------------------------------------------------------
Old:
----
apko-0.22.5.obscpio
New:
----
apko-0.22.6.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ apko.spec ++++++
--- /var/tmp/diff_new_pack.0YtJLi/_old 2025-01-09 15:12:26.352746457 +0100
+++ /var/tmp/diff_new_pack.0YtJLi/_new 2025-01-09 15:12:26.368747120 +0100
@@ -17,7 +17,7 @@
Name: apko
-Version: 0.22.5
+Version: 0.22.6
Release: 0
Summary: Build OCI images from APK packages directly without Dockerfile
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.0YtJLi/_old 2025-01-09 15:12:26.572755570 +0100
+++ /var/tmp/diff_new_pack.0YtJLi/_new 2025-01-09 15:12:26.600756731 +0100
@@ -3,7 +3,7 @@
<param name="url">https://github.com/chainguard-dev/apko</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="revision">v0.22.5</param>
+ <param name="revision">v0.22.6</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="changesgenerate">enable</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.0YtJLi/_old 2025-01-09 15:12:26.724761867 +0100
+++ /var/tmp/diff_new_pack.0YtJLi/_new 2025-01-09 15:12:26.752763027 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/chainguard-dev/apko</param>
- <param name="changesrevision">20bf90264a9720492d623322989284b938601a5d</param></service></servicedata>
+ <param name="changesrevision">995ee5a40608591b2c4d2e7893abdffeca93f6ff</param></service></servicedata>
(No newline at EOF)
++++++ apko-0.22.5.obscpio -> apko-0.22.6.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/.github/workflows/build-samples.yml new/apko-0.22.6/.github/workflows/build-samples.yml
--- old/apko-0.22.5/.github/workflows/build-samples.yml 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/.github/workflows/build-samples.yml 2025-01-09 00:03:56.000000000 +0100
@@ -31,7 +31,7 @@
go-version-file: 'go.mod'
check-latest: true
- name: Setup QEMU
- uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # v3.2.0
+ uses: docker/setup-qemu-action@53851d14592bedcffcf25ea515637cff71ef929a # v3.3.0
- run: |
make apko
./apko build ./examples/nginx.yaml nginx:build /tmp/nginx-${{ matrix.arch }}.tar --arch ${{ matrix.arch }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/go.mod new/apko-0.22.6/go.mod
--- old/apko-0.22.5/go.mod 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/go.mod 2025-01-09 00:03:56.000000000 +0100
@@ -31,7 +31,7 @@
golang.org/x/sync v0.10.0
golang.org/x/sys v0.29.0
golang.org/x/time v0.9.0
- google.golang.org/api v0.214.0
+ google.golang.org/api v0.215.0
gopkg.in/ini.v1 v1.67.0
gopkg.in/yaml.v3 v3.0.1
k8s.io/apimachinery v0.32.0
@@ -95,7 +95,7 @@
github.com/google/s2a-go v0.1.8 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
- github.com/googleapis/gax-go/v2 v2.14.0 // indirect
+ github.com/googleapis/gax-go/v2 v2.14.1 // indirect
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect
@@ -158,10 +158,10 @@
golang.org/x/oauth2 v0.24.0 // indirect
golang.org/x/term v0.27.0 // indirect
golang.org/x/text v0.21.0 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect
google.golang.org/grpc v1.69.0 // indirect
- google.golang.org/protobuf v1.36.0 // indirect
+ google.golang.org/protobuf v1.36.1 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gotest.tools/v3 v3.5.1 // indirect
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/go.sum new/apko-0.22.6/go.sum
--- old/apko-0.22.5/go.sum 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/go.sum 2025-01-09 00:03:56.000000000 +0100
@@ -176,8 +176,8 @@
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw=
github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
-github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o=
-github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk=
+github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q=
+github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI=
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20210315223345-82c243799c99 h1:JYghRBlGCZyCF2wNUJ8W0cwaQdtpcssJ4CgC406g+WU=
@@ -494,17 +494,17 @@
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/api v0.214.0 h1:h2Gkq07OYi6kusGOaT/9rnNljuXmqPnaig7WGPmKbwA=
-google.golang.org/api v0.214.0/go.mod h1:bYPpLG8AyeMWwDU6NXoB00xC0DFkikVvd5MfwoxjLqE=
+google.golang.org/api v0.215.0 h1:jdYF4qnyczlEz2ReWIsosNLDuzXyvFHJtI5gcr0J7t0=
+google.golang.org/api v0.215.0/go.mod h1:fta3CVtuJYOEdugLNWm6WodzOS8KdFckABwN4I40hzY=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 h1:pgr/4QbFyktUv9CtQ/Fq4gzEE6/Xs7iCXbktaGzLHbQ=
-google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697/go.mod h1:+D9ySVjN8nY8YCVjc5O7PZDIdZporIDY3KaGfJunh88=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1:8ZmaLZE4XWrtU3MyClkYqqtl6Oegr3235h7jxsDyqCY=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
+google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576 h1:CkkIfIt50+lT6NHAVoRYEyAvQGFM7xEwXUUywFvEb3Q=
+google.golang.org/genproto/googleapis/api v0.0.0-20241209162323-e6fa225c2576/go.mod h1:1R3kvZ1dtP3+4p4d3G8uJ8rFk/fWlScl38vanWACI08=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA=
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
@@ -513,8 +513,8 @@
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/grpc v1.69.0 h1:quSiOM1GJPmPH5XtU+BCoVXcDVJJAzNcoyfC2cCjGkI=
google.golang.org/grpc v1.69.0/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
-google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ=
-google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
+google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/internal/cli/build-minirootfs.go new/apko-0.22.6/internal/cli/build-minirootfs.go
--- old/apko-0.22.5/internal/cli/build-minirootfs.go 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/internal/cli/build-minirootfs.go 2025-01-09 00:03:56.000000000 +0100
@@ -34,6 +34,10 @@
var buildArch string
var sbomPath string
var ignoreSignatures bool
+ var extraKeys []string
+ var extraBuildRepos []string
+ var extraRuntimeRepos []string
+ var extraPackages []string
cmd := &cobra.Command{
Use: "build-minirootfs",
@@ -44,6 +48,10 @@
RunE: func(cmd *cobra.Command, args []string) error {
return BuildMinirootFSCmd(cmd.Context(),
build.WithConfig(args[0], []string{}),
+ build.WithExtraKeys(extraKeys),
+ build.WithExtraBuildRepos(extraBuildRepos),
+ build.WithExtraRuntimeRepos(extraRuntimeRepos),
+ build.WithExtraPackages(extraPackages),
build.WithTarball(args[1]),
build.WithBuildDate(buildDate),
build.WithSBOM(sbomPath),
@@ -57,6 +65,10 @@
cmd.Flags().StringVar(&buildArch, "build-arch", runtime.GOARCH, "architecture to build for -- default is Go runtime architecture")
cmd.Flags().StringVar(&sbomPath, "sbom-path", "", "generate an SBOM")
cmd.Flags().BoolVar(&ignoreSignatures, "ignore-signatures", false, "ignore repository signature verification")
+ cmd.Flags().StringSliceVarP(&extraKeys, "keyring-append", "k", []string{}, "path to extra keys to include in the keyring")
+ cmd.Flags().StringSliceVarP(&extraBuildRepos, "build-repository-append", "b", []string{}, "path to extra repositories to include")
+ cmd.Flags().StringSliceVarP(&extraRuntimeRepos, "repository-append", "r", []string{}, "path to extra repositories to include")
+ cmd.Flags().StringSliceVarP(&extraPackages, "package-append", "p", []string{}, "extra packages to include")
return cmd
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/pkg/apk/apk/cache.go new/apko-0.22.6/pkg/apk/apk/cache.go
--- old/apko-0.22.5/pkg/apk/apk/cache.go 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/pkg/apk/apk/cache.go 2025-01-09 00:03:56.000000000 +0100
@@ -16,6 +16,7 @@
import (
"context"
+ "encoding/base32"
"fmt"
"io"
"net/http"
@@ -331,6 +332,11 @@
}
// When we get etags, they appear to be quoted.
etag := strings.Trim(remoteEtag[0], `"`)
+
+ // To ensure these things are safe filenames, base32 encode them.
+ // (Avoiding base64 due to case sensitive filesystems.)
+ etag = base32.StdEncoding.EncodeToString([]byte(etag))
+
return etag, etag != ""
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/pkg/apk/apk/repo_test.go new/apko-0.22.6/pkg/apk/apk/repo_test.go
--- old/apko-0.22.5/pkg/apk/apk/repo_test.go 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/pkg/apk/apk/repo_test.go 2025-01-09 00:03:56.000000000 +0100
@@ -16,6 +16,7 @@
import (
"context"
+ "encoding/base32"
"fmt"
"io/fs"
"net/http"
@@ -192,7 +193,7 @@
require.NoErrorf(t, err, "unable to get indexes")
require.Greater(t, len(indexes), 0, "no indexes found")
// check that the contents are the same
- index1, err := os.ReadFile(filepath.Join(repoDir, "APKINDEX", "an-etag.tar.gz"))
+ index1, err := os.ReadFile(filepath.Join(repoDir, "APKINDEX", base32.StdEncoding.EncodeToString([]byte("an-etag"))+".tar.gz"))
require.NoError(t, err, "unable to read cache index file")
index2, err := os.ReadFile(filepath.Join(testPrimaryPkgDir, indexFilename))
require.NoError(t, err, "unable to read previous index file")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/pkg/build/types/image_configuration.go new/apko-0.22.6/pkg/build/types/image_configuration.go
--- old/apko-0.22.5/pkg/build/types/image_configuration.go 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/pkg/build/types/image_configuration.go 2025-01-09 00:03:56.000000000 +0100
@@ -258,7 +258,7 @@
log.Infof(" runas: %s", ic.Accounts.RunAs)
log.Infof(" users:")
for _, u := range ic.Accounts.Users {
- log.Infof(" - uid=%d(%s) gid=%d", u.UID, u.UserName, u.GID)
+ log.Infof(" - uid=%d(%s) gid=%d", u.UID, u.UserName, gidToInt(u.GID))
}
log.Infof(" groups:")
for _, g := range ic.Accounts.Groups {
@@ -272,3 +272,10 @@
}
}
}
+
+func gidToInt(gid GID) uint32 {
+ if gid == nil {
+ return 0
+ }
+ return *gid
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/pkg/build/types/image_configuration_test.go new/apko-0.22.6/pkg/build/types/image_configuration_test.go
--- old/apko-0.22.5/pkg/build/types/image_configuration_test.go 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/pkg/build/types/image_configuration_test.go 2025-01-09 00:03:56.000000000 +0100
@@ -60,6 +60,9 @@
require.Equal(t, "/not/home", ic.Accounts.Users[0].HomeDir)
require.Equal(t, "/home/user", ic.Accounts.Users[1].HomeDir)
+
+ // Ensure this does not cause panic when users[1].gid is empty (defaulting to 0)
+ ic.Summarize(ctx)
}
func TestMergeInto(t *testing.T) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/apko-0.22.5/pkg/build/types/testdata/users.apko.yaml new/apko-0.22.6/pkg/build/types/testdata/users.apko.yaml
--- old/apko-0.22.5/pkg/build/types/testdata/users.apko.yaml 2025-01-07 00:34:42.000000000 +0100
+++ new/apko-0.22.6/pkg/build/types/testdata/users.apko.yaml 2025-01-09 00:03:56.000000000 +0100
@@ -12,6 +12,5 @@
uid: 2
homedir: "/not/home"
username: "something-else"
- - gid: 2
- uid: 3
+ - uid: 3
username: "user"
++++++ apko.obsinfo ++++++
--- /var/tmp/diff_new_pack.0YtJLi/_old 2025-01-09 15:12:28.336828643 +0100
+++ /var/tmp/diff_new_pack.0YtJLi/_new 2025-01-09 15:12:28.388830797 +0100
@@ -1,5 +1,5 @@
name: apko
-version: 0.22.5
-mtime: 1736206482
-commit: 20bf90264a9720492d623322989284b938601a5d
+version: 0.22.6
+mtime: 1736377436
+commit: 995ee5a40608591b2c4d2e7893abdffeca93f6ff
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/apko/vendor.tar.gz /work/SRC/openSUSE:Factory/.apko.new.1881/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package incus for openSUSE:Factory checked in at 2025-01-09 15:11:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/incus (Old)
and /work/SRC/openSUSE:Factory/.incus.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "incus"
Thu Jan 9 15:11:39 2025 rev:3 rq:1236063 version:6.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/incus/incus.changes 2024-12-15 12:39:37.656302548 +0100
+++ /work/SRC/openSUSE:Factory/.incus.new.1881/incus.changes 2025-01-09 15:12:22.832600643 +0100
@@ -1,0 +2,5 @@
+Wed Jan 8 11:25:54 UTC 2025 - Aleksa Sarai <asarai(a)suse.com>
+
+- Add missing Requires for OCI support. bsc#1234300
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ incus.spec ++++++
--- /var/tmp/diff_new_pack.WoPJgJ/_old 2025-01-09 15:12:23.456626491 +0100
+++ /var/tmp/diff_new_pack.WoPJgJ/_new 2025-01-09 15:12:23.460626658 +0100
@@ -1,7 +1,7 @@
#
# spec file for package incus
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -118,6 +118,10 @@
Requires: qemu-arm >= 6.0
%endif
%endif
+# Needed for OCI support.
+Requires: skopeo
+Requires: umoci
+# Helper tools for admins.
Recommends: %{name}-tools
# Storage backends -- we don't recommend ZFS since it's not *technically* a
# blessed configuration.
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-cryptohash-sha256 for openSUSE:Factory checked in at 2025-01-09 15:11:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cryptohash-sha256 (Old)
and /work/SRC/openSUSE:Factory/.ghc-cryptohash-sha256.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cryptohash-sha256"
Thu Jan 9 15:11:37 2025 rev:22 rq:1236059 version:0.11.102.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cryptohash-sha256/ghc-cryptohash-sha256.changes 2024-07-22 17:16:58.554822221 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cryptohash-sha256.new.1881/ghc-cryptohash-sha256.changes 2025-01-09 15:12:21.592549276 +0100
@@ -1,0 +2,6 @@
+Wed Jan 1 19:53:11 UTC 2025 - Peter Simons <psimons(a)suse.com>
+
+- Update cryptohash-sha256 to version 0.11.102.1 revision 6.
+ Upstream has revised the Cabal build instructions on Hackage.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cryptohash-sha256.spec ++++++
--- /var/tmp/diff_new_pack.NAeVZi/_old 2025-01-09 15:12:22.056568497 +0100
+++ /var/tmp/diff_new_pack.NAeVZi/_new 2025-01-09 15:12:22.060568663 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-cryptohash-sha256
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,7 @@
License: BSD-3-Clause
URL: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/5.cabal…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/6.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-base-devel
BuildRequires: ghc-base-prof
++++++ cryptohash-sha256.cabal ++++++
--- /var/tmp/diff_new_pack.NAeVZi/_old 2025-01-09 15:12:22.096570154 +0100
+++ /var/tmp/diff_new_pack.NAeVZi/_new 2025-01-09 15:12:22.100570320 +0100
@@ -1,7 +1,7 @@
cabal-version: 2.0
name: cryptohash-sha256
version: 0.11.102.1
-x-revision: 5
+x-revision: 6
synopsis: Fast, pure and practical SHA-256 implementation
description: {
@@ -51,9 +51,10 @@
build-type: Simple
tested-with:
+ GHC == 9.12.1
GHC == 9.10.1
- GHC == 9.8.2
- GHC == 9.6.5
+ GHC == 9.8.4
+ GHC == 9.6.6
GHC == 9.4.8
GHC == 9.2.8
GHC == 9.0.2
@@ -62,7 +63,6 @@
GHC == 8.6.5
GHC == 8.4.4
GHC == 8.2.2
- GHC == 8.0.2
extra-source-files: cbits/hs_sha256.h
changelog.md
@@ -86,7 +86,7 @@
ghc-options: -Wall
- build-depends: base >= 4.5 && < 4.21
+ build-depends: base >= 4.5 && < 5
exposed-modules: Crypto.Hash.SHA256
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-cryptohash-md5 for openSUSE:Factory checked in at 2025-01-09 15:11:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-cryptohash-md5 (Old)
and /work/SRC/openSUSE:Factory/.ghc-cryptohash-md5.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-cryptohash-md5"
Thu Jan 9 15:11:36 2025 rev:13 rq:1236057 version:0.11.101.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-cryptohash-md5/ghc-cryptohash-md5.changes 2024-07-22 17:16:55.846714560 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-cryptohash-md5.new.1881/ghc-cryptohash-md5.changes 2025-01-09 15:12:20.280494927 +0100
@@ -1,0 +2,6 @@
+Wed Jan 1 17:36:48 UTC 2025 - Peter Simons <psimons(a)suse.com>
+
+- Update cryptohash-md5 to version 0.11.101.0 revision 6.
+ Upstream has revised the Cabal build instructions on Hackage.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-cryptohash-md5.spec ++++++
--- /var/tmp/diff_new_pack.0JItKB/_old 2025-01-09 15:12:20.796516303 +0100
+++ /var/tmp/diff_new_pack.0JItKB/_new 2025-01-09 15:12:20.796516303 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-cryptohash-md5
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,7 @@
License: BSD-3-Clause
URL: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/5.cabal…
+Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/6.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-base-devel
BuildRequires: ghc-base-prof
++++++ cryptohash-md5.cabal ++++++
--- /var/tmp/diff_new_pack.0JItKB/_old 2025-01-09 15:12:20.824517462 +0100
+++ /var/tmp/diff_new_pack.0JItKB/_new 2025-01-09 15:12:20.828517628 +0100
@@ -1,7 +1,7 @@
cabal-version: >=1.10
name: cryptohash-md5
version: 0.11.101.0
-x-revision: 5
+x-revision: 6
description:
A practical incremental and one-pass, pure API to the
<https://en.wikipedia.org/wiki/MD5 MD5 hash algorithm>
@@ -29,9 +29,10 @@
build-type: Simple
tested-with:
+ GHC == 9.12.1
GHC == 9.10.1
- GHC == 9.8.2
- GHC == 9.6.5
+ GHC == 9.8.4
+ GHC == 9.6.6
GHC == 9.4.8
GHC == 9.2.8
GHC == 9.0.2
@@ -40,7 +41,6 @@
GHC == 8.6.5
GHC == 8.4.4
GHC == 8.2.2
- GHC == 8.0.2
extra-source-files: cbits/md5.h
changelog.md
@@ -51,7 +51,7 @@
library
default-language: Haskell2010
- build-depends: base >= 4.5 && < 4.21
+ build-depends: base >= 4.5 && < 5
, bytestring >= 0.9.2 && < 0.13
hs-source-dirs: src
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package SDL3 for openSUSE:Factory checked in at 2025-01-09 15:11:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/SDL3 (Old)
and /work/SRC/openSUSE:Factory/.SDL3.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "SDL3"
Thu Jan 9 15:11:35 2025 rev:7 rq:1236051 version:3.1.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/SDL3/SDL3.changes 2024-12-16 19:17:03.590272513 +0100
+++ /work/SRC/openSUSE:Factory/.SDL3.new.1881/SDL3.changes 2025-01-09 15:12:19.532463942 +0100
@@ -1,0 +2,7 @@
+Wed Jan 8 20:52:55 UTC 2025 - Jan Engelhardt <jengelh(a)inai.de>
+
+- Update to release 3.1.8
+ * This update adds asynchronous I/O, main thread dispatching, a
+ desktop tray API, debug text rendering and other features.
+
+-------------------------------------------------------------------
Old:
----
SDL3-3.1.6.tar.gz
New:
----
SDL3-3.1.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ SDL3.spec ++++++
--- /var/tmp/diff_new_pack.E7Uy5N/_old 2025-01-09 15:12:20.112487968 +0100
+++ /var/tmp/diff_new_pack.E7Uy5N/_new 2025-01-09 15:12:20.116488134 +0100
@@ -1,7 +1,7 @@
#
# spec file for package SDL3
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define sle_version 0
Name: SDL3
%define lname libSDL3-0
-Version: 3.1.6
+Version: 3.1.8
Release: 0
Summary: Simple DirectMedia Layer Library
License: Zlib
++++++ SDL3-3.1.6.tar.gz -> SDL3-3.1.8.tar.gz ++++++
/work/SRC/openSUSE:Factory/SDL3/SDL3-3.1.6.tar.gz /work/SRC/openSUSE:Factory/.SDL3.new.1881/SDL3-3.1.8.tar.gz differ: char 20, line 1
++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.E7Uy5N/_old 2025-01-09 15:12:20.172490454 +0100
+++ /var/tmp/diff_new_pack.E7Uy5N/_new 2025-01-09 15:12:20.176490619 +0100
@@ -1,5 +1,5 @@
-mtime: 1734300255
-commit: 45b2e11bb255b2293a3bbb1b81af7dcf5ac25efaba066b7524097945c45241dc
+mtime: 1736371729
+commit: 2195f16dae55ce6aa8fa13045d241a1a25a7df99079f4fb2d4bfef300256440d
url: https://src.opensuse.org/jengelh/SDL3
revision: master
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package os-autoinst for openSUSE:Factory checked in at 2025-01-09 15:11:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/os-autoinst (Old)
and /work/SRC/openSUSE:Factory/.os-autoinst.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "os-autoinst"
Thu Jan 9 15:11:33 2025 rev:488 rq:1236029 version:4.6.1736332167.3796202
Changes:
--------
--- /work/SRC/openSUSE:Factory/os-autoinst/os-autoinst.changes 2025-01-07 20:53:43.549672995 +0100
+++ /work/SRC/openSUSE:Factory/.os-autoinst.new.1881/os-autoinst.changes 2025-01-09 15:12:17.660386395 +0100
@@ -1,0 +2,10 @@
+Wed Jan 08 19:25:50 UTC 2025 - okurz(a)suse.com
+
+- Update to version 4.6.1736332167.3796202:
+ * Add subtests for commands.pm
+ * Fix warn+return precendence
+ * Remove extra arguments from testapi::send_key()
+ * Modify loadtestdir in autotest for more code coverage
+ * t: cover both old and new qemu paths in 18-backend-qemu.t
+
+-------------------------------------------------------------------
Old:
----
os-autoinst-4.6.1736157351.7aa835c.obscpio
New:
----
os-autoinst-4.6.1736332167.3796202.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ os-autoinst-devel-test.spec ++++++
--- /var/tmp/diff_new_pack.0uQgtm/_old 2025-01-09 15:12:19.000441904 +0100
+++ /var/tmp/diff_new_pack.0uQgtm/_new 2025-01-09 15:12:19.004442069 +0100
@@ -18,7 +18,7 @@
%define short_name os-autoinst-devel
Name: %{short_name}-test
-Version: 4.6.1736157351.7aa835c
+Version: 4.6.1736332167.3796202
Release: 0
Summary: Test package for %{short_name}
License: GPL-2.0-or-later
++++++ os-autoinst-openvswitch-test.spec ++++++
--- /var/tmp/diff_new_pack.0uQgtm/_old 2025-01-09 15:12:19.044443726 +0100
+++ /var/tmp/diff_new_pack.0uQgtm/_new 2025-01-09 15:12:19.044443726 +0100
@@ -19,7 +19,7 @@
%define name_ext -test
%define short_name os-autoinst-openvswitch
Name: %{short_name}%{?name_ext}
-Version: 4.6.1736157351.7aa835c
+Version: 4.6.1736332167.3796202
Release: 0
Summary: test package for %{short_name}
License: GPL-2.0-or-later
++++++ os-autoinst-test.spec ++++++
--- /var/tmp/diff_new_pack.0uQgtm/_old 2025-01-09 15:12:19.068444721 +0100
+++ /var/tmp/diff_new_pack.0uQgtm/_new 2025-01-09 15:12:19.068444721 +0100
@@ -19,7 +19,7 @@
%define name_ext -test
%define short_name os-autoinst
Name: %{short_name}%{?name_ext}
-Version: 4.6.1736157351.7aa835c
+Version: 4.6.1736332167.3796202
Release: 0
Summary: test package for os-autoinst
License: GPL-2.0-or-later
++++++ os-autoinst.spec ++++++
--- /var/tmp/diff_new_pack.0uQgtm/_old 2025-01-09 15:12:19.092445715 +0100
+++ /var/tmp/diff_new_pack.0uQgtm/_new 2025-01-09 15:12:19.096445881 +0100
@@ -17,7 +17,7 @@
Name: os-autoinst
-Version: 4.6.1736157351.7aa835c
+Version: 4.6.1736332167.3796202
Release: 0
Summary: OS-level test automation
License: GPL-2.0-or-later
++++++ os-autoinst-4.6.1736157351.7aa835c.obscpio -> os-autoinst-4.6.1736332167.3796202.obscpio ++++++
/work/SRC/openSUSE:Factory/os-autoinst/os-autoinst-4.6.1736157351.7aa835c.obscpio /work/SRC/openSUSE:Factory/.os-autoinst.new.1881/os-autoinst-4.6.1736332167.3796202.obscpio differ: char 50, line 1
++++++ os-autoinst.obsinfo ++++++
--- /var/tmp/diff_new_pack.0uQgtm/_old 2025-01-09 15:12:19.156448366 +0100
+++ /var/tmp/diff_new_pack.0uQgtm/_new 2025-01-09 15:12:19.160448532 +0100
@@ -1,5 +1,5 @@
name: os-autoinst
-version: 4.6.1736157351.7aa835c
-mtime: 1736157351
-commit: 7aa835c0ec26b110023beb7e29bb8e24ffa3108a
+version: 4.6.1736332167.3796202
+mtime: 1736332167
+commit: 379620262ec741099905fd4d68d2bae7a3a0f5e0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package lxqt-wayland-session for openSUSE:Factory checked in at 2025-01-09 15:11:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lxqt-wayland-session (Old)
and /work/SRC/openSUSE:Factory/.lxqt-wayland-session.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lxqt-wayland-session"
Thu Jan 9 15:11:25 2025 rev:3 rq:1236022 version:0.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/lxqt-wayland-session/lxqt-wayland-session.changes 2024-12-10 23:43:31.272525970 +0100
+++ /work/SRC/openSUSE:Factory/.lxqt-wayland-session.new.1881/lxqt-wayland-session.changes 2025-01-09 15:12:10.412086150 +0100
@@ -1,0 +2,27 @@
+Wed Jan 8 17:29:38 UTC 2025 - Shawn Dunn <sfalken(a)opensuse.org>
+
+- Drop:
+ * 0001-Adjust-labwc-pointerspeed.patch
+ * 001-labwc-autostart-swaybg.patch
+- Add:
+ * 0001-configuration-changes-for-default-labwc-session.patch
+ - Combines both dropped patches to a git_am style patch
+ * Recommends for labwc session (Quality of Life Improvements)
+ - labwc-tweaks (some GUI labwc configuration options)
+ - wdisplays (GUI settings of displays under wayland)
+ - sddm-conf (GUI configuration for sddm)
+
+-------------------------------------------------------------------
+Mon Dec 30 17:08:33 UTC 2024 - Shawn Dunn <sfalken(a)opensuse.org>
+
+- Added Requires: hyprland-qtutils to hyprland session, provides
+ further integration/support with the Qt toolkit to hyprland
+
+-------------------------------------------------------------------
+Mon Dec 30 17:05:50 UTC 2024 - Shawn Dunn <sfalken(a)opensuse.org>
+
+- Added:
+ * 0001-Adjust-labwc-pointerspeed.patch Adjusts default pointer
+ speed in labwc session
+
+-------------------------------------------------------------------
Old:
----
001-labwc-autostart-swaybg.patch
New:
----
0001-configuration-changes-for-default-labwc-session.patch
BETA DEBUG BEGIN:
Old: * 0001-Adjust-labwc-pointerspeed.patch
* 001-labwc-autostart-swaybg.patch
- Add:
BETA DEBUG END:
BETA DEBUG BEGIN:
New:- Add:
* 0001-configuration-changes-for-default-labwc-session.patch
- Combines both dropped patches to a git_am style patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lxqt-wayland-session.spec ++++++
--- /var/tmp/diff_new_pack.UyfkUb/_old 2025-01-09 15:12:11.112115148 +0100
+++ /var/tmp/diff_new_pack.UyfkUb/_new 2025-01-09 15:12:11.112115148 +0100
@@ -1,7 +1,7 @@
#
# spec file for package lxqt-wayland-session
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,10 +25,12 @@
Source0: %{url}/releases/download/%{version}/%{name}-%{version}.tar.xz
Source1: %{url}/releases/download/%{version}/%{name}-%{version}.tar.xz.asc
Source2: %{name}.keyring
-Patch1: 001-labwc-autostart-swaybg.patch
+## PATCH-CONFIGURATION-openSUSE 0001-configuration-changes-for-default-labwc-session.patch
+Patch0: 0001-configuration-changes-for-default-labwc-session.patch
BuildRequires: cmake
BuildRequires: fdupes
BuildRequires: gcc-c++
+BuildRequires: git-core
BuildRequires: pkgconfig
BuildRequires: xdg-user-dirs
BuildRequires: cmake(KF6WindowSystem)
@@ -50,6 +52,7 @@
License: BSD-3-Clause
Requires: %{name} = %{version}
Requires: hyprland
+Requires: hyprland-qtutils
Supplements: (%{name} and hyprland)
%description -n lxqt-hyprland-session
@@ -94,6 +97,8 @@
License: MIT
Requires: %{name} = %{version}
Requires: wayfire
+Recommends: sddm-conf
+Recommends: wcm
Supplements: (%{name} and wayfire)
%description -n lxqt-wayfire-session
@@ -108,6 +113,9 @@
Requires: swaybg
Requires: swayidle
Requires: swaylock
+Recommends: labwc-tweaks
+Recommends: sddm-conf
+Recommends: wdisplays
Supplements: (%{name} and labwc)
Conflicts: labwc-theme-vent <= %{version}
@@ -115,7 +123,7 @@
This package contains the openbox themes and other files for labwc.
%prep
-%autosetup -p1
+%autosetup -p1 -S git_am
%build
%cmake
@@ -150,7 +158,7 @@
%files -n lxqt-river-session
%license COPYING
-%{_datadir}/lxqt/wayland/lxqt-river-init
+%attr(0755,root,root)%{_datadir}/lxqt/wayland/lxqt-river-init
%files -n lxqt-sway-session
%license LICENSE.MIT
++++++ 0001-configuration-changes-for-default-labwc-session.patch ++++++
From 66b3dc4aafd8a97a08564bd460e6742582d69432 Mon Sep 17 00:00:00 2001
From: "Shawn W. Dunn" <sfalken(a)cloverleaf-linux.org>
Date: Wed, 8 Jan 2025 09:24:02 -0800
Subject: [PATCH] configuration changes for default labwc session
Combines two prior patches into one, as they're both for the labwc
session. Sets openSUSE background for labwc session, and adjusts
the pointerspeed to make the default mouse pointer less twitchy
---
configurations/labwc/autostart | 2 +-
configurations/labwc/rc.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/configurations/labwc/autostart b/configurations/labwc/autostart
index fa49741..a756d24 100644
--- a/configurations/labwc/autostart
+++ b/configurations/labwc/autostart
@@ -3,7 +3,7 @@
# Preferred place for starting wayland-only applications
# Set background color or image (below the desktop):
-swaybg -i /usr/share/lxqt/wallpapers/origami-dark-labwc.png >/dev/null 2>&1 &
+swaybg -i /usr/share/wallpapers/openSUSEdefault/contents/images/default.png >/dev/null 2>&1 &
# Faster startup for GTK apps:
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY > /dev/null 2>&1 &
diff --git a/configurations/labwc/rc.xml b/configurations/labwc/rc.xml
index 41d628c..07acc3c 100644
--- a/configurations/labwc/rc.xml
+++ b/configurations/labwc/rc.xml
@@ -607,7 +607,7 @@
<device category="default">
<naturalScroll></naturalScroll>
<leftHanded></leftHanded>
- <pointerSpeed>1</pointerSpeed>
+ <pointerSpeed>0.0</pointerSpeed>
<accelProfile></accelProfile>
<tap>yes</tap>
<tapButtonMap></tapButtonMap>
--
2.47.1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package amdgpu_top for openSUSE:Factory checked in at 2025-01-09 15:11:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/amdgpu_top (Old)
and /work/SRC/openSUSE:Factory/.amdgpu_top.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "amdgpu_top"
Thu Jan 9 15:11:22 2025 rev:4 rq:1236005 version:0.10.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/amdgpu_top/amdgpu_top.changes 2025-01-07 20:51:49.864971923 +0100
+++ /work/SRC/openSUSE:Factory/.amdgpu_top.new.1881/amdgpu_top.changes 2025-01-09 15:12:08.568009764 +0100
@@ -1,0 +2,8 @@
+Mon Jan 6 09:44:35 UTC 2025 - Marek Sapota <marek(a)sapota.org>
+
+- Add missing runtime requirements.
+ * libwayland-egl1
+ * libxkbcommon0
+ * Fixes boo#1235098
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ amdgpu_top.spec ++++++
--- /var/tmp/diff_new_pack.M5X110/_old 2025-01-09 15:12:10.288081014 +0100
+++ /var/tmp/diff_new_pack.M5X110/_new 2025-01-09 15:12:10.288081014 +0100
@@ -1,7 +1,7 @@
#
# spec file for package amdgpu_top
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -27,6 +27,8 @@
BuildRequires: cargo-packaging >= 1.2.0
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libdrm_amdgpu)
+Requires: libwayland-egl1
+Requires: libxkbcommon0
%description
Tool that displays AMD GPU utilization.
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ibus-typing-booster for openSUSE:Factory checked in at 2025-01-09 15:11:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ibus-typing-booster (Old)
and /work/SRC/openSUSE:Factory/.ibus-typing-booster.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ibus-typing-booster"
Thu Jan 9 15:11:18 2025 rev:140 rq:1236028 version:2.27.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/ibus-typing-booster/ibus-typing-booster.changes 2025-01-02 19:24:11.887337675 +0100
+++ /work/SRC/openSUSE:Factory/.ibus-typing-booster.new.1881/ibus-typing-booster.changes 2025-01-09 15:12:07.799977950 +0100
@@ -1,0 +2,28 @@
+Wed Jan 08 19:29:14 UTC 2025 - maiku.fabian(a)gmail.com
+
+- Update to 2.27.7
+- Fix typo in setup tool in the function called when changing an existing autosetting
+ (Resolves: https://github.com/mike-fabian/ibus-typing-booster/issues/591
+
+-------------------------------------------------------------------
+Wed Jan 08 15:32:44 UTC 2025 - maiku.fabian(a)gmail.com
+
+- Update to 2.27.6
+- “return False” in “emoji_font_fallback_needed()” if “get_fonts_used_for_text()” returns and empty result
+ (Resolves: https://github.com/mike-fabian/ibus-typing-booster/issues/589)
+- Add a gsettings option “prefercommit”
+ (Related: https://github.com/mike-fabian/ibus-typing-booster/issues/580)
+- Some preparation for future support of m17n input methods offering multiple candidates
+ (Related: https://github.com/mike-fabian/ibus-typing-booster/issues/523)
+- Use XML-tag “layout_option” for “lv3:ralt_switch”
+- Use higher ranks for the “tb” engines than for the respective “m17n” engines
+- Translation update from Weblate (sv 100%)
+
+-------------------------------------------------------------------
+Fri Jan 03 11:28:37 UTC 2025 - maiku.fabian(a)gmail.com
+
+- Update to 2.27.4
+- Use XML-tag “layout_option” for “lv3:ralt_switch”
+- Use higher ranks for the “tb” engines than for the respective “m17n” engines
+
+-------------------------------------------------------------------
Old:
----
ibus-typing-booster-2.27.3.tar.gz
New:
----
ibus-typing-booster-2.27.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ibus-typing-booster.spec ++++++
--- /var/tmp/diff_new_pack.Bo2ayl/_old 2025-01-09 15:12:08.400002804 +0100
+++ /var/tmp/diff_new_pack.Bo2ayl/_new 2025-01-09 15:12:08.400002804 +0100
@@ -17,7 +17,7 @@
Name: ibus-typing-booster
-Version: 2.27.3
+Version: 2.27.7
Release: 0
Summary: An input completion utility
License: GPL-3.0-or-later
++++++ ibus-typing-booster-2.27.3.tar.gz -> ibus-typing-booster-2.27.7.tar.gz ++++++
/work/SRC/openSUSE:Factory/ibus-typing-booster/ibus-typing-booster-2.27.3.tar.gz /work/SRC/openSUSE:Factory/.ibus-typing-booster.new.1881/ibus-typing-booster-2.27.7.tar.gz differ: char 18, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package cpuinfo for openSUSE:Factory checked in at 2025-01-09 15:11:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cpuinfo (Old)
and /work/SRC/openSUSE:Factory/.cpuinfo.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cpuinfo"
Thu Jan 9 15:11:14 2025 rev:2 rq:1235984 version:0~git1720582619.ca67895
Changes:
--------
--- /work/SRC/openSUSE:Factory/cpuinfo/cpuinfo.changes 2024-07-25 16:22:35.672031484 +0200
+++ /work/SRC/openSUSE:Factory/.cpuinfo.new.1881/cpuinfo.changes 2025-01-09 15:12:03.875815399 +0100
@@ -1,0 +2,5 @@
+Wed Jan 8 15:48:32 UTC 2025 - Sarah Kriesch <sarah.kriesch(a)opensuse.org>
+
+- ExcludeArch s390x because it is not supported by IBM boo#1235402
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cpuinfo.spec ++++++
--- /var/tmp/diff_new_pack.iDO8hb/_old 2025-01-09 15:12:05.139867760 +0100
+++ /var/tmp/diff_new_pack.iDO8hb/_new 2025-01-09 15:12:05.139867760 +0100
@@ -25,6 +25,7 @@
Source: %name-%version.tar.xz
Patch1: soname.patch
BuildRequires: cmake
+ExcludeArch: s390x
%description
cpuinfo is a library to detect essential for performance optimization
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ddclient for openSUSE:Factory checked in at 2025-01-09 15:11:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ddclient (Old)
and /work/SRC/openSUSE:Factory/.ddclient.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ddclient"
Thu Jan 9 15:11:12 2025 rev:59 rq:1235987 version:3.11.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/ddclient/ddclient.changes 2024-10-30 17:41:21.201658832 +0100
+++ /work/SRC/openSUSE:Factory/.ddclient.new.1881/ddclient.changes 2025-01-09 15:12:03.123784248 +0100
@@ -1,0 +2,6 @@
+Mon Nov 25 17:03:41 UTC 2024 - Valentin Lefebvre <valentin.lefebvre(a)suse.com>
+
+- ddclient.service: Do not restrict access to devices, can conflicts
+ with ipmi. [bsc#1232044]
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ddclient.service ++++++
--- /var/tmp/diff_new_pack.IylkDv/_old 2025-01-09 15:12:03.763810760 +0100
+++ /var/tmp/diff_new_pack.IylkDv/_new 2025-01-09 15:12:03.763810760 +0100
@@ -8,7 +8,9 @@
# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
ProtectSystem=full
ProtectHome=true
-PrivateDevices=true
+PrivateDevices=false
+DevicePolicy=closed
+DeviceAllow=char-ipmidev rw
ProtectHostname=true
ProtectClock=true
ProtectKernelTunables=true
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package digger-cli for openSUSE:Factory checked in at 2025-01-09 15:11:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/digger-cli (Old)
and /work/SRC/openSUSE:Factory/.digger-cli.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "digger-cli"
Thu Jan 9 15:11:06 2025 rev:3 rq:1235962 version:0.6.82
Changes:
--------
--- /work/SRC/openSUSE:Factory/digger-cli/digger-cli.changes 2025-01-01 23:07:21.683113612 +0100
+++ /work/SRC/openSUSE:Factory/.digger-cli.new.1881/digger-cli.changes 2025-01-09 15:11:57.691559230 +0100
@@ -1,0 +2,7 @@
+Wed Jan 08 13:06:54 UTC 2025 - opensuse_buildservice(a)ojkastl.de
+
+- Update to version 0.6.82:
+ * always set right provider in ee (#1868)
+ * fix heading (#1866)
+
+-------------------------------------------------------------------
Old:
----
digger-cli-0.6.81.obscpio
New:
----
digger-cli-0.6.82.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ digger-cli.spec ++++++
--- /var/tmp/diff_new_pack.4SI1B2/_old 2025-01-09 15:11:59.431631309 +0100
+++ /var/tmp/diff_new_pack.4SI1B2/_new 2025-01-09 15:11:59.431631309 +0100
@@ -1,7 +1,7 @@
#
# spec file for package digger-cli
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define executable_name digger
Name: digger-cli
-Version: 0.6.81
+Version: 0.6.82
Release: 0
Summary: CLI for the digger open source IaC orchestration tool
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.4SI1B2/_old 2025-01-09 15:11:59.459632469 +0100
+++ /var/tmp/diff_new_pack.4SI1B2/_new 2025-01-09 15:11:59.463632635 +0100
@@ -6,7 +6,7 @@
<param name="exclude">go.mod</param>
<param name="exclude">go.work</param>
<param name="exclude">go.work.sum</param>
- <param name="revision">v0.6.81</param>
+ <param name="revision">v0.6.82</param>
<param name="match-tag">v*</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.4SI1B2/_old 2025-01-09 15:11:59.483633463 +0100
+++ /var/tmp/diff_new_pack.4SI1B2/_new 2025-01-09 15:11:59.487633629 +0100
@@ -1,7 +1,7 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/diggerhq/digger</param>
- <param name="changesrevision">d19d04d6db91aa4cb5265edff29783eca1540bc3</param></service><service name="tar_scm">
+ <param name="changesrevision">de0a222175650e0b24dfbe0d175e0f761059ef14</param></service><service name="tar_scm">
<param name="url">https://github.com/johanneskastl/digger</param>
<param name="changesrevision">8fe377068e53e2050ff4c745388d8428d2b13bb0</param></service></servicedata>
(No newline at EOF)
++++++ digger-cli-0.6.81.obscpio -> digger-cli-0.6.82.obscpio ++++++
/work/SRC/openSUSE:Factory/digger-cli/digger-cli-0.6.81.obscpio /work/SRC/openSUSE:Factory/.digger-cli.new.1881/digger-cli-0.6.82.obscpio differ: char 50, line 1
++++++ digger-cli.obsinfo ++++++
--- /var/tmp/diff_new_pack.4SI1B2/_old 2025-01-09 15:11:59.523635120 +0100
+++ /var/tmp/diff_new_pack.4SI1B2/_new 2025-01-09 15:11:59.527635286 +0100
@@ -1,5 +1,5 @@
name: digger-cli
-version: 0.6.81
-mtime: 1735553927
-commit: d19d04d6db91aa4cb5265edff29783eca1540bc3
+version: 0.6.82
+mtime: 1736335543
+commit: de0a222175650e0b24dfbe0d175e0f761059ef14
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/digger-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.digger-cli.new.1881/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-zstd for openSUSE:Factory checked in at 2025-01-09 15:11:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-zstd (Old)
and /work/SRC/openSUSE:Factory/.python-zstd.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-zstd"
Thu Jan 9 15:11:03 2025 rev:18 rq:1235961 version:1.5.6.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-zstd/python-zstd.changes 2023-05-03 12:57:59.284083075 +0200
+++ /work/SRC/openSUSE:Factory/.python-zstd.new.1881/python-zstd.changes 2025-01-09 15:11:54.363421369 +0100
@@ -1,0 +2,7 @@
+Wed Jan 8 11:17:44 UTC 2025 - Yunus Acar <yunus.acar(a)suse.com>
+
+- update to 1.5.6.1:
+ * Update libzstd to v1.5.6
+ * Update action to genegate wheels
+
+-------------------------------------------------------------------
Old:
----
zstd-1.5.5.1.tar.gz
New:
----
zstd-1.5.6.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-zstd.spec ++++++
--- /var/tmp/diff_new_pack.qT9jtn/_old 2025-01-09 15:11:55.927486157 +0100
+++ /var/tmp/diff_new_pack.qT9jtn/_new 2025-01-09 15:11:55.947486986 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-zstd
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-zstd
-Version: 1.5.5.1
+Version: 1.5.6.1
Release: 0
Summary: ZSTD Bindings for Python
License: BSD-2-Clause
++++++ zstd-1.5.5.1.tar.gz -> zstd-1.5.6.1.tar.gz ++++++
++++ 14004 lines of diff (skipped)
1
0
09 Jan '25
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-azure-appconfiguration-provider for openSUSE:Factory checked in at 2025-01-09 15:10:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-azure-appconfiguration-provider (Old)
and /work/SRC/openSUSE:Factory/.python-azure-appconfiguration-provider.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-azure-appconfiguration-provider"
Thu Jan 9 15:10:52 2025 rev:5 rq:1235928 version:2.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-azure-appconfiguration-provider/python-azure-appconfiguration-provider.changes 2024-09-10 21:15:57.396844941 +0200
+++ /work/SRC/openSUSE:Factory/.python-azure-appconfiguration-provider.new.1881/python-azure-appconfiguration-provider.changes 2025-01-09 15:11:39.818818891 +0100
@@ -1,0 +2,8 @@
+Wed Jan 8 08:34:36 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 2.0.0
+ + For detailed information about changes see the
+ CHANGELOG.md file provided with this package
+
+-------------------------------------------------------------------
Old:
----
azure_appconfiguration_provider-1.3.0.tar.gz
New:
----
azure_appconfiguration_provider-2.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-azure-appconfiguration-provider.spec ++++++
--- /var/tmp/diff_new_pack.BlPwUr/_old 2025-01-09 15:11:40.358841261 +0100
+++ /var/tmp/diff_new_pack.BlPwUr/_new 2025-01-09 15:11:40.362841426 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-azure-appconfiguration-provider
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-azure-appconfiguration-provider
-Version: 1.3.0
+Version: 2.0.0
Release: 0
Summary: Microsoft App Configuration Provider Library for Python
License: MIT
++++++ azure_appconfiguration_provider-1.3.0.tar.gz -> azure_appconfiguration_provider-2.0.0.tar.gz ++++++
++++ 3477 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-Kivy for openSUSE:Factory checked in at 2025-01-09 15:10:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Kivy (Old)
and /work/SRC/openSUSE:Factory/.python-Kivy.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Kivy"
Thu Jan 9 15:10:46 2025 rev:15 rq:1235933 version:2.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Kivy/python-Kivy.changes 2024-01-15 22:17:04.846114873 +0100
+++ /work/SRC/openSUSE:Factory/.python-Kivy.new.1881/python-Kivy.changes 2025-01-09 15:11:38.954783100 +0100
@@ -1,0 +2,23 @@
+Wed Jan 8 11:11:39 UTC 2025 - Nico Krapp <nico.krapp(a)suse.com>
+
+- Update to 2.3.1:
+ * Fix `ConfigParser.write` error with when `--save` is supplied
+ as an argument
+ * Fix dropped motion events in mtdev provider.Update `monitor`
+ module to use `dp`
+ * Rename `CaptureDelegate` to `KivyCaptureDelegate` in
+ `AVFoundationCamera` to avoid duplicated symbols
+ * `avplayer` audio provider: Fixes `seek` and `state` on iOS and macOS
+ * Fix numpy float/int error when using `CameraAndroid.decode_frame`
+ * Use `filetype` as `imghdr` built-in module is deprecated and slated
+ for removal in Python 3.13
+ * Updated ES vkeyboard layout to resemble a real ES keyboard layout
+ * Fix `xsel` import when clipboard is empty, and add timeout failsafe
+ * Fix `SDL_EventFilter` definitions to match SDL definitions
+ (fixes build on GCC 14)
+ * Revert #8415 and align `glShaderSource` `typedef` in `common_subset.h`
+ with Khronos Headers
+ * Fix dropped motion events in mtdev provider.
+ Full changelog: https://github.com/kivy/kivy/releases/tag/2.3.1
+
+-------------------------------------------------------------------
Old:
----
kivy-2.3.0.tar.gz
New:
----
kivy-2.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Kivy.spec ++++++
--- /var/tmp/diff_new_pack.EJbflJ/_old 2025-01-09 15:11:39.638811435 +0100
+++ /var/tmp/diff_new_pack.EJbflJ/_new 2025-01-09 15:11:39.638811435 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-Kivy
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,7 @@
%endif
%define plainpython python
Name: python-Kivy
-Version: 2.3.0
+Version: 2.3.1
Release: 0
Summary: Hardware-accelerated multitouch application library
License: Apache-2.0 AND MIT AND LGPL-2.1-or-later AND GPL-2.0-or-later AND GPL-3.0-only AND BSD-3-Clause
@@ -64,6 +64,7 @@
Requires: mtdev
Requires: python-Pygments
Requires: python-docutils
+Requires: python-filetype
Requires: xclip
# Not listed in setup.cfg but imported in core/spelling/spelling_enchant.py
Requires: python-pyenchant
@@ -73,6 +74,7 @@
# /SECTION
# SECTION test
BuildRequires: %{python_module pytest}
+BuildRequires: %{python_module filetype}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest-timeout}
BuildRequires: %{python_module pytest-xvfb}
++++++ kivy-2.3.0.tar.gz -> kivy-2.3.1.tar.gz ++++++
/work/SRC/openSUSE:Factory/python-Kivy/kivy-2.3.0.tar.gz /work/SRC/openSUSE:Factory/.python-Kivy.new.1881/kivy-2.3.1.tar.gz differ: char 12, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-opentelemetry-util-http for openSUSE:Factory checked in at 2025-01-09 15:10:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-util-http (Old)
and /work/SRC/openSUSE:Factory/.python-opentelemetry-util-http.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-util-http"
Thu Jan 9 15:10:25 2025 rev:2 rq:1235925 version:0.50b0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-opentelemetry-util-http/python-opentelemetry-util-http.changes 2024-09-23 15:21:03.798558803 +0200
+++ /work/SRC/openSUSE:Factory/.python-opentelemetry-util-http.new.1881/python-opentelemetry-util-http.changes 2025-01-09 15:11:35.078622540 +0100
@@ -1,0 +2,50 @@
+Wed Jan 8 11:50:54 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.50b0
+ * `opentelemetry-instrumentation-starlette` Add type hints to the instrumentation
+ * `opentelemetry-distro` default to OTLP log exporter.
+ * `opentelemetry-instrumentation-sqlalchemy` Update unit tests to run with SQLALchemy 2
+ * Add `opentelemetry-instrumentation-openai-v2` to `opentelemetry-bootstrap`
+ * `opentelemetry-instrumentation-sqlalchemy` Add sqlcomment to `db.statement` attribute
+ * `opentelemetry-instrumentation-dbapi` Add sqlcomment to `db.statement` attribute
+ * `opentelemetry-instrumentation-dbapi` instrument_connection accepts optional connect_module
+ * `opentelemetry-instrumentation-mysqlclient` Add sqlcommenter support
+ * `opentelemetry-instrumentation-pymysql` Add sqlcommenter support
+ * `opentelemetry-instrumentation-click`: new instrumentation to trace click commands
+ * `opentelemetry-instrumentation-starlette`: Retrieve `meter_provider` key instead of
+ `_meter_provider` on `_instrument`
+ * `opentelemetry-instrumentation-httpx`: instrument_client is a static method again
+ * `opentelemetry-instrumentation-system_metrics`: fix callbacks reading wrong config
+ * `opentelemetry-instrumentation-httpx`: Check if mount transport is none before wrap it
+ * Replace all instrumentor unit test `assertEqualSpanInstrumentationInfo` calls with
+ `assertEqualSpanInstrumentationScope` calls
+ * `opentelemetry-instrumentation-sqlalchemy` Fixes engines from `sqlalchemy.engine_from_config`
+ not being fully instrumented
+ * `opentelemetry-instrumentation-sqlalchemy`: Fix a remaining memory leak in EngineTracer
+ * `opentelemetry-instrumentation-sqlite3`: Update documentation on explicit cursor support of tracing
+ * `opentelemetry-instrumentation-sqlalchemy` teach instruments version
+ * Drop `opentelemetry-instrumentation-test` package from default instrumentation list
+ * `opentelemetry-instrumentation-httpx`: remove private unused `_InstrumentedClient`
+ and `_InstrumentedAsyncClient` classes
+- from version 0.49b0
+ * `opentelemetry-instrumentation-openai-v2` Instrumentation for OpenAI >= 0.27.0
+ * `opentelemetry-instrumentation-fastapi` Add autoinstrumentation mechanism tests.
+ * `opentelemetry-instrumentation-aiokafka` Add instrumentor and auto instrumentation
+ support for aiokafka
+ * `opentelemetry-instrumentation-redis` Add additional attributes for methods create_index
+ and search, rename those spans
+ * `opentelemetry-instrumentation` Add support for string based dotted module paths in unwrap
+ * `opentelemetry-instrumentation-aiokafka` Wrap `AIOKafkaConsumer.getone()` instead of `AIOKafkaConsumer.__anext__`
+ * `opentelemetry-instrumentation-confluent-kafka` Fix to allow `topic` to be extracted from `kwargs` in `produce()`
+ * `opentelemetry-instrumentation-system-metrics` Update metric units to conform to UCUM conventions.
+ * `opentelemetry-instrumentation-celery` Don't detach context without a None token
+ * `opentelemetry-exporter-prometheus-remote-write`: sort labels before exporting
+ * `opentelemetry-instrumentation-dbapi` sqlcommenter key values created from PostgreSQL, MySQL systems
+ * `opentelemetry-instrumentation-system-metrics`: don't report open file descriptors on Windows
+ * Deprecation of pkg_resource in favor of importlib.metadata
+ * `opentelemetry-instrumentation` Don't fail distro loading if instrumentor raises ImportError, instead skip them
+ * `opentelemetry-instrumentation-httpx` Rewrote instrumentation to use wrapt instead of subclassing
+- Update BuildRequires and Requires from pyproject.toml
+- Use %{version} in BuildRequires and Requires for dependencies
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_util_http-0.48b0.tar.gz
New:
----
opentelemetry_util_http-0.50b0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-util-http.spec ++++++
--- /var/tmp/diff_new_pack.HoRXtY/_old 2025-01-09 15:11:36.682688985 +0100
+++ /var/tmp/diff_new_pack.HoRXtY/_new 2025-01-09 15:11:36.682688985 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-opentelemetry-util-http
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-opentelemetry-util-http
-Version: 0.48b0
+Version: 0.50b0
Release: 0
Summary: Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python
License: Apache-2.0
@@ -30,19 +30,19 @@
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-opentelemetry-api = 1.27.0
-Requires: python-opentelemetry-instrumentation = 0.48b0
-Requires: python-opentelemetry-sdk = 1.27.0
-Requires: python-opentelemetry-semantic-conventions = 0.48b0
+Requires: python-opentelemetry-api = 1.29.0
+Requires: python-opentelemetry-instrumentation == %{version}
+Requires: python-opentelemetry-sdk = 1.29.0
+Requires: python-opentelemetry-semantic-conventions == %{version}
Requires: python-wrapt >= 1.0.0
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module hatchling}
-BuildRequires: %{python_module opentelemetry-api = 1.27.0}
-BuildRequires: %{python_module opentelemetry-instrumentation = 0.48b0}
-BuildRequires: %{python_module opentelemetry-sdk = 1.27.0}
-BuildRequires: %{python_module opentelemetry-semantic-conventions = 0.48b0}
-BuildRequires: %{python_module opentelemetry-test-utils = 0.48b0}
+BuildRequires: %{python_module opentelemetry-api = 1.29.0}
+BuildRequires: %{python_module opentelemetry-instrumentation == %{version}}
+BuildRequires: %{python_module opentelemetry-sdk = 1.29.0}
+BuildRequires: %{python_module opentelemetry-semantic-conventions == %{version}}
+BuildRequires: %{python_module opentelemetry-test-utils == %{version}}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module wrapt >= 1.0.0}
# /SECTION
++++++ opentelemetry_util_http-0.48b0.tar.gz -> opentelemetry_util_http-0.50b0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_util_http-0.48b0/PKG-INFO new/opentelemetry_util_http-0.50b0/PKG-INFO
--- old/opentelemetry_util_http-0.48b0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_util_http-0.50b0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,10 +1,10 @@
Metadata-Version: 2.3
Name: opentelemetry-util-http
-Version: 0.48b0
+Version: 0.50b0
Summary: Web util for OpenTelemetry
Project-URL: Homepage, https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/ut…
Author-email: OpenTelemetry Authors <cncf-opentelemetry-contributors(a)lists.cncf.io>
-License-Expression: Apache-2.0
+License: Apache-2.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_util_http-0.48b0/src/opentelemetry/util/http/version.py new/opentelemetry_util_http-0.50b0/src/opentelemetry/util/http/version.py
--- old/opentelemetry_util_http-0.48b0/src/opentelemetry/util/http/version.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_util_http-0.50b0/src/opentelemetry/util/http/version.py 2020-02-02 01:00:00.000000000 +0100
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "0.48b0"
+__version__ = "0.50b0"
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-opentelemetry-proto for openSUSE:Factory checked in at 2025-01-09 15:10:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-proto (Old)
and /work/SRC/openSUSE:Factory/.python-opentelemetry-proto.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-proto"
Thu Jan 9 15:10:15 2025 rev:6 rq:1235922 version:1.29.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-opentelemetry-proto/python-opentelemetry-proto.changes 2024-09-05 15:48:17.658828504 +0200
+++ /work/SRC/openSUSE:Factory/.python-opentelemetry-proto.new.1881/python-opentelemetry-proto.changes 2025-01-09 15:11:33.806569848 +0100
@@ -1,0 +2,32 @@
+Wed Jan 8 10:49:59 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to 1.29.0
+ * Fix crash exporting a log record with None body
+ * Fix metrics export with exemplar and no context and filtering observable instruments
+ * Fix recursion error with sdk disabled and handler added to root logger
+ * sdk: setup EventLogger when OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED is set
+ * api: fix logging of duplicate EventLogger setup warning
+ * sdk: fix setting of process owner in ProcessResourceDetector
+ * sdk: fix serialization of logs severity_number field to int
+ * Remove `TestBase.assertEqualSpanInstrumentationInfo` method,
+ use `assertEqualSpanInstrumentationScope` instead
+ * sdk: instantiate lazily `ExemplarBucket`s in `ExemplarReservoir`s
+ * semantic-conventions: Bump to 1.29.0
+- from version 1.28.0
+ * Removed superfluous py.typed markers and added them where they were missing
+ * Include metric info in encoding exceptions
+ * sdk: Add support for log formatting
+ * sdk: Add Host resource detector
+ * sdk: Implementation of exemplars
+ * Implement events sdk
+ * Update semantic conventions to version 1.28.0
+ * Add support to protobuf 5+ and drop support to protobuf 3 and 4
+ * Update environment variable descriptions to match signal
+ * Record logger name as the instrumentation scope name
+ * Fix memory leak in exporter and reader
+ * Drop `OTEL_PYTHON_EXPERIMENTAL_DISABLE_PROMETHEUS_UNIT_NORMALIZATION` environment variable
+ * Improve compatibility with other logging libraries that override
+ `LogRecord.getMessage()` in order to customize message formatting
+- Update BuildRequires and Requires from pyproject.toml
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_proto-1.27.0.tar.gz
New:
----
opentelemetry_proto-1.29.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-proto.spec ++++++
--- /var/tmp/diff_new_pack.Hwavwb/_old 2025-01-09 15:11:34.906615414 +0100
+++ /var/tmp/diff_new_pack.Hwavwb/_new 2025-01-09 15:11:34.906615414 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-opentelemetry-proto
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-opentelemetry-proto
-Version: 1.27.0
+Version: 1.29.0
Release: 0
Summary: OpenTelemetry Python Proto
License: Apache-2.0
@@ -29,11 +29,11 @@
BuildRequires: %{python_module pip}
BuildRequires: python-rpm-macros
# SECTION test requirements
-BuildRequires: %{python_module protobuf >= 3.19}
+BuildRequires: %{python_module protobuf >= 5.0}
BuildRequires: %{python_module pytest}
# /SECTION
BuildRequires: fdupes
-Requires: python-protobuf >= 3.19
+Requires: python-protobuf >= 5.0
BuildArch: noarch
%python_subpackages
++++++ opentelemetry_proto-1.27.0.tar.gz -> opentelemetry_proto-1.29.0.tar.gz ++++++
++++ 5610 lines of diff (skipped)
1
0
09 Jan '25
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-opentelemetry-exporter-otlp-proto-http for openSUSE:Factory checked in at 2025-01-09 15:10:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-exporter-otlp-proto-http (Old)
and /work/SRC/openSUSE:Factory/.python-opentelemetry-exporter-otlp-proto-http.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-exporter-otlp-proto-http"
Thu Jan 9 15:10:01 2025 rev:6 rq:1235919 version:1.29.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-opentelemetry-exporter-otlp-proto-http/python-opentelemetry-exporter-otlp-proto-http.changes 2024-09-11 16:56:27.396697506 +0200
+++ /work/SRC/openSUSE:Factory/.python-opentelemetry-exporter-otlp-proto-http.new.1881/python-opentelemetry-exporter-otlp-proto-http.changes 2025-01-09 15:11:31.458472583 +0100
@@ -1,0 +2,31 @@
+Wed Jan 8 10:44:43 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to 1.29.0
+ * Fix crash exporting a log record with None body
+ * Fix metrics export with exemplar and no context and filtering observable instruments
+ * Fix recursion error with sdk disabled and handler added to root logger
+ * sdk: setup EventLogger when OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED is set
+ * api: fix logging of duplicate EventLogger setup warning
+ * sdk: fix setting of process owner in ProcessResourceDetector
+ * sdk: fix serialization of logs severity_number field to int
+ * Remove `TestBase.assertEqualSpanInstrumentationInfo` method,
+ use `assertEqualSpanInstrumentationScope` instead
+ * sdk: instantiate lazily `ExemplarBucket`s in `ExemplarReservoir`s
+ * semantic-conventions: Bump to 1.29.0
+- from version 1.28.0
+ * Removed superfluous py.typed markers and added them where they were missing
+ * Include metric info in encoding exceptions
+ * sdk: Add support for log formatting
+ * sdk: Add Host resource detector
+ * sdk: Implementation of exemplars
+ * Implement events sdk
+ * Update semantic conventions to version 1.28.0
+ * Add support to protobuf 5+ and drop support to protobuf 3 and 4
+ * Update environment variable descriptions to match signal
+ * Record logger name as the instrumentation scope name
+ * Fix memory leak in exporter and reader
+ * Drop `OTEL_PYTHON_EXPERIMENTAL_DISABLE_PROMETHEUS_UNIT_NORMALIZATION` environment variable
+ * Improve compatibility with other logging libraries that override
+ `LogRecord.getMessage()` in order to customize message formatting
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_exporter_otlp_proto_http-1.27.0.tar.gz
New:
----
opentelemetry_exporter_otlp_proto_http-1.29.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-exporter-otlp-proto-http.spec ++++++
--- /var/tmp/diff_new_pack.Ph3Ugf/_old 2025-01-09 15:11:31.878489980 +0100
+++ /var/tmp/diff_new_pack.Ph3Ugf/_new 2025-01-09 15:11:31.878489980 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-opentelemetry-exporter-otlp-proto-http
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: python-opentelemetry-exporter-otlp-proto-http
-Version: 1.27.0
+Version: 1.29.0
Release: 0
Summary: OpenTelemetry Collector Protobuf over HTTP Exporter
License: Apache-2.0
++++++ opentelemetry_exporter_otlp_proto_http-1.27.0.tar.gz -> opentelemetry_exporter_otlp_proto_http-1.29.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/PKG-INFO new/opentelemetry_exporter_otlp_proto_http-1.29.0/PKG-INFO
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,11 +1,10 @@
Metadata-Version: 2.3
Name: opentelemetry-exporter-otlp-proto-http
-Version: 1.27.0
+Version: 1.29.0
Summary: OpenTelemetry Collector Protobuf over HTTP Exporter
Project-URL: Homepage, https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/o…
Author-email: OpenTelemetry Authors <cncf-opentelemetry-contributors(a)lists.cncf.io>
License: Apache-2.0
-License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: OpenTelemetry
Classifier: Framework :: OpenTelemetry :: Exporters
@@ -22,9 +21,9 @@
Requires-Dist: deprecated>=1.2.6
Requires-Dist: googleapis-common-protos~=1.52
Requires-Dist: opentelemetry-api~=1.15
-Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.27.0
-Requires-Dist: opentelemetry-proto==1.27.0
-Requires-Dist: opentelemetry-sdk~=1.27.0
+Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.29.0
+Requires-Dist: opentelemetry-proto==1.29.0
+Requires-Dist: opentelemetry-sdk~=1.29.0
Requires-Dist: requests~=2.7
Description-Content-Type: text/x-rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/pyproject.toml new/opentelemetry_exporter_otlp_proto_http-1.29.0/pyproject.toml
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -30,9 +30,9 @@
"Deprecated >= 1.2.6",
"googleapis-common-protos ~= 1.52",
"opentelemetry-api ~= 1.15",
- "opentelemetry-proto == 1.27.0",
- "opentelemetry-sdk ~= 1.27.0",
- "opentelemetry-exporter-otlp-proto-common == 1.27.0",
+ "opentelemetry-proto == 1.29.0",
+ "opentelemetry-sdk ~= 1.29.0",
+ "opentelemetry-exporter-otlp-proto-common == 1.29.0",
"requests ~= 2.7",
]
@@ -49,7 +49,7 @@
Homepage = "https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/o…"
[tool.hatch.version]
-path = "src/opentelemetry/exporter/otlp/proto/http/version.py"
+path = "src/opentelemetry/exporter/otlp/proto/http/version/__init__.py"
[tool.hatch.build.targets.sdist]
include = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/__init__.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -69,11 +69,11 @@
API
---
"""
+
import enum
from .version import __version__
-
_OTLP_HTTP_HEADERS = {
"Content-Type": "application/x-protobuf",
"User-Agent": "OTel-OTLP-Exporter-Python/" + __version__,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -17,8 +17,8 @@
import zlib
from io import BytesIO
from os import environ
-from typing import Dict, Optional, Sequence
from time import sleep
+from typing import Dict, Optional, Sequence
import requests
@@ -26,6 +26,15 @@
_create_exp_backoff_generator,
)
from opentelemetry.exporter.otlp.proto.common._log_encoder import encode_logs
+from opentelemetry.exporter.otlp.proto.http import (
+ _OTLP_HTTP_HEADERS,
+ Compression,
+)
+from opentelemetry.sdk._logs import LogData
+from opentelemetry.sdk._logs.export import (
+ LogExporter,
+ LogExportResult,
+)
from opentelemetry.sdk.environment_variables import (
OTEL_EXPORTER_OTLP_CERTIFICATE,
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE,
@@ -33,27 +42,17 @@
OTEL_EXPORTER_OTLP_COMPRESSION,
OTEL_EXPORTER_OTLP_ENDPOINT,
OTEL_EXPORTER_OTLP_HEADERS,
- OTEL_EXPORTER_OTLP_TIMEOUT,
- OTEL_EXPORTER_OTLP_LOGS_ENDPOINT,
OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE,
OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE,
OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY,
+ OTEL_EXPORTER_OTLP_LOGS_COMPRESSION,
+ OTEL_EXPORTER_OTLP_LOGS_ENDPOINT,
OTEL_EXPORTER_OTLP_LOGS_HEADERS,
OTEL_EXPORTER_OTLP_LOGS_TIMEOUT,
- OTEL_EXPORTER_OTLP_LOGS_COMPRESSION,
-)
-from opentelemetry.sdk._logs import LogData
-from opentelemetry.sdk._logs.export import (
- LogExporter,
- LogExportResult,
-)
-from opentelemetry.exporter.otlp.proto.http import (
- _OTLP_HTTP_HEADERS,
- Compression,
+ OTEL_EXPORTER_OTLP_TIMEOUT,
)
from opentelemetry.util.re import parse_env_headers
-
_logger = logging.getLogger(__name__)
@@ -64,7 +63,6 @@
class OTLPLogExporter(LogExporter):
-
_MAX_RETRY_TIMEOUT = 64
def __init__(
@@ -163,7 +161,6 @@
for delay in _create_exp_backoff_generator(
max_value=self._MAX_RETRY_TIMEOUT
):
-
if delay == self._MAX_RETRY_TIMEOUT:
return LogExportResult.FAILURE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -14,17 +14,25 @@
import gzip
import logging
import zlib
-from os import environ
-from typing import Dict, Optional, Any, Callable, List
-from typing import Sequence, Mapping # noqa: F401
-
from io import BytesIO
+from os import environ
from time import sleep
+from typing import ( # noqa: F401
+ Any,
+ Callable,
+ Dict,
+ List,
+ Mapping,
+ Optional,
+ Sequence,
+)
+
+import requests
from deprecated import deprecated
from opentelemetry.exporter.otlp.proto.common._internal import (
- _get_resource_data,
_create_exp_backoff_generator,
+ _get_resource_data,
)
from opentelemetry.exporter.otlp.proto.common._internal.metrics_encoder import (
OTLPMetricExporterMixin,
@@ -33,56 +41,52 @@
encode_metrics,
)
from opentelemetry.exporter.otlp.proto.http import Compression
-from opentelemetry.sdk.metrics._internal.aggregation import Aggregation
from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import ( # noqa: F401
ExportMetricsServiceRequest,
)
-from opentelemetry.proto.common.v1.common_pb2 import ( # noqa: F401
+from opentelemetry.proto.common.v1.common_pb2 import ( # noqa: F401 # noqa: F401
AnyValue,
ArrayValue,
+ InstrumentationScope,
KeyValue,
KeyValueList,
)
-from opentelemetry.proto.common.v1.common_pb2 import ( # noqa: F401
- InstrumentationScope,
-)
-from opentelemetry.proto.resource.v1.resource_pb2 import Resource # noqa: F401
from opentelemetry.proto.metrics.v1 import metrics_pb2 as pb2 # noqa: F401
+from opentelemetry.proto.resource.v1.resource_pb2 import Resource # noqa: F401
+from opentelemetry.proto.resource.v1.resource_pb2 import (
+ Resource as PB2Resource,
+)
from opentelemetry.sdk.environment_variables import (
- OTEL_EXPORTER_OTLP_ENDPOINT,
OTEL_EXPORTER_OTLP_CERTIFICATE,
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE,
OTEL_EXPORTER_OTLP_CLIENT_KEY,
- OTEL_EXPORTER_OTLP_HEADERS,
- OTEL_EXPORTER_OTLP_TIMEOUT,
OTEL_EXPORTER_OTLP_COMPRESSION,
- OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
+ OTEL_EXPORTER_OTLP_ENDPOINT,
+ OTEL_EXPORTER_OTLP_HEADERS,
OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE,
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE,
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY,
+ OTEL_EXPORTER_OTLP_METRICS_COMPRESSION,
+ OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
OTEL_EXPORTER_OTLP_METRICS_HEADERS,
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT,
- OTEL_EXPORTER_OTLP_METRICS_COMPRESSION,
+ OTEL_EXPORTER_OTLP_TIMEOUT,
)
-from opentelemetry.sdk.metrics.export import (
+from opentelemetry.sdk.metrics._internal.aggregation import Aggregation
+from opentelemetry.sdk.metrics.export import ( # noqa: F401
AggregationTemporality,
+ Gauge,
MetricExporter,
MetricExportResult,
MetricsData,
+ Sum,
)
from opentelemetry.sdk.metrics.export import ( # noqa: F401
- Gauge,
Histogram as HistogramType,
- Sum,
)
from opentelemetry.sdk.resources import Resource as SDKResource
from opentelemetry.util.re import parse_env_headers
-import requests
-from opentelemetry.proto.resource.v1.resource_pb2 import (
- Resource as PB2Resource,
-)
-
_logger = logging.getLogger(__name__)
@@ -93,7 +97,6 @@
class OTLPMetricExporter(MetricExporter, OTLPMetricExporterMixin):
-
_MAX_RETRY_TIMEOUT = 64
def __init__(
@@ -196,7 +199,6 @@
for delay in _create_exp_backoff_generator(
max_value=self._MAX_RETRY_TIMEOUT
):
-
if delay == self._MAX_RETRY_TIMEOUT:
return MetricExportResult.FAILURE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -17,8 +17,8 @@
import zlib
from io import BytesIO
from os import environ
-from typing import Dict, Optional
from time import sleep
+from typing import Dict, Optional
import requests
@@ -28,30 +28,29 @@
from opentelemetry.exporter.otlp.proto.common.trace_encoder import (
encode_spans,
)
+from opentelemetry.exporter.otlp.proto.http import (
+ _OTLP_HTTP_HEADERS,
+ Compression,
+)
from opentelemetry.sdk.environment_variables import (
- OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
- OTEL_EXPORTER_OTLP_TRACES_COMPRESSION,
- OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE,
- OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY,
- OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
- OTEL_EXPORTER_OTLP_TRACES_HEADERS,
- OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,
OTEL_EXPORTER_OTLP_CERTIFICATE,
- OTEL_EXPORTER_OTLP_COMPRESSION,
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE,
OTEL_EXPORTER_OTLP_CLIENT_KEY,
+ OTEL_EXPORTER_OTLP_COMPRESSION,
OTEL_EXPORTER_OTLP_ENDPOINT,
OTEL_EXPORTER_OTLP_HEADERS,
OTEL_EXPORTER_OTLP_TIMEOUT,
+ OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
+ OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE,
+ OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY,
+ OTEL_EXPORTER_OTLP_TRACES_COMPRESSION,
+ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
+ OTEL_EXPORTER_OTLP_TRACES_HEADERS,
+ OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,
)
from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult
-from opentelemetry.exporter.otlp.proto.http import (
- _OTLP_HTTP_HEADERS,
- Compression,
-)
from opentelemetry.util.re import parse_env_headers
-
_logger = logging.getLogger(__name__)
@@ -62,7 +61,6 @@
class OTLPSpanExporter(SpanExporter):
-
_MAX_RETRY_TIMEOUT = 64
def __init__(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/encoder/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/encoder/__init__.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/encoder/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/encoder/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -35,10 +35,10 @@
Resource as PB2Resource,
)
from opentelemetry.proto.trace.v1.trace_pb2 import ( # noqa: F401
- ScopeSpans as PB2ScopeSpans,
+ ResourceSpans as PB2ResourceSpans,
)
from opentelemetry.proto.trace.v1.trace_pb2 import ( # noqa: F401
- ResourceSpans as PB2ResourceSpans,
+ ScopeSpans as PB2ScopeSpans,
)
from opentelemetry.proto.trace.v1.trace_pb2 import ( # noqa: F401
Span as PB2SPan,
@@ -46,17 +46,21 @@
from opentelemetry.proto.trace.v1.trace_pb2 import ( # noqa: F401
Status as PB2Status,
)
-from opentelemetry.sdk.trace import Event # noqa: F401
+from opentelemetry.sdk.trace import (
+ Event, # noqa: F401
+ Resource, # noqa: F401
+)
+from opentelemetry.sdk.trace import Span as SDKSpan # noqa: F401
from opentelemetry.sdk.util.instrumentation import ( # noqa: F401
InstrumentationScope,
)
-from opentelemetry.sdk.trace import Resource # noqa: F401
-from opentelemetry.sdk.trace import Span as SDKSpan # noqa: F401
-from opentelemetry.trace import Link # noqa: F401
-from opentelemetry.trace import SpanKind # noqa: F401
+from opentelemetry.trace import (
+ Link, # noqa: F401
+ SpanKind, # noqa: F401
+)
from opentelemetry.trace.span import ( # noqa: F401
SpanContext,
- TraceState,
Status,
+ TraceState,
)
from opentelemetry.util.types import Attributes # noqa: F401
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/version/__init__.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/version/__init__.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/version/__init__.py 1970-01-01 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/version/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,15 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+__version__ = "1.29.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/version.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/version.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/src/opentelemetry/exporter/otlp/proto/http/version.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/src/opentelemetry/exporter/otlp/proto/http/version.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-# Copyright The OpenTelemetry Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-__version__ = "1.27.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/tests/metrics/test_otlp_metrics_exporter.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/tests/metrics/test_otlp_metrics_exporter.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/tests/metrics/test_otlp_metrics_exporter.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/tests/metrics/test_otlp_metrics_exporter.py 2020-02-02 01:00:00.000000000 +0100
@@ -86,7 +86,6 @@
# pylint: disable=protected-access
class TestOTLPMetricExporter(TestCase):
def setUp(self):
-
self.metrics = {
"sum_int": MetricsData(
resource_metrics=[
@@ -113,7 +112,6 @@
}
def test_constructor_default(self):
-
exporter = OTLPMetricExporter()
self.assertEqual(
@@ -218,7 +216,6 @@
},
)
def test_exporter_env(self):
-
exporter = OTLPMetricExporter()
self.assertEqual(exporter._certificate_file, OS_ENV_CERTIFICATE)
@@ -237,7 +234,6 @@
{OTEL_EXPORTER_OTLP_ENDPOINT: OS_ENV_ENDPOINT},
)
def test_exporter_env_endpoint_without_slash(self):
-
exporter = OTLPMetricExporter()
self.assertEqual(
@@ -250,7 +246,6 @@
{OTEL_EXPORTER_OTLP_ENDPOINT: OS_ENV_ENDPOINT + "/"},
)
def test_exporter_env_endpoint_with_slash(self):
-
exporter = OTLPMetricExporter()
self.assertEqual(
@@ -265,7 +260,6 @@
},
)
def test_headers_parse_from_env(self):
-
with self.assertLogs(level="WARNING") as cm:
_ = OTLPMetricExporter()
@@ -307,7 +301,6 @@
@patch.object(Session, "post")
def test_serialization(self, mock_post):
-
resp = Response()
resp.status_code = 200
mock_post.return_value = resp
@@ -350,7 +343,6 @@
)
def test_aggregation_temporality(self):
-
otlp_metric_exporter = OTLPMetricExporter()
for (
@@ -362,7 +354,6 @@
environ,
{OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "CUMULATIVE"},
):
-
otlp_metric_exporter = OTLPMetricExporter()
for (
@@ -375,7 +366,6 @@
with patch.dict(
environ, {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "ABC"}
):
-
with self.assertLogs(level=WARNING):
otlp_metric_exporter = OTLPMetricExporter()
@@ -390,7 +380,6 @@
environ,
{OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA"},
):
-
otlp_metric_exporter = OTLPMetricExporter()
self.assertEqual(
@@ -424,7 +413,6 @@
environ,
{OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "LOWMEMORY"},
):
-
otlp_metric_exporter = OTLPMetricExporter()
self.assertEqual(
@@ -455,7 +443,6 @@
)
def test_exponential_explicit_bucket_histogram(self):
-
self.assertIsInstance(
OTLPMetricExporter()._preferred_aggregation[Histogram],
ExplicitBucketHistogramAggregation,
@@ -513,7 +500,6 @@
)
def test_preferred_aggregation_override(self):
-
histogram_aggregation = ExplicitBucketHistogramAggregation(
boundaries=[0.05, 0.1, 0.5, 1, 5, 10],
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/tests/test_proto_log_exporter.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/tests/test_proto_log_exporter.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/tests/test_proto_log_exporter.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/tests/test_proto_log_exporter.py 2020-02-02 01:00:00.000000000 +0100
@@ -68,7 +68,6 @@
class TestOTLPHTTPLogExporter(unittest.TestCase):
def test_constructor_default(self):
-
exporter = OTLPLogExporter()
self.assertEqual(
@@ -181,7 +180,6 @@
},
)
def test_exporter_env(self):
-
exporter = OTLPLogExporter()
self.assertEqual(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_http-1.27.0/tests/test_proto_span_exporter.py new/opentelemetry_exporter_otlp_proto_http-1.29.0/tests/test_proto_span_exporter.py
--- old/opentelemetry_exporter_otlp_proto_http-1.27.0/tests/test_proto_span_exporter.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_http-1.29.0/tests/test_proto_span_exporter.py 2020-02-02 01:00:00.000000000 +0100
@@ -57,7 +57,6 @@
# pylint: disable=protected-access
class TestOTLPSpanExporter(unittest.TestCase):
def test_constructor_default(self):
-
exporter = OTLPSpanExporter()
self.assertEqual(
@@ -171,7 +170,6 @@
},
)
def test_exporter_env(self):
-
exporter = OTLPSpanExporter()
self.assertEqual(exporter._certificate_file, OS_ENV_CERTIFICATE)
@@ -190,7 +188,6 @@
{OTEL_EXPORTER_OTLP_ENDPOINT: OS_ENV_ENDPOINT},
)
def test_exporter_env_endpoint_without_slash(self):
-
exporter = OTLPSpanExporter()
self.assertEqual(
@@ -203,7 +200,6 @@
{OTEL_EXPORTER_OTLP_ENDPOINT: OS_ENV_ENDPOINT + "/"},
)
def test_exporter_env_endpoint_with_slash(self):
-
exporter = OTLPSpanExporter()
self.assertEqual(
@@ -218,7 +214,6 @@
},
)
def test_headers_parse_from_env(self):
-
with self.assertLogs(level="WARNING") as cm:
_ = OTLPSpanExporter()
1
0
09 Jan '25
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-opentelemetry-exporter-otlp-proto-grpc for openSUSE:Factory checked in at 2025-01-09 15:09:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-exporter-otlp-proto-grpc (Old)
and /work/SRC/openSUSE:Factory/.python-opentelemetry-exporter-otlp-proto-grpc.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-exporter-otlp-proto-grpc"
Thu Jan 9 15:09:55 2025 rev:6 rq:1235918 version:1.29.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-opentelemetry-exporter-otlp-proto-grpc/python-opentelemetry-exporter-otlp-proto-grpc.changes 2024-09-06 17:18:31.255831378 +0200
+++ /work/SRC/openSUSE:Factory/.python-opentelemetry-exporter-otlp-proto-grpc.new.1881/python-opentelemetry-exporter-otlp-proto-grpc.changes 2025-01-09 15:11:30.706441432 +0100
@@ -1,0 +2,31 @@
+Wed Jan 8 10:34:48 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to 1.29.0
+ * Fix crash exporting a log record with None body
+ * Fix metrics export with exemplar and no context and filtering observable instruments
+ * Fix recursion error with sdk disabled and handler added to root logger
+ * sdk: setup EventLogger when OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED is set
+ * api: fix logging of duplicate EventLogger setup warning
+ * sdk: fix setting of process owner in ProcessResourceDetector
+ * sdk: fix serialization of logs severity_number field to int
+ * Remove `TestBase.assertEqualSpanInstrumentationInfo` method,
+ use `assertEqualSpanInstrumentationScope` instead
+ * sdk: instantiate lazily `ExemplarBucket`s in `ExemplarReservoir`s
+ * semantic-conventions: Bump to 1.29.0
+- from version 1.28.0
+ * Removed superfluous py.typed markers and added them where they were missing
+ * Include metric info in encoding exceptions
+ * sdk: Add support for log formatting
+ * sdk: Add Host resource detector
+ * sdk: Implementation of exemplars
+ * Implement events sdk
+ * Update semantic conventions to version 1.28.0
+ * Add support to protobuf 5+ and drop support to protobuf 3 and 4
+ * Update environment variable descriptions to match signal
+ * Record logger name as the instrumentation scope name
+ * Fix memory leak in exporter and reader
+ * Drop `OTEL_PYTHON_EXPERIMENTAL_DISABLE_PROMETHEUS_UNIT_NORMALIZATION` environment variable
+ * Improve compatibility with other logging libraries that override
+ `LogRecord.getMessage()` in order to customize message formatting
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_exporter_otlp_proto_grpc-1.27.0.tar.gz
New:
----
opentelemetry_exporter_otlp_proto_grpc-1.29.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-exporter-otlp-proto-grpc.spec ++++++
--- /var/tmp/diff_new_pack.VpHKko/_old 2025-01-09 15:11:31.290465624 +0100
+++ /var/tmp/diff_new_pack.VpHKko/_new 2025-01-09 15:11:31.290465624 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-opentelemetry-exporter-otlp-proto-grpc
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-opentelemetry-exporter-otlp-proto-grpc
-Version: 1.27.0
+Version: 1.29.0
Release: 0
Summary: OpenTelemetry Collector Protobuf over gRPC Exporter
License: Apache-2.0
@@ -34,7 +34,7 @@
BuildRequires: %{python_module opentelemetry-api >= 1.15}
BuildRequires: %{python_module opentelemetry-exporter-otlp-proto-common = %{version}}
BuildRequires: %{python_module opentelemetry-proto = %{version}}
-BuildRequires: %{python_module opentelemetry-sdk >= 1.27.0}
+BuildRequires: %{python_module opentelemetry-sdk >= %{version}}
BuildRequires: %{python_module opentelemetry-test-utils}
BuildRequires: %{python_module pytest-grpc}
BuildRequires: %{python_module requests}
++++++ opentelemetry_exporter_otlp_proto_grpc-1.27.0.tar.gz -> opentelemetry_exporter_otlp_proto_grpc-1.29.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/PKG-INFO new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/PKG-INFO
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,11 +1,10 @@
Metadata-Version: 2.3
Name: opentelemetry-exporter-otlp-proto-grpc
-Version: 1.27.0
+Version: 1.29.0
Summary: OpenTelemetry Collector Protobuf over gRPC Exporter
Project-URL: Homepage, https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/o…
Author-email: OpenTelemetry Authors <cncf-opentelemetry-contributors(a)lists.cncf.io>
License: Apache-2.0
-License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: OpenTelemetry
Classifier: Framework :: OpenTelemetry :: Exporters
@@ -21,11 +20,11 @@
Requires-Python: >=3.8
Requires-Dist: deprecated>=1.2.6
Requires-Dist: googleapis-common-protos~=1.52
-Requires-Dist: grpcio<2.0.0,>=1.0.0
+Requires-Dist: grpcio<2.0.0,>=1.63.2
Requires-Dist: opentelemetry-api~=1.15
-Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.27.0
-Requires-Dist: opentelemetry-proto==1.27.0
-Requires-Dist: opentelemetry-sdk~=1.27.0
+Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.29.0
+Requires-Dist: opentelemetry-proto==1.29.0
+Requires-Dist: opentelemetry-sdk~=1.29.0
Description-Content-Type: text/x-rst
OpenTelemetry Collector Protobuf over gRPC Exporter
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/pyproject.toml new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/pyproject.toml
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -29,11 +29,11 @@
dependencies = [
"Deprecated >= 1.2.6",
"googleapis-common-protos ~= 1.52",
- "grpcio >= 1.0.0, < 2.0.0",
+ "grpcio >= 1.63.2, < 2.0.0",
"opentelemetry-api ~= 1.15",
- "opentelemetry-proto == 1.27.0",
- "opentelemetry-sdk ~= 1.27.0",
- "opentelemetry-exporter-otlp-proto-common == 1.27.0",
+ "opentelemetry-proto == 1.29.0",
+ "opentelemetry-sdk ~= 1.29.0",
+ "opentelemetry-exporter-otlp-proto-common == 1.29.0",
]
[project.entry-points.opentelemetry_logs_exporter]
@@ -49,7 +49,7 @@
Homepage = "https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/o…"
[tool.hatch.version]
-path = "src/opentelemetry/exporter/otlp/proto/grpc/version.py"
+path = "src/opentelemetry/exporter/otlp/proto/grpc/version/__init__.py"
[tool.hatch.build.targets.sdist]
include = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -69,6 +69,7 @@
API
---
"""
+
from .version import __version__
_USER_AGENT_HEADER_VALUE = "OTel-OTLP-Exporter-Python/" + __version__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -12,10 +12,10 @@
# limitations under the License.
from os import environ
-from typing import Dict, Optional, Tuple, Union, Sequence
+from typing import Dict, Optional, Sequence, Tuple, Union
from typing import Sequence as TypingSequence
-from grpc import ChannelCredentials, Compression
+from grpc import ChannelCredentials, Compression
from opentelemetry.exporter.otlp.proto.common._log_encoder import encode_logs
from opentelemetry.exporter.otlp.proto.grpc.exporter import (
OTLPExporterMixin,
@@ -28,10 +28,9 @@
from opentelemetry.proto.collector.logs.v1.logs_service_pb2_grpc import (
LogsServiceStub,
)
-from opentelemetry.sdk._logs import LogRecord as SDKLogRecord
from opentelemetry.sdk._logs import LogData
+from opentelemetry.sdk._logs import LogRecord as SDKLogRecord
from opentelemetry.sdk._logs.export import LogExporter, LogExportResult
-
from opentelemetry.sdk.environment_variables import (
OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE,
OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE,
@@ -48,7 +47,6 @@
LogExporter,
OTLPExporterMixin[SDKLogRecord, ExportLogsServiceRequest, LogExportResult],
):
-
_result = LogExportResult
_stub = LogsServiceStub
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py 2020-02-02 01:00:00.000000000 +0100
@@ -28,19 +28,15 @@
List,
Optional,
Tuple,
+ TypeVar,
Union,
)
from typing import Sequence as TypingSequence
-from typing import TypeVar
from urllib.parse import urlparse
from deprecated import deprecated
-
-from opentelemetry.exporter.otlp.proto.common._internal import (
- _get_resource_data,
- _create_exp_backoff_generator,
-)
from google.rpc.error_details_pb2 import RetryInfo
+
from grpc import (
ChannelCredentials,
Compression,
@@ -50,7 +46,10 @@
secure_channel,
ssl_channel_credentials,
)
-
+from opentelemetry.exporter.otlp.proto.common._internal import (
+ _create_exp_backoff_generator,
+ _get_resource_data,
+)
from opentelemetry.exporter.otlp.proto.grpc import (
_OTLP_GRPC_HEADERS,
)
@@ -61,9 +60,9 @@
)
from opentelemetry.proto.resource.v1.resource_pb2 import Resource # noqa: F401
from opentelemetry.sdk.environment_variables import (
+ OTEL_EXPORTER_OTLP_CERTIFICATE,
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE,
OTEL_EXPORTER_OTLP_CLIENT_KEY,
- OTEL_EXPORTER_OTLP_CERTIFICATE,
OTEL_EXPORTER_OTLP_COMPRESSION,
OTEL_EXPORTER_OTLP_ENDPOINT,
OTEL_EXPORTER_OTLP_HEADERS,
@@ -306,7 +305,6 @@
return self._result.SUCCESS
except RpcError as error:
-
if error.code() in [
StatusCode.CANCELLED,
StatusCode.DEADLINE_EXCEEDED,
@@ -316,7 +314,6 @@
StatusCode.UNAVAILABLE,
StatusCode.DATA_LOSS,
]:
-
retry_info_bin = dict(error.trailing_metadata()).get(
"google.rpc.retryinfo-bin"
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/metric_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/metric_exporter/__init__.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/metric_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/metric_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -16,18 +16,18 @@
from os import environ
from typing import Dict, Iterable, List, Optional, Tuple, Union
from typing import Sequence as TypingSequence
-from grpc import ChannelCredentials, Compression
+from grpc import ChannelCredentials, Compression
+from opentelemetry.exporter.otlp.proto.common._internal.metrics_encoder import (
+ OTLPMetricExporterMixin,
+)
from opentelemetry.exporter.otlp.proto.common.metrics_encoder import (
encode_metrics,
)
-from opentelemetry.sdk.metrics._internal.aggregation import Aggregation
-from opentelemetry.exporter.otlp.proto.grpc.exporter import (
+from opentelemetry.exporter.otlp.proto.grpc.exporter import ( # noqa: F401
OTLPExporterMixin,
_get_credentials,
environ_to_compression,
-)
-from opentelemetry.exporter.otlp.proto.grpc.exporter import ( # noqa: F401
get_resource_data,
)
from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import (
@@ -50,24 +50,24 @@
OTEL_EXPORTER_OTLP_METRICS_INSECURE,
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT,
)
-from opentelemetry.sdk.metrics.export import (
+from opentelemetry.sdk.metrics._internal.aggregation import Aggregation
+from opentelemetry.sdk.metrics.export import ( # noqa: F401
AggregationTemporality,
DataPointT,
+ Gauge,
Metric,
MetricExporter,
MetricExportResult,
MetricsData,
ResourceMetrics,
ScopeMetrics,
+ Sum,
)
from opentelemetry.sdk.metrics.export import ( # noqa: F401
- Gauge,
- Histogram as HistogramType,
- Sum,
ExponentialHistogram as ExponentialHistogramType,
)
-from opentelemetry.exporter.otlp.proto.common._internal.metrics_encoder import (
- OTLPMetricExporterMixin,
+from opentelemetry.sdk.metrics.export import ( # noqa: F401
+ Histogram as HistogramType,
)
_logger = getLogger(__name__)
@@ -104,7 +104,6 @@
preferred_aggregation: Dict[type, Aggregation] = None,
max_export_batch_size: Optional[int] = None,
):
-
if insecure is None:
insecure = environ.get(OTEL_EXPORTER_OTLP_METRICS_INSECURE)
if insecure is not None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/trace_exporter/__init__.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/trace_exporter/__init__.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/trace_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/trace_exporter/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -18,18 +18,14 @@
from typing import Dict, Optional, Sequence, Tuple, Union
from typing import Sequence as TypingSequence
-
from grpc import ChannelCredentials, Compression
-
from opentelemetry.exporter.otlp.proto.common.trace_encoder import (
encode_spans,
)
-from opentelemetry.exporter.otlp.proto.grpc.exporter import (
+from opentelemetry.exporter.otlp.proto.grpc.exporter import ( # noqa: F401
OTLPExporterMixin,
_get_credentials,
environ_to_compression,
-)
-from opentelemetry.exporter.otlp.proto.grpc.exporter import ( # noqa: F401
get_resource_data,
)
from opentelemetry.proto.collector.trace.v1.trace_service_pb2 import (
@@ -42,15 +38,17 @@
InstrumentationScope,
)
from opentelemetry.proto.trace.v1.trace_pb2 import ( # noqa: F401
- ScopeSpans,
ResourceSpans,
+ ScopeSpans,
+ Status,
+)
+from opentelemetry.proto.trace.v1.trace_pb2 import ( # noqa: F401
Span as CollectorSpan,
)
-from opentelemetry.proto.trace.v1.trace_pb2 import Status # noqa: F401
from opentelemetry.sdk.environment_variables import (
+ OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE,
OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY,
- OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
OTEL_EXPORTER_OTLP_TRACES_COMPRESSION,
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
OTEL_EXPORTER_OTLP_TRACES_HEADERS,
@@ -96,7 +94,6 @@
timeout: Optional[int] = None,
compression: Optional[Compression] = None,
):
-
if insecure is None:
insecure = environ.get(OTEL_EXPORTER_OTLP_TRACES_INSECURE)
if insecure is not None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/version/__init__.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/version/__init__.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/version/__init__.py 1970-01-01 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/version/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,15 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+__version__ = "1.29.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/version.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/version.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/src/opentelemetry/exporter/otlp/proto/grpc/version.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/src/opentelemetry/exporter/otlp/proto/grpc/version.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-# Copyright The OpenTelemetry Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-__version__ = "1.27.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/tests/logs/test_otlp_logs_exporter.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/tests/logs/test_otlp_logs_exporter.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/tests/logs/test_otlp_logs_exporter.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/tests/logs/test_otlp_logs_exporter.py 2020-02-02 01:00:00.000000000 +0100
@@ -24,7 +24,9 @@
Duration,
)
from google.protobuf.json_format import MessageToDict
-from google.rpc.error_details_pb2 import RetryInfo
+from google.rpc.error_details_pb2 import ( # pylint: disable=no-name-in-module
+ RetryInfo,
+)
from grpc import ChannelCredentials, Compression, StatusCode, server
from opentelemetry._logs import SeverityNumber
@@ -41,11 +43,10 @@
LogsServiceServicer,
add_LogsServiceServicer_to_server,
)
-from opentelemetry.proto.common.v1.common_pb2 import AnyValue
+from opentelemetry.proto.common.v1.common_pb2 import AnyValue, KeyValue
from opentelemetry.proto.common.v1.common_pb2 import (
InstrumentationScope as PB2InstrumentationScope,
)
-from opentelemetry.proto.common.v1.common_pb2 import KeyValue
from opentelemetry.proto.logs.v1.logs_pb2 import LogRecord as PB2LogRecord
from opentelemetry.proto.logs.v1.logs_pb2 import ResourceLogs, ScopeLogs
from opentelemetry.proto.resource.v1.resource_pb2 import (
@@ -393,7 +394,6 @@
)
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
def test_unavailable(self, mock_sleep, mock_expo):
-
mock_expo.configure_mock(**{"return_value": [0.01]})
add_LogsServiceServicer_to_server(
@@ -409,7 +409,6 @@
)
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
def test_unavailable_delay(self, mock_sleep, mock_expo):
-
mock_expo.configure_mock(**{"return_value": [1]})
add_LogsServiceServicer_to_server(
@@ -474,7 +473,6 @@
self.fail("No log records found")
def test_translate_log_data(self):
-
expected = ExportLogsServiceRequest(
resource_logs=[
ResourceLogs(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/tests/test_otlp_exporter_mixin.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/tests/test_otlp_exporter_mixin.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/tests/test_otlp_exporter_mixin.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/tests/test_otlp_exporter_mixin.py 2020-02-02 01:00:00.000000000 +0100
@@ -23,7 +23,9 @@
from google.protobuf.duration_pb2 import ( # pylint: disable=no-name-in-module
Duration,
)
-from google.rpc.error_details_pb2 import RetryInfo
+from google.rpc.error_details_pb2 import ( # pylint: disable=no-name-in-module
+ RetryInfo,
+)
from grpc import Compression
from opentelemetry.exporter.otlp.proto.grpc.exporter import (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/tests/test_otlp_metrics_exporter.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/tests/test_otlp_metrics_exporter.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/tests/test_otlp_metrics_exporter.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/tests/test_otlp_metrics_exporter.py 2020-02-02 01:00:00.000000000 +0100
@@ -29,7 +29,9 @@
from google.protobuf.duration_pb2 import ( # pylint: disable=no-name-in-module
Duration,
)
-from google.rpc.error_details_pb2 import RetryInfo
+from google.rpc.error_details_pb2 import ( # pylint: disable=no-name-in-module
+ RetryInfo,
+)
from grpc import ChannelCredentials, Compression, StatusCode, server
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import (
@@ -146,7 +148,6 @@
# pylint: disable=too-many-public-methods
def setUp(self):
-
self.exporter = OTLPMetricExporter()
self.server = server(ThreadPoolExecutor(max_workers=10))
@@ -485,7 +486,6 @@
)
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
def test_unavailable(self, mock_sleep, mock_expo):
-
mock_expo.configure_mock(**{"return_value": [0.01]})
add_MetricsServiceServicer_to_server(
@@ -502,7 +502,6 @@
)
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
def test_unavailable_delay(self, mock_sleep, mock_expo):
-
mock_expo.configure_mock(**{"return_value": [1]})
add_MetricsServiceServicer_to_server(
@@ -520,7 +519,6 @@
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.logger.error")
def test_unknown_logs(self, mock_logger_error, mock_sleep, mock_expo):
-
mock_expo.configure_mock(**{"return_value": [1]})
add_MetricsServiceServicer_to_server(
@@ -890,7 +888,6 @@
environ,
{OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "CUMULATIVE"},
):
-
otlp_metric_exporter = OTLPMetricExporter()
for (
@@ -903,7 +900,6 @@
with patch.dict(
environ, {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "ABC"}
):
-
with self.assertLogs(level=WARNING):
otlp_metric_exporter = OTLPMetricExporter()
@@ -918,7 +914,6 @@
environ,
{OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA"},
):
-
otlp_metric_exporter = OTLPMetricExporter()
self.assertEqual(
@@ -952,7 +947,6 @@
environ,
{OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "LOWMEMORY"},
):
-
otlp_metric_exporter = OTLPMetricExporter()
self.assertEqual(
@@ -983,7 +977,6 @@
)
def test_exponential_explicit_bucket_histogram(self):
-
self.assertIsInstance(
# pylint: disable=protected-access
OTLPMetricExporter()._preferred_aggregation[Histogram],
@@ -1034,7 +1027,6 @@
)
def test_preferred_aggregation_override(self):
-
histogram_aggregation = ExplicitBucketHistogramAggregation(
boundaries=[0.05, 0.1, 0.5, 1, 5, 10],
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/tests/test_otlp_trace_exporter.py new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/tests/test_otlp_trace_exporter.py
--- old/opentelemetry_exporter_otlp_proto_grpc-1.27.0/tests/test_otlp_trace_exporter.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_grpc-1.29.0/tests/test_otlp_trace_exporter.py 2020-02-02 01:00:00.000000000 +0100
@@ -25,7 +25,9 @@
from google.protobuf.duration_pb2 import ( # pylint: disable=no-name-in-module
Duration,
)
-from google.rpc.error_details_pb2 import RetryInfo
+from google.rpc.error_details_pb2 import ( # pylint: disable=no-name-in-module
+ RetryInfo,
+)
from grpc import ChannelCredentials, Compression, StatusCode, server
from opentelemetry.attributes import BoundedAttributes
@@ -44,17 +46,23 @@
TraceServiceServicer,
add_TraceServiceServicer_to_server,
)
-from opentelemetry.proto.common.v1.common_pb2 import AnyValue, ArrayValue
+from opentelemetry.proto.common.v1.common_pb2 import (
+ AnyValue,
+ ArrayValue,
+ KeyValue,
+)
from opentelemetry.proto.common.v1.common_pb2 import (
InstrumentationScope as PB2InstrumentationScope,
)
-from opentelemetry.proto.common.v1.common_pb2 import KeyValue
from opentelemetry.proto.resource.v1.resource_pb2 import (
Resource as OTLPResource,
)
-from opentelemetry.proto.trace.v1.trace_pb2 import ResourceSpans, ScopeSpans
+from opentelemetry.proto.trace.v1.trace_pb2 import (
+ ResourceSpans,
+ ScopeSpans,
+ Status,
+)
from opentelemetry.proto.trace.v1.trace_pb2 import Span as OTLPSpan
-from opentelemetry.proto.trace.v1.trace_pb2 import Status
from opentelemetry.sdk.environment_variables import (
OTEL_EXPORTER_OTLP_COMPRESSION,
OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
@@ -526,7 +534,6 @@
)
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
def test_unavailable(self, mock_sleep, mock_expo):
-
mock_expo.configure_mock(**{"return_value": [0.01]})
add_TraceServiceServicer_to_server(
@@ -541,7 +548,6 @@
)
@patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
def test_unavailable_delay(self, mock_sleep, mock_expo):
-
mock_expo.configure_mock(**{"return_value": [1]})
add_TraceServiceServicer_to_server(
@@ -569,7 +575,6 @@
)
def test_translate_spans(self):
-
expected = ExportTraceServiceRequest(
resource_spans=[
ResourceSpans(
1
0
commit python-opentelemetry-exporter-otlp-proto-common for openSUSE:Factory
by Source-Sync 09 Jan '25
by Source-Sync 09 Jan '25
09 Jan '25
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-opentelemetry-exporter-otlp-proto-common for openSUSE:Factory checked in at 2025-01-09 15:09:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-exporter-otlp-proto-common (Old)
and /work/SRC/openSUSE:Factory/.python-opentelemetry-exporter-otlp-proto-common.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-exporter-otlp-proto-common"
Thu Jan 9 15:09:51 2025 rev:8 rq:1235917 version:1.29.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-opentelemetry-exporter-otlp-proto-common/python-opentelemetry-exporter-otlp-proto-common.changes 2024-09-05 15:48:18.470862227 +0200
+++ /work/SRC/openSUSE:Factory/.python-opentelemetry-exporter-otlp-proto-common.new.1881/python-opentelemetry-exporter-otlp-proto-common.changes 2025-01-09 15:11:30.070415085 +0100
@@ -1,0 +2,31 @@
+Wed Jan 8 10:15:49 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to 1.29.0
+ * Fix crash exporting a log record with None body
+ * Fix metrics export with exemplar and no context and filtering observable instruments
+ * Fix recursion error with sdk disabled and handler added to root logger
+ * sdk: setup EventLogger when OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED is set
+ * api: fix logging of duplicate EventLogger setup warning
+ * sdk: fix setting of process owner in ProcessResourceDetector
+ * sdk: fix serialization of logs severity_number field to int
+ * Remove `TestBase.assertEqualSpanInstrumentationInfo` method,
+ use `assertEqualSpanInstrumentationScope` instead
+ * sdk: instantiate lazily `ExemplarBucket`s in `ExemplarReservoir`s
+ * semantic-conventions: Bump to 1.29.0
+- from version 1.28.0
+ * Removed superfluous py.typed markers and added them where they were missing
+ * Include metric info in encoding exceptions
+ * sdk: Add support for log formatting
+ * sdk: Add Host resource detector
+ * sdk: Implementation of exemplars
+ * Implement events sdk
+ * Update semantic conventions to version 1.28.0
+ * Add support to protobuf 5+ and drop support to protobuf 3 and 4
+ * Update environment variable descriptions to match signal
+ * Record logger name as the instrumentation scope name
+ * Fix memory leak in exporter and reader
+ * Drop `OTEL_PYTHON_EXPERIMENTAL_DISABLE_PROMETHEUS_UNIT_NORMALIZATION` environment variable
+ * Improve compatibility with other logging libraries that override
+ `LogRecord.getMessage()` in order to customize message formatting
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_exporter_otlp_proto_common-1.27.0.tar.gz
New:
----
opentelemetry_exporter_otlp_proto_common-1.29.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-exporter-otlp-proto-common.spec ++++++
--- /var/tmp/diff_new_pack.Fycx1L/_old 2025-01-09 15:11:30.530434141 +0100
+++ /var/tmp/diff_new_pack.Fycx1L/_new 2025-01-09 15:11:30.530434141 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-opentelemetry-exporter-otlp-proto-common
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-opentelemetry-exporter-otlp-proto-common
-Version: 1.27.0
+Version: 1.29.0
Release: 0
Summary: OpenTelemetry Protobuf encoding
License: Apache-2.0
++++++ opentelemetry_exporter_otlp_proto_common-1.27.0.tar.gz -> opentelemetry_exporter_otlp_proto_common-1.29.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/PKG-INFO new/opentelemetry_exporter_otlp_proto_common-1.29.0/PKG-INFO
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,11 +1,10 @@
Metadata-Version: 2.3
Name: opentelemetry-exporter-otlp-proto-common
-Version: 1.27.0
+Version: 1.29.0
Summary: OpenTelemetry Protobuf encoding
Project-URL: Homepage, https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/o…
Author-email: OpenTelemetry Authors <cncf-opentelemetry-contributors(a)lists.cncf.io>
License: Apache-2.0
-License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: OpenTelemetry
Classifier: Framework :: OpenTelemetry :: Exporters
@@ -19,7 +18,7 @@
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
-Requires-Dist: opentelemetry-proto==1.27.0
+Requires-Dist: opentelemetry-proto==1.29.0
Description-Content-Type: text/x-rst
OpenTelemetry Protobuf Encoding
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/pyproject.toml new/opentelemetry_exporter_otlp_proto_common-1.29.0/pyproject.toml
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -27,14 +27,14 @@
"Programming Language :: Python :: 3.12",
]
dependencies = [
- "opentelemetry-proto == 1.27.0",
+ "opentelemetry-proto == 1.29.0",
]
[project.urls]
Homepage = "https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/o…"
[tool.hatch.version]
-path = "src/opentelemetry/exporter/otlp/proto/common/version.py"
+path = "src/opentelemetry/exporter/otlp/proto/common/version/__init__.py"
[tool.hatch.build.targets.sdist]
include = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -18,31 +18,31 @@
from itertools import count
from typing import (
Any,
- Mapping,
- Optional,
- List,
Callable,
- TypeVar,
Dict,
Iterator,
+ List,
+ Mapping,
+ Optional,
+ TypeVar,
)
-from opentelemetry.sdk.util.instrumentation import InstrumentationScope
+from opentelemetry.proto.common.v1.common_pb2 import AnyValue as PB2AnyValue
from opentelemetry.proto.common.v1.common_pb2 import (
- InstrumentationScope as PB2InstrumentationScope,
+ ArrayValue as PB2ArrayValue,
)
-from opentelemetry.proto.resource.v1.resource_pb2 import (
- Resource as PB2Resource,
+from opentelemetry.proto.common.v1.common_pb2 import (
+ InstrumentationScope as PB2InstrumentationScope,
)
-from opentelemetry.proto.common.v1.common_pb2 import AnyValue as PB2AnyValue
from opentelemetry.proto.common.v1.common_pb2 import KeyValue as PB2KeyValue
from opentelemetry.proto.common.v1.common_pb2 import (
KeyValueList as PB2KeyValueList,
)
-from opentelemetry.proto.common.v1.common_pb2 import (
- ArrayValue as PB2ArrayValue,
+from opentelemetry.proto.resource.v1.resource_pb2 import (
+ Resource as PB2Resource,
)
from opentelemetry.sdk.trace import Resource
+from opentelemetry.sdk.util.instrumentation import InstrumentationScope
from opentelemetry.util.types import Attributes
_logger = logging.getLogger(__name__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -12,25 +12,24 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from collections import defaultdict
-from typing import Sequence, List
+from typing import List, Sequence
from opentelemetry.exporter.otlp.proto.common._internal import (
+ _encode_attributes,
_encode_instrumentation_scope,
_encode_resource,
_encode_span_id,
_encode_trace_id,
_encode_value,
- _encode_attributes,
)
from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import (
ExportLogsServiceRequest,
)
+from opentelemetry.proto.logs.v1.logs_pb2 import LogRecord as PB2LogRecord
from opentelemetry.proto.logs.v1.logs_pb2 import (
- ScopeLogs,
ResourceLogs,
+ ScopeLogs,
)
-from opentelemetry.proto.logs.v1.logs_pb2 import LogRecord as PB2LogRecord
-
from opentelemetry.sdk._logs import LogData
@@ -49,13 +48,14 @@
if log_data.log_record.trace_id == 0
else _encode_trace_id(log_data.log_record.trace_id)
)
+ body = log_data.log_record.body
return PB2LogRecord(
time_unix_nano=log_data.log_record.timestamp,
observed_time_unix_nano=log_data.log_record.observed_timestamp,
span_id=span_id,
trace_id=trace_id,
flags=int(log_data.log_record.trace_flags),
- body=_encode_value(log_data.log_record.body),
+ body=_encode_value(body) if body is not None else None,
severity_text=log_data.log_record.severity_text,
attributes=_encode_attributes(log_data.log_record.attributes),
dropped_attributes_count=log_data.log_record.dropped_attributes,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/_internal/metrics_encoder/__init__.py new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/_internal/metrics_encoder/__init__.py
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/_internal/metrics_encoder/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/_internal/metrics_encoder/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -12,51 +12,52 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import logging
+from os import environ
+from typing import Dict, List
-from opentelemetry.sdk.metrics.export import (
- MetricExporter,
+from opentelemetry.exporter.otlp.proto.common._internal import (
+ _encode_attributes,
+ _encode_span_id,
+ _encode_trace_id,
+)
+from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import (
+ ExportMetricsServiceRequest,
+)
+from opentelemetry.proto.common.v1.common_pb2 import InstrumentationScope
+from opentelemetry.proto.metrics.v1 import metrics_pb2 as pb2
+from opentelemetry.proto.resource.v1.resource_pb2 import (
+ Resource as PB2Resource,
+)
+from opentelemetry.sdk.environment_variables import (
+ OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION,
+ OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE,
)
-from opentelemetry.sdk.metrics.view import Aggregation
-from os import environ
from opentelemetry.sdk.metrics import (
Counter,
+ Exemplar,
Histogram,
ObservableCounter,
ObservableGauge,
ObservableUpDownCounter,
UpDownCounter,
)
-from opentelemetry.exporter.otlp.proto.common._internal import (
- _encode_attributes,
-)
-from opentelemetry.sdk.environment_variables import (
- OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE,
-)
from opentelemetry.sdk.metrics.export import (
AggregationTemporality,
-)
-from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import (
- ExportMetricsServiceRequest,
-)
-from opentelemetry.proto.common.v1.common_pb2 import InstrumentationScope
-from opentelemetry.proto.metrics.v1 import metrics_pb2 as pb2
-from opentelemetry.sdk.metrics.export import (
- MetricsData,
Gauge,
- Histogram as HistogramType,
+ MetricExporter,
+ MetricsData,
Sum,
- ExponentialHistogram as ExponentialHistogramType,
)
-from typing import Dict
-from opentelemetry.proto.resource.v1.resource_pb2 import (
- Resource as PB2Resource,
+from opentelemetry.sdk.metrics.export import (
+ ExponentialHistogram as ExponentialHistogramType,
)
-from opentelemetry.sdk.environment_variables import (
- OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION,
+from opentelemetry.sdk.metrics.export import (
+ Histogram as HistogramType,
)
from opentelemetry.sdk.metrics.view import (
- ExponentialBucketHistogramAggregation,
+ Aggregation,
ExplicitBucketHistogramAggregation,
+ ExponentialBucketHistogramAggregation,
)
_logger = logging.getLogger(__name__)
@@ -68,7 +69,6 @@
preferred_temporality: Dict[type, AggregationTemporality] = None,
preferred_aggregation: Dict[type, Aggregation] = None,
) -> None:
-
MetricExporter.__init__(
self,
preferred_temporality=self._get_temporality(preferred_temporality),
@@ -78,7 +78,6 @@
def _get_temporality(
self, preferred_temporality: Dict[type, AggregationTemporality]
) -> Dict[type, AggregationTemporality]:
-
otel_exporter_otlp_metrics_temporality_preference = (
environ.get(
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE,
@@ -135,7 +134,6 @@
self,
preferred_aggregation: Dict[type, Aggregation],
) -> Dict[type, Aggregation]:
-
otel_exporter_otlp_metrics_default_histogram_aggregation = environ.get(
OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION,
"explicit_bucket_histogram",
@@ -144,17 +142,14 @@
if otel_exporter_otlp_metrics_default_histogram_aggregation == (
"base2_exponential_bucket_histogram"
):
-
instrument_class_aggregation = {
Histogram: ExponentialBucketHistogramAggregation(),
}
else:
-
if otel_exporter_otlp_metrics_default_histogram_aggregation != (
"explicit_bucket_histogram"
):
-
_logger.warning(
(
"Invalid value for %s: %s, using explicit bucket "
@@ -173,152 +168,26 @@
return instrument_class_aggregation
-def encode_metrics(data: MetricsData) -> ExportMetricsServiceRequest:
- resource_metrics_dict = {}
-
- for resource_metrics in data.resource_metrics:
-
- resource = resource_metrics.resource
-
- # It is safe to assume that each entry in data.resource_metrics is
- # associated with an unique resource.
- scope_metrics_dict = {}
-
- resource_metrics_dict[resource] = scope_metrics_dict
-
- for scope_metrics in resource_metrics.scope_metrics:
-
- instrumentation_scope = scope_metrics.scope
-
- # The SDK groups metrics in instrumentation scopes already so
- # there is no need to check for existing instrumentation scopes
- # here.
- pb2_scope_metrics = pb2.ScopeMetrics(
- scope=InstrumentationScope(
- name=instrumentation_scope.name,
- version=instrumentation_scope.version,
- )
- )
+class EncodingException(Exception):
+ """
+ Raised by encode_metrics() when an exception is caught during encoding. Contains the problematic metric so
+ the misbehaving metric name and details can be logged during exception handling.
+ """
+
+ def __init__(self, original_exception, metric):
+ super().__init__()
+ self.original_exception = original_exception
+ self.metric = metric
- scope_metrics_dict[instrumentation_scope] = pb2_scope_metrics
+ def __str__(self):
+ return f"{self.metric}\n{self.original_exception}"
- for metric in scope_metrics.metrics:
- pb2_metric = pb2.Metric(
- name=metric.name,
- description=metric.description,
- unit=metric.unit,
- )
- if isinstance(metric.data, Gauge):
- for data_point in metric.data.data_points:
- pt = pb2.NumberDataPoint(
- attributes=_encode_attributes(
- data_point.attributes
- ),
- time_unix_nano=data_point.time_unix_nano,
- )
- if isinstance(data_point.value, int):
- pt.as_int = data_point.value
- else:
- pt.as_double = data_point.value
- pb2_metric.gauge.data_points.append(pt)
-
- elif isinstance(metric.data, HistogramType):
- for data_point in metric.data.data_points:
- pt = pb2.HistogramDataPoint(
- attributes=_encode_attributes(
- data_point.attributes
- ),
- time_unix_nano=data_point.time_unix_nano,
- start_time_unix_nano=(
- data_point.start_time_unix_nano
- ),
- count=data_point.count,
- sum=data_point.sum,
- bucket_counts=data_point.bucket_counts,
- explicit_bounds=data_point.explicit_bounds,
- max=data_point.max,
- min=data_point.min,
- )
- pb2_metric.histogram.aggregation_temporality = (
- metric.data.aggregation_temporality
- )
- pb2_metric.histogram.data_points.append(pt)
-
- elif isinstance(metric.data, Sum):
- for data_point in metric.data.data_points:
- pt = pb2.NumberDataPoint(
- attributes=_encode_attributes(
- data_point.attributes
- ),
- start_time_unix_nano=(
- data_point.start_time_unix_nano
- ),
- time_unix_nano=data_point.time_unix_nano,
- )
- if isinstance(data_point.value, int):
- pt.as_int = data_point.value
- else:
- pt.as_double = data_point.value
- # note that because sum is a message type, the
- # fields must be set individually rather than
- # instantiating a pb2.Sum and setting it once
- pb2_metric.sum.aggregation_temporality = (
- metric.data.aggregation_temporality
- )
- pb2_metric.sum.is_monotonic = metric.data.is_monotonic
- pb2_metric.sum.data_points.append(pt)
-
- elif isinstance(metric.data, ExponentialHistogramType):
- for data_point in metric.data.data_points:
-
- if data_point.positive.bucket_counts:
- positive = pb2.ExponentialHistogramDataPoint.Buckets(
- offset=data_point.positive.offset,
- bucket_counts=data_point.positive.bucket_counts,
- )
- else:
- positive = None
-
- if data_point.negative.bucket_counts:
- negative = pb2.ExponentialHistogramDataPoint.Buckets(
- offset=data_point.negative.offset,
- bucket_counts=data_point.negative.bucket_counts,
- )
- else:
- negative = None
-
- pt = pb2.ExponentialHistogramDataPoint(
- attributes=_encode_attributes(
- data_point.attributes
- ),
- time_unix_nano=data_point.time_unix_nano,
- start_time_unix_nano=(
- data_point.start_time_unix_nano
- ),
- count=data_point.count,
- sum=data_point.sum,
- scale=data_point.scale,
- zero_count=data_point.zero_count,
- positive=positive,
- negative=negative,
- flags=data_point.flags,
- max=data_point.max,
- min=data_point.min,
- )
- pb2_metric.exponential_histogram.aggregation_temporality = (
- metric.data.aggregation_temporality
- )
- pb2_metric.exponential_histogram.data_points.append(pt)
-
- else:
- _logger.warning(
- "unsupported data type %s",
- metric.data.__class__.__name__,
- )
- continue
+def encode_metrics(data: MetricsData) -> ExportMetricsServiceRequest:
+ resource_metrics_dict = {}
- pb2_scope_metrics.metrics.append(pb2_metric)
+ for resource_metrics in data.resource_metrics:
+ _encode_resource_metrics(resource_metrics, resource_metrics_dict)
resource_data = []
for (
@@ -334,5 +203,184 @@
schema_url=sdk_resource.schema_url,
)
)
- resource_metrics = resource_data
- return ExportMetricsServiceRequest(resource_metrics=resource_metrics)
+ return ExportMetricsServiceRequest(resource_metrics=resource_data)
+
+
+def _encode_resource_metrics(resource_metrics, resource_metrics_dict):
+ resource = resource_metrics.resource
+ # It is safe to assume that each entry in data.resource_metrics is
+ # associated with an unique resource.
+ scope_metrics_dict = {}
+ resource_metrics_dict[resource] = scope_metrics_dict
+ for scope_metrics in resource_metrics.scope_metrics:
+ instrumentation_scope = scope_metrics.scope
+
+ # The SDK groups metrics in instrumentation scopes already so
+ # there is no need to check for existing instrumentation scopes
+ # here.
+ pb2_scope_metrics = pb2.ScopeMetrics(
+ scope=InstrumentationScope(
+ name=instrumentation_scope.name,
+ version=instrumentation_scope.version,
+ )
+ )
+
+ scope_metrics_dict[instrumentation_scope] = pb2_scope_metrics
+
+ for metric in scope_metrics.metrics:
+ pb2_metric = pb2.Metric(
+ name=metric.name,
+ description=metric.description,
+ unit=metric.unit,
+ )
+
+ try:
+ _encode_metric(metric, pb2_metric)
+ except Exception as ex:
+ # `from None` so we don't get "During handling of the above exception, another exception occurred:"
+ raise EncodingException(ex, metric) from None
+
+ pb2_scope_metrics.metrics.append(pb2_metric)
+
+
+def _encode_metric(metric, pb2_metric):
+ if isinstance(metric.data, Gauge):
+ for data_point in metric.data.data_points:
+ pt = pb2.NumberDataPoint(
+ attributes=_encode_attributes(data_point.attributes),
+ time_unix_nano=data_point.time_unix_nano,
+ exemplars=_encode_exemplars(data_point.exemplars),
+ )
+ if isinstance(data_point.value, int):
+ pt.as_int = data_point.value
+ else:
+ pt.as_double = data_point.value
+ pb2_metric.gauge.data_points.append(pt)
+
+ elif isinstance(metric.data, HistogramType):
+ for data_point in metric.data.data_points:
+ pt = pb2.HistogramDataPoint(
+ attributes=_encode_attributes(data_point.attributes),
+ time_unix_nano=data_point.time_unix_nano,
+ start_time_unix_nano=data_point.start_time_unix_nano,
+ exemplars=_encode_exemplars(data_point.exemplars),
+ count=data_point.count,
+ sum=data_point.sum,
+ bucket_counts=data_point.bucket_counts,
+ explicit_bounds=data_point.explicit_bounds,
+ max=data_point.max,
+ min=data_point.min,
+ )
+ pb2_metric.histogram.aggregation_temporality = (
+ metric.data.aggregation_temporality
+ )
+ pb2_metric.histogram.data_points.append(pt)
+
+ elif isinstance(metric.data, Sum):
+ for data_point in metric.data.data_points:
+ pt = pb2.NumberDataPoint(
+ attributes=_encode_attributes(data_point.attributes),
+ start_time_unix_nano=data_point.start_time_unix_nano,
+ time_unix_nano=data_point.time_unix_nano,
+ exemplars=_encode_exemplars(data_point.exemplars),
+ )
+ if isinstance(data_point.value, int):
+ pt.as_int = data_point.value
+ else:
+ pt.as_double = data_point.value
+ # note that because sum is a message type, the
+ # fields must be set individually rather than
+ # instantiating a pb2.Sum and setting it once
+ pb2_metric.sum.aggregation_temporality = (
+ metric.data.aggregation_temporality
+ )
+ pb2_metric.sum.is_monotonic = metric.data.is_monotonic
+ pb2_metric.sum.data_points.append(pt)
+
+ elif isinstance(metric.data, ExponentialHistogramType):
+ for data_point in metric.data.data_points:
+ if data_point.positive.bucket_counts:
+ positive = pb2.ExponentialHistogramDataPoint.Buckets(
+ offset=data_point.positive.offset,
+ bucket_counts=data_point.positive.bucket_counts,
+ )
+ else:
+ positive = None
+
+ if data_point.negative.bucket_counts:
+ negative = pb2.ExponentialHistogramDataPoint.Buckets(
+ offset=data_point.negative.offset,
+ bucket_counts=data_point.negative.bucket_counts,
+ )
+ else:
+ negative = None
+
+ pt = pb2.ExponentialHistogramDataPoint(
+ attributes=_encode_attributes(data_point.attributes),
+ time_unix_nano=data_point.time_unix_nano,
+ start_time_unix_nano=data_point.start_time_unix_nano,
+ exemplars=_encode_exemplars(data_point.exemplars),
+ count=data_point.count,
+ sum=data_point.sum,
+ scale=data_point.scale,
+ zero_count=data_point.zero_count,
+ positive=positive,
+ negative=negative,
+ flags=data_point.flags,
+ max=data_point.max,
+ min=data_point.min,
+ )
+ pb2_metric.exponential_histogram.aggregation_temporality = (
+ metric.data.aggregation_temporality
+ )
+ pb2_metric.exponential_histogram.data_points.append(pt)
+
+ else:
+ _logger.warning(
+ "unsupported data type %s",
+ metric.data.__class__.__name__,
+ )
+
+
+def _encode_exemplars(sdk_exemplars: List[Exemplar]) -> List[pb2.Exemplar]:
+ """
+ Converts a list of SDK Exemplars into a list of protobuf Exemplars.
+
+ Args:
+ sdk_exemplars (list): The list of exemplars from the OpenTelemetry SDK.
+
+ Returns:
+ list: A list of protobuf exemplars.
+ """
+ pb_exemplars = []
+ for sdk_exemplar in sdk_exemplars:
+ if (
+ sdk_exemplar.span_id is not None
+ and sdk_exemplar.trace_id is not None
+ ):
+ pb_exemplar = pb2.Exemplar(
+ time_unix_nano=sdk_exemplar.time_unix_nano,
+ span_id=_encode_span_id(sdk_exemplar.span_id),
+ trace_id=_encode_trace_id(sdk_exemplar.trace_id),
+ filtered_attributes=_encode_attributes(
+ sdk_exemplar.filtered_attributes
+ ),
+ )
+ else:
+ pb_exemplar = pb2.Exemplar(
+ time_unix_nano=sdk_exemplar.time_unix_nano,
+ filtered_attributes=_encode_attributes(
+ sdk_exemplar.filtered_attributes
+ ),
+ )
+
+ # Assign the value based on its type in the SDK exemplar
+ if isinstance(sdk_exemplar.value, float):
+ pb_exemplar.as_double = sdk_exemplar.value
+ elif isinstance(sdk_exemplar.value, int):
+ pb_exemplar.as_int = sdk_exemplar.value
+ else:
+ raise ValueError("Exemplar value must be an int or float")
+ pb_exemplars.append(pb_exemplar)
+
+ return pb_exemplars
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/version/__init__.py new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/version/__init__.py
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/version/__init__.py 1970-01-01 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/version/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,15 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+__version__ = "1.29.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/version.py new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/version.py
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/src/opentelemetry/exporter/otlp/proto/common/version.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/src/opentelemetry/exporter/otlp/proto/common/version.py 1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-# Copyright The OpenTelemetry Authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-__version__ = "1.27.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/tests/test_log_encoder.py new/opentelemetry_exporter_otlp_proto_common-1.29.0/tests/test_log_encoder.py
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/tests/test_log_encoder.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/tests/test_log_encoder.py 2020-02-02 01:00:00.000000000 +0100
@@ -51,6 +51,18 @@
sdk_logs, expected_encoding = self.get_test_logs()
self.assertEqual(encode_logs(sdk_logs), expected_encoding)
+ def test_encode_no_body(self):
+ sdk_logs, expected_encoding = self.get_test_logs()
+ for log in sdk_logs:
+ log.log_record.body = None
+
+ for resource_log in expected_encoding.resource_logs:
+ for scope_log in resource_log.scope_logs:
+ for log_record in scope_log.log_records:
+ log_record.ClearField("body")
+
+ self.assertEqual(encode_logs(sdk_logs), expected_encoding)
+
def test_dropped_attributes_count(self):
sdk_logs = self._get_test_logs_dropped_attributes()
encoded_logs = encode_logs(sdk_logs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_exporter_otlp_proto_common-1.27.0/tests/test_metrics_encoder.py new/opentelemetry_exporter_otlp_proto_common-1.29.0/tests/test_metrics_encoder.py
--- old/opentelemetry_exporter_otlp_proto_common-1.27.0/tests/test_metrics_encoder.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_exporter_otlp_proto_common-1.29.0/tests/test_metrics_encoder.py 2020-02-02 01:00:00.000000000 +0100
@@ -12,9 +12,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# pylint: disable=protected-access
+# pylint: disable=protected-access,too-many-lines
import unittest
+from opentelemetry.exporter.otlp.proto.common._internal.metrics_encoder import (
+ EncodingException,
+)
from opentelemetry.exporter.otlp.proto.common.metrics_encoder import (
encode_metrics,
)
@@ -30,19 +33,21 @@
from opentelemetry.proto.resource.v1.resource_pb2 import (
Resource as OTLPResource,
)
-from opentelemetry.sdk.metrics.export import AggregationTemporality, Buckets
-from opentelemetry.sdk.metrics.export import (
- ExponentialHistogram as ExponentialHistogramType,
-)
-from opentelemetry.sdk.metrics.export import ExponentialHistogramDataPoint
-from opentelemetry.sdk.metrics.export import Histogram as HistogramType
+from opentelemetry.sdk.metrics import Exemplar
from opentelemetry.sdk.metrics.export import (
+ AggregationTemporality,
+ Buckets,
+ ExponentialHistogramDataPoint,
HistogramDataPoint,
Metric,
MetricsData,
ResourceMetrics,
ScopeMetrics,
)
+from opentelemetry.sdk.metrics.export import (
+ ExponentialHistogram as ExponentialHistogramType,
+)
+from opentelemetry.sdk.metrics.export import Histogram as HistogramType
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.util.instrumentation import (
InstrumentationScope as SDKInstrumentationScope,
@@ -51,6 +56,9 @@
class TestOTLPMetricsEncoder(unittest.TestCase):
+ span_id = int("6e0c63257de34c92", 16)
+ trace_id = int("d4cda95b652f4a1592b449d5929fda1b", 16)
+
histogram = Metric(
name="histogram",
description="foo",
@@ -61,6 +69,22 @@
attributes={"a": 1, "b": True},
start_time_unix_nano=1641946016139533244,
time_unix_nano=1641946016139533244,
+ exemplars=[
+ Exemplar(
+ {"filtered": "banana"},
+ 298.0,
+ 1641946016139533400,
+ span_id,
+ trace_id,
+ ),
+ Exemplar(
+ {"filtered": "banana"},
+ 298.0,
+ 1641946016139533400,
+ None,
+ None,
+ ),
+ ],
count=5,
sum=67,
bucket_counts=[1, 4],
@@ -456,7 +480,34 @@
sum=67,
bucket_counts=[1, 4],
explicit_bounds=[10.0, 20.0],
- exemplars=[],
+ exemplars=[
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ span_id=b"n\x0cc%}\xe3L\x92",
+ trace_id=b"\xd4\xcd\xa9[e/J\x15\x92\xb4I\xd5\x92\x9f\xda\x1b",
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ ],
max=18.0,
min=8.0,
)
@@ -559,7 +610,34 @@
sum=67,
bucket_counts=[1, 4],
explicit_bounds=[10.0, 20.0],
- exemplars=[],
+ exemplars=[
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ span_id=b"n\x0cc%}\xe3L\x92",
+ trace_id=b"\xd4\xcd\xa9[e/J\x15\x92\xb4I\xd5\x92\x9f\xda\x1b",
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ ],
max=18.0,
min=8.0,
)
@@ -594,7 +672,34 @@
sum=67,
bucket_counts=[1, 4],
explicit_bounds=[10.0, 20.0],
- exemplars=[],
+ exemplars=[
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ span_id=b"n\x0cc%}\xe3L\x92",
+ trace_id=b"\xd4\xcd\xa9[e/J\x15\x92\xb4I\xd5\x92\x9f\xda\x1b",
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ ],
max=18.0,
min=8.0,
)
@@ -636,7 +741,34 @@
sum=67,
bucket_counts=[1, 4],
explicit_bounds=[10.0, 20.0],
- exemplars=[],
+ exemplars=[
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ span_id=b"n\x0cc%}\xe3L\x92",
+ trace_id=b"\xd4\xcd\xa9[e/J\x15\x92\xb4I\xd5\x92\x9f\xda\x1b",
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ ],
max=18.0,
min=8.0,
)
@@ -678,7 +810,34 @@
sum=67,
bucket_counts=[1, 4],
explicit_bounds=[10.0, 20.0],
- exemplars=[],
+ exemplars=[
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ span_id=b"n\x0cc%}\xe3L\x92",
+ trace_id=b"\xd4\xcd\xa9[e/J\x15\x92\xb4I\xd5\x92\x9f\xda\x1b",
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ pb2.Exemplar(
+ time_unix_nano=1641946016139533400,
+ as_double=298,
+ filtered_attributes=[
+ KeyValue(
+ key="filtered",
+ value=AnyValue(
+ string_value="banana"
+ ),
+ )
+ ],
+ ),
+ ],
max=18.0,
min=8.0,
)
@@ -814,3 +973,35 @@
# pylint: disable=protected-access
actual = encode_metrics(metrics_data)
self.assertEqual(expected, actual)
+
+ def test_encoding_exception_reraise(self):
+ # this number is too big to fit in a signed 64-bit proto field and causes a ValueError
+ big_number = 2**63
+ metrics_data = MetricsData(
+ resource_metrics=[
+ ResourceMetrics(
+ resource=Resource(
+ attributes={},
+ schema_url="resource_schema_url",
+ ),
+ scope_metrics=[
+ ScopeMetrics(
+ scope=SDKInstrumentationScope(
+ name="first_name",
+ version="first_version",
+ schema_url="insrumentation_scope_schema_url",
+ ),
+ metrics=[_generate_sum("sum_double", big_number)],
+ schema_url="instrumentation_scope_schema_url",
+ )
+ ],
+ schema_url="resource_schema_url",
+ )
+ ]
+ )
+ with self.assertRaises(EncodingException) as context:
+ encode_metrics(metrics_data)
+
+ # assert that the EncodingException wraps the metric and original exception
+ assert isinstance(context.exception.metric, Metric)
+ assert isinstance(context.exception.original_exception, ValueError)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package bpftrace for openSUSE:Factory checked in at 2025-01-09 15:09:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bpftrace (Old)
and /work/SRC/openSUSE:Factory/.bpftrace.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bpftrace"
Thu Jan 9 15:09:41 2025 rev:32 rq:1235891 version:0.21.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/bpftrace/bpftrace.changes 2024-12-19 21:41:09.794006079 +0100
+++ /work/SRC/openSUSE:Factory/.bpftrace.new.1881/bpftrace.changes 2025-01-09 15:11:28.058331740 +0100
@@ -1,0 +2,9 @@
+Thu Dec 26 12:57:46 UTC 2024 - Shung-Hsi Yu <shung-hsi.yu(a)suse.com>
+
+- Support building with LLVM 19
+ * add 0002-Drop-support-for-LLVM-12-and-below.patch
+ * add 0003-cmake-Allow-any-LLVM-release-for-debug-builds.patch
+ * add 0004-Bump-max-LLVM-version-to-19-3433.patch
+- Default to LLVM 19 in Factory and SLE15-SP7
+
+-------------------------------------------------------------------
@@ -7,0 +17 @@
+
@@ -93,0 +104,5 @@
+
+-------------------------------------------------------------------
+Mon Jan 22 13:39:02 UTC 2024 - Shung-Hsi Yu <shung-hsi.yu(a)suse.com>
+
+- Switch to gcc for compilation (bsc#1219008)
New:
----
0002-Drop-support-for-LLVM-12-and-below.patch
0003-cmake-Allow-any-LLVM-release-for-debug-builds.patch
0004-Bump-max-LLVM-version-to-19-3433.patch
BETA DEBUG BEGIN:
New:- Support building with LLVM 19
* add 0002-Drop-support-for-LLVM-12-and-below.patch
* add 0003-cmake-Allow-any-LLVM-release-for-debug-builds.patch
New: * add 0002-Drop-support-for-LLVM-12-and-below.patch
* add 0003-cmake-Allow-any-LLVM-release-for-debug-builds.patch
* add 0004-Bump-max-LLVM-version-to-19-3433.patch
New: * add 0003-cmake-Allow-any-LLVM-release-for-debug-builds.patch
* add 0004-Bump-max-LLVM-version-to-19-3433.patch
- Default to LLVM 19 in Factory and SLE15-SP7
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ bpftrace.spec ++++++
--- /var/tmp/diff_new_pack.v1Yfdr/_old 2025-01-09 15:11:28.534351457 +0100
+++ /var/tmp/diff_new_pack.v1Yfdr/_new 2025-01-09 15:11:28.538351623 +0100
@@ -18,8 +18,8 @@
# Use default LLVM unless it is not yet supported
%if 0%{?suse_version} >= 1600
- %if 0%{?product_libs_llvm_ver} > 18
- %define llvm_major_version 18
+ %if 0%{?product_libs_llvm_ver} > 19
+ %define llvm_major_version 19
%else
%define llvm_major_version %{nil}
%endif
@@ -28,6 +28,9 @@
%define xx_binary clang++
%else
# Hard-code latest LLVM for SLES, the default version is too old
+ %if 0%{?sle_version} == 150700
+ %define llvm_major_version 19
+ %else
%if 0%{?sle_version} == 150600
%define llvm_major_version 17
%else
@@ -39,6 +42,7 @@
%endif
%endif
%endif
+ %endif
%define cc_package gcc13-c++
%define cc_binary gcc-13
%define xx_binary g++-13
@@ -54,6 +58,10 @@
Source: https://github.com/iovisor/bpftrace/archive/v%{version}.tar.gz#/%{name}-%{v…
# PATCH-FIX-UPSTREAM 0001-tools-bashreadline-fix-probe-for-dynamically-linked-.patch bsc#1232536
Patch0: 0001-tools-bashreadline-fix-probe-for-dynamically-linked-.patch
+Patch1: 0002-Drop-support-for-LLVM-12-and-below.patch
+Patch2: 0003-cmake-Allow-any-LLVM-release-for-debug-builds.patch
+# PATCH-FIX-UPSTREAM 0004-Bump-max-LLVM-version-to-19-3433.patch bpftrace/bpftrace##3433
+Patch3: 0004-Bump-max-LLVM-version-to-19-3433.patch
BuildRequires: %cc_package
BuildRequires: binutils
BuildRequires: binutils-devel
++++++ 0002-Drop-support-for-LLVM-12-and-below.patch ++++++
From 08a7d5c48bc36c4876e7de62323a8860e886f7a8 Mon Sep 17 00:00:00 2001
From: Alastair Robertson <ajor(a)meta.com>
Date: Wed, 17 Jul 2024 08:03:30 -0700
Subject: [PATCH 1/3] Drop support for LLVM 12 and below
LLVM 11 and below have been untested for a while.
Dropping LLVM 12 allows us to upgrade to C++ 20.
---
.github/workflows/ci.yml | 5 --
CHANGELOG.md | 2 +
CMakeLists.txt | 2 +-
flake.nix | 2 -
src/ast/irbuilderbpf.cpp | 18 +-----
src/ast/irbuilderbpf.h | 19 -------
src/ast/passes/codegen_llvm.cpp | 4 +-
src/clang_parser.cpp | 99 +--------------------------------
tests/clang_parser.cpp | 5 --
tests/data/CMakeLists.txt | 8 +--
tests/testprogs/CMakeLists.txt | 5 --
11 files changed, 8 insertions(+), 161 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6b87ea3c..a37b7bdc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -28,11 +28,6 @@ jobs:
strategy:
matrix:
env:
- - NAME: LLVM 12 Release
- CMAKE_BUILD_TYPE: Release
- NIX_TARGET: .#bpftrace-llvm12
- TOOLS_TEST_OLDVERSION: tcpdrop.bt
- TOOLS_TEST_DISABLE: biosnoop.bt
- NAME: LLVM 13 Release
CMAKE_BUILD_TYPE: Release
NIX_TARGET: .#bpftrace-llvm13
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7fa1fe14..c223b4e5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,8 @@ and this project adheres to
#### Changed
#### Deprecated
#### Removed
+- Drop support for LLVM 12 and below
+ - [#3325](https://github.com/bpftrace/bpftrace/pull/3325)
#### Fixed
#### Security
#### Docs
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7e03ca7d..05ca8dcc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -148,7 +148,7 @@ else()
find_package(LLVM REQUIRED)
endif()
-set(MIN_LLVM_MAJOR 6)
+set(MIN_LLVM_MAJOR 13)
set(MAX_LLVM_MAJOR 18)
if((${LLVM_VERSION_MAJOR} VERSION_LESS ${MIN_LLVM_MAJOR}) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER ${MAX_LLVM_MAJOR}))
diff --git a/flake.nix b/flake.nix
index 6202e372..9931a2a5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -145,7 +145,6 @@
bpftrace-llvm15 = mkBpftrace pkgs.llvmPackages_15;
bpftrace-llvm14 = mkBpftrace pkgs.llvmPackages_14;
bpftrace-llvm13 = mkBpftrace pkgs.llvmPackages_13;
- bpftrace-llvm12 = mkBpftrace pkgs.llvmPackages_12;
# Self-contained static binary with all dependencies
appimage = nix-appimage.mkappimage.${system} {
@@ -192,7 +191,6 @@
bpftrace-llvm15 = mkBpftraceDevShell self.packages.${system}.bpftrace-llvm15;
bpftrace-llvm14 = mkBpftraceDevShell self.packages.${system}.bpftrace-llvm14;
bpftrace-llvm13 = mkBpftraceDevShell self.packages.${system}.bpftrace-llvm13;
- bpftrace-llvm12 = mkBpftraceDevShell self.packages.${system}.bpftrace-llvm12;
};
});
}
diff --git a/src/ast/irbuilderbpf.cpp b/src/ast/irbuilderbpf.cpp
index deccf4a8..89434075 100644
--- a/src/ast/irbuilderbpf.cpp
+++ b/src/ast/irbuilderbpf.cpp
@@ -15,14 +15,6 @@
#include "log.h"
#include "utils.h"
-#if LLVM_VERSION_MAJOR >= 10
-#define CREATE_MEMSET(ptr, val, size, align) \
- CreateMemSet((ptr), (val), (size), MaybeAlign((align)))
-#else
-#define CREATE_MEMSET(ptr, val, size, align) \
- CreateMemSet((ptr), (val), (size), (align))
-#endif
-
namespace libbpf {
#include "libbpf/bpf.h"
} // namespace libbpf
@@ -247,7 +239,7 @@ void IRBuilderBPF::CreateMemsetBPF(Value *ptr, Value *val, uint32_t size)
// So only use helper based memset when we really need it. And that's when
// we're memset()ing off-stack. We know it's off stack b/c 512 is program
// stack limit.
- CREATE_MEMSET(ptr, val, getInt64(size), 1);
+ CreateMemSet(ptr, val, getInt64(size), MaybeAlign(1));
}
}
@@ -347,11 +339,7 @@ CallInst *IRBuilderBPF::createCall(FunctionType *callee_type,
ArrayRef<Value *> args,
const Twine &Name)
{
-#if LLVM_VERSION_MAJOR >= 11
return CreateCall(callee_type, callee, args, Name);
-#else
- return CreateCall(callee, args, Name);
-#endif
}
Value *IRBuilderBPF::GetMapVar(const std::string &map_name)
@@ -2445,11 +2433,7 @@ StoreInst *IRBuilderBPF::createAlignedStore(Value *val,
Value *ptr,
unsigned int align)
{
-#if LLVM_VERSION_MAJOR < 10
- return CreateAlignedStore(val, ptr, align);
-#else
return CreateAlignedStore(val, ptr, MaybeAlign(align));
-#endif
}
void IRBuilderBPF::CreateProbeRead(Value *ctx,
diff --git a/src/ast/irbuilderbpf.h b/src/ast/irbuilderbpf.h
index 6a42c003..e9b3b124 100644
--- a/src/ast/irbuilderbpf.h
+++ b/src/ast/irbuilderbpf.h
@@ -11,32 +11,13 @@
#include "bpftrace.h"
#include "types.h"
-#if LLVM_VERSION_MAJOR >= 5 && LLVM_VERSION_MAJOR < 7
-#define CREATE_MEMCPY(dst, src, size, algn) \
- CreateMemCpy((dst), (src), (size), (algn))
-#define CREATE_MEMCPY_VOLATILE(dst, src, size, algn) \
- CreateMemCpy((dst), (src), (size), (algn), true)
-#elif LLVM_VERSION_MAJOR >= 7 && LLVM_VERSION_MAJOR < 10
-#define CREATE_MEMCPY(dst, src, size, algn) \
- CreateMemCpy((dst), (algn), (src), (algn), (size))
-#define CREATE_MEMCPY_VOLATILE(dst, src, size, algn) \
- CreateMemCpy((dst), (algn), (src), (algn), (size), true)
-#elif LLVM_VERSION_MAJOR >= 10
#define CREATE_MEMCPY(dst, src, size, algn) \
CreateMemCpy((dst), MaybeAlign(algn), (src), MaybeAlign(algn), (size))
#define CREATE_MEMCPY_VOLATILE(dst, src, size, algn) \
CreateMemCpy((dst), MaybeAlign(algn), (src), MaybeAlign(algn), (size), true)
-#else
-#error Unsupported LLVM version
-#endif
-#if LLVM_VERSION_MAJOR >= 13
#define CREATE_ATOMIC_RMW(op, ptr, val, align, order) \
CreateAtomicRMW((op), (ptr), (val), MaybeAlign((align)), (order))
-#else
-#define CREATE_ATOMIC_RMW(op, ptr, val, align, order) \
- CreateAtomicRMW((op), (ptr), (val), (order))
-#endif
#if LLVM_VERSION_MAJOR >= 15
#define GET_PTR_TY() getPtrTy()
diff --git a/src/ast/passes/codegen_llvm.cpp b/src/ast/passes/codegen_llvm.cpp
index 562ec65f..f4314023 100644
--- a/src/ast/passes/codegen_llvm.cpp
+++ b/src/ast/passes/codegen_llvm.cpp
@@ -3727,10 +3727,8 @@ void CodegenLLVM::emit(raw_pwrite_stream &stream)
#if LLVM_VERSION_MAJOR >= 18
auto type = CodeGenFileType::ObjectFile;
-#elif LLVM_VERSION_MAJOR >= 10
- auto type = llvm::CGFT_ObjectFile;
#else
- auto type = llvm::TargetMachine::CGFT_ObjectFile;
+ auto type = llvm::CGFT_ObjectFile;
#endif
if (target_machine_->addPassesToEmitFile(PM, stream, nullptr, type))
diff --git a/src/clang_parser.cpp b/src/clang_parser.cpp
index 8d79f076..52bb8786 100644
--- a/src/clang_parser.cpp
+++ b/src/clang_parser.cpp
@@ -86,102 +86,6 @@ static std::string get_clang_string(CXString string)
return str;
}
-/*
- * is_anonymous
- *
- * Determine whether the provided cursor points to an anonymous struct.
- *
- * This union is anonymous:
- * struct { int i; };
- * This is not, although it is marked as such in LLVM 8:
- * struct { int i; } obj;
- * This is not, and does not actually declare an instance of a struct:
- * struct X { int i; };
- *
- * The libclang API was changed in LLVM 8 and restored under a different
- * function in LLVM 9. For LLVM 8 there is no way to properly tell if
- * a record declaration is anonymous, so we do some hacks here.
- *
- * LLVM version differences:
- * https://reviews.llvm.org/D54996
- * https://reviews.llvm.org/D61232
- */
-static bool is_anonymous(CXCursor c)
-{
-#if LLVM_VERSION_MAJOR <= 7
- return clang_Cursor_isAnonymous(c);
-#elif LLVM_VERSION_MAJOR >= 9
- return clang_Cursor_isAnonymousRecordDecl(c);
-#else // LLVM 8
- if (!clang_Cursor_isAnonymous(c))
- return false;
-
- // In LLVM 8, some structs which the above function says are anonymous
- // are actually not. We iterate through the siblings of our struct
- // definition to see if there is a field giving it a name.
- //
- // struct Parent struct Parent
- // { {
- // struct struct
- // { {
- // ... ...
- // } name; };
- // int sibling; int sibling;
- // }; };
- //
- // Children of parent: Children of parent:
- // Struct: (cursor c) Struct: (cursor c)
- // Field: (Record)name Field: (int)sibling
- // Field: (int)sibling
- //
- // Record field found after No record field found after
- // cursor - not anonymous cursor - anonymous
-
- auto parent = clang_getCursorSemanticParent(c);
- if (clang_Cursor_isNull(parent))
- return false;
-
- struct AnonFinderState {
- CXCursor struct_to_check;
- bool is_anon;
- bool prev_was_definition;
- } state;
-
- state.struct_to_check = c;
- state.is_anon = true;
- state.prev_was_definition = false;
-
- clang_visitChildren(
- parent,
- [](CXCursor c2, CXCursor, CXClientData client_data) {
- auto state = static_cast<struct AnonFinderState *>(client_data);
- if (state->prev_was_definition) {
- // This is the next child after the definition of the struct we're
- // interested in. If it is a field containing a record, we assume
- // that it must be the field for our struct, so our struct is not
- // anonymous.
- state->prev_was_definition = false;
- auto kind = clang_getCursorKind(c2);
- auto type = clang_getCanonicalType(clang_getCursorType(c2));
- if (kind == CXCursor_FieldDecl && type.kind == CXType_Record) {
- state->is_anon = false;
- return CXChildVisit_Break;
- }
- }
-
- // We've found the definition of the struct we're interested in
- if (memcmp(c2.data,
- state->struct_to_check.data,
- 3 * sizeof(uintptr_t)) == 0)
- state->prev_was_definition = true;
- return CXChildVisit_Continue;
- },
- &state);
-
- return state.is_anon;
-#endif
-}
-
/*
* get_named_parent
*
@@ -192,7 +96,8 @@ static CXCursor get_named_parent(CXCursor c)
{
CXCursor parent = clang_getCursorSemanticParent(c);
- while (!clang_Cursor_isNull(parent) && is_anonymous(parent)) {
+ while (!clang_Cursor_isNull(parent) &&
+ clang_Cursor_isAnonymousRecordDecl(parent)) {
parent = clang_getCursorSemanticParent(parent);
}
diff --git a/tests/clang_parser.cpp b/tests/clang_parser.cpp
index acf07b19..db099fb4 100644
--- a/tests/clang_parser.cpp
+++ b/tests/clang_parser.cpp
@@ -208,13 +208,8 @@ TEST(clang_parser, nested_struct_no_type)
parse("struct Foo { struct { int x; } bar; union { int y; } baz; }",
bpftrace);
-#if LLVM_VERSION_MAJOR >= 13
std::string bar_name = "struct Foo::(unnamed at definitions.h:2:14)";
std::string baz_name = "union Foo::(unnamed at definitions.h:2:37)";
-#else
- std::string bar_name = "struct Foo::(anonymous at definitions.h:2:14)";
- std::string baz_name = "union Foo::(anonymous at definitions.h:2:37)";
-#endif
ASSERT_TRUE(bpftrace.structs.Has("struct Foo"));
ASSERT_TRUE(bpftrace.structs.Has(bar_name));
diff --git a/tests/data/CMakeLists.txt b/tests/data/CMakeLists.txt
index 7eaded22..caa4b397 100644
--- a/tests/data/CMakeLists.txt
+++ b/tests/data/CMakeLists.txt
@@ -11,17 +11,11 @@ find_program(AWK awk REQUIRED)
find_program(STRIP strip REQUIRED)
# Build data_source.o and inject BTF into it
-set(DATA_SOURCE_CFLAGS -g)
-if(LLVM_VERSION_MAJOR VERSION_LESS 13)
- # CI's GCC compile the testprogs using DWARF version 5
- # LLDB doesn't support DWARF5 before version 13, so we force DWARF4
- set(DATA_SOURCE_CFLAGS ${DATA_SOURCE_CFLAGS} -gdwarf-4)
-endif()
set(DATA_SOURCE_C ${CMAKE_CURRENT_SOURCE_DIR}/data_source.c)
set(DATA_SOURCE_O ${CMAKE_CURRENT_BINARY_DIR}/data_source.o)
add_custom_command(
OUTPUT ${DATA_SOURCE_O}
- COMMAND gcc ${DATA_SOURCE_CFLAGS} -o ${DATA_SOURCE_O} ${DATA_SOURCE_C}
+ COMMAND gcc -g -o ${DATA_SOURCE_O} ${DATA_SOURCE_C}
# pahole uses LLVM_OBJCOPY env var.
# We must hack it like this b/c cmake does not support setting env vars at build time
COMMAND bash -c "LLVM_OBJCOPY=${LLVM_OBJCOPY} pahole -J ${DATA_SOURCE_O}"
diff --git a/tests/testprogs/CMakeLists.txt b/tests/testprogs/CMakeLists.txt
index 58c17f7a..8f93658c 100644
--- a/tests/testprogs/CMakeLists.txt
+++ b/tests/testprogs/CMakeLists.txt
@@ -1,9 +1,4 @@
set(testprog_cflags "-g -O0 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer")
-if(LLVM_VERSION_MAJOR VERSION_LESS 13)
- # CI's GCC compile the testprogs using DWARF version 5
- # LLDB doesn't support DWARF5 before version 13, so we force DWARF4
- set(testprog_cflags "${testprog_cflags} -gdwarf-4")
-endif()
file(GLOB testprog_sources CONFIGURE_DEPENDS *.c)
set(testprogtargets "")
--
2.47.1
++++++ 0003-cmake-Allow-any-LLVM-release-for-debug-builds.patch ++++++
From 4e96768dd8f710ae727caa38397f3edb73faf156 Mon Sep 17 00:00:00 2001
From: Daniel Xu <dxu(a)dxuuu.xyz>
Date: Thu, 19 Sep 2024 11:17:25 +0200
Subject: [PATCH 2/3] cmake: Allow any LLVM release for debug builds
---
CMakeLists.txt | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 05ca8dcc..025ff321 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -149,7 +149,15 @@ else()
endif()
set(MIN_LLVM_MAJOR 13)
-set(MAX_LLVM_MAJOR 18)
+if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+ # We assume bpftrace is not being packaged when CMAKE_BUILD_TYPE=Debug.
+ # So allow building with any LLVM version. This is purely for developers.
+ # Packagers are highly discouraged from shipping bpftrace with untested LLVM
+ # releases.
+ set(MAX_LLVM_MAJOR 999)
+else()
+ set(MAX_LLVM_MAJOR 18)
+endif()
if((${LLVM_VERSION_MAJOR} VERSION_LESS ${MIN_LLVM_MAJOR}) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER ${MAX_LLVM_MAJOR}))
message(SEND_ERROR "Unsupported LLVM version found via ${LLVM_INCLUDE_DIRS}: ${LLVM_VERSION_MAJOR}")
--
2.47.1
++++++ 0004-Bump-max-LLVM-version-to-19-3433.patch ++++++
From 63811ea6ccaf2b6315d55b219921eb872a38042c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem(a)gmail.com>
Date: Wed, 11 Dec 2024 23:14:10 -0800
Subject: [PATCH 3/3] Bump max LLVM version to 19 (#3433)
* cmake: Bump max LLVM version to 19
* Add CI job for clang/llvm 19
* flake.nix: Add LLVM 19 support
---
.github/workflows/ci.yml | 27 +++++++++++++++------------
CHANGELOG.md | 2 ++
CMakeLists.txt | 2 +-
flake.nix | 5 +++++
4 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a37b7bdc..ce28320f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -53,31 +53,34 @@ jobs:
NIX_TARGET: .#bpftrace-llvm17
TOOLS_TEST_OLDVERSION: tcpdrop.bt
TOOLS_TEST_DISABLE: biosnoop.bt
- - NAME: LLVM 18 Release
+ - NAME: LLVM 18
+ CMAKE_BUILD_TYPE: Debug
+ NIX_TARGET: .#bpftrace-llvm18
+ TOOLS_TEST_OLDVERSION: tcpdrop.bt
+ TOOLS_TEST_DISABLE: biosnoop.bt
+ - NAME: LLVM 19 Release
CMAKE_BUILD_TYPE: Release
- NIX_TARGET: .#bpftrace-llvm18
- TOOLS_TEST_OLDVERSION: tcpdrop.bt
+ NIX_TARGET: .#bpftrace-llvm19
TOOLS_TEST_DISABLE: biosnoop.bt
- - NAME: LLVM 18 Debug
+ - NAME: LLVM 19 Debug
CMAKE_BUILD_TYPE: Debug
- NIX_TARGET: .#bpftrace-llvm18
- TOOLS_TEST_OLDVERSION: tcpdrop.bt
+ NIX_TARGET: .#bpftrace-llvm19
TOOLS_TEST_DISABLE: biosnoop.bt
- - NAME: LLVM 18 Clang Debug
+ - NAME: LLVM 19 Clang Debug
CMAKE_BUILD_TYPE: Debug
- NIX_TARGET: .#bpftrace-llvm18
+ NIX_TARGET: .#bpftrace-llvm19
CC: clang
CXX: clang++
TOOLS_TEST_OLDVERSION: tcpdrop.bt
TOOLS_TEST_DISABLE: biosnoop.bt
- - NAME: Memleak test (LLVM 18 Debug)
+ - NAME: Memleak test (LLVM 19 Debug)
CMAKE_BUILD_TYPE: Debug
- NIX_TARGET: .#bpftrace-llvm18
+ NIX_TARGET: .#bpftrace-llvm19
RUN_MEMLEAK_TEST: 1
RUN_TESTS: 0
- - NAME: Memleak test (LLVM 18 Release)
+ - NAME: Memleak test (LLVM 19 Release)
CMAKE_BUILD_TYPE: Release
- NIX_TARGET: .#bpftrace-llvm18
+ NIX_TARGET: .#bpftrace-llvm19
RUN_MEMLEAK_TEST: 1
RUN_TESTS: 0
steps:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c223b4e5..e326548a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,8 @@ and this project adheres to
## Unreleased
#### Added
+= Bump max supported LLVM version to 19
+ - [#3433](https://github.com/bpftrace/bpftrace/pull/3433)
#### Changed
#### Deprecated
#### Removed
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 025ff321..a3ba009a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -156,7 +156,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
# releases.
set(MAX_LLVM_MAJOR 999)
else()
- set(MAX_LLVM_MAJOR 18)
+ set(MAX_LLVM_MAJOR 19)
endif()
if((${LLVM_VERSION_MAJOR} VERSION_LESS ${MIN_LLVM_MAJOR}) OR (${LLVM_VERSION_MAJOR} VERSION_GREATER ${MAX_LLVM_MAJOR}))
diff --git a/flake.nix b/flake.nix
index 9931a2a5..e589f989 100644
--- a/flake.nix
+++ b/flake.nix
@@ -21,6 +21,9 @@
flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ]
(system:
let
+ # The default LLVM version is the latest supported release
+ defaultLlvmVersion = 19;
+
# Overlay to specify build should use the specific libbpf we want
libbpfVersion = "1.4.2";
libbpfOverlay =
@@ -139,6 +142,7 @@
default = bpftrace-llvm18;
# Support matrix of llvm versions
+ bpftrace-llvm19 = mkBpftrace pkgs.llvmPackages_19;
bpftrace-llvm18 = mkBpftrace pkgs.llvmPackages_18;
bpftrace-llvm17 = mkBpftrace pkgs.llvmPackages_17;
bpftrace-llvm16 = mkBpftrace pkgs.llvmPackages_16;
@@ -185,6 +189,7 @@
devShells = rec {
default = bpftrace-llvm18;
+ bpftrace-llvm19 = mkBpftraceDevShell self.packages.${system}.bpftrace-llvm19;
bpftrace-llvm18 = mkBpftraceDevShell self.packages.${system}.bpftrace-llvm18;
bpftrace-llvm17 = mkBpftraceDevShell self.packages.${system}.bpftrace-llvm17;
bpftrace-llvm16 = mkBpftraceDevShell self.packages.${system}.bpftrace-llvm16;
--
2.47.1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package drbd-utils for openSUSE:Factory checked in at 2025-01-09 15:09:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/drbd-utils (Old)
and /work/SRC/openSUSE:Factory/.drbd-utils.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "drbd-utils"
Thu Jan 9 15:09:37 2025 rev:62 rq:1235883 version:9.29.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/drbd-utils/drbd-utils.changes 2024-11-12 19:26:08.071298541 +0100
+++ /work/SRC/openSUSE:Factory/.drbd-utils.new.1881/drbd-utils.changes 2025-01-09 15:11:26.566269933 +0100
@@ -1,0 +2,91 @@
+Wed Jan 8 07:42:00 UTC 2025 - Heming Zhao <heming.zhao(a)suse.com>
+
+- Update drbd-utils from 9.25.0 to 9.29.0
+
+ * Changelog from Linbit:
+
+ 9.29.0
+ -----------
+ * drbdmeta: fix initialization for external md
+ * build: allow disbling keyutils
+ * tests: export sanitized environment
+ * drbdmon: various improvements
+ * build: add cyclonedx
+ * drbsetup,v9: fix multiple paths drbdsetup show --json
+ strictly spreaking breaking change, but maily used internally
+ * events2: expose if device is open
+ * drbdadm: fix undefined behavior that triggered on amd64
+ * shared: fix out-of-bounds access in parsing
+ * drbsetup,v9: event consistency with peer devices
+ * drbdadm: fix parsing of v8.4 configs for compatibility
+ * drbdmeta: fix segfault for check-resize on intentionally diskless
+ * drbd-promote@.service: check if ExecCondition is available
+
+ 9.28.0
+ -----------
+ * events2: set may_promote:no promotion_score:0 while
+ force-io-failure:yes
+ * drbdsetup,v9: show TLS in connection status
+ * drbdsetup,v9: add udev command
+ * 8.3: remove
+ * crm-fence-peer.9.sh: fixes for pacemaker 2.1.7
+ * events2: improved out of order message handling
+
+ 9.27.0
+ -----------
+ * adjust,v9: retry for diskless primaries
+ * tests: sanitize env (e.g., TZ)
+ * drbdmeta: dump and restore the members field
+
+ 9.26.0
+ -----------
+ * config,v9: new config option load-balance-paths
+ * config,v9: new config options rdma-ctrls-(snd|rcv)buf-size
+ * drbdadm,v9: fix segfault if proxy has no path
+ * drbd: increase maximum CPU mask size
+ * systemd: introduce drbd-graceful-shutdown.service
+ * drbdmeta,v9: fix regression, allow attach after offline resize
+ * drbdsetup,v9: add path established information to JSON status
+ * events2: terminate on module unload even under --poll
+ * events2: specif exit code if module unload
+ * docs: add spdx license file
+ * drbdmon: various smaller improvements
+ * drbdsetup,v9: support for TLS/kTLS
+
+ * remove patches which are already included in upstream code:
+ 0001-drbdadm-v9-do-not-segfault-when-re-configuring-proxy.patch
+ 0002-user-drbrdmon-add-missing-stdint.h-includes.patch
+ 0003-Introduce-default_types.h-header.patch
+ bsc-1219263_crm-fence-peer.9.sh-fix-parsing-in_ccm-crmd-fields-o.patch
+ bsc-1219263_crm-fence-peer.9.sh-use-join-of-node_state-to-judge-.patch
+ bsc-1233273_drbd.ocf-update-regex-of-sed-for-new-output-from-crm.patch
+ usrmerge_move_lib_to_prefix_lib.patch
+
+ * add upstream patches to align commit 0a014f290802:
+ 0001-drbd-verify.py-relax-host-key-checking.patch
+ 0002-DRBDmon-Disabled-DRBD-commands-warning-only-for-actu.patch
+ 0003-DRBDmon-Integrate-global-local-command-delegation.patch
+ 0004-DRBDmon-Adjust-events-log-supplier-program-name.patch
+ 0005-DRBDmon-Add-drbd-events-log-supplier.patch
+ 0006-DRBDmon-Adjust-Makefile.patch
+ 0007-DRBDmon-Version-V1R4M1.patch
+ 0008-drbdadm-add-proxy-options-to-add-connection-command.patch
+ 0009-Do-not-hardcode-paths-in-services-and-scripts.patch
+ 0010-Fix-typo-in-warning-there-is-no-po4a-translage-comma.patch
+ 0011-drbd.ocf-explicitly-timeout-crm_master-IPC-early.patch
+ 0012-drbd.ocf-the-text-output-of-crm_resource-locate-has-.patch
+
+ * update patches according to source code changes:
+ bsc-1233273_drbd.ocf-replace-crm_master-with-ocf_promotion_score.patch
+ fence-after-pacemaker-down.patch
+
+ * modify upstream patch for passing build:
+ 0009-Do-not-hardcode-paths-in-services-and-scripts.patch
+
+ * add new service:
+ drbd-graceful-shutdown.service
+
+ * add new binrary:
+ drbd-events-log-supplier
+
+-------------------------------------------------------------------
Old:
----
0001-drbdadm-v9-do-not-segfault-when-re-configuring-proxy.patch
0002-user-drbrdmon-add-missing-stdint.h-includes.patch
0003-Introduce-default_types.h-header.patch
bsc-1219263_crm-fence-peer.9.sh-fix-parsing-in_ccm-crmd-fields-o.patch
bsc-1219263_crm-fence-peer.9.sh-use-join-of-node_state-to-judge-.patch
bsc-1233273_drbd.ocf-update-regex-of-sed-for-new-output-from-crm.patch
drbd-utils-9.25.0.tar.gz
usrmerge_move_lib_to_prefix_lib.patch
New:
----
0001-drbd-verify.py-relax-host-key-checking.patch
0002-DRBDmon-Disabled-DRBD-commands-warning-only-for-actu.patch
0003-DRBDmon-Integrate-global-local-command-delegation.patch
0004-DRBDmon-Adjust-events-log-supplier-program-name.patch
0005-DRBDmon-Add-drbd-events-log-supplier.patch
0006-DRBDmon-Adjust-Makefile.patch
0007-DRBDmon-Version-V1R4M1.patch
0008-drbdadm-add-proxy-options-to-add-connection-command.patch
0009-Do-not-hardcode-paths-in-services-and-scripts.patch
0010-Fix-typo-in-warning-there-is-no-po4a-translage-comma.patch
0011-drbd.ocf-explicitly-timeout-crm_master-IPC-early.patch
0012-drbd.ocf-the-text-output-of-crm_resource-locate-has-.patch
drbd-utils-9.29.0.tar.gz
BETA DEBUG BEGIN:
Old: * remove patches which are already included in upstream code:
0001-drbdadm-v9-do-not-segfault-when-re-configuring-proxy.patch
0002-user-drbrdmon-add-missing-stdint.h-includes.patch
Old: 0001-drbdadm-v9-do-not-segfault-when-re-configuring-proxy.patch
0002-user-drbrdmon-add-missing-stdint.h-includes.patch
0003-Introduce-default_types.h-header.patch
Old: 0002-user-drbrdmon-add-missing-stdint.h-includes.patch
0003-Introduce-default_types.h-header.patch
bsc-1219263_crm-fence-peer.9.sh-fix-parsing-in_ccm-crmd-fields-o.patch
Old: 0003-Introduce-default_types.h-header.patch
bsc-1219263_crm-fence-peer.9.sh-fix-parsing-in_ccm-crmd-fields-o.patch
bsc-1219263_crm-fence-peer.9.sh-use-join-of-node_state-to-judge-.patch
Old: bsc-1219263_crm-fence-peer.9.sh-fix-parsing-in_ccm-crmd-fields-o.patch
bsc-1219263_crm-fence-peer.9.sh-use-join-of-node_state-to-judge-.patch
bsc-1233273_drbd.ocf-update-regex-of-sed-for-new-output-from-crm.patch
Old: bsc-1219263_crm-fence-peer.9.sh-use-join-of-node_state-to-judge-.patch
bsc-1233273_drbd.ocf-update-regex-of-sed-for-new-output-from-crm.patch
usrmerge_move_lib_to_prefix_lib.patch
Old: bsc-1233273_drbd.ocf-update-regex-of-sed-for-new-output-from-crm.patch
usrmerge_move_lib_to_prefix_lib.patch
BETA DEBUG END:
BETA DEBUG BEGIN:
New: * add upstream patches to align commit 0a014f290802:
0001-drbd-verify.py-relax-host-key-checking.patch
0002-DRBDmon-Disabled-DRBD-commands-warning-only-for-actu.patch
New: 0001-drbd-verify.py-relax-host-key-checking.patch
0002-DRBDmon-Disabled-DRBD-commands-warning-only-for-actu.patch
0003-DRBDmon-Integrate-global-local-command-delegation.patch
New: 0002-DRBDmon-Disabled-DRBD-commands-warning-only-for-actu.patch
0003-DRBDmon-Integrate-global-local-command-delegation.patch
0004-DRBDmon-Adjust-events-log-supplier-program-name.patch
New: 0003-DRBDmon-Integrate-global-local-command-delegation.patch
0004-DRBDmon-Adjust-events-log-supplier-program-name.patch
0005-DRBDmon-Add-drbd-events-log-supplier.patch
New: 0004-DRBDmon-Adjust-events-log-supplier-program-name.patch
0005-DRBDmon-Add-drbd-events-log-supplier.patch
0006-DRBDmon-Adjust-Makefile.patch
New: 0005-DRBDmon-Add-drbd-events-log-supplier.patch
0006-DRBDmon-Adjust-Makefile.patch
0007-DRBDmon-Version-V1R4M1.patch
New: 0006-DRBDmon-Adjust-Makefile.patch
0007-DRBDmon-Version-V1R4M1.patch
0008-drbdadm-add-proxy-options-to-add-connection-command.patch
New: 0007-DRBDmon-Version-V1R4M1.patch
0008-drbdadm-add-proxy-options-to-add-connection-command.patch
0009-Do-not-hardcode-paths-in-services-and-scripts.patch
New: 0008-drbdadm-add-proxy-options-to-add-connection-command.patch
0009-Do-not-hardcode-paths-in-services-and-scripts.patch
0010-Fix-typo-in-warning-there-is-no-po4a-translage-comma.patch
New: 0009-Do-not-hardcode-paths-in-services-and-scripts.patch
0010-Fix-typo-in-warning-there-is-no-po4a-translage-comma.patch
0011-drbd.ocf-explicitly-timeout-crm_master-IPC-early.patch
New: 0010-Fix-typo-in-warning-there-is-no-po4a-translage-comma.patch
0011-drbd.ocf-explicitly-timeout-crm_master-IPC-early.patch
0012-drbd.ocf-the-text-output-of-crm_resource-locate-has-.patch
New: 0011-drbd.ocf-explicitly-timeout-crm_master-IPC-early.patch
0012-drbd.ocf-the-text-output-of-crm_resource-locate-has-.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ drbd-utils.spec ++++++
--- /var/tmp/diff_new_pack.PK99bZ/_old 2025-01-09 15:11:27.350302410 +0100
+++ /var/tmp/diff_new_pack.PK99bZ/_new 2025-01-09 15:11:27.354302577 +0100
@@ -1,7 +1,7 @@
#
# spec file for package drbd-utils
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,7 +16,7 @@
#
-%define services drbd.service drbd-lvchange@.service drbd-promote@.service drbd-demote-or-escalate@.service drbd-reconfigure-suspend-or-error@.service drbd-services@.target drbd-wait-promotable@.service drbd@.service drbd@.target ocf.ra@.service
+%define services drbd.service drbd-graceful-shutdown.service drbd-lvchange@.service drbd-promote@.service drbd-demote-or-escalate@.service drbd-reconfigure-suspend-or-error@.service drbd-services@.target drbd-wait-promotable@.service drbd@.service drbd@.target ocf.ra@.service
%if 0%{?suse_version} < 1550
# for SLEs
%define sbindir /sbin
@@ -32,7 +32,7 @@
# Only need po4a to build man from git source code
%bcond_without prebuiltman
Name: drbd-utils
-Version: 9.25.0
+Version: 9.29.0
Release: 0
Summary: Distributed Replicated Block Device
License: GPL-2.0-or-later
@@ -43,23 +43,28 @@
#############################################
# Upstream patches
-Patch0001: 0001-drbdadm-v9-do-not-segfault-when-re-configuring-proxy.patch
-Patch0002: 0002-user-drbrdmon-add-missing-stdint.h-includes.patch
-Patch0003: 0003-Introduce-default_types.h-header.patch
+Patch0001: 0001-drbd-verify.py-relax-host-key-checking.patch
+Patch0002: 0002-DRBDmon-Disabled-DRBD-commands-warning-only-for-actu.patch
+Patch0003: 0003-DRBDmon-Integrate-global-local-command-delegation.patch
+Patch0004: 0004-DRBDmon-Adjust-events-log-supplier-program-name.patch
+Patch0005: 0005-DRBDmon-Add-drbd-events-log-supplier.patch
+Patch0006: 0006-DRBDmon-Adjust-Makefile.patch
+Patch0007: 0007-DRBDmon-Version-V1R4M1.patch
+Patch0008: 0008-drbdadm-add-proxy-options-to-add-connection-command.patch
+Patch0009: 0009-Do-not-hardcode-paths-in-services-and-scripts.patch
+Patch0010: 0010-Fix-typo-in-warning-there-is-no-po4a-translage-comma.patch
+Patch0011: 0011-drbd.ocf-explicitly-timeout-crm_master-IPC-early.patch
+Patch0012: 0012-drbd.ocf-the-text-output-of-crm_resource-locate-has-.patch
# SUSE specific patches
Patch1001: init-script-fixes.diff
-Patch1002: usrmerge_move_lib_to_prefix_lib.patch
-Patch1003: fence-after-pacemaker-down.patch
-Patch1004: bsc-1032142_Disable-quorum-in-default-configuration.patch
-Patch1005: move_fencing_from_disk_to_net_in_example.patch
-Patch1006: pie-fix.patch
-Patch1007: bsc-1219263_crm-fence-peer.9.sh-fix-parsing-in_ccm-crmd-fields-o.patch
-Patch1008: bsc-1219263_crm-fence-peer.9.sh-use-join-of-node_state-to-judge-.patch
-Patch1009: bsc-1233273_drbd.ocf-replace-crm_master-with-ocf_promotion_score.patch
-Patch1010: bsc-1233273_drbd.ocf-update-regex-of-sed-for-new-output-from-crm.patch
-Patch1011: bsc-1233273_drbd.ocf-update-for-OCF-1.1.patch
-Patch1099: rpmlint-build-error.patch
+Patch1002: fence-after-pacemaker-down.patch
+Patch1003: bsc-1032142_Disable-quorum-in-default-configuration.patch
+Patch1004: move_fencing_from_disk_to_net_in_example.patch
+Patch1005: pie-fix.patch
+Patch1006: bsc-1233273_drbd.ocf-replace-crm_master-with-ocf_promotion_score.patch
+Patch1007: bsc-1233273_drbd.ocf-update-for-OCF-1.1.patch
+Patch1008: rpmlint-build-error.patch
#############################################
Provides: drbd-bash-completion = %{version}
@@ -214,6 +219,7 @@
%{sbindir}/drbdmeta
%if %{with drbdmon}
%{sbindir}/drbdmon
+%{sbindir}/drbd-events-log-supplier
%endif
%ifarch %{ix86} x86_64
%dir %attr(700,root,root) %{_sysconfdir}/xen
@@ -225,6 +231,7 @@
%{_prefix}/lib/ocf/resource.d/linbit/drbd.shellfuncs.sh
%{_udevrulesdir}/65-drbd.rules
%{_unitdir}/drbd.service
+%{_unitdir}/drbd-graceful-shutdown.service
%{_unitdir}/drbd-lvchange@.service
%{_unitdir}/drbd-promote@.service
%{_unitdir}/drbd-demote-or-escalate@.service
++++++ 0001-drbd-verify.py-relax-host-key-checking.patch ++++++
From c72edcfbb0ec0ea587dd75be7c8fa5a407380ab4 Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner(a)linbit.com>
Date: Mon, 4 Nov 2024 18:03:22 +0100
Subject: [PATCH 01/12] drbd-verify.py: relax host key checking
---
scripts/drbd-verify.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/scripts/drbd-verify.py b/scripts/drbd-verify.py
index 3699a1687fa4..4232cd911ecc 100755
--- a/scripts/drbd-verify.py
+++ b/scripts/drbd-verify.py
@@ -8,6 +8,7 @@ import sys
import re
import os
+ssh_opts = ['-oStrictHostKeyChecking=no']
events_re = re.compile(r'change peer-device name:(\S+) peer-node-id:(\d+) conn-name:(\S+) volume:0 replication:(\w+)->(\w+)')
progress_re = re.compile(r'change peer-device name:(\S+) peer-node-id:(\d+) conn-name:(\S+) volume:0 done:(\d+\.\d+)')
@@ -103,7 +104,7 @@ def verify_res(res_json, peers, mbr_only: bool, level2:bool):
if len(diskful_peers) >= 1:
for i, peer_json in enumerate(diskful_peers):
peer_name = peer_json['name']
- args = ['ssh', peer_name, '/tmp/' + this_prog_name, '--json']
+ args = ['ssh'] + ssh_opts + [peer_name, '/tmp/' + this_prog_name, '--json']
args += ['--resource', res_name, '--level2']
peers = [p['name'] for j, p in enumerate(diskful_peers) if j > i]
if peers:
@@ -114,7 +115,7 @@ def verify_res(res_json, peers, mbr_only: bool, level2:bool):
if level2:
continue
args.append('--mbr-only')
- subprocess.run(['scp', '-q', this_prog_path, '{}:/tmp/'.format(peer_name)])
+ subprocess.run(['scp'] + ssh_opts + ['-q', this_prog_path, '{}:/tmp/'.format(peer_name)])
with subprocess.Popen(args, stdout=subprocess.PIPE) as p:
peer_result = json.load(p.stdout)
result_json['oos'].update(peer_result[res_name]['oos'])
--
2.43.0
++++++ 0002-DRBDmon-Disabled-DRBD-commands-warning-only-for-actu.patch ++++++
From b37e33525eeff89d03cd6b98862d15f90aee7e15 Mon Sep 17 00:00:00 2001
From: Robert Altnoeder <robert.altnoeder(a)linbit.com>
Date: Fri, 26 Jul 2024 08:35:09 +0200
Subject: [PATCH 02/12] DRBDmon: Disabled DRBD commands warning only for actual
DRBD commands
---
user/drbdmon/terminal/DrbdCommandsImpl.cpp | 26 ++++++++++++----------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/user/drbdmon/terminal/DrbdCommandsImpl.cpp b/user/drbdmon/terminal/DrbdCommandsImpl.cpp
index 8b75a2aae8a7..006234f70df6 100644
--- a/user/drbdmon/terminal/DrbdCommandsImpl.cpp
+++ b/user/drbdmon/terminal/DrbdCommandsImpl.cpp
@@ -83,10 +83,10 @@ DrbdCommandsImpl::~DrbdCommandsImpl() noexcept
bool DrbdCommandsImpl::execute_command(const std::string& command, StringTokenizer& tokenizer)
{
bool processed = false;
- if (dsp_comp_hub.enable_drbd_actions)
+ Entry* const cmd_entry = cmd_map->get(&command);
+ if (cmd_entry != nullptr)
{
- Entry* const cmd_entry = cmd_map->get(&command);
- if (cmd_entry != nullptr)
+ if (dsp_comp_hub.enable_drbd_actions)
{
cmd_func_type cmd_func = cmd_entry->cmd_func;
try
@@ -109,16 +109,18 @@ bool DrbdCommandsImpl::execute_command(const std::string& command, StringTokeniz
);
}
}
+ else
+ {
+ const uint64_t msg_id = dsp_comp_hub.log->add_entry(
+ MessageLog::log_level::WARN,
+ "DRBD commands are currently disabled"
+ );
+ dsp_comp_hub.dsp_shared->message_id = msg_id;
+ dsp_comp_hub.dsp_selector->switch_to_display(DisplayId::display_page::MSG_VIEWER);
+ }
+
}
- else
- {
- const uint64_t msg_id = dsp_comp_hub.log->add_entry(
- MessageLog::log_level::WARN,
- "DRBD commands are currently disabled"
- );
- dsp_comp_hub.dsp_shared->message_id = msg_id;
- dsp_comp_hub.dsp_selector->switch_to_display(DisplayId::display_page::MSG_VIEWER);
- }
+
return processed;
}
--
2.43.0
++++++ 0003-DRBDmon-Integrate-global-local-command-delegation.patch ++++++
From 1053b3344c85646bbfbc59233a3d502183c3ea65 Mon Sep 17 00:00:00 2001
From: Robert Altnoeder <robert.altnoeder(a)linbit.com>
Date: Fri, 26 Jul 2024 08:37:09 +0200
Subject: [PATCH 03/12] DRBDmon: Integrate global/local command delegation
---
user/drbdmon/terminal/DisplayCommon.h | 12 +++++-----
user/drbdmon/terminal/DisplayCommonImpl.cpp | 20 ++++++++++-------
user/drbdmon/terminal/DisplayCommonImpl.h | 8 +++++--
user/drbdmon/terminal/MDspBase.cpp | 25 +++------------------
4 files changed, 28 insertions(+), 37 deletions(-)
diff --git a/user/drbdmon/terminal/DisplayCommon.h b/user/drbdmon/terminal/DisplayCommon.h
index 9160c3ddb215..b1b94e43e51f 100644
--- a/user/drbdmon/terminal/DisplayCommon.h
+++ b/user/drbdmon/terminal/DisplayCommon.h
@@ -2,6 +2,7 @@
#define DISPLAYCOMMON_H
#include <default_types.h>
+#include <terminal/ModularDisplay.h>
class DisplayCommon
{
@@ -16,9 +17,7 @@ class DisplayCommon
enum command_state_type : uint8_t
{
INPUT = 0,
- CANCEL = 1,
- CMD_LOCAL = 2,
- CMD_GLOBAL = 3
+ CANCEL = 1
};
virtual ~DisplayCommon() noexcept
@@ -47,9 +46,12 @@ class DisplayCommon
virtual void display_problem_mode_label(const bool using_problem_mode) const = 0;
virtual problem_mode_type get_problem_mode() const noexcept = 0;
virtual void toggle_problem_mode() noexcept = 0;
- virtual command_state_type command_line_key_pressed(const uint32_t key) const = 0;
+ virtual command_state_type command_line_key_pressed(
+ const uint32_t key,
+ ModularDisplay& display
+ ) const = 0;
virtual void activate_command_line() const = 0;
- virtual bool global_command() const = 0;
+ virtual bool execute_command(ModularDisplay& display) const = 0;
virtual void application_idle() const = 0;
virtual void application_working() const = 0;
};
diff --git a/user/drbdmon/terminal/DisplayCommonImpl.cpp b/user/drbdmon/terminal/DisplayCommonImpl.cpp
index 8427b2fc46a0..f3ceed782e02 100644
--- a/user/drbdmon/terminal/DisplayCommonImpl.cpp
+++ b/user/drbdmon/terminal/DisplayCommonImpl.cpp
@@ -706,7 +706,10 @@ void DisplayCommonImpl::toggle_problem_mode() noexcept
}
}
-DisplayCommon::command_state_type DisplayCommonImpl::command_line_key_pressed(const uint32_t key) const
+DisplayCommon::command_state_type DisplayCommonImpl::command_line_key_pressed(
+ const uint32_t key,
+ ModularDisplay& display
+) const
{
DisplayCommon::command_state_type state = DisplayCommon::command_state_type::INPUT;
if (key == KeyCodes::FUNC_12)
@@ -717,11 +720,8 @@ DisplayCommon::command_state_type DisplayCommonImpl::command_line_key_pressed(co
else
if (key == KeyCodes::ENTER)
{
- state = DisplayCommon::command_state_type::CMD_LOCAL;
- if (global_command())
- {
- state = DisplayCommon::command_state_type::CMD_GLOBAL;
- }
+ const bool processed = execute_command(display);
+ state = processed ? DisplayCommon::command_state_type::CANCEL : DisplayCommon::command_state_type::INPUT;
}
else
{
@@ -834,7 +834,7 @@ void DisplayCommonImpl::activate_command_line() const
}
}
-bool DisplayCommonImpl::global_command() const
+bool DisplayCommonImpl::execute_command(ModularDisplay& display) const
{
bool processed = false;
const std::string& command = dsp_comp_hub.command_line->get_text();
@@ -859,7 +859,11 @@ bool DisplayCommonImpl::global_command() const
processed = dsp_comp_hub.global_cmd_exec->execute_command(upper_keyword, tokenizer);
if (!processed)
{
- processed = dsp_comp_hub.drbd_cmd_exec->execute_command(upper_keyword, tokenizer);
+ processed = display.execute_command(upper_keyword, tokenizer);
+ if (!processed)
+ {
+ processed = dsp_comp_hub.drbd_cmd_exec->execute_command(upper_keyword, tokenizer);
+ }
}
}
}
diff --git a/user/drbdmon/terminal/DisplayCommonImpl.h b/user/drbdmon/terminal/DisplayCommonImpl.h
index 1ac7fafa6f96..8e09bfbe1eb7 100644
--- a/user/drbdmon/terminal/DisplayCommonImpl.h
+++ b/user/drbdmon/terminal/DisplayCommonImpl.h
@@ -3,6 +3,7 @@
#include <default_types.h>
#include <terminal/DisplayCommon.h>
+#include <terminal/ModularDisplay.h>
#include <terminal/DisplayIo.h>
#include <terminal/ComponentsHub.h>
#include <string>
@@ -35,9 +36,12 @@ class DisplayCommonImpl : public DisplayCommon
virtual void display_problem_mode_label(const bool using_problem_mode) const override;
virtual problem_mode_type get_problem_mode() const noexcept;
virtual void toggle_problem_mode() noexcept;
- virtual DisplayCommon::command_state_type command_line_key_pressed(const uint32_t key) const;
+ virtual command_state_type command_line_key_pressed(
+ const uint32_t key,
+ ModularDisplay& display
+ ) const override;
virtual void activate_command_line() const;
- virtual bool global_command() const override;
+ virtual bool execute_command(ModularDisplay& display) const override;
virtual void application_idle() const override;
virtual void application_working() const override;
diff --git a/user/drbdmon/terminal/MDspBase.cpp b/user/drbdmon/terminal/MDspBase.cpp
index 77bc86af6160..f95d3a21ac7f 100644
--- a/user/drbdmon/terminal/MDspBase.cpp
+++ b/user/drbdmon/terminal/MDspBase.cpp
@@ -176,29 +176,10 @@ bool MDspBase::key_pressed(const uint32_t key)
else
if (base_input_mode == base_input_mode_type::COMMAND)
{
- const DisplayCommon::command_state_type state = dsp_comp_hub.dsp_common->command_line_key_pressed(key);
- bool exit_cmd_mode = false;
- if (state == DisplayCommon::command_state_type::CMD_LOCAL)
- {
- StringTokenizer tokenizer(dsp_comp_hub.command_line->get_text(), DisplayConsts::CMD_TOKEN_DELIMITER);
- if (tokenizer.has_next())
- {
- std::string keyword(tokenizer.next());
- if (keyword.length() >= 2)
- {
- keyword.erase(0, 1);
- std::string upper_keyword = string_transformations::uppercase_copy_of(keyword);
- exit_cmd_mode = execute_command(upper_keyword, tokenizer);
- }
- }
- }
- else
+ const DisplayCommon::command_state_type state = dsp_comp_hub.dsp_common->command_line_key_pressed(
+ key, *this
+ );
if (state != DisplayCommon::command_state_type::INPUT)
- {
- exit_cmd_mode = true;
- }
-
- if (exit_cmd_mode)
{
base_input_mode = base_input_mode_type::GLOBAL_KEYS;
dsp_comp_hub.dsp_io->write_text(dsp_comp_hub.ansi_ctl->ANSI_CURSOR_OFF.c_str());
--
2.43.0
++++++ 0004-DRBDmon-Adjust-events-log-supplier-program-name.patch ++++++
From 4ecb776ed6b75d326624281b50f0a11adeca2e58 Mon Sep 17 00:00:00 2001
From: Robert Altnoeder <robert.altnoeder(a)linbit.com>
Date: Wed, 20 Nov 2024 18:44:19 +0100
Subject: [PATCH 04/12] DRBDmon: Adjust events log supplier program name
---
user/drbdmon/subprocess/EventsSourceSpawner.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/user/drbdmon/subprocess/EventsSourceSpawner.cpp b/user/drbdmon/subprocess/EventsSourceSpawner.cpp
index 20fa13bec0d8..1b50aa23b6d6 100644
--- a/user/drbdmon/subprocess/EventsSourceSpawner.cpp
+++ b/user/drbdmon/subprocess/EventsSourceSpawner.cpp
@@ -21,7 +21,7 @@ const char* const EventsSourceSpawner::EVENTS_PROGRAM_ARGS[] =
"all",
nullptr
};
-const char* const EventsSourceSpawner::SAVED_EVENTS_PROGRAM = "eventsfeeder";
+const char* const EventsSourceSpawner::SAVED_EVENTS_PROGRAM = "drbd-events-log-supplier";
EventsSourceSpawner::EventsSourceSpawner(MessageLog& logRef):
log(logRef)
--
2.43.0
++++++ 0005-DRBDmon-Add-drbd-events-log-supplier.patch ++++++
From 60c3ed545e1c36de25545656f5c6c586e548b852 Mon Sep 17 00:00:00 2001
From: Robert Altnoeder <robert.altnoeder(a)linbit.com>
Date: Wed, 20 Nov 2024 18:44:41 +0100
Subject: [PATCH 05/12] DRBDmon: Add drbd-events-log-supplier
---
user/drbdmon/drbd-events-log-supplier.cpp | 147 ++++++++++++++++++++++
1 file changed, 147 insertions(+)
create mode 100644 user/drbdmon/drbd-events-log-supplier.cpp
diff --git a/user/drbdmon/drbd-events-log-supplier.cpp b/user/drbdmon/drbd-events-log-supplier.cpp
new file mode 100644
index 000000000000..9fe48f0ccd71
--- /dev/null
+++ b/user/drbdmon/drbd-events-log-supplier.cpp
@@ -0,0 +1,147 @@
+#include <cstddef>
+#include <iostream>
+#include <fstream>
+#include <string>
+
+extern "C"
+{
+ #include <unistd.h>
+}
+
+constexpr int ERR_OUT_OF_MEMORY = 2;
+constexpr int ERR_IO = 3;
+
+const std::string INIT_STATE_SEPA("exists -");
+const size_t INIT_STATE_SEPA_LENGTH = INIT_STATE_SEPA.length();
+
+int process_events(const std::string& path);
+bool is_init_state_sepa(const std::string& event_line);
+
+/**
+ * DRBD events log file supplier for DRBDmon
+ */
+int main(int argc, char* argv[])
+{
+ int exit_code = EXIT_FAILURE;
+
+ try
+ {
+ if (argc == 2)
+ {
+ std::string path(argv[1]);
+ exit_code = process_events(path);
+ }
+ else
+ {
+ std::cerr << "DRBD Events Log File Supplier | Arguments:\n" <<
+ " path .......... Path to a file containing DBRD event lines\n";
+ }
+ }
+ catch (std::bad_alloc&)
+ {
+ std::cerr << "Out of memory" << std::endl;
+ exit_code = ERR_OUT_OF_MEMORY;
+ }
+
+ std::cout << std::flush;
+ std::cerr << std::flush;
+
+ return exit_code;
+}
+
+/**
+ * Emits event lines from an events log file and appends the initial state separator
+ * if it is absent from the file. The output is stdout, which DRBDmon pipes to itself.
+ *
+ * DRBDmon recovers its events source process by respawning it if it exits for any reason.
+ * Therefore, this method does not return if successful, instead, it will
+ * suspend indefinitely. DRBDmon will terminate this process when the user exits DRBDmon.
+ */
+int process_events(const std::string& path)
+{
+ int rc = ERR_IO;
+
+ // Internal pipe used for suspending execution
+ int pipe_fd[2];
+ int pipe_rc = pipe(pipe_fd);
+ if (pipe_rc == 0)
+ {
+ std::ifstream in_file(path);
+ if (in_file.good())
+ {
+ bool have_init_state_sepa = false;
+
+ // Emit events from the file to DRBDmon
+ std::string event_line;
+ while (in_file.good())
+ {
+ std::getline(in_file, event_line);
+ if (event_line.length() > 0)
+ {
+ std::cout << event_line << '\n';
+ }
+ if (is_init_state_sepa(event_line))
+ {
+ have_init_state_sepa = true;
+ }
+
+ event_line.clear();
+ }
+
+ if (in_file.eof())
+ {
+ // If there was no initial state separator in the events log file,
+ // emit one to DRBDmon
+ if (!have_init_state_sepa)
+ {
+ std::cout << INIT_STATE_SEPA << '\n';
+ }
+ std::cout << std::flush;
+
+ rc = EXIT_SUCCESS;
+
+ // Suspend execution indefinitely. DRBDmon will terminate this process when it exits.
+ char in_char = 0;
+ const ssize_t read_count = read(pipe_fd[0], &in_char, 1);
+ // Nothing to do with that result...
+ static_cast<void> (read_count);
+ }
+ else
+ {
+ // I/O failed before the entire file was processed, I/O error.
+ std::cerr << "I/O error while reading DRBD events file \"" << path << "\"\n";
+ }
+ }
+ else
+ {
+ // Cannot open/read the file. Typically a non-existent path/file or permissions problem.
+ std::cerr << "I/O error, cannot read DRBD events file \"" << path << "\"\n";
+ }
+ }
+ else
+ {
+ // Cannot create the pipe used for suspending.
+ // Typically a resource exhaustion problem, e.g. the OS being out of memory.
+ std::cerr << "I/O error, pipe creation failed\n";
+ }
+
+ return rc;
+}
+
+/**
+ * Checks whether an events line is the initial state separator
+ */
+bool is_init_state_sepa(const std::string& event_line)
+{
+ bool result = false;
+ if (event_line.length() >= INIT_STATE_SEPA_LENGTH)
+ {
+ size_t idx = 0;
+ while (idx < INIT_STATE_SEPA_LENGTH && event_line[idx] == INIT_STATE_SEPA[idx])
+ {
+ ++idx;
+ }
+ result = idx == INIT_STATE_SEPA_LENGTH;
+ }
+ return result;
+}
--
2.43.0
++++++ 0006-DRBDmon-Adjust-Makefile.patch ++++++
From 5611462e6e157e23e9571bfd364cb22ec17b91b6 Mon Sep 17 00:00:00 2001
From: Robert Altnoeder <robert.altnoeder(a)linbit.com>
Date: Wed, 20 Nov 2024 18:45:11 +0100
Subject: [PATCH 06/12] DRBDmon: Adjust Makefile
---
drbd.spec.in | 1 +
user/drbdmon/Makefile.in | 10 ++++++++--
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/drbd.spec.in b/drbd.spec.in
index 0205776f2618..9559e2950e13 100644
--- a/drbd.spec.in
+++ b/drbd.spec.in
@@ -155,6 +155,7 @@ This packages includes the DRBD administration tools.
%endif
%if %{with drbdmon}
%{_sbindir}/drbdmon
+%{_sbindir}/drbd-events-log-supplier
%endif
%if "%{initscripttype}" == "sysv"
%{_initddir}/drbd
diff --git a/user/drbdmon/Makefile.in b/user/drbdmon/Makefile.in
index 36673b19c857..9c5427e9b22a 100644
--- a/user/drbdmon/Makefile.in
+++ b/user/drbdmon/Makefile.in
@@ -16,7 +16,7 @@ else
DESTDIR ?= /
endif
-binaries := drbdmon
+binaries := drbdmon drbd-events-log-supplier
ifeq ($(WITH_DRBDMON),yes)
all: $(binaries)
@@ -28,6 +28,7 @@ PHONY := all
dsaext-obj := cppdsaext/src/dsaext.o
integerparse-obj := cppdsaext/src/integerparse.o
+supplier-obj := drbd-events-log-supplier.o
l-obj := DrbdMon.o DrbdMonConsts.o MessageLog.o IntervalTimer.o SubProcessNotification.o
l-obj += MessageLogNotification.o
@@ -77,6 +78,9 @@ $(integerparse-obj): $(basename $(integerparse-obj)).cpp $(basename $(integerpar
drbdmon: $(ls-obj)
$(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $^ $(LIBS)
+drbd-events-log-supplier: $(supplier-obj)
+ $(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $^
+
# do not try to rebuild Makefile itself
Makefile: ;
@@ -89,16 +93,18 @@ Makefile: ;
install:
ifeq ($(WITH_DRBDMON),yes)
install -m 755 drbdmon $(DESTDIR)$(sbindir)
+ install -m 755 drbd-events-log-supplier $(DESTDIR)$(sbindir)
endif
uninstall:
ifeq ($(WITH_DRBDMON),yes)
rm -f $(DESTDIR)$(sbindir)/drbdmon
+ rm -r $(DESTDIR)$(sbindir)/drbd-events-log-supplier
endif
PHONY += clean distclean
clean:
- rm -f $(local-obj) $(dsaext-obj) $(integerparse-obj) $(binaries)
+ rm -f $(local-obj) $(dsaext-obj) $(integerparse-obj) $(supplier-obj) $(binaries)
distclean: clean
rm -f $(local-dep)
--
2.43.0
++++++ 0007-DRBDmon-Version-V1R4M1.patch ++++++
From 17c3bc04145900b0039a686b4e2cc28f9d5f3859 Mon Sep 17 00:00:00 2001
From: Robert Altnoeder <robert.altnoeder(a)linbit.com>
Date: Mon, 4 Nov 2024 19:13:46 +0100
Subject: [PATCH 07/12] DRBDmon: Version V1R4M1
---
user/drbdmon/DrbdMonConsts.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/user/drbdmon/DrbdMonConsts.cpp b/user/drbdmon/DrbdMonConsts.cpp
index 6b130db93156..5135d636bd2a 100644
--- a/user/drbdmon/DrbdMonConsts.cpp
+++ b/user/drbdmon/DrbdMonConsts.cpp
@@ -7,6 +7,6 @@ extern "C"
}
const std::string DrbdMonConsts::PROGRAM_NAME = "DRBDmon";
-const std::string DrbdMonConsts::PROJECT_VERSION = "V1R4M0";
+const std::string DrbdMonConsts::PROJECT_VERSION = "V1R4M1";
const std::string DrbdMonConsts::UTILS_VERSION = PACKAGE_VERSION;
const std::string DrbdMonConsts::BUILD_HASH = GITHASH;
--
2.43.0
++++++ 0008-drbdadm-add-proxy-options-to-add-connection-command.patch ++++++
From 9dab78b5822d59a13e767ef20fdffab46f79cb25 Mon Sep 17 00:00:00 2001
From: Joel Colledge <joel.colledge(a)linbit.com>
Date: Thu, 21 Nov 2024 09:55:26 +0100
Subject: [PATCH 08/12] drbdadm: add proxy options to 'add connection' command
Some options such as rcvbuf-size must be set before attempting to
connect. Proxy v3 used ugly hacks to allow time for the options to
arrive before connecting. Proxy v4 does not use this approach. Instead
it requires the options to be set on the command line for 'add
connection'.
The additional options are ignored by Proxy v3 with a "trailing garbage"
warning.
We continue to set the properties using 'set' commands as well to retain
compatibility with Proxy v3. Proxy v4 ignores 'set' commands which do
not change the value of the option.
So this is compatible with Proxy v3 and v4.
---
user/v9/drbdadm_main.c | 38 ++++++++++++++++++++++++++++++++++++--
1 file changed, 36 insertions(+), 2 deletions(-)
diff --git a/user/v9/drbdadm_main.c b/user/v9/drbdadm_main.c
index 74cf60365a6d..a983a9463fb8 100644
--- a/user/v9/drbdadm_main.c
+++ b/user/v9/drbdadm_main.c
@@ -2043,19 +2043,33 @@ char *_proxy_connection_name(char *conn_name, const struct d_resource *res, cons
return conn_name;
}
+#define ADD_CONNECTION_MAX_LEN 4096
+
static int do_proxy_conn_up(const struct cfg_ctx *ctx)
{
const char *argv[4] = { drbd_proxy_ctl, "-c", NULL, NULL };
struct connection *conn = ctx->conn;
struct path *path = STAILQ_FIRST(&conn->paths); /* multiple paths via proxy, later! */
char *conn_name;
+ char *buffer;
+ char *buffer_pos;
+ int buffer_remaining;
+ int n;
+ struct d_option *opt;
+ int rv = -1;
if (!path->my_proxy || !path->peer_proxy)
return 0;
conn_name = proxy_connection_name(ctx->res, conn);
- argv[2] = ssprintf(
+ buffer_remaining = ADD_CONNECTION_MAX_LEN;
+ buffer = checked_malloc(buffer_remaining);
+ buffer_pos = buffer;
+
+ n = snprintf(
+ buffer_pos,
+ buffer_remaining,
"add connection %s %s:%s %s:%s %s:%s %s:%s",
conn_name,
path->my_proxy->inside.addr,
@@ -2066,8 +2080,28 @@ static int do_proxy_conn_up(const struct cfg_ctx *ctx)
path->my_proxy->outside.port,
path->my_address->addr,
path->my_address->port);
+ if (n < 0 || n >= buffer_remaining)
+ goto out;
+ buffer_pos += n;
+ buffer_remaining -= n;
- return m_system_ex(argv, SLEEPS_SHORT, ctx->res->name);
+ STAILQ_FOREACH(opt, &path->my_proxy->options, link) {
+ n = snprintf(
+ buffer_pos,
+ buffer_remaining,
+ " --%s=%s",
+ opt->name, opt->value);
+ if (n < 0 || n >= buffer_remaining)
+ goto out;
+ buffer_pos += n;
+ buffer_remaining -= n;
+ }
+
+ argv[2] = buffer;
+ rv = m_system_ex(argv, SLEEPS_SHORT, ctx->res->name);
+out:
+ free(buffer);
+ return rv;
}
static int do_proxy_conn_plugins(const struct cfg_ctx *ctx)
--
2.43.0
++++++ 0009-Do-not-hardcode-paths-in-services-and-scripts.patch ++++++
by heming.zhao(a)suse.com
remove the patch of scripts/.gitignore for following complain msg:
```
+ /usr/lib/rpm/rpmuncompress /usr/src/packages/SOURCES/0009-Do-not-hardcode-paths-in-services-and-scripts.patch
+ /usr/bin/patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f
The text leading up to this was:
--------------------------
|diff --git a/scripts/.gitignore b/scripts/.gitignore
|index a307904047f8..ba121127c341 100644
|--- a/scripts/.gitignore
|+++ b/scripts/.gitignore
--------------------------
No file to patch. Skipping patch.
1 out of 1 hunk ignored
```
From 080e93bd9bcf546cd3a9870ae1add2469a2a4e24 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Moritz=20Wanzenb=C3=B6ck?= <moritz.wanzenboeck(a)linbit.com>
Date: Fri, 20 Sep 2024 10:30:24 +0200
Subject: [PATCH 09/12] Do not hardcode paths in services and scripts
This fixes issues when drbd-utils get installed to non-standard locations.
Since the autoconf generated Makefile should still allow override on install,
we have to use a new target to do our own expansion. The implementation is
lifted from the autconf manual:
info autoconf "Installation Directory Variables"
# Conflicts:
# scripts/.gitignore
# scripts/Makefile.in
---
configure.ac | 2 +-
scripts/.gitignore | 8 +++++++
scripts/Makefile.in | 23 +++++++++++++++----
...ce => drbd-demote-or-escalate@.service.in} | 2 +-
...vice => drbd-graceful-shutdown.service.in} | 2 +-
scripts/drbd-promote@.service.in | 4 ++--
...-reconfigure-suspend-or-error@.service.in} | 4 ++--
...ervice-shim.sh => drbd-service-shim.sh.in} | 18 +++++++--------
...rvice => drbd-wait-promotable@.service.in} | 2 +-
scripts/{drbd.service => drbd.service.in} | 6 ++---
scripts/{drbd@.service => drbd@.service.in} | 6 ++---
.../{ocf.ra@.service => ocf.ra@.service.in} | 4 ++--
12 files changed, 51 insertions(+), 30 deletions(-)
rename scripts/{drbd-demote-or-escalate@.service => drbd-demote-or-escalate@.service.in} (92%)
rename scripts/{drbd-graceful-shutdown.service => drbd-graceful-shutdown.service.in} (88%)
rename scripts/{drbd-reconfigure-suspend-or-error@.service => drbd-reconfigure-suspend-or-error@.service.in} (71%)
rename scripts/{drbd-service-shim.sh => drbd-service-shim.sh.in} (81%)
rename scripts/{drbd-wait-promotable@.service => drbd-wait-promotable@.service.in} (84%)
rename scripts/{drbd.service => drbd.service.in} (80%)
rename scripts/{drbd@.service => drbd@.service.in} (87%)
rename scripts/{ocf.ra@.service => ocf.ra@.service.in} (85%)
diff --git a/configure.ac b/configure.ac
index cd166bbafbc0..630163cee103 100644
--- a/configure.ac
+++ b/configure.ac
@@ -525,7 +525,7 @@ fi
dnl The configuration files we create (from their .in template)
if test -z $SPECMODE; then
- AC_CONFIG_FILES(Makefile user/shared/Makefile user/v9/Makefile user/v84/Makefile scripts/Makefile scripts/drbd.rules user/windrbd/Makefile user/drbdmon/Makefile documentation/common/Makefile_v84_com documentation/common/Makefile_v9_com)
+ AC_CONFIG_FILES(Makefile user/shared/Makefile user/v9/Makefile user/v84/Makefile scripts/Makefile user/windrbd/Makefile user/drbdmon/Makefile documentation/common/Makefile_v84_com documentation/common/Makefile_v9_com)
AC_CONFIG_HEADERS(user/shared/config.h)
else
AC_CONFIG_FILES(drbd.spec)
diff --git a/scripts/Makefile.in b/scripts/Makefile.in
index 7652ee872500..001d08da54e4 100644
--- a/scripts/Makefile.in
+++ b/scripts/Makefile.in
@@ -67,9 +67,20 @@ SYSTEMD_TEMPLATES += drbd-wait-promotable@.service
SYSTEMD_UNITS = drbd.service
SYSTEMD_UNITS += drbd-graceful-shutdown.service
-SERVICE_TEMPLATES = drbd-promote@.service
+UDEV_TEMPLATES = drbd.rules
-TEMPLATES := $(SERVICE_TEMPLATES)
+SERVICE_TEMPLATES = drbd.service
+SERVICE_TEMPLATES += drbd@.service
+SERVICE_TEMPLATES += drbd-demote-or-escalate@.service
+SERVICE_TEMPLATES += drbd-graceful-shutdown.service
+SERVICE_TEMPLATES += drbd-promote@.service
+SERVICE_TEMPLATES += drbd-reconfigure-suspend-or-error@.service
+SERVICE_TEMPLATES += drbd-wait-promotable@.service
+SERVICE_TEMPLATES += ocf.ra@.service
+
+SCRIPT_TEMPLATES = drbd-service-shim.sh
+
+TEMPLATES := $(SCRIPT_TEMPLATES) $(SERVICE_TEMPLATES) $(UDEV_TEMPLATES)
# variables meant to be overridden from the make command line
ifeq ($(WITH_WINDRBD),yes)
@@ -82,7 +93,7 @@ all: $(TEMPLATES)
install: install-utils install-udev install-xen install-heartbeat install-pacemaker install-rgmanager install-bashcompletion
-install-utils: $(SERVICE_TEMPLATES)
+install-utils: $(SERVICE_TEMPLATES) $(SCRIPT_TEMPLATES)
install -d $(DESTDIR)$(LIBDIR)
# "sysv" or "both"
ifeq ($(subst both,sysv,$(initscripttype)),sysv)
@@ -172,7 +183,7 @@ ifeq ($(WITH_XEN),yes)
install -m 755 block-drbd $(DESTDIR)$(sysconfdir)/xen/scripts
endif
-install-udev:
+install-udev: $(UDEV_TEMPLATES)
ifeq ($(WITH_UDEV),yes)
mkdir -p $(DESTDIR)$(udevrulesdir)
install -m 644 drbd.rules $(DESTDIR)$(udevrulesdir)/65-drbd.rules$(UDEV_RULE_SUFFIX)
@@ -214,7 +225,9 @@ Makefile.in: ;
Makefile: Makefile.in ../config.status
cd .. && ./config.status scripts/Makefile
-edit = sed -e ''
+edit = sed -e '' \
+ -e 's|@sbindir[@]|$(sbindir)|g' \
+ -e 's|@libdir[@]|$(LIBDIR)|g' \
ifeq ($(SYSTEMD_EXEC_CONDITION),no)
edit += -e 's|^ExecCondition=|ExecStart=|'
diff --git a/scripts/drbd-demote-or-escalate@.service b/scripts/drbd-demote-or-escalate@.service.in
similarity index 92%
rename from scripts/drbd-demote-or-escalate@.service
rename to scripts/drbd-demote-or-escalate@.service.in
index 2093223847b4..f5e123199323 100644
--- a/scripts/drbd-demote-or-escalate@.service
+++ b/scripts/drbd-demote-or-escalate@.service.in
@@ -28,5 +28,5 @@ TimeoutSec=60
# "Type=forking" would be an option to have it retry a number of times,
# and then only escalate to FailureAction if that did not help.
Type=oneshot
-ExecStart=/lib/drbd/scripts/drbd-service-shim.sh secondary-or-escalate %I
+ExecStart=@libdir@/scripts/drbd-service-shim.sh secondary-or-escalate %I
ExecStopPost=-/bin/journalctl --sync
diff --git a/scripts/drbd-graceful-shutdown.service b/scripts/drbd-graceful-shutdown.service.in
similarity index 88%
rename from scripts/drbd-graceful-shutdown.service
rename to scripts/drbd-graceful-shutdown.service.in
index b6e8a149d051..6118d880d8fb 100644
--- a/scripts/drbd-graceful-shutdown.service
+++ b/scripts/drbd-graceful-shutdown.service.in
@@ -13,4 +13,4 @@ Before=drbd.service drbd@.service
Type=oneshot
RemainAfterExit=yes
-ExecStop=/lib/drbd/scripts/drbd-service-shim.sh down all
+ExecStop=@libdir@/scripts/drbd-service-shim.sh down all
diff --git a/scripts/drbd-promote@.service.in b/scripts/drbd-promote@.service.in
index 71345d9b723d..23e74c282250 100644
--- a/scripts/drbd-promote@.service.in
+++ b/scripts/drbd-promote@.service.in
@@ -24,5 +24,5 @@ RemainAfterExit=yes
# (ab)using systemd features
# if we cannot configure and promote, that's a condition, not a failure
# See the comment above wrt. FailureAction vs OnFailure
-ExecCondition=/lib/drbd/scripts/drbd-service-shim.sh primary %I
-ExecStop=/lib/drbd/scripts/drbd-service-shim.sh secondary %I
+ExecCondition=@libdir@/scripts/drbd-service-shim.sh primary %I
+ExecStop=@libdir@/scripts/drbd-service-shim.sh secondary %I
diff --git a/scripts/drbd-reconfigure-suspend-or-error@.service b/scripts/drbd-reconfigure-suspend-or-error@.service.in
similarity index 71%
rename from scripts/drbd-reconfigure-suspend-or-error@.service
rename to scripts/drbd-reconfigure-suspend-or-error@.service.in
index c0e59e5e72d3..6a0a2584e3a6 100644
--- a/scripts/drbd-reconfigure-suspend-or-error@.service
+++ b/scripts/drbd-reconfigure-suspend-or-error@.service.in
@@ -10,5 +10,5 @@ RefuseManualStop=yes
SyslogIdentifier=drbd-%I
Type=oneshot
RemainAfterExit=yes
-ExecStop=-/usr/sbin/drbdsetup resource-options --on-no-quorum io-error --on-no-data io-error %I
-ExecStart=-/usr/sbin/drbdsetup resource-options --on-no-quorum suspend-io --on-no-data suspend-io %I
+ExecStop=-@sbindir@/drbdsetup resource-options --on-no-quorum io-error --on-no-data io-error %I
+ExecStart=-@sbindir@/drbdsetup resource-options --on-no-quorum suspend-io --on-no-data suspend-io %I
diff --git a/scripts/drbd-service-shim.sh b/scripts/drbd-service-shim.sh.in
similarity index 81%
rename from scripts/drbd-service-shim.sh
rename to scripts/drbd-service-shim.sh.in
index 786387463891..56029bdcebe2 100755
--- a/scripts/drbd-service-shim.sh
+++ b/scripts/drbd-service-shim.sh.in
@@ -14,7 +14,7 @@ secondary_check() {
local ex_secondary current_state opts
opts="$1"
- /usr/sbin/drbdsetup secondary $opts "$res"
+ @sbindir@/drbdsetup secondary $opts "$res"
ex_secondary=$?
case $ex_secondary in
0)
@@ -26,7 +26,7 @@ secondary_check() {
# any other special treatment for special exit codes?
*)
# double check for "resource does not exist"
- current_state=$(/usr/sbin/drbdsetup events2 --now "$res")
+ current_state=$(@sbindir@/drbdsetup events2 --now "$res")
if [[ $current_state = "exists -" ]]; then
echo >&2 "<7>not even configured"
return 0
@@ -40,23 +40,23 @@ secondary_check() {
case "$cmd" in
adjust)
- exec /usr/sbin/drbdadm adjust "$res"
+ exec @sbindir@/drbdadm adjust "$res"
;;
down)
- exec /usr/sbin/drbdsetup down "$res"
+ exec @sbindir@/drbdsetup down "$res"
;;
primary)
- exec /usr/sbin/drbdsetup primary "$res"
+ exec @sbindir@/drbdsetup primary "$res"
;;
secondary)
- exec /usr/sbin/drbdsetup secondary "$res"
+ exec @sbindir@/drbdsetup secondary "$res"
;;
secondary-force)
- exec /usr/sbin/drbdsetup secondary --force=yes "$res"
+ exec @sbindir@/drbdsetup secondary --force=yes "$res"
;;
secondary-secondary-force)
- /usr/sbin/drbdsetup secondary "$res" && exit 0
- exec /usr/sbin/drbdsetup secondary --force=yes "$res"
+ @sbindir@/drbdsetup secondary "$res" && exit 0
+ exec @sbindir@/drbdsetup secondary --force=yes "$res"
;;
secondary*-or-escalate)
# Log something and try to get journald to flush its logs
diff --git a/scripts/drbd-wait-promotable@.service b/scripts/drbd-wait-promotable@.service.in
similarity index 84%
rename from scripts/drbd-wait-promotable@.service
rename to scripts/drbd-wait-promotable@.service.in
index 81c3789f5a4c..f416274839e9 100644
--- a/scripts/drbd-wait-promotable@.service
+++ b/scripts/drbd-wait-promotable@.service.in
@@ -10,7 +10,7 @@ Type=oneshot
# on first start, wait for access to "good data"
# let systemd handle timeouts
-ExecStart=/lib/drbd/scripts/drbd-wait-promotable.sh %I
+ExecStart=@libdir@/scripts/drbd-wait-promotable.sh %I
RemainAfterExit=yes
[Install]
diff --git a/scripts/drbd.service b/scripts/drbd.service.in
similarity index 80%
rename from scripts/drbd.service
rename to scripts/drbd.service.in
index 96c599e75042..8bfeb17cb91d 100644
--- a/scripts/drbd.service
+++ b/scripts/drbd.service.in
@@ -12,11 +12,11 @@ RemainAfterExit=yes
# A check for INIT_VERSION already exists, just set it to something.
Environment=INIT_VERSION=systemd
-ExecStart=/lib/drbd/scripts/drbd start
-ExecStop=/lib/drbd/scripts/drbd stop
+ExecStart=@libdir@/scripts/drbd start
+ExecStop=@libdir@/scripts/drbd stop
# Re-adjust everything on reload
-ExecReload=/lib/drbd/scripts/drbd reload
+ExecReload=@libdir@/scripts/drbd reload
[Install]
WantedBy=multi-user.target
diff --git a/scripts/drbd@.service b/scripts/drbd@.service.in
similarity index 87%
rename from scripts/drbd@.service
rename to scripts/drbd@.service.in
index 0fad10be237e..ab1c044cdeb1 100644
--- a/scripts/drbd@.service
+++ b/scripts/drbd@.service.in
@@ -35,8 +35,8 @@ RemainAfterExit=yes
# depends... do we want this as ExecCondition or as ExecStart
# failed start is "failed", failed condition is just "not startable yet"
-ExecStart=/lib/drbd/scripts/drbd-service-shim.sh adjust %I
-ExecReload=/lib/drbd/scripts/drbd-service-shim.sh adjust %I
+ExecStart=@libdir@/scripts/drbd-service-shim.sh adjust %I
+ExecReload=@libdir@/scripts/drbd-service-shim.sh adjust %I
# can only succeed, if you first stop all depending services
-ExecStopPost=/lib/drbd/scripts/drbd-service-shim.sh down %I
+ExecStopPost=@libdir@/scripts/drbd-service-shim.sh down %I
diff --git a/scripts/ocf.ra@.service b/scripts/ocf.ra@.service.in
similarity index 85%
rename from scripts/ocf.ra@.service
rename to scripts/ocf.ra@.service.in
index 9c2268a615a7..4779706a8853 100644
--- a/scripts/ocf.ra@.service
+++ b/scripts/ocf.ra@.service.in
@@ -22,5 +22,5 @@ Environment=monitor_inverval=30
# Only the first argument is used by the wrapper,
# the %n is just to identify which is which in the process list.
# All parameterization is done via Environment= in per instance override.conf
-ExecStart=/lib/drbd/scripts/ocf.ra.wrapper.sh start-and-monitor %n
-ExecStopPost=/lib/drbd/scripts/ocf.ra.wrapper.sh stop %n
+ExecStart=@libdir@/scripts/ocf.ra.wrapper.sh start-and-monitor %n
+ExecStopPost=@libdir@/scripts/ocf.ra.wrapper.sh stop %n
--
2.43.0
++++++ 0010-Fix-typo-in-warning-there-is-no-po4a-translage-comma.patch ++++++
From ee3ab4a67f15fadff72995e45defcbf1e944c9bd Mon Sep 17 00:00:00 2001
From: Ulf 'Tiggi' Tigerstedt <ulf.tigerstedt(a)csc.fi>
Date: Mon, 16 Dec 2024 15:54:37 +0200
Subject: [PATCH 10/12] Fix typo in warning, there is no po4a-translage command
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 630163cee103..4377f3c24a08 100644
--- a/configure.ac
+++ b/configure.ac
@@ -332,7 +332,7 @@ else
fi
if test -z $PO4A_TRANSLATE; then
- AC_MSG_WARN([Cannot build man pages without po4a-translage. You may safely ignore this warning when building from a tarball.])
+ AC_MSG_WARN([Cannot build man pages without po4a-translate. You may safely ignore this warning when building from a tarball.])
dnl default to some sane value at least,
dnl so the error message about command not found makes sense
PO4A_TRANSLATE=po4a-translate
--
2.43.0
++++++ 0011-drbd.ocf-explicitly-timeout-crm_master-IPC-early.patch ++++++
From 077a313e9fcacf0b12a35e8094bfdba6ac8aa0d4 Mon Sep 17 00:00:00 2001
From: Lars Ellenberg <lars.ellenberg(a)linbit.com>
Date: Fri, 6 Dec 2024 15:31:01 +0100
Subject: [PATCH 11/12] drbd.ocf: explicitly timeout crm_master IPC early
Some environments are notorious for timing out in crm_master
one out of ten thousand times. You don't want to know the details.
That would then cause a timeout on the monitor action,
and pacemaker would feel the need to "recover" from "resource failure",
spuriously restarting everything that depends on the DRBD resources.
If we fail to update the "master score" in time,
we can still report the operation result.
The next monitor action will happen,
and we get an other attempt at updating the master score.
If that update was relevant, worst case it is now delayed.
Better than the previous worst case, operation timeout
interpreted as resource failure.
---
scripts/drbd.ocf | 44 +++++++++++++++++++++++++++++++++++++++-----
1 file changed, 39 insertions(+), 5 deletions(-)
diff --git a/scripts/drbd.ocf b/scripts/drbd.ocf
index 1d051baa550d..c31858343ba4 100755
--- a/scripts/drbd.ocf
+++ b/scripts/drbd.ocf
@@ -53,6 +53,7 @@
# OCF_RESKEY_CRM_meta_master_max
# OCF_RESKEY_CRM_meta_master_node_max
#
+# OCF_RESKEY_CRM_meta_timeout
# OCF_RESKEY_CRM_meta_interval
#
# OCF_RESKEY_CRM_meta_notify
@@ -515,22 +516,55 @@ if $USE_DEBUG_LOG ; then
fi
do_cmd_success_log_level=""
-do_cmd() {
+do_cmd() { __do_cmd_with_timeout "" "$@"; }
+do_cmd_CRM_meta_timeout()
+{
+ local timeout=$(( ($OCF_RESKEY_CRM_meta_timeout - 500 - $SECONDS*1000) / 1000 ))
+ # if we are short on time already,
+ # try to get away with whatever time is left
+ (( timeout > 0 )) || timeout=0
+ __do_cmd_with_timeout "$timeout" "$@";
+}
+__do_cmd_with_timeout() {
# Run a command, return its exit code, capture any output, and log
# everything if appropriate.
+ # use coreutils "timeout", if timeout is != 0.
+ local timeout=$1; shift
local cmd="$*" cmd_out cmd_err ret=125
local success_log_level=${do_cmd_success_log_level:-debug}
local failure_log_level=${do_cmd_failure_log_level:-err}
ocf_log debug "$DRBD_RESOURCE: Calling $cmd"
+ if [[ $timeout =~ ^[1-9][0-9]*$ ]]; then
+ timeout="-t $timeout"
+ else
+ timeout=""
+ fi
+
+ local pipe
+ local pipe_pid
+ local result
+
# capture stdout, stderr, and exit code
- eval "$(exec 3>&1;
+ if exec {pipe}< <(exec 3>&1;
printf "cmd_err=%q\n" \
"$( exec 2>&1 1>&3 3>&-; \
out=$( "$@" ); \
ex=$?; \
printf "cmd_out=%q\nret=%q\n" "$out" "$ex" )"
- )"
+ )
+ then
+ pipe_pid=$!
+
+ read -r -d "" -u $pipe $timeout result
+ if (( $? > 128 )) ; then
+ kill -KILL $pipe_pid
+ # wait $pipe_pid
+ fi
+ exec {pipe}<&-
+
+ eval "$result"
+ fi
if [ $ret != 0 ]; then
ocf_log $failure_log_level "$DRBD_RESOURCE: Called $cmd"
@@ -585,13 +619,13 @@ set_master_score() {
if [[ $1 -le 0 ]]; then
remove_master_score
else
- do_cmd ${HA_SBIN_DIR}/crm_master -Q -l reboot -v $1 &&
+ do_cmd_CRM_meta_timeout ${HA_SBIN_DIR}/crm_master -Q -l reboot -v $1 &&
current_master_score=$1
fi
}
remove_master_score() {
- do_cmd ${HA_SBIN_DIR}/crm_master -l reboot -D
+ do_cmd_CRM_meta_timeout ${HA_SBIN_DIR}/crm_master -l reboot -D
current_master_score=""
}
--
2.43.0
++++++ 0012-drbd.ocf-the-text-output-of-crm_resource-locate-has-.patch ++++++
From 0a014f290802e0221d06bb52a74c2e29f11ef02e Mon Sep 17 00:00:00 2001
From: Lars Ellenberg <lars.ellenberg(a)linbit.com>
Date: Fri, 6 Dec 2024 15:35:58 +0100
Subject: [PATCH 12/12] drbd.ocf: the text output of "crm_resource --locate"
has changed
"Recent" Pacemaker reports "Promoted" instead of "Master" for promoted resources.
Recognize that.
This change was made quite a while ago, but the resource agent parameter
remove_master_score_if_peer_primary=unexpected
is little known and rarely in use, so no-one noticed.
---
scripts/drbd.ocf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/drbd.ocf b/scripts/drbd.ocf
index c31858343ba4..34d208f22dd5 100755
--- a/scripts/drbd.ocf
+++ b/scripts/drbd.ocf
@@ -1021,7 +1021,7 @@ crm_resource_locate_master()
called_crm_resource_locate=true
DRBD_PRIMARY_PEER_according_to_pcmk=$(
crm_resource --resource "$OCF_RESOURCE_INSTANCE" --locate 2>/dev/null |
- sed -ne 's/^.*is running on: \([^ ]*\) Master.*$/\1/p' |
+ sed -ne 's/^.*is running on: \([^ ]*\) \(Master\|Promoted\).*$/\1/p' |
grep -vix -m1 -e "$HOSTNAME")
}
--
2.43.0
++++++ bsc-1233273_drbd.ocf-replace-crm_master-with-ocf_promotion_score.patch ++++++
--- /var/tmp/diff_new_pack.PK99bZ/_old 2025-01-09 15:11:27.534310033 +0100
+++ /var/tmp/diff_new_pack.PK99bZ/_new 2025-01-09 15:11:27.538310198 +0100
@@ -57,15 +57,15 @@
if [[ $1 -le 0 ]]; then
remove_master_score
else
-- do_cmd ${HA_SBIN_DIR}/crm_master -Q -l reboot -v $1 &&
-+ do_cmd ocf_promotion_score -Q -v $1 &&
+- do_cmd_CRM_meta_timeout ${HA_SBIN_DIR}/crm_master -Q -l reboot -v $1 &&
++ do_cmd_CRM_meta_timeout ocf_promotion_score -Q -v $1 &&
current_master_score=$1
fi
}
remove_master_score() {
-- do_cmd ${HA_SBIN_DIR}/crm_master -l reboot -D
-+ do_cmd ocf_promotion_score -D
+- do_cmd_CRM_meta_timeout ${HA_SBIN_DIR}/crm_master -l reboot -D
++ do_cmd_CRM_meta_timeout ocf_promotion_score -D
current_master_score=""
}
++++++ drbd-utils-9.25.0.tar.gz -> drbd-utils-9.29.0.tar.gz ++++++
++++ 36828 lines of diff (skipped)
++++++ fence-after-pacemaker-down.patch ++++++
--- /var/tmp/diff_new_pack.PK99bZ/_old 2025-01-09 15:11:27.870323951 +0100
+++ /var/tmp/diff_new_pack.PK99bZ/_new 2025-01-09 15:11:27.870323951 +0100
@@ -2,7 +2,7 @@
--- drbd-utils-8.9.6.orig/scripts/crm-fence-peer.sh 2016-03-14 15:54:38.701360775 +0800
+++ drbd-utils-8.9.6/scripts/crm-fence-peer.sh 2016-03-14 16:00:06.333338664 +0800
@@ -531,6 +531,25 @@
- [[ $crmd = "banned" ]] && will_fence=true
+ [[ $join = "banned" ]] && will_fence=true
if [[ ${expected-down} = "down" && $in_ccm = "false" && $crmd != "online" ]]; then
: "pacemaker considers this as clean down"
+ elif [[ $crmd/$join/$expected = "offline/down/down" ]] ; then
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package nethack for openSUSE:Factory checked in at 2025-01-09 15:09:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nethack (Old)
and /work/SRC/openSUSE:Factory/.nethack.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nethack"
Thu Jan 9 15:09:33 2025 rev:4 rq:1235878 version:3.4.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/nethack/nethack.changes 2025-01-07 20:54:23.763336227 +0100
+++ /work/SRC/openSUSE:Factory/.nethack.new.1881/nethack.changes 2025-01-09 15:11:21.958079049 +0100
@@ -1,0 +2,56 @@
+Wed Jan 8 09:47:32 UTC 2025 - Thomas Zimmermann <tzimmermann(a)suse.com>
+
+- Add nethack-escape-char.patch: Split off from nethack-misc.patch,
+ this patch contains a fix for input handling.
+
+- Add nethack-secure.patch: Improve support for SECURE in recover
+ utility. Does not affect the game binary. Taken from nethack-misc.patch.
+
+- Modify nethack-config.patch: When patching Makefiles, also fix the
+ paths in the documentation to match openSUSE systems.
+
+- Drop nethack-misc.patch: The patch has been split and its content
+ moved to other patch files.
+
+-------------------------------------------------------------------
+Wed Jan 8 09:31:10 UTC 2025 - Thomas Zimmermann <tzimmermann(a)suse.com>
+
+- Modify nethack-gzip.patch: Point COMPRESS to /usr/bin/gzip and avoid
+ the symlink /bin. The top-level /bin directory is supposed to go away.
+
+-------------------------------------------------------------------
+Wed Jan 8 09:18:19 UTC 2025 - Thomas Zimmermann <tzimmermann(a)suse.com>
+
+- Modify nethack-config.patch: The patch enabled building a number of
+ files for X11, which we don't support. Remove them from the build.
+
+-------------------------------------------------------------------
+Wed Jan 8 09:14:27 UTC 2025 - Thomas Zimmermann <tzimmermann(a)suse.com>
+
+- Drop nethack-syscall.patch: The patch only affects builds with GNOME
+ support, which we don't do.
+
+-------------------------------------------------------------------
+Wed Jan 8 08:52:02 UTC 2025 - Thomas Zimmermann <tzimmermann(a)suse.com>
+
+- Add nethack-reproducible.patch: Same as reproducible.patch, but
+ follows patch-nameing conventions. There's now also a short patch
+ description in the spec file.
+
+- Drop reproducible.patch: Renamed to nethack-reproducible.patch.
+
+-------------------------------------------------------------------
+Wed Jan 8 08:17:03 UTC 2025 - Thomas Zimmermann <tzimmermann(a)suse.com>
+
+- Modify nethack-syscall.patch: Refresh to account for offset changes.
+
+- Modify nethack-gzip.patch: Refresh to account for offset changes.
+
+-------------------------------------------------------------------
+Tue Jan 7 17:04:31 UTC 2025 - Thomas Zimmermann <tzimmermann(a)suse.com>
+
+- Modify nethack-config: Enable panic logging. This records serious
+ errors in the file panic log in the game's state directory. Helps
+ with debugging.
+
+-------------------------------------------------------------------
Old:
----
nethack-misc.patch
nethack-syscall.patch
reproducible.patch
New:
----
nethack-escape-char.patch
nethack-reproducible.patch
nethack-secure.patch
BETA DEBUG BEGIN:
Old:
- Add nethack-escape-char.patch: Split off from nethack-misc.patch,
this patch contains a fix for input handling.
Old:
- Drop nethack-syscall.patch: The patch only affects builds with GNOME
support, which we don't do.
Old:
- Add nethack-reproducible.patch: Same as reproducible.patch, but
follows patch-nameing conventions. There's now also a short patch
BETA DEBUG END:
BETA DEBUG BEGIN:
New:
- Add nethack-escape-char.patch: Split off from nethack-misc.patch,
this patch contains a fix for input handling.
New:
- Add nethack-reproducible.patch: Same as reproducible.patch, but
follows patch-nameing conventions. There's now also a short patch
New:
- Add nethack-secure.patch: Improve support for SECURE in recover
utility. Does not affect the game binary. Taken from nethack-misc.patch.
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nethack.spec ++++++
--- /var/tmp/diff_new_pack.ZzjZzW/_old 2025-01-09 15:11:23.866158088 +0100
+++ /var/tmp/diff_new_pack.ZzjZzW/_new 2025-01-09 15:11:23.890159082 +0100
@@ -24,17 +24,18 @@
Group: Amusements/Games/RPG
URL: http://www.nethack.org/
Source0: nethack-343-src.tar.bz2
-# PATCH-FIX-UPSTREAM nethack-config.patch
+# PATCH-FIX-OPENSUSE nethack-config.patch Adapt build to openSUSE systems
Patch0: nethack-config.patch
-# PATCH-FIX-UPSTREAM nethack-decl.patch
+# PATCH-FIX-OPENSUSE nethack-decl.patch Do not redeclare system interfaces
Patch1: nethack-decl.patch
-# PATCH-FIX-UPSTREAM nethack-misc.patch
-Patch2: nethack-misc.patch
-# PATCH-FIX-UPSTREAM nethack-syscall.patch
-Patch3: nethack-syscall.patch
-# PATCH-FIX-UPSTREAM nethack-gzip.patch
-Patch5: nethack-gzip.patch
-Patch6: reproducible.patch
+# PATCH-FIX-OPENSUSE nethack-escape-char.patch
+Patch2: nethack-escape-char.patch
+# PATCH-FIX-OPENSUSE nethack-secure.patch Handle SECURE in recover utility
+Patch3: nethack-secure.patch
+# PATCH-FIX-OPENSUSE nethack-gzip.patch Use gzip compression
+Patch4: nethack-gzip.patch
+# PATCH-FIX-OPENSUSE nethack-reproducible.patch boo#1047218
+Patch5: nethack-reproducible.patch
BuildRequires: bison
BuildRequires: fdupes
BuildRequires: flex
@@ -57,8 +58,8 @@
%patch -P1
%patch -P2
%patch -P3
-%patch -P5
-%patch -P6 -p1
+%patch -P4
+%patch -P5 -p1
%build
# copy Makefiles and add optimization flags
@@ -94,7 +95,7 @@
# game directory
install -m 775 -d %{buildroot}%{_localstatedir}/games/nethack/
install -m 775 -d %{buildroot}%{_localstatedir}/games/nethack/save/
-for file in logfile perm record ; do
+for file in logfile paniclog perm record ; do
touch %{buildroot}%{_localstatedir}/games/nethack/$file
chmod 0664 %{buildroot}%{_localstatedir}/games/nethack/$file
done
@@ -146,6 +147,7 @@
%dir %attr(0770,games,games) %{_localstatedir}/games/nethack
%dir %attr(0770,games,games) %{_localstatedir}/games/nethack/save
%config(noreplace) %attr(0660,games,games) %{_localstatedir}/games/nethack/logfile
+%config(noreplace) %attr(0660,games,games) %{_localstatedir}/games/nethack/paniclog
%config(noreplace) %attr(0660,games,games) %{_localstatedir}/games/nethack/record
%attr(0660,games,games) %{_localstatedir}/games/nethack/perm
%{_bindir}/nethack
++++++ nethack-config.patch ++++++
--- /var/tmp/diff_new_pack.ZzjZzW/_old 2025-01-09 15:11:24.166170515 +0100
+++ /var/tmp/diff_new_pack.ZzjZzW/_new 2025-01-09 15:11:24.202172006 +0100
@@ -69,20 +69,11 @@
SHELLDIR = $(PREFIX)/games
# per discussion in Install.X11 and Install.Qt
-@@ -48,7 +48,7 @@ VARDATND =
- # for BeOS
- # VARDATND = beostiles
- # for Gnome
--# VARDATND = x11tiles pet_mark.xbm rip.xpm mapbg.xpm
-+VARDATND = x11tiles pet_mark.xbm rip.xpm mapbg.xpm
-
- VARDATD = data oracles options quest.dat rumors
- VARDAT = $(VARDATD) $(VARDATND)
Index: include/config.h
===================================================================
--- include/config.h.orig
+++ include/config.h
-@@ -143,16 +143,16 @@
+@@ -143,10 +143,10 @@
#ifndef WIZARD /* allow for compile-time or Makefile changes */
# ifndef KR1ED
@@ -95,13 +86,6 @@
# endif
#endif
- #define LOGFILE "logfile" /* larger file for debugging purposes */
- #define NEWS "news" /* the file containing the latest hack news */
--#define PANICLOG "paniclog" /* log of panic and impossible events */
-+/* #define PANICLOG "paniclog" */ /* log of panic and impossible events */
-
- /*
- * If COMPRESS is defined, it should contain the full path name of your
@@ -185,7 +185,7 @@
* a tar-like file, thus making a neater installation. See *conf.h
* for detailed configuration.
@@ -197,4 +181,26 @@
MAXNROFPLAYERS=4
# Since Nethack.ad is installed in HACKDIR, add it to XUSERFILESEARCHPATH
+Index: doc/nethack.6
+===================================================================
+--- doc/nethack.6.orig
++++ doc/nethack.6
+@@ -197,7 +197,7 @@ option, which must be the first argument
+ supplies a directory which is to serve as the playground.
+ It overrides the value from NETHACKDIR, HACKDIR,
+ or the directory specified by the game administrator during compilation
+-(usually /usr/games/lib/nethackdir).
++(usually /usr/share/games/nethack).
+ This option is usually only useful to the game administrator.
+ The playground must contain several auxiliary files such as help files,
+ the list of top scorers, and a subdirectory
+@@ -283,7 +283,7 @@ MAIL Mailbox file.
+ .br
+ MAILREADER Replacement for default reader
+ .br
+- (probably /bin/mail or /usr/ucb/mail).
++ (probably /usr/bin/mail).
+ .br
+ NETHACKDIR Playground.
+ .br
++++++ nethack-escape-char.patch ++++++
Index: src/cmd.c
===================================================================
--- src/cmd.c.orig
+++ src/cmd.c
@@ -2443,6 +2443,16 @@ readchar()
readchar_queue = click_to_cmd(x, y, mod);
sym = *readchar_queue++;
}
+
+ if(sym == 27) { /* ESC (generated by Alt-key) */
+#ifdef REDO
+ sym = in_doagain ? Getchar() : nh_poskey(&x, &y, &mod);
+#else
+ sym = Getchar();
+#endif
+ sym |= 0x80;
+ }
+
return((char) sym);
}
++++++ nethack-gzip.patch ++++++
--- /var/tmp/diff_new_pack.ZzjZzW/_old 2025-01-09 15:11:24.546186257 +0100
+++ /var/tmp/diff_new_pack.ZzjZzW/_new 2025-01-09 15:11:24.574187416 +0100
@@ -1,7 +1,8 @@
-diff -ru nethack-3.4.0.orig/include/config.h nethack-3.4.0/include/config.h
---- include/config.h 2002-03-21 00:42:43.000000000 +0100
-+++ include/config.h 2003-02-27 15:38:23.000000000 +0100
-@@ -163,11 +163,11 @@
+Index: include/config.h
+===================================================================
+--- include/config.h.orig
++++ include/config.h
+@@ -169,11 +169,11 @@
#ifdef UNIX
/* path and file name extension for compression program */
@@ -12,7 +13,7 @@
/* An example of one alternative you might want to use: */
-/* #define COMPRESS "/usr/local/bin/gzip" */ /* FSF gzip compression */
-/* #define COMPRESS_EXTENSION ".gz" */ /* normal gzip extension */
-+#define COMPRESS "/bin/gzip" /* FSF gzip compression */
++#define COMPRESS "/usr/bin/gzip" /* FSF gzip compression */
+#define COMPRESS_EXTENSION ".gz" /* normal gzip extension */
#endif
++++++ nethack-reproducible.patch ++++++
Author: Bernhard M. Wiedemann <bwiedemann suse de>
Date; 2019-08-08
Do not add build date into binary
to make package build reproducible
https://bugzilla.opensuse.org/show_bug.cgi?id=1047218
It might be possible to upstream a variant of this patch.
Without this patch, we got such a diff:
/usr/lib/nethack/nethack.tty differs in ELF section .rodata
178a20 556e6978 204e6574 4861636b 20566572 Unix NetHack Ver
178a30 73696f6e 20332e34 2e33202d 206c6173 sion 3.4.3 - las
- 178a40 74206275 696c6420 54687520 41756720 t build Thu Aug
- 178a50 20382030 373a3133 3a323520 32303139 8 07:13:25 2019
+ 178a40 74206275 696c6420 53617420 53657020 t build Sat Sep
+ 178a50 20392032 303a3239 3a343120 32303334 9 20:29:41 2034
178a60 1b293000 1b285500 1b284200 243c3530 .)0..(U..(B.$<50
Index: nethack-3.4.3/util/makedefs.c
===================================================================
--- nethack-3.4.3.orig/util/makedefs.c
+++ nethack-3.4.3/util/makedefs.c
@@ -563,7 +563,7 @@ do_date()
(void) time(&clocktim);
Strcpy(cbuf, ctime(&clocktim));
#else
- (void) time((time_t *)&clocktim);
+ //(void) time((time_t *)&clocktim);
Strcpy(cbuf, ctime((time_t *)&clocktim));
#endif
for (c = cbuf; *c; c++) if (*c == '\n') break;
++++++ nethack-secure.patch ++++++
Index: util/recover.c
===================================================================
--- util/recover.c.orig
+++ util/recover.c
@@ -16,6 +16,12 @@
#include "win32api.h"
#endif
+#ifdef SECURE
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#endif
+
#ifdef VMS
extern int FDECL(vms_creat, (const char *,unsigned));
extern int FDECL(vms_open, (const char *,int,unsigned));
@@ -107,15 +113,23 @@ char *argv[];
}
#if defined(SECURE) && !defined(VMS)
if (dir
-# ifdef HACKDIR
+# ifdef VAR_PLAYGROUND
+ && strcmp(dir, VAR_PLAYGROUND)
+# else
+# ifdef HACKDIR
&& strcmp(dir, HACKDIR)
-# endif
+# endif
+# endif /* VAR_PLAYGROUND */
) {
(void) setgid(getgid());
(void) setuid(getuid());
}
#endif /* SECURE && !VMS */
+#ifdef VAR_PLAYGROUND
+ if (!dir) dir = VAR_PLAYGROUND;
+#endif
+
#ifdef HACKDIR
if (!dir) dir = HACKDIR;
#endif
@@ -158,11 +172,19 @@ int lev;
#endif
}
+#ifdef SECURE
+static uid_t save_uid = -1;
+#endif
+
int
open_levelfile(lev)
int lev;
{
int fd;
+#ifdef SECURE
+ struct stat level_stat;
+ uid_t uid;
+#endif
set_levelfile_name(lev);
#if defined(MICRO) || defined(WIN32) || defined(MSDOS)
@@ -170,6 +192,21 @@ int lev;
#else
fd = open(lock, O_RDONLY, 0);
#endif
+ /* Security check: does the user calling recover own the file? */
+#ifdef SECURE
+ if (fd != -1) {
+ uid = getuid();
+ if (fstat(fd, &level_stat) == -1) {
+ Fprintf(stderr, "No permission to stat level file %s.\n", lock);
+ return -1;
+ }
+ if (uid != 0 && level_stat.st_uid != uid) {
+ Fprintf(stderr, "You are not the owner of level file %s.\n", lock);
+ return -1;
+ }
+ save_uid = level_stat.st_uid;
+ }
+#endif
return fd;
}
@@ -183,6 +220,13 @@ create_savefile()
#else
fd = creat(savename, FCMASK);
#endif
+
+#ifdef SECURE
+ if (fchown(fd, save_uid, -1) == -1) {
+ Fprintf(stderr, "could not chown %s to %i!\n", savename,
+ save_uid);
+ }
+#endif
return fd;
}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package chromium for openSUSE:Factory checked in at 2025-01-09 15:08:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/chromium (Old)
and /work/SRC/openSUSE:Factory/.chromium.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chromium"
Thu Jan 9 15:08:07 2025 rev:443 rq:1235874 version:131.0.6778.264
Changes:
--------
--- /work/SRC/openSUSE:Factory/chromium/chromium.changes 2024-12-20 15:27:10.311497302 +0100
+++ /work/SRC/openSUSE:Factory/.chromium.new.1881/chromium.changes 2025-01-09 15:10:50.636781634 +0100
@@ -1,0 +2,7 @@
+Wed Jan 8 11:18:49 CET 2025 - ro(a)suse.de
+
+- Chromium 131.0.6778.264 (boo#1235422)
+ * CVE-2025-0291: Type Confusion in V8
+ * Various fixes from internal audits, fuzzing and other initiatives
+
+-------------------------------------------------------------------
Old:
----
chromium-131.0.6778.204.tar.xz
New:
----
chromium-131.0.6778.264.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ chromium.spec ++++++
--- /var/tmp/diff_new_pack.P6QWfF/_old 2025-01-09 15:11:18.741945828 +0100
+++ /var/tmp/diff_new_pack.P6QWfF/_new 2025-01-09 15:11:18.761946657 +0100
@@ -1,7 +1,7 @@
#
# spec file for package chromium
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
# Copyright (c) 2024 Callum Farmer <gmbr3(a)opensuse.org>
# Copyright (c) 2024 Andreas Stieger <Andreas.Stieger(a)gmx.de>
#
@@ -98,7 +98,7 @@
%define n_suffix %{nil}
%endif
Name: chromium%{n_suffix}
-Version: 131.0.6778.204
+Version: 131.0.6778.264
Release: 0
Summary: Google's open source browser project
License: BSD-3-Clause AND LGPL-2.1-or-later
++++++ chromium-131.0.6778.204.tar.xz -> chromium-131.0.6778.264.tar.xz ++++++
/work/SRC/openSUSE:Factory/chromium/chromium-131.0.6778.204.tar.xz /work/SRC/openSUSE:Factory/.chromium.new.1881/chromium-131.0.6778.264.tar.xz differ: char 15, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rt-tests for openSUSE:Factory checked in at 2025-01-09 15:08:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rt-tests (Old)
and /work/SRC/openSUSE:Factory/.rt-tests.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rt-tests"
Thu Jan 9 15:08:01 2025 rev:12 rq:1235860 version:2.8
Changes:
--------
--- /work/SRC/openSUSE:Factory/rt-tests/rt-tests.changes 2024-07-25 12:09:47.084177027 +0200
+++ /work/SRC/openSUSE:Factory/.rt-tests.new.1881/rt-tests.changes 2025-01-09 15:08:46.139623680 +0100
@@ -1,0 +2,12 @@
+Wed Jan 8 09:29:37 UTC 2025 - Petr Vorel <pvorel(a)suse.cz>
+
+- Update to version 2.8:
+ https://lore.kernel.org/linux-rt-users/20241128215059.40116-1-jkacur@redhat…
+
+-------------------------------------------------------------------
+Wed Jan 8 09:26:56 UTC 2025 - Petr Vorel <pvorel(a)suse.cz>
+
+- Revert back to tar.gz from git.kernel.org (2.7 was moved to "older" subfolder
+ in https://mirrors.kernel.org, it shows it's not stable URL).
+
+-------------------------------------------------------------------
Old:
----
rt-tests-2.7.tar.xz
New:
----
rt-tests-2.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rt-tests.spec ++++++
--- /var/tmp/diff_new_pack.aUxUPv/_old 2025-01-09 15:08:47.839694375 +0100
+++ /var/tmp/diff_new_pack.aUxUPv/_new 2025-01-09 15:08:47.839694375 +0100
@@ -1,7 +1,7 @@
#
# spec file for package rt-tests
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
Name: rt-tests
-Version: 2.7
+Version: 2.8
Release: 0
Summary: Realtime Kernel Testsuite
License: GPL-2.0-only
Group: System/Benchmark
URL: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
-Source0: https://mirrors.kernel.org/pub/linux/utils/rt-tests/rt-tests-%{version}.tar…
+Source0: https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/snapshot/rt-test…
BuildRequires: libnuma-devel
BuildRequires: python-rpm-macros
BuildRequires: python3-base
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package uki for openSUSE:Factory checked in at 2025-01-09 15:07:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/uki (Old)
and /work/SRC/openSUSE:Factory/.uki.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "uki"
Thu Jan 9 15:07:59 2025 rev:2 rq:1235862 version:MACRO_MACRO_kMACRO
Changes:
--------
--- /work/SRC/openSUSE:Factory/uki/uki.changes 2025-01-01 23:04:46.800753191 +0100
+++ /work/SRC/openSUSE:Factory/.uki.new.1881/uki.changes 2025-01-09 15:08:39.523348553 +0100
@@ -1,0 +2,5 @@
+Wed Jan 8 09:38:31 UTC 2025 - Valentin Lefebvre <valentin.lefebvre(a)suse.com>
+
+- Fix posttrans script condition
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ uki.spec ++++++
--- /var/tmp/diff_new_pack.U6Dfr2/_old 2025-01-09 15:08:40.603393465 +0100
+++ /var/tmp/diff_new_pack.U6Dfr2/_new 2025-01-09 15:08:40.607393631 +0100
@@ -1,7 +1,7 @@
#
# spec file for package uki
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -203,7 +203,7 @@
fi
cert_file=$(basename %{cert_install_dir}/%{efi_name}-*.crt)
cert_file_p="%{cert_install_dir}/${cert_file}"
-if test "$entry_added" = "1" -a -f ${cert_file_p} ]; then
+if test "$entry_added" = "1" -a -f ${cert_file_p} ; then
echo -e "\033[0;32mTo enroll the uki certificate key please run:\033[0m"
echo -e "\033[0;32mmokutil \
--import ${cert_file_p}\033[0m"
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package swipl for openSUSE:Factory checked in at 2025-01-09 15:07:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/swipl (Old)
and /work/SRC/openSUSE:Factory/.swipl.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "swipl"
Thu Jan 9 15:07:58 2025 rev:11 rq:1235851 version:9.3.18
Changes:
--------
--- /work/SRC/openSUSE:Factory/swipl/swipl.changes 2024-11-24 11:04:51.280477944 +0100
+++ /work/SRC/openSUSE:Factory/.swipl.new.1881/swipl.changes 2025-01-09 15:08:37.623269541 +0100
@@ -1,0 +2,11 @@
+Wed Jan 8 09:32:00 UTC 2025 - Matej Cepl <mcepl(a)cepl.eu>
+
+- Update to 9.3.18:
+ Complete changelog is
+ https://www.swi-prolog.org/ChangeLog?branch=development&from=9.3.15&to=9.3.…
+ and upstream still doesn’t provide any abbreviated version, and
+ the list of changes is still too long to enumerate here.
+- Remove upstreamed patch:
+ - 104-fix-prolog_in_java.patch
+
+-------------------------------------------------------------------
Old:
----
104-fix-prolog_in_java.patch
swipl-9.3.15.tar.gz
New:
----
swipl-9.3.18.tar.gz
BETA DEBUG BEGIN:
Old:- Remove upstreamed patch:
- 104-fix-prolog_in_java.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ swipl.spec ++++++
--- /var/tmp/diff_new_pack.f3xOr7/_old 2025-01-09 15:08:38.207293827 +0100
+++ /var/tmp/diff_new_pack.f3xOr7/_new 2025-01-09 15:08:38.211293993 +0100
@@ -17,7 +17,7 @@
Name: swipl
-Version: 9.3.15
+Version: 9.3.18
Release: 0
Summary: Prolog Compiler
License: GPL-2.0-or-later AND LGPL-2.1-or-later
@@ -26,9 +26,6 @@
Source98: swipl-rpmlintrc
# For SOURCE_DATE_EPOCH variable- reproducible builds
Source99: %{name}.changes
-# PATCH-FIX-UPSTREAM 104-fix-prolog_in_java.patch gh#SWI-Prolog/packages-jpl#104 mcepl(a)suse.com
-# Fix the wrong location of hamcrest location
-Patch0: 104-fix-prolog_in_java.patch
BuildRequires: cmake
BuildRequires: db-devel
BuildRequires: fdupes
++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.f3xOr7/_old 2025-01-09 15:08:38.239295158 +0100
+++ /var/tmp/diff_new_pack.f3xOr7/_new 2025-01-09 15:08:38.243295324 +0100
@@ -1,5 +1,5 @@
-mtime: 1732380979
-commit: 2517a3204ba3bd0e14b99343ccd1e624d0438fbdc9b338c7bd76f3f6329cb33e
+mtime: 1736328815
+commit: 9628057073e93672673e9bceba1209dd12f68841b0a455ccfd22a95a7ce0de08
url: https://src.opensuse.org/mcepl/swipl.git
-revision: 2517a3204ba3bd0e14b99343ccd1e624d0438fbdc9b338c7bd76f3f6329cb33e
+revision: 9628057073e93672673e9bceba1209dd12f68841b0a455ccfd22a95a7ce0de08
++++++ build.specials.obscpio ++++++
diff: old/*: No such file or directory
diff: new/*: No such file or directory
++++++ swipl-9.3.15.tar.gz -> swipl-9.3.18.tar.gz ++++++
/work/SRC/openSUSE:Factory/swipl/swipl-9.3.15.tar.gz /work/SRC/openSUSE:Factory/.swipl.new.1881/swipl-9.3.18.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-Cerberus for openSUSE:Factory checked in at 2025-01-09 15:07:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Cerberus (Old)
and /work/SRC/openSUSE:Factory/.python-Cerberus.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Cerberus"
Thu Jan 9 15:07:55 2025 rev:14 rq:1235841 version:1.3.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Cerberus/python-Cerberus.changes 2023-08-28 17:13:56.737915335 +0200
+++ /work/SRC/openSUSE:Factory/.python-Cerberus.new.1881/python-Cerberus.changes 2025-01-09 15:08:33.387093386 +0100
@@ -1,0 +2,13 @@
+Wed Jan 8 08:35:55 UTC 2025 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 1.3.7:
+ * Amend missing changelog
+
+-------------------------------------------------------------------
+Wed Jan 8 08:35:33 UTC 2025 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 1.3.6:
+ * Support for Python 3.12 & 3.13
+ * Fix escaping in docstrings (#608)
+
+-------------------------------------------------------------------
Old:
----
cerberus-1.3.5.tar.gz
New:
----
cerberus-1.3.7.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Cerberus.spec ++++++
--- /var/tmp/diff_new_pack.DQRXAq/_old 2025-01-09 15:08:34.827153269 +0100
+++ /var/tmp/diff_new_pack.DQRXAq/_new 2025-01-09 15:08:34.827153269 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-Cerberus
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define skip_python2 1
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-Cerberus
-Version: 1.3.5
+Version: 1.3.7
Release: 0
Summary: Extensible schema and data validation tool for Python dictionaries
License: ISC
++++++ cerberus-1.3.5.tar.gz -> cerberus-1.3.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/.github/workflows/regular-checks.yml new/cerberus-1.3.7/.github/workflows/regular-checks.yml
--- old/cerberus-1.3.5/.github/workflows/regular-checks.yml 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/.github/workflows/regular-checks.yml 2024-12-31 15:21:41.000000000 +0100
@@ -26,7 +26,7 @@
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
- python-version: "3.11"
+ python-version: 3.x
- run: python -m pip install tox
- run: tox -e doclinks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/.github/workflows/tests.yml new/cerberus-1.3.7/.github/workflows/tests.yml
--- old/cerberus-1.3.5/.github/workflows/tests.yml 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/.github/workflows/tests.yml 2024-12-31 15:21:41.000000000 +0100
@@ -27,9 +27,12 @@
- 3.9 # 2025-10
- "3.10" # 2026-10
- 3.11 # 2027-10
+ - 3.12 # 2028-10
+ - 3.13 # 2029-10
- pypy3.7
- pypy3.8
- pypy3.9
+ - pypy3.10
steps:
- uses: actions/checkout@v3
with:
@@ -63,7 +66,7 @@
ref: ${{ inputs.ref || github.ref }}
- uses: actions/setup-python@v4
with:
- python-version: "3.11"
+ python-version: 3.x
- run: python -m pip install tox
- run: tox -e ${{ matrix.environment }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/.linting-config.yaml new/cerberus-1.3.7/.linting-config.yaml
--- old/cerberus-1.3.5/.linting-config.yaml 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/.linting-config.yaml 2024-12-31 15:21:41.000000000 +0100
@@ -5,7 +5,7 @@
hooks:
- id: black
args: [--check]
- language_version: python3.11
+ language_version: python3.12
types:
- python
exclude: ^docs/conf.py$
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/.pre-commit-config.yaml new/cerberus-1.3.7/.pre-commit-config.yaml
--- old/cerberus-1.3.5/.pre-commit-config.yaml 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/.pre-commit-config.yaml 2024-12-31 15:21:41.000000000 +0100
@@ -5,7 +5,7 @@
hooks:
- id: black
args: [--quiet]
- language_version: python3.11
+ language_version: python3.12
types:
- python
exclude: ^docs/conf.py$
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/.readthedocs.yaml new/cerberus-1.3.7/.readthedocs.yaml
--- old/cerberus-1.3.5/.readthedocs.yaml 1970-01-01 01:00:00.000000000 +0100
+++ new/cerberus-1.3.7/.readthedocs.yaml 2024-12-31 15:21:41.000000000 +0100
@@ -0,0 +1,20 @@
+---
+
+version: 2
+
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3"
+
+formats: all
+
+python:
+ install:
+ - path: .
+ - requirements: docs/requirements.txt
+
+sphinx:
+ configuration: docs/conf.py
+
+...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/.readthedocs.yml new/cerberus-1.3.7/.readthedocs.yml
--- old/cerberus-1.3.5/.readthedocs.yml 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/.readthedocs.yml 1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-version: 2
-
-build:
- image: latest
-
-formats: all
-
-python:
- version: "3.11"
- install:
- - path: .
- method: pip
- - requirements: docs/requirements.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/CHANGES.rst new/cerberus-1.3.7/CHANGES.rst
--- old/cerberus-1.3.5/CHANGES.rst 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/CHANGES.rst 2024-12-31 15:21:41.000000000 +0100
@@ -1,7 +1,33 @@
Cerberus Changelog
==================
-Cerberus is a collaboratively funded project, see the `funding page`_.
+Version 1.3.7
+-------------
+
+Released on December 31, 2024.
+
+Fixed
+~~~~~
+
+- Amends missing changelog
+
+
+Version 1.3.6
+-------------
+
+Released on December 23, 2024.
+
+New
+~~~
+
+- Support for Python 3.12 & 3.13
+
+Fixed
+~~~~~
+
+- Escaping in docstrings (`#608`_)
+
+.. _`#608`: https://github.com/pyeve/cerberus/issues/608
Version 1.3.5
-------------
@@ -649,5 +675,4 @@
First public preview release.
-.. _`upgrade notes`: upgrading
-.. _`funding page`: https://docs.python-cerberus.org/en/stable/funding.html
+.. _`upgrade notes`: https://docs.python-cerberus.org/upgrading.html
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/README.rst new/cerberus-1.3.7/README.rst
--- old/cerberus-1.3.5/README.rst 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/README.rst 2024-12-31 15:21:41.000000000 +0100
@@ -38,20 +38,6 @@
advised to run the contributed test suite on your target system.
-Funding
--------
-
-Cerberus is an open source, collaboratively funded project. If you run a
-business and are using Cerberus in a revenue-generating product, it would
-make business sense to sponsor its development: it ensures the project that
-your product relies on stays healthy and actively maintained. Individual users
-are also welcome to make a recurring pledge or a one time donation if Cerberus
-has helped you in your work or personal projects.
-
-Every single sign-up makes a significant impact towards making Eve possible. To
-learn more, check out our `funding page`_.
-
-
Documentation
-------------
@@ -101,7 +87,6 @@
.. _Contribution Guidelines: https://github.com/pyeve/cerberus/blob/1.3.x/CONTRIBUTING.rst
.. _end of life: https://devguide.python.org/#status-of-python-branches
-.. _funding page: http://docs.python-cerberus.org/en/latest/funding.html
.. _license: https://github.com/pyeve/cerberus/blob/1.3.x/LICENSE
.. _Nicola Iarocci: https://nicolaiarocci.com/
.. _PyPI: https://pypi.python.org/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/cerberus/errors.py new/cerberus-1.3.7/cerberus/errors.py
--- old/cerberus-1.3.5/cerberus/errors.py 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/cerberus/errors.py 2024-12-31 15:21:41.000000000 +0100
@@ -155,7 +155,7 @@
@property
def definitions_errors(self):
"""
- Dictionary with errors of an \*of-rule mapped to the index of the definition it
+ Dictionary with errors of an \\*of-rule mapped to the index of the definition it
occurred in. Returns :obj:`None` if not applicable.
"""
if not self.is_logic_error:
@@ -183,7 +183,7 @@
@property
def is_logic_error(self):
"""
- ``True`` for validation errors against different schemas with \*of-rules.
+ ``True`` for validation errors against different schemas with \\*of-rules.
"""
return bool(self.code & LOGICAL.code - ERROR_GROUP.code)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/cerberus/tests/test_customization.py new/cerberus-1.3.7/cerberus/tests/test_customization.py
--- old/cerberus-1.3.5/cerberus/tests/test_customization.py 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/cerberus/tests/test_customization.py 2024-12-31 15:21:41.000000000 +0100
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-from pytest import mark
+import pytest
import cerberus
from cerberus.tests import assert_fail, assert_success
@@ -8,15 +8,17 @@
def test_contextual_data_preservation():
- class InheritedValidator(cerberus.Validator):
- def __init__(self, *args, **kwargs):
- if 'working_dir' in kwargs:
- self.working_dir = kwargs['working_dir']
- super(InheritedValidator, self).__init__(*args, **kwargs)
-
- def _validate_type_test(self, value):
- if self.working_dir:
- return True
+ with pytest.deprecated_call():
+
+ class InheritedValidator(cerberus.Validator):
+ def __init__(self, *args, **kwargs):
+ if 'working_dir' in kwargs:
+ self.working_dir = kwargs['working_dir']
+ super(InheritedValidator, self).__init__(*args, **kwargs)
+
+ def _validate_type_test(self, value):
+ if self.working_dir:
+ return True
assert 'test' in InheritedValidator.types
v = InheritedValidator(
@@ -45,7 +47,7 @@
# TODO remove 'validator' as rule parameter with the next major release
-(a)mark.parametrize('rule', ('check_with', 'validator'))
+(a)pytest.mark.parametrize('rule', ('check_with', 'validator'))
def test_check_with_method(rule):
# https://github.com/pyeve/cerberus/issues/265
class MyValidator(cerberus.Validator):
@@ -53,7 +55,12 @@
if not value & 1:
self._error(field, "Must be an odd number")
- v = MyValidator(schema={'amount': {rule: 'oddity'}})
+ if rule == "validator":
+ with pytest.deprecated_call():
+ v = MyValidator(schema={'amount': {rule: 'oddity'}})
+ else:
+ v = MyValidator(schema={'amount': {rule: 'oddity'}})
+
assert_success(document={'amount': 1}, validator=v)
assert_fail(
document={'amount': 2},
@@ -63,20 +70,32 @@
# TODO remove test with the next major release
-(a)mark.parametrize('rule', ('check_with', 'validator'))
+(a)pytest.mark.parametrize('rule', ('check_with', 'validator'))
def test_validator_method(rule):
class MyValidator(cerberus.Validator):
def _validator_oddity(self, field, value):
if not value & 1:
- self._error(field, "Must be an odd number")
+ self._error(field, "Must not be an odd number")
- v = MyValidator(schema={'amount': {rule: 'oddity'}})
- assert_success(document={'amount': 1}, validator=v)
- assert_fail(
- document={'amount': 2},
- validator=v,
- error=('amount', (), cerberus.errors.CUSTOM, None, ('Must be an odd number',)),
- )
+ if rule == "validator":
+ with pytest.deprecated_call():
+ v = MyValidator(schema={'amount': {rule: 'oddity'}})
+ else:
+ v = MyValidator(schema={'amount': {rule: 'oddity'}})
+
+ with pytest.deprecated_call():
+ assert_success(document={'amount': 1}, validator=v)
+ assert_fail(
+ document={'amount': 2},
+ validator=v,
+ error=(
+ 'amount',
+ (),
+ cerberus.errors.CUSTOM,
+ None,
+ ('Must not be an odd number',),
+ ),
+ )
def test_schema_validation_can_be_disabled_in_schema_setter():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/cerberus/tests/test_schema.py new/cerberus-1.3.7/cerberus/tests/test_schema.py
--- old/cerberus-1.3.5/cerberus/tests/test_schema.py 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/cerberus/tests/test_schema.py 2024-12-31 15:21:41.000000000 +0100
@@ -137,7 +137,8 @@
},
}
- validator = Validator(schema)
+ with pytest.deprecated_call():
+ validator = Validator(schema)
assert validator.schema == {
"field_1": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/cerberus/tests/test_validation.py new/cerberus-1.3.7/cerberus/tests/test_validation.py
--- old/cerberus-1.3.5/cerberus/tests/test_validation.py 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/cerberus/tests/test_validation.py 2024-12-31 15:21:41.000000000 +0100
@@ -7,6 +7,7 @@
from random import choice
from string import ascii_lowercase
+import pytest
from pytest import mark
from cerberus import errors, rules_set_registry, Validator
@@ -698,7 +699,7 @@
# TODO remove 'keyschema' as rule with the next major release
-(a)mark.parametrize('rule', ('keysrules', 'keyschema'))
+(a)pytest.mark.parametrize('rule', ('keysrules', 'keyschema'))
def test_keysrules(rule):
schema = {
'a_dict_with_keysrules': {
@@ -706,8 +707,13 @@
rule: {'type': 'string', 'regex': '[a-z]+'},
}
}
- assert_success({'a_dict_with_keysrules': {'key': 'value'}}, schema=schema)
- assert_fail({'a_dict_with_keysrules': {'KEY': 'value'}}, schema=schema)
+ if rule == "keyschema":
+ with pytest.deprecated_call():
+ assert_success({'a_dict_with_keysrules': {'key': 'value'}}, schema=schema)
+ assert_fail({'a_dict_with_keysrules': {'KEY': 'value'}}, schema=schema)
+ else:
+ assert_success({'a_dict_with_keysrules': {'key': 'value'}}, schema=schema)
+ assert_fail({'a_dict_with_keysrules': {'KEY': 'value'}}, schema=schema)
def test_a_list_length(schema):
@@ -743,10 +749,12 @@
def test_custom_datatype():
- class MyValidator(Validator):
- def _validate_type_objectid(self, value):
- if re.match('[a-f0-9]{24}', value):
- return True
+ with pytest.deprecated_call():
+
+ class MyValidator(Validator):
+ def _validate_type_objectid(self, value):
+ if re.match('[a-f0-9]{24}', value):
+ return True
schema = {'test_field': {'type': 'objectid'}}
validator = MyValidator(schema)
@@ -759,19 +767,22 @@
def test_custom_datatype_rule():
- class MyValidator(Validator):
- def _validate_min_number(self, min_number, field, value):
- """{'type': 'number'}"""
- if value < min_number:
- self._error(field, 'Below the min')
-
- # TODO replace with TypeDefintion in next major release
- def _validate_type_number(self, value):
- if isinstance(value, int):
- return True
+ with pytest.deprecated_call():
+
+ class MyValidator(Validator):
+ def _validate_min_number(self, min_number, field, value):
+ """{'type': 'number'}"""
+ if value < min_number:
+ self._error(field, 'Below the min')
+
+ # TODO replace with TypeDefintion in next major release
+ def _validate_type_number(self, value):
+ if isinstance(value, int):
+ return True
schema = {'test_field': {'min_number': 1, 'type': 'number'}}
- validator = MyValidator(schema)
+ with pytest.warns(UserWarning):
+ validator = MyValidator(schema)
assert_fail(
{'test_field': '0'},
validator=validator,
@@ -898,10 +909,12 @@
def test_unknown_keys_retain_custom_rules():
# test that allow_unknown schema respect custom validation rules.
# https://github.com/pyeve/cerberus/issues/#66.
- class CustomValidator(Validator):
- def _validate_type_foo(self, value):
- if value == "foo":
- return True
+ with pytest.deprecated_call():
+
+ class CustomValidator(Validator):
+ def _validate_type_foo(self, value):
+ if value == "foo":
+ return True
validator = CustomValidator({})
validator.allow_unknown = {"type": "foo"}
@@ -1165,10 +1178,11 @@
if not value.islower():
error(field, 'must be lowercase')
- validator.schema = {
- 'name': {'validator': validate_name},
- 'age': {'type': 'integer'},
- }
+ with pytest.deprecated_call():
+ validator.schema = {
+ 'name': {'validator': validate_name},
+ 'age': {'type': 'integer'},
+ }
assert_fail(
{'name': 'ItsMe', 'age': 2},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/docs/contact.rst new/cerberus-1.3.7/docs/contact.rst
--- old/cerberus-1.3.5/docs/contact.rst 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/docs/contact.rst 2024-12-31 15:21:41.000000000 +0100
@@ -12,11 +12,6 @@
----
New releases are usually announced on `my Website <https://nicolaiarocci.com/tags/cerberus>`_.
-Twitter
--------
-I often tweet about new features and releases of Cerberus. Follow `@nicolaiarocci
-<https://twitter.com/nicolaiarocci>`_.
-
Mailing List
------------
The `mailing list`_ is intended to be a low traffic resource for users,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/docs/contribute.rst new/cerberus-1.3.7/docs/contribute.rst
--- old/cerberus-1.3.5/docs/contribute.rst 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/docs/contribute.rst 2024-12-31 15:21:41.000000000 +0100
@@ -99,11 +99,11 @@
The result can be accessed by opening ``docs/_build/html/index.html``.
-.. _Fork: https://docs.github.com/en/free-pro-team@latest/github/getting-started-with…
-.. _`fork and edit`: https://github.blog/2011-04-26-forking-with-the-edit-button/
+.. _Fork: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/w…
+.. _`fork and edit`: https://github.blog/news-insights/the-library/forking-with-the-edit-button/
.. _pre-commit: https://pre-commit.com/
.. _`proper format`: https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
-.. _`Pull Request`: https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-i…
+.. _`Pull Request`: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/p…
.. _pytest: https://pytest.org
.. _repository: https://github.com/pyeve/cerberus
.. _tox: https://tox.readthedocs.io
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/docs/funding.rst new/cerberus-1.3.7/docs/funding.rst
--- old/cerberus-1.3.5/docs/funding.rst 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/docs/funding.rst 1970-01-01 01:00:00.000000000 +0100
@@ -1,33 +0,0 @@
-Funding
-=======
-We believe that collaboratively funded software can offer outstanding returns
-on investment, by encouraging users to collectively share the cost of
-development.
-
-Cerberus continues to be open-source and permissively licensed, but we firmly
-believe it is in the commercial best-interest for users of the project to
-invest in its ongoing development.
-
-Signing up as a Backer:
-
-- Directly contribute to faster releases, more features, and higher quality software.
-- Allow more time to be invested in documentation, issue triage, and community support.
-- Safeguard the future development of Cerberus.
-
-If you run a business and is using Cerberus in a revenue-generating product, it
-would make business sense to sponsor its development: it ensures the project
-that your product relies on stays healthy and actively maintained. It can also
-help your exposure in the Cerberus community and makes it easier to attract Cerberus
-developers.
-
-Of course, individual users are also welcome to make a recurring pledge if
-Cerberus has helped you in your work or personal projects. Alternatively,
-consider donating as a sign of appreciation - like buying me coffee once in
-a while :)
-
-Support Cerberus development
-----------------------------
-You can support Cerberus development by pledging on Patreon or donating on PayPal.
-
-- `Become a Backer <https://www.patreon.com/nicolaiarocci>`_ (recurring pledge)
-- `Donate via PayPal <https://www.paypal.com/donate/?cmd=_s-xclick&hosted_button_id=7U7G7EWU7EPNW>`_ (one time)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/docs/index.rst new/cerberus-1.3.7/docs/index.rst
--- old/cerberus-1.3.5/docs/index.rst 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/docs/index.rst 2024-12-31 15:21:41.000000000 +0100
@@ -8,8 +8,7 @@
Cerberus provides powerful yet simple and lightweight data validation
functionality out of the box and is designed to be easily extensible, allowing
-for custom validation. It has no dependencies and is thoroughly tested
-from Python 2.7 up to 3.8, PyPy and PyPy3.
+for custom validation. It has no dependencies and is thoroughly.
At a Glance
-----------
@@ -28,19 +27,6 @@
>>> v.validate(document)
True
-Funding Cerberus
-----------------
-Cerberus is a :doc:`collaboratively funded project <funding>`. If you run
-a business and are using Cerberus in a revenue-generating product, it would
-make business sense to sponsor its development: it ensures the project that
-your product relies on stays healthy and actively maintained.
-
-Individual users are also welcome to make either a recurring pledge or a one
-time donation if Cerberus has helped you in your work or personal projects.
-Every single sign-up makes a significant impact towards making Cerberus
-possible.
-
-To join the backer ranks, check out `Cerberus campaign on Patreon`_.
Table of Contents
-----------------
@@ -55,7 +41,6 @@
errors
Extending <customize>
Contributing <contribute>
- Funding <funding>
API <api>
FAQ <faq>
external_resources
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/pyproject.toml new/cerberus-1.3.7/pyproject.toml
--- old/cerberus-1.3.5/pyproject.toml 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/pyproject.toml 2024-12-31 15:21:41.000000000 +0100
@@ -4,7 +4,7 @@
[project]
name = "Cerberus"
-version = "1.3.5"
+version = "1.3.7"
description = """\
Lightweight, extensible schema and data validation tool for Python\
dictionaries.\
@@ -30,6 +30,8 @@
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
+ "Programming Language :: Python :: 3.12",
+ "Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]
@@ -40,19 +42,28 @@
"documents",
"normalization"
]
+requires-python = ">=3.7"
dependencies = ["importlib-metadata; python_version < '3.8'"]
[project.urls]
Documentation = "http://docs.python-cerberus.org"
Repository = "https://github.com/pyeve/cerberus"
+
+[tool.black]
+safe = true
+skip-string-normalization = true
+
+
+[tool.pytest.ini_options]
+filterwarnings = [
+ "error"
+]
+
+
[tool.setuptools]
include-package-data = false
[tool.setuptools.packages.find]
include = ["cerberus"]
exclude = ["*.benchmarks", "*.tests"]
-
-[tool.black]
-safe = true
-skip-string-normalization = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/pytest.ini new/cerberus-1.3.7/pytest.ini
--- old/cerberus-1.3.5/pytest.ini 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/pytest.ini 1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-[pytest]
-addopts = --maxfail=2 -rf
-norecursedirs = documents
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cerberus-1.3.5/tox.ini new/cerberus-1.3.7/tox.ini
--- old/cerberus-1.3.5/tox.ini 2023-08-09 14:48:27.000000000 +0200
+++ new/cerberus-1.3.7/tox.ini 2024-12-31 15:21:41.000000000 +0100
@@ -1,5 +1,5 @@
[tox]
-envlist=py37,py38,py39,py310,py311,pypy3,doclinks,doctest,linting
+envlist=py37,py38,py39,py310,py311,py312,pypy3,doclinks,doctest,linting
[testenv]
deps=pytest
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xh for openSUSE:Factory checked in at 2025-01-09 15:07:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xh (Old)
and /work/SRC/openSUSE:Factory/.xh.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xh"
Thu Jan 9 15:07:54 2025 rev:7 rq:1235826 version:0.23.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/xh/xh.changes 2024-10-15 15:17:25.248172166 +0200
+++ /work/SRC/openSUSE:Factory/.xh.new.1881/xh.changes 2025-01-09 15:08:29.906948670 +0100
@@ -1,0 +2,11 @@
+Wed Jan 8 08:31:14 UTC 2025 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 0.23.1:
+ Security fixes:
+ * Upgrade to ruzstd v0.7.3 to fix RUSTSEC-2024-0400, see #396
+ Bug fixes:
+ * Warn on combination of --continue and Range header, #394
+ Other:
+ * Enable logging in rustls and tracing-using dependencies, see #390
+
+-------------------------------------------------------------------
Old:
----
xh-0.23.0.tar.xz
New:
----
xh-0.23.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xh.spec ++++++
--- /var/tmp/diff_new_pack.1n548o/_old 2025-01-09 15:08:31.723024189 +0100
+++ /var/tmp/diff_new_pack.1n548o/_new 2025-01-09 15:08:31.739024854 +0100
@@ -1,7 +1,7 @@
#
# spec file for package xh
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: xh
-Version: 0.23.0
+Version: 0.23.1
Release: 0
Summary: Tool for sending HTTP requests
License: MIT
++++++ _service ++++++
--- /var/tmp/diff_new_pack.1n548o/_old 2025-01-09 15:08:32.019036498 +0100
+++ /var/tmp/diff_new_pack.1n548o/_new 2025-01-09 15:08:32.059038162 +0100
@@ -3,7 +3,7 @@
<param name="url">https://github.com/ducaale/xh</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="scm">git</param>
- <param name="revision">v0.23.0</param>
+ <param name="revision">v0.23.1</param>
<param name="match-tag">*</param>
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
<param name="versionrewrite-replacement">\1</param>
++++++ vendor.tar.xz ++++++
/work/SRC/openSUSE:Factory/xh/vendor.tar.xz /work/SRC/openSUSE:Factory/.xh.new.1881/vendor.tar.xz differ: char 15, line 1
++++++ xh-0.23.0.tar.xz -> xh-0.23.1.tar.xz ++++++
++++ 2626 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package lowfi for openSUSE:Factory checked in at 2025-01-09 15:07:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lowfi (Old)
and /work/SRC/openSUSE:Factory/.lowfi.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lowfi"
Thu Jan 9 15:07:52 2025 rev:5 rq:1235824 version:1.5.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/lowfi/lowfi.changes 2024-11-01 21:07:44.114858830 +0100
+++ /work/SRC/openSUSE:Factory/.lowfi.new.1881/lowfi.changes 2025-01-09 15:08:26.558809443 +0100
@@ -1,0 +2,10 @@
+Wed Jan 8 08:39:42 UTC 2025 - Andrea Manzini <andrea.manzini(a)suse.com>
+
+- update to 1.5.5:
+ * fix: make scrape command deterministic and update lofigirl list
+ * feat: allow variable width
+ * fix: read list header to lofigirl list
+ * fix: use unicode-segmentation to fix issues with unicode track names
+ * bump dependencies
+
+-------------------------------------------------------------------
Old:
----
lowfi-1.5.3.obscpio
lowfi-1.5.3.tar.zst
New:
----
lowfi-1.5.5.obscpio
lowfi-1.5.5.tar.zst
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ lowfi.spec ++++++
--- /var/tmp/diff_new_pack.QhGwTT/_old 2025-01-09 15:08:28.298881801 +0100
+++ /var/tmp/diff_new_pack.QhGwTT/_new 2025-01-09 15:08:28.298881801 +0100
@@ -1,7 +1,7 @@
#
# spec file for package lowfi
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: lowfi
-Version: 1.5.3
+Version: 1.5.5
Release: 0
Summary: An extremely simple lofi player
License: MIT
++++++ _service ++++++
--- /var/tmp/diff_new_pack.QhGwTT/_old 2025-01-09 15:08:28.322882799 +0100
+++ /var/tmp/diff_new_pack.QhGwTT/_new 2025-01-09 15:08:28.322882799 +0100
@@ -6,7 +6,7 @@
<param name="scm">git</param>
<param name="version">git-master</param>
<param name="versionformat">@PARENT_TAG@</param>
- <param name="revision">1.5.3</param>
+ <param name="revision">1.5.5</param>
<param name="changesauthor">andrea.manzini(a)suse.com</param>
</service>
<service mode="manual" name="set_version"/>
++++++ lowfi-1.5.3.obscpio -> lowfi-1.5.5.obscpio ++++++
++++ 3714 lines of diff (skipped)
++++++ lowfi-1.5.3.tar.zst -> lowfi-1.5.5.tar.zst ++++++
++++ 3714 lines of diff (skipped)
++++++ lowfi.obsinfo ++++++
--- /var/tmp/diff_new_pack.QhGwTT/_old 2025-01-09 15:08:28.478889287 +0100
+++ /var/tmp/diff_new_pack.QhGwTT/_new 2025-01-09 15:08:28.482889453 +0100
@@ -1,5 +1,5 @@
name: lowfi
-version: 1.5.3
-mtime: 1730307367
-commit: a076c2b62faffd4541c18e7df44fd3cb361c93e5
+version: 1.5.5
+mtime: 1736285674
+commit: 22a2e7f9868512e39ddcd1af2e5ed2b2ccebbfcb
++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/lowfi/vendor.tar.zst /work/SRC/openSUSE:Factory/.lowfi.new.1881/vendor.tar.zst differ: char 7, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package clojure for openSUSE:Factory checked in at 2025-01-09 15:07:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/clojure (Old)
and /work/SRC/openSUSE:Factory/.clojure.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "clojure"
Thu Jan 9 15:07:50 2025 rev:26 rq:1235830 version:1.12.0.1495
Changes:
--------
--- /work/SRC/openSUSE:Factory/clojure/clojure.changes 2024-09-09 14:46:29.559810581 +0200
+++ /work/SRC/openSUSE:Factory/.clojure.new.1881/clojure.changes 2025-01-09 15:08:25.766776508 +0100
@@ -1,0 +2,15 @@
+Wed Jan 8 08:51:39 UTC 2025 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 1.12.0.1495:
+ * Echo args with -M deprecation warning for clarity
+ * Update to tools.deps 0.21.1467
+
+-------------------------------------------------------------------
+Wed Jan 8 08:51:12 UTC 2025 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 1.12.0.1488:
+ * Tweak message when -X or -T function namespace not found
+ * Update to latest tools.tools
+ * Update to latest tools.deps
+
+-------------------------------------------------------------------
Old:
----
clojure-tools-1.12.0.1479.tar.gz
New:
----
clojure-tools-1.12.0.1495.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ clojure.spec ++++++
--- /var/tmp/diff_new_pack.d5Ue4z/_old 2025-01-09 15:08:26.298798631 +0100
+++ /var/tmp/diff_new_pack.d5Ue4z/_new 2025-01-09 15:08:26.298798631 +0100
@@ -1,7 +1,7 @@
#
# spec file for package clojure
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: clojure
-Version: 1.12.0.1479
+Version: 1.12.0.1495
Release: 0
Summary: A dynamic programming language that targets the JVM
License: EPL-1.0
++++++ clojure-tools-1.12.0.1479.tar.gz -> clojure-tools-1.12.0.1495.tar.gz ++++++
/work/SRC/openSUSE:Factory/clojure/clojure-tools-1.12.0.1479.tar.gz /work/SRC/openSUSE:Factory/.clojure.new.1881/clojure-tools-1.12.0.1495.tar.gz differ: char 12, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pyinstaller-hooks-contrib for openSUSE:Factory checked in at 2025-01-09 15:07:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyinstaller-hooks-contrib (Old)
and /work/SRC/openSUSE:Factory/.python-pyinstaller-hooks-contrib.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyinstaller-hooks-contrib"
Thu Jan 9 15:07:36 2025 rev:9 rq:1235754 version:2024.11
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyinstaller-hooks-contrib/python-pyinstaller-hooks-contrib.changes 2024-01-31 23:54:31.054650756 +0100
+++ /work/SRC/openSUSE:Factory/.python-pyinstaller-hooks-contrib.new.1881/python-pyinstaller-hooks-contrib.changes 2025-01-09 15:08:09.754110646 +0100
@@ -1,0 +2,18 @@
+Tue Jan 7 09:49:19 UTC 2025 - Markéta Machová <mmachova(a)suse.com>
+
+- Update to 2024.11
+ * Update torch hook to suppress creation of symbolic links to the
+ top-level application directory
+ * Update sklearn.tree hook for compatibility with scikit-learn v1.6.0
+- Downloaded upstream conftest.py missing in the tarball
+
+-------------------------------------------------------------------
+Fri Dec 13 10:56:25 UTC 2024 - Markéta Machová <mmachova(a)suse.com>
+
+- update to 2024.10
+ * Add many hooks, updated many hooks.
+ * Released sdists and tagged GitHub source archives contain the
+ changelog entries for their current release.
+ * See the complete changelog in CHANGELOG.rst.
+
+-------------------------------------------------------------------
Old:
----
pyinstaller-hooks-contrib-2024.0.tar.gz
New:
----
conftest.py
pyinstaller_hooks_contrib-2024.11.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pyinstaller-hooks-contrib.spec ++++++
--- /var/tmp/diff_new_pack.Y60iac/_old 2025-01-09 15:08:10.446139424 +0100
+++ /var/tmp/diff_new_pack.Y60iac/_new 2025-01-09 15:08:10.450139590 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-pyinstaller-hooks-contrib
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -26,13 +26,16 @@
%endif
%{?sle15_python_module_pythons}
Name: python-pyinstaller-hooks-contrib%{psuffix}
-Version: 2024.0
+Version: 2024.11
Release: 0
Summary: Community maintained hooks for PyInstaller
License: Apache-2.0 OR GPL-2.0-only
URL: https://github.com/pyinstaller/pyinstaller-hooks-contrib
-Source: https://files.pythonhosted.org/packages/source/p/pyinstaller-hooks-contrib/…
+Source: https://files.pythonhosted.org/packages/source/p/pyinstaller_hooks_contrib/…
+# conftest.py not present in the tarball
+Source1: https://raw.githubusercontent.com/pyinstaller/pyinstaller-hooks-contrib/ref…
BuildRequires: %{python_module setuptools >= 30.3.0}
+BuildRequires: %{python_module pip}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildArch: noarch
@@ -53,26 +56,28 @@
Community maintained hooks for PyInstaller
%prep
-%autosetup -p1 -n pyinstaller-hooks-contrib-%{version}
+%autosetup -p1 -n pyinstaller_hooks_contrib-%{version}
+cp %{SOURCE1} tests/
%build
-%python_build
+%pyproject_wheel
%install
%if !%{with test}
-%python_install
+%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%check
%if %{with test}
-%pytest src/_pyinstaller_hooks_contrib/tests
+# pytest-runner is dead in Python 3.13
+%pytest -k "not pytest_runner"
%endif
%if !%{with test}
%files %{python_files}
%doc README.md
-%license LICENSE LICENSE.APL.txt LICENSE.GPL.txt
+%license LICENSE
%{python_sitelib}/_pyinstaller_hooks_contrib
%{python_sitelib}/pyinstaller_hooks_contrib-%{version}*-info
%endif
++++++ conftest.py ++++++
# ------------------------------------------------------------------
# Copyright (c) 2020 PyInstaller Development Team.
#
# This file is distributed under the terms of the GNU General Public
# License (version 2.0 or later).
#
# The full license is available in LICENSE, distributed with
# this software.
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ------------------------------------------------------------------
# Import all fixtures from PyInstaller into the tests.
from PyInstaller.utils.conftest import * # noqa: F401,F403
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package glasskube-cli for openSUSE:Factory checked in at 2025-01-09 15:07:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/glasskube-cli (Old)
and /work/SRC/openSUSE:Factory/.glasskube-cli.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "glasskube-cli"
Thu Jan 9 15:07:28 2025 rev:6 rq:1235793 version:0.26.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/glasskube-cli/glasskube-cli.changes 2024-11-26 20:58:08.456021994 +0100
+++ /work/SRC/openSUSE:Factory/.glasskube-cli.new.1881/glasskube-cli.changes 2025-01-09 15:07:52.433390392 +0100
@@ -1,0 +2,81 @@
+Wed Jan 08 06:38:37 UTC 2025 - opensuse_buildservice(a)ojkastl.de
+
+- Update to version 0.26.1:
+ * chore(main): release 0.26.1 (#1423)
+ * docs(website): move website to
+ https://github.com/glasskube/glasskube.dev/ (#1479)
+ * chore(deps): update dependency typescript-eslint to v8.19.1
+ (#1482)
+ * docs(website): fix company name input type (#1478)
+ * docs(website): add contact form (#1477)
+ * chore(deps): update dependency esbuild to v0.24.2 (#1467)
+ * fix(deps): update dependency @giscus/react to v3.1.0 (#1475)
+ * fix(deps): update dependency giscus to v1.6.0 (#1476)
+ * chore(deps): update dependency typescript-eslint to v8.19.0
+ (#1473)
+ * fix(deps): update fontsource monorepo to v5.1.1 (#1471)
+ * chore(deps): update dependency eslint-plugin-react to v7.37.3
+ (#1469)
+ * chore(deps): update dependency typescript-eslint to v8.18.2
+ (#1468)
+ * docs(website): added airgapped glossary piece (#1463)
+ * chore(deps): update dependency esbuild to v0.24.1 (#1465)
+ * fix(deps): update module github.com/onsi/ginkgo/v2 to v2.22.1
+ (#1464)
+ * chore(deps): update actions/upload-artifact action to v4.5.0
+ (#1461)
+ * chore(deps): update dependency globals to v15.14.0 (#1462)
+ * fix(deps): update font awesome to v6.7.2 (#1460)
+ * chore(deps): update dependency typescript-eslint to v8.18.1
+ (#1459)
+ * chore(deps): update actions/setup-go digest to 3041bf5 (#1451)
+ * chore(deps): update dependency @commitlint/cli to v19.6.1
+ (#1458)
+ * chore(deps): update dependency @eslint/js to v9.17.0 (#1457)
+ * fix(deps): update dependency htmx.org to v2.0.4 (#1456)
+ * fix(deps): update dependency htmx-ext-response-targets to
+ v2.0.2 (#1455)
+ * docs(website): glossary isv (#1454)
+ * fix(deps): update dependency prism-react-renderer to v2.4.1
+ (#1453)
+ * fix(deps): update dependency posthog-docusaurus to v2.0.2
+ (#1449)
+ * docs(webiste): fix link (#1448)
+ * docs(website): adapt website for glasskube cloud launch (#1437)
+ * chore(deps): bump nanoid from 3.3.7 to 3.3.8 in /website
+ (#1446)
+ * chore(deps): bump path-to-regexp and express in /website
+ (#1442)
+ * fix(deps): update module sigs.k8s.io/controller-runtime to
+ v0.19.3 (#1433)
+ * fix(deps): update module golang.org/x/term to v0.27.0 (#1436)
+ * fix(deps): update module github.com/onsi/gomega to v1.36.1
+ (#1444)
+ * chore(deps): update dependency typescript-eslint to v8.18.0
+ (#1443)
+ * chore(deps): update actions/cache action to v4.2.0 (#1438)
+ * docs(website): add on-prem glossary piece and fix broken link
+ (#1441)
+ * docs(website): fix broken link (#1440)
+ * chore(deps): update dependency typescript-eslint to v8.17.0
+ (#1435)
+ * chore(deps): update dependency globals to v15.13.0 (#1434)
+ * chore(deps): update dependency prettier to v3.4.2 (#1431)
+ * chore(deps): update dependency prettier to v3.4.2 (#1430)
+ * docs(website): cloud vs on-premises vs byoc blog post (#1382)
+ * chore(deps): update dependency @eslint/js to v9.16.0 (#1429)
+ * docs(website): remove orphan pages from sitemap, fix broken
+ link (#1428)
+ * docs(website): add cta components (#1427)
+ * docs(website): fix broken links (#1426)
+ * docs(website): fixed broken glossary links (#1419)
+ * chore(deps): update dependency prettier to v3.4.1 (#1425)
+ * chore(deps): update dependency prettier to v3.4.1 (#1424)
+ * docs(website): add cloudnativepg guide guide (#1414)
+ * chore(deps): update dependency @eslint/js to v9.15.0 (#1417)
+ * chore(deps): update dependency typescript-eslint to v8.16.0
+ (#1418)
+ * fix(deps): update module github.com/onsi/gomega to v1.36.0
+ (#1420)
+
+-------------------------------------------------------------------
Old:
----
glasskube-cli-0.26.0.obscpio
New:
----
glasskube-cli-0.26.1.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ glasskube-cli.spec ++++++
--- /var/tmp/diff_new_pack.ht2vdB/_old 2025-01-09 15:07:53.481433973 +0100
+++ /var/tmp/diff_new_pack.ht2vdB/_new 2025-01-09 15:07:53.481433973 +0100
@@ -1,7 +1,7 @@
#
# spec file for package glasskube-cli
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define executable_name glasskube
Name: glasskube-cli
-Version: 0.26.0
+Version: 0.26.1
Release: 0
Summary: The next generation Package Manager for Kubernetes
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.ht2vdB/_old 2025-01-09 15:07:53.509435138 +0100
+++ /var/tmp/diff_new_pack.ht2vdB/_new 2025-01-09 15:07:53.509435138 +0100
@@ -3,10 +3,10 @@
<param name="url">https://github.com/glasskube/glasskube</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="revision">v0.26.0</param>
+ <param name="revision">v0.26.1</param>
<param name="versionformat">@PARENT_TAG@</param>
- <param name="changesgenerate">enable</param>
<param name="versionrewrite-pattern">v(.*)</param>
+ <param name="changesgenerate">enable</param>
<param name="filename">glasskube-cli</param>
</service>
<service name="set_version" mode="manual">
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ht2vdB/_old 2025-01-09 15:07:53.525435803 +0100
+++ /var/tmp/diff_new_pack.ht2vdB/_new 2025-01-09 15:07:53.529435969 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/glasskube/glasskube</param>
- <param name="changesrevision">311b9e4c3349f20d9fa9b4faa0d8933666e4475f</param></service></servicedata>
+ <param name="changesrevision">d4a6698a83357528188ff7ea8e63745a9d9032e9</param></service></servicedata>
(No newline at EOF)
++++++ glasskube-cli-0.26.0.obscpio -> glasskube-cli-0.26.1.obscpio ++++++
++++ 39225 lines of diff (skipped)
++++++ glasskube-cli.obsinfo ++++++
--- /var/tmp/diff_new_pack.ht2vdB/_old 2025-01-09 15:07:53.797447114 +0100
+++ /var/tmp/diff_new_pack.ht2vdB/_new 2025-01-09 15:07:53.801447280 +0100
@@ -1,5 +1,5 @@
name: glasskube-cli
-version: 0.26.0
-mtime: 1732610016
-commit: 311b9e4c3349f20d9fa9b4faa0d8933666e4475f
+version: 0.26.1
+mtime: 1736255002
+commit: d4a6698a83357528188ff7ea8e63745a9d9032e9
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/glasskube-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.glasskube-cli.new.1881/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package wasm-bindgen for openSUSE:Factory checked in at 2025-01-09 15:07:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wasm-bindgen (Old)
and /work/SRC/openSUSE:Factory/.wasm-bindgen.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "wasm-bindgen"
Thu Jan 9 15:07:17 2025 rev:5 rq:1235767 version:0.2.97~0
Changes:
--------
--- /work/SRC/openSUSE:Factory/wasm-bindgen/wasm-bindgen.changes 2024-12-10 23:44:50.171815121 +0100
+++ /work/SRC/openSUSE:Factory/.wasm-bindgen.new.1881/wasm-bindgen.changes 2025-01-09 15:07:40.548896194 +0100
@@ -1,0 +2,11 @@
+Wed Jan 08 00:07:18 UTC 2025 - william.brown(a)suse.com
+
+- Downgrade to version 0.2.97~0:
+ * Required for wasm-pack to remain in locked step
+
+-------------------------------------------------------------------
+Tue Jan 7 01:54:07 UTC 2025 - William Brown <william.brown(a)suse.com>
+
+- Update wasm-bindgen dependencies
+
+-------------------------------------------------------------------
Old:
----
wasm-bindgen-0.2.99~0.tar.zst
New:
----
wasm-bindgen-0.2.97~0.tar.zst
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ wasm-bindgen.spec ++++++
--- /var/tmp/diff_new_pack.4ijAHf/_old 2025-01-09 15:07:41.224924306 +0100
+++ /var/tmp/diff_new_pack.4ijAHf/_new 2025-01-09 15:07:41.224924306 +0100
@@ -1,7 +1,7 @@
#
# spec file for package wasm-bindgen
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: wasm-bindgen
-Version: 0.2.99~0
+Version: 0.2.97~0
Release: 0
Summary: Facilitating high-level interactions between Wasm modules and JavaScript
License: Apache-2.0 OR MIT
++++++ _service ++++++
--- /var/tmp/diff_new_pack.4ijAHf/_old 2025-01-09 15:07:41.256925637 +0100
+++ /var/tmp/diff_new_pack.4ijAHf/_new 2025-01-09 15:07:41.260925802 +0100
@@ -3,7 +3,11 @@
<param name="url">https://github.com/rustwasm/wasm-bindgen.git</param>
<param name="versionformat">@PARENT_TAG@~@TAG_OFFSET@</param>
<param name="scm">git</param>
- <param name="revision">0.2.99</param>
+ <!-- WARNING WARNING WARNING -->
+ <!-- This version *MUST* be updated in lock-step with wasm-pack -->
+ <!-- Failure to do so WILL break packages!!! -->
+ <param name="revision">0.2.97</param>
+ <!-- WARNING WARNING WARNING -->
<param name="match-tag">*</param>
<param name="changesgenerate">enable</param>
</service>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.4ijAHf/_old 2025-01-09 15:07:41.276926468 +0100
+++ /var/tmp/diff_new_pack.4ijAHf/_new 2025-01-09 15:07:41.280926635 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/rustwasm/wasm-bindgen.git</param>
- <param name="changesrevision">04ca6f34ae52454910c7c4fa15c7bfde0126db79</param></service></servicedata>
+ <param name="changesrevision">7fa2afabdb259516fe8b942ed8353faaa8366da0</param></service></servicedata>
(No newline at EOF)
++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/wasm-bindgen/vendor.tar.zst /work/SRC/openSUSE:Factory/.wasm-bindgen.new.1881/vendor.tar.zst differ: char 7, line 1
++++++ wasm-bindgen-0.2.99~0.tar.zst -> wasm-bindgen-0.2.97~0.tar.zst ++++++
++++ 2927 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-monad-logger for openSUSE:Factory checked in at 2025-01-09 15:07:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-monad-logger (Old)
and /work/SRC/openSUSE:Factory/.ghc-monad-logger.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-monad-logger"
Thu Jan 9 15:07:13 2025 rev:33 rq:1235747 version:0.3.41
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-monad-logger/ghc-monad-logger.changes 2023-06-22 23:25:54.425794457 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-monad-logger.new.1881/ghc-monad-logger.changes 2025-01-09 15:07:32.884577486 +0100
@@ -1,0 +2,8 @@
+Tue Dec 31 08:10:41 UTC 2024 - Peter Simons <psimons(a)suse.com>
+
+- Update monad-logger to version 0.3.41.
+ ## 0.3.41
+
+ * Add `MonadAccum` instances for `LoggingT` and `NoLoggingT`
+
+-------------------------------------------------------------------
Old:
----
monad-logger-0.3.40.tar.gz
New:
----
monad-logger-0.3.41.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-monad-logger.spec ++++++
--- /var/tmp/diff_new_pack.PixmTm/_old 2025-01-09 15:07:33.652609423 +0100
+++ /var/tmp/diff_new_pack.PixmTm/_new 2025-01-09 15:07:33.652609423 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-monad-logger
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global pkg_name monad-logger
%global pkgver %{pkg_name}-%{version}
Name: ghc-%{pkg_name}
-Version: 0.3.40
+Version: 0.3.41
Release: 0
Summary: A class of monads which can log messages
License: MIT
++++++ monad-logger-0.3.40.tar.gz -> monad-logger-0.3.41.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/monad-logger-0.3.40/ChangeLog.md new/monad-logger-0.3.41/ChangeLog.md
--- old/monad-logger-0.3.40/ChangeLog.md 2023-06-05 13:14:46.000000000 +0200
+++ new/monad-logger-0.3.41/ChangeLog.md 2024-12-31 09:10:05.000000000 +0100
@@ -1,5 +1,9 @@
# ChangeLog for monad-logger
+## 0.3.41
+
+* Add `MonadAccum` instances for `LoggingT` and `NoLoggingT`
+
## 0.3.40
* Relax `fast-logger` upper bound from 3.2 to 3.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/monad-logger-0.3.40/Control/Monad/Logger.hs new/monad-logger-0.3.41/Control/Monad/Logger.hs
--- old/monad-logger-0.3.40/Control/Monad/Logger.hs 2023-06-05 13:14:46.000000000 +0200
+++ new/monad-logger-0.3.41/Control/Monad/Logger.hs 2024-12-31 09:10:05.000000000 +0100
@@ -170,6 +170,9 @@
import Control.Monad.Reader.Class ( MonadReader (..) )
import Control.Monad.State.Class ( MonadState (..) )
import Control.Monad.Writer.Class ( MonadWriter (..) )
+#if MIN_VERSION_mtl(2, 3, 1)
+import Control.Monad.Accum ( MonadAccum (..) )
+#endif
#if WITH_CALLSTACK
import GHC.Stack as GHC
@@ -903,6 +906,16 @@
tell = Trans.lift . tell
listen = mapNoLoggingT listen
pass = mapNoLoggingT pass
+
+#if MIN_VERSION_mtl(2, 3, 1)
+-- | @since 0.3.41
+instance MonadAccum w m => MonadAccum w (LoggingT m) where
+ accum = Trans.lift . accum
+
+-- | @since 0.3.41
+instance MonadAccum w m => MonadAccum w (NoLoggingT m) where
+ accum = Trans.lift . accum
+#endif
-- | dummy location, used with 'logWithoutLoc'
--
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/monad-logger-0.3.40/monad-logger.cabal new/monad-logger-0.3.41/monad-logger.cabal
--- old/monad-logger-0.3.40/monad-logger.cabal 2023-06-05 13:14:48.000000000 +0200
+++ new/monad-logger-0.3.41/monad-logger.cabal 2024-12-31 09:10:11.000000000 +0100
@@ -1,11 +1,11 @@
cabal-version: 1.12
--- This file has been generated from package.yaml by hpack version 0.35.1.
+-- This file has been generated from package.yaml by hpack version 0.37.0.
--
-- see: https://github.com/sol/hpack
name: monad-logger
-version: 0.3.40
+version: 0.3.41
synopsis: A class of monads which can log messages.
description: See README and Haddocks at <https://www.stackage.org/package/monad-logger>
category: System
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package trufflehog for openSUSE:Factory checked in at 2025-01-09 15:06:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/trufflehog (Old)
and /work/SRC/openSUSE:Factory/.trufflehog.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "trufflehog"
Thu Jan 9 15:06:56 2025 rev:68 rq:1235715 version:3.88.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/trufflehog/trufflehog.changes 2024-12-23 16:54:04.054910679 +0100
+++ /work/SRC/openSUSE:Factory/.trufflehog.new.1881/trufflehog.changes 2025-01-09 15:07:11.075670597 +0100
@@ -1,0 +2,15 @@
+Tue Jan 07 19:03:23 UTC 2025 - felix.niederwanger(a)suse.com
+
+- Update to version 3.88.1:
+ * added token_revoke status condition in slack api detector (#3831)
+ * feat(scrapingbee): tweak detections (#3820)
+ * [chore] - remove resumption option (#3830)
+ * Deprecated RockSet and RestPack detectors (#3812)
+ * fix(deps): update module github.com/go-git/go-git/v5 to v5.13.0 [security] (#3829)
+ * stop using context.TODO in archive handler (#3809)
+ * fixed bombbomb detector pattern test as part of issue 3817 (#3825)
+ * fixed github issue 3821 for string shannon entropy test (#3824)
+ * fixed github issue 3819 for endpoint customizer tests (#3823)
+ * fixed github issue 3774 for custom detector secret size (#3816)
+
+-------------------------------------------------------------------
Old:
----
trufflehog-3.88.0.obscpio
New:
----
trufflehog-3.88.1.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ trufflehog.spec ++++++
--- /var/tmp/diff_new_pack.TJZOtQ/_old 2025-01-09 15:07:12.587733474 +0100
+++ /var/tmp/diff_new_pack.TJZOtQ/_new 2025-01-09 15:07:12.591733641 +0100
@@ -1,7 +1,7 @@
#
# spec file for package trufflehog
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: trufflehog
-Version: 3.88.0
+Version: 3.88.1
Release: 0
Summary: CLI tool to find exposed secrets in source and archives
License: AGPL-3.0-or-later
++++++ _service ++++++
--- /var/tmp/diff_new_pack.TJZOtQ/_old 2025-01-09 15:07:12.619734804 +0100
+++ /var/tmp/diff_new_pack.TJZOtQ/_new 2025-01-09 15:07:12.623734971 +0100
@@ -3,7 +3,7 @@
<param name="url">https://github.com/trufflesecurity/trufflehog.git</param>
<param name="scm">git</param>
<param name="revision">main</param>
- <param name="version">v3.88.0</param>
+ <param name="version">v3.88.1</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="changesgenerate">enable</param>
</service>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.TJZOtQ/_old 2025-01-09 15:07:12.643735802 +0100
+++ /var/tmp/diff_new_pack.TJZOtQ/_new 2025-01-09 15:07:12.643735802 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/trufflesecurity/trufflehog.git</param>
- <param name="changesrevision">ddc015e5ed99942b2253d8ea16a0586a01ef2ab1</param></service></servicedata>
+ <param name="changesrevision">a94d152bf65bebf5baa486d3d4dfee520af2ceed</param></service></servicedata>
(No newline at EOF)
++++++ trufflehog-3.88.0.obscpio -> trufflehog-3.88.1.obscpio ++++++
/work/SRC/openSUSE:Factory/trufflehog/trufflehog-3.88.0.obscpio /work/SRC/openSUSE:Factory/.trufflehog.new.1881/trufflehog-3.88.1.obscpio differ: char 49, line 1
++++++ trufflehog.obsinfo ++++++
--- /var/tmp/diff_new_pack.TJZOtQ/_old 2025-01-09 15:07:12.675737133 +0100
+++ /var/tmp/diff_new_pack.TJZOtQ/_new 2025-01-09 15:07:12.679737300 +0100
@@ -1,5 +1,5 @@
name: trufflehog
-version: 3.88.0
-mtime: 1734730829
-commit: ddc015e5ed99942b2253d8ea16a0586a01ef2ab1
+version: 3.88.1
+mtime: 1736274322
+commit: a94d152bf65bebf5baa486d3d4dfee520af2ceed
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/trufflehog/vendor.tar.gz /work/SRC/openSUSE:Factory/.trufflehog.new.1881/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package occt for openSUSE:Factory checked in at 2025-01-09 15:06:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/occt (Old)
and /work/SRC/openSUSE:Factory/.occt.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "occt"
Thu Jan 9 15:06:53 2025 rev:15 rq:1235703 version:7.8.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/occt/occt.changes 2024-12-06 14:26:38.313135637 +0100
+++ /work/SRC/openSUSE:Factory/.occt.new.1881/occt.changes 2025-01-09 15:07:08.379558484 +0100
@@ -1,0 +2,6 @@
+Thu Dec 19 11:35:07 UTC 2024 - Max Lin <mlin(a)suse.com>
+
+- Disable documentation build on Leap 16 for now until mathjax is
+ available in Leap 16
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ occt.spec ++++++
--- /var/tmp/diff_new_pack.r93H4e/_old 2025-01-09 15:07:10.583650137 +0100
+++ /var/tmp/diff_new_pack.r93H4e/_new 2025-01-09 15:07:10.583650137 +0100
@@ -16,7 +16,7 @@
#
-%if 0%{?suse_version} >= 1600
+%if 0%{?suse_version} > 1600
%bcond_without docs
%else
%bcond_with docs
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package petsc for openSUSE:Factory checked in at 2025-01-09 15:06:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/petsc (Old)
and /work/SRC/openSUSE:Factory/.petsc.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "petsc"
Thu Jan 9 15:06:52 2025 rev:38 rq:1235702 version:3.22.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/petsc/petsc.changes 2024-12-10 23:46:10.271154245 +0100
+++ /work/SRC/openSUSE:Factory/.petsc.new.1881/petsc.changes 2025-01-09 15:07:06.955499266 +0100
@@ -1,0 +2,253 @@
+Mon Dec 30 19:41:59 UTC 2024 - Stefan Brüns <stefan.bruens(a)rwth-aachen.de>
+
+- Update to version 3.22:
+ * General:
+ + Add -mpiuni-allow-multiprocess-launch to allow mpiexec to
+ launch multiple indendent MPI-Uni jobs. Previously a sanity
+ check error message was always produced
+ * Configure/Build:
+ + Add --with-openmp-kernels
+ + Update to work with python-3.13
+ + Change MPIU_Allreduce() to always returns an MPI error
+ code that should be checked with PetscCallMPI()
+ + Add PetscCallReturnMPI(), PetscCallMPIReturnMPI(), and
+ PetscCheckReturnMPI() to check for in PETSc provided MPI
+ callbacks
+ * Sys:
+ + Add PetscPragmaUseOMPKernels
+ + Deprecate PetscOptionsRestoreViewer() in favor of
+ PetscViewerDestroy()
+ + Deprecate PetscOptionsGetViewer() and PetscOptionsGetViewers()
+ in favor of PetscOptionsCreateViewer() and
+ PetscOptionsCreateViewers()
+ + Deprecate PetscOptionsPushGetViewerOff(),
+ PetscOptionsPopGetViewerOff(), and PetscOptionsGetViewerOff()
+ in favor of PetscOptionsPushCreateViewerOff(),
+ PetscOptionsPopCreateViewerOff(), and
+ PetscOptionsGetCreateViewerOff()
+ + Add PetscObjectContainerCompose() and
+ PetscObjectContainerQuery()
+ + Add size_t argument to PetscMPIErrorString()
+ + Add PetscCallExternalAbort() for calling external library
+ functions from functions not returning PetscErrorCode
+ + Add PetscRandomSetOptionsPrefix()
+ + Add PetscOptionsGetBool3() to get a ternary logical value
+ from a command line option
+ * PetscViewer:
+ + Add PetscViewerASCIIStdoutSetFileUnit()
+ + Add PetscShmgetAllocateArrayScalar(),
+ PetscShmgetDeallocateArrayScalar(),
+ PetscShmgetAllocateArrayInt(), and
+ PetscShmgetDeallocateArrayInt() for Fortran
+ * VecScatter / PetscSF:
+ + Add PetscSFRegisterPersistent() and
+ PetscSFDeregisterPersistent() for safe optimization of
+ persistent communication
+ * Vec:
+ + The IS passed to VecISAXPY() and VecISCopy(). VecISSet() and
+ VecISShift() must have the same communicator of the vectors used
+ Make VecLock API active in optimized mode
+ + VecNestSetSubVec() and VecNestSetSubVecs() now take references
+ to input vectors rather than creating duplicates Deprecate
+ VecSetInf() with VecFlag()
+ * Mat:
+ + Change MatProductSetFill() to support PETSC_DETERMINE and
+ PETSC_CURRENT. MatMatMult() and its friends and relations now
+ accept PETSC_DETERMINE and PETSC_CURRENT in the fill argument.
+ PETSC_DEFAULT is deprecated for those functions
+ + Change the default MatType of the output Mat of
+ MatSchurComplementComputeExplicitOperator() to be MATDENSE.
+ It may be changed from the command line, e.g.,
+ -fieldsplit_1_explicit_operator_mat_type aij
+
+ + Add MATOP_GET_BLOCK_DIAGONAL and MATOP_GET_VBLOCK_DIAGONAL to
+ set methods returning the diagonal point blocks of a matrix
+ * PC:
+ + Add support in PCFieldSplitSetFields() including with
+ -pc_fieldsplit_%d_fields fields for MATNEST, making it
+ possible to utilize multiple levels of PCFIELDSPLIT with
+ MATNEST from the command line
+ + Add PCCompositeSpecialSetAlphaMat() API to use a matrix
+ other than the identity in preconditioners based on an
+ alternating direction iteration, e.g., setting M for
+ P = (A + alpha M) M^{-1} (alpha M + B)
+ + Reuse the result of T = A_{00}^-1 A_{01} in
+ PCApply_FieldSplit_Schur with -pc_fieldsplit_schur_fact_type
+ full
+ + Change the option database keys for coarsening for PCGAMG to
+ use the prefix -pc_gamg_, for example -pc_gamg_mat_coarsen_type
+ + Add PCGAMGSetGraphSymmetrize() and -pc_gamg_graph_symmetrize to
+ control symmetrization when coarsening the graph Add
+ -pc_hypre_type ilu with -pc_hypre_ilu_type,
+ -pc_hypre_ilu_iterative_setup_type,
+ -pc_hypre_ilu_iterative_setup_maxiter,
+ -pc_hypre_ilu_iterative_setup_tolerance,
+ -pc_hypre_ilu_print_level, -pc_hypre_ilu_logging,
+ -pc_hypre_ilu_level, -pc_hypre_ilu_max_nnz_per_row,
+ -pc_hypre_ilu_tol, -pc_hypre_ilu_maxiter,
+ -pc_hypre_ilu_drop_threshold, -pc_hypre_ilu_tri_solve,
+ -pc_hypre_ilu_lower_jacobi_iters,
+ -pc_hypre_ilu_upper_jacobi_iters, and
+ -pc_hypre_ilu_local_reordering
+ + Improve -pc_type boomeramg with
+ -pc_hypre_boomeramg_smooth_num_sweeps,
+ -pc_hypre_boomeramg_ilu_type,
+ -pc_hypre_boomeramg_ilu_iterative_setup_type,
+ -pc_hypre_boomeramg_ilu_iterative_setup_option,
+ -pc_hypre_boomeramg_ilu_iterative_setup_maxiter,
+ -pc_hypre_boomeramg_ilu_iterative_setup_tolerance,
+ -pc_hypre_boomeramg_ilu_print_level,
+ -pc_hypre_boomeramg_ilu_logging, -pc_hypre_boomeramg_ilu_level,
+ -pc_hypre_boomeramg_ilu_max_nnz_per_row,
+ -pc_hypre_boomeramg_ilu_maxiter,
+ -pc_hypre_boomeramg_ilu_drop_tol,
+ -pc_hypre_boomeramg_ilu_tri_solve,
+ -pc_hypre_boomeramg_ilu_lower_jacobi_iters,
+ -pc_hypre_boomeramg_ilu_upper_jacobi_iters, and
+ -pc_hypre_boomeramg_ilu_local_reordering
+ * KSP:
+ + Add support for PETSC_DETERMINE as an argument to
+ KSPSetTolerances() to set the parameter back to its initial
+ value when the object's type was set
+ + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
+ KSPSetTolerances()
+ * SNES:
+ + Add support for PETSC_DETERMINE as an argument to
+ SNESSetTolerances() to set the parameter back to its initial
+ value when the object's type was set
+ + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
+ SNESSetTolerances()
+ + Add DMAdaptorMonitor(), DMAdaptorMonitorSet(),
+ DMAdaptorMonitorCancel(), and DMAdaptorMonitorSetFromOptions()
+ + Add DMAdaptorMonitorSize(), DMAdaptorMonitorError(),
+ DMAdaptorMonitorErrorDraw(),
+ DMAdaptorMonitorErrorDrawLGCreate(), and
+ DMAdaptorMonitorErrorDrawLG()
+ + Add DMAdaptorMonitorRegister(), DMAdaptorMonitorRegisterAll(),
+ and DMAdaptorMonitorRegisterDestroy()
+ + Add DMAdaptorGetCriterion() and DMAdaptorSetCriterion()
+ + Add DMAdaptorSetOptionsPrefix()
+ + Add Newton's method with arc length continuation: SNESNEWTONAL
+ with SNESNewtonALSetFunction(), SNESNewtonALGetFunction(),
+ SNESNewtonALComputeFunction(), SNESNewtonALGetLoadParameter(),
+ and SNESNewtonALSetCorrectionType()
+ + Add SNESNewtonTRSetTolerances() and
+ SNESNewtonTRSetUpdateParameters() to programmatically set trust
+ region parameters Deprecate SNESSetTrustRegionTolerance() in
+ favor of SNESNewtonTRSetTolerances()
+ + Add SNESResetCounters() to reset counters for linear iterations
+ and function evaluations
+ * TS:
+ + Add Rosenbrock-W methods from :cite:`rang2015improved` with
+ B_{PR} stability: TSROSWR34PRW, TSROSWR3PRL2, TSROSWRODASPR,
+ and TSROSWRODASPR2
+ + Add support for PETSC_DETERMINE as an argument to
+ TSSetTolerances() to set the parameter back to its initial
+ value when the object's type was set Deprecate PETSC_DEFAULT
+ in favor of PETSC_CURRENT for TSSetTolerances()
+ + Add support for PETSC_DETERMINE as an argument to
+ TSSetMaxSteps() and TSSetMaxTime()
+ + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
+ TSAdaptSetSafety()
+ + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
+ TSAdaptSetClip()
+ + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
+ TSAdaptSetStepLimits()
+ + Add TSGetStepResize()
+ + Add -ts_monitor_solution_vtk_interval to control the interval
+ for dumping files
+ + Add a new ARKIMEX solver for fast-slow systems that are
+ partitioned component-wise and additively at the same time
+ + Add TSRHSSplitSetIFunction(), TSRHSSplitSetIJacobian(),
+ TSRHSSplitSetSNES(), TSRHSSplitGetSNES(),
+ TSARKIMEXSetFastSlowSplit(), and TSARKIMEXGetFastSlowSplit()
+ to support the new solver
+ * TAO:
+ + Add support for PETSC_DETERMINE as an argument to
+ TaoSetTolerances() and TaoSetConstraintTolerances() to set
+ the parameter back to its initial value when the object's
+ type was set
+ + Deprecate PETSC_DEFAULT in favor of PETSC_CURRENT for
+ TaoSetTolerances() and TaoSetConstraintTolerances()
+ * DM/DA:
+ + Add DMGetSparseLocalize() and DMSetSparseLocalize()
+ + Add DMGeomModelRegister(), DMGeomModelRegisterAll(),
+ DMGeomModelRegisterDestroy(), DMSnapToGeomModel(), and
+ DMSetSnapToGeomModel() to support registering geometric models
+ + Add DMGetOutputSequenceLength()
+ + Add an additional return vector to DMCreateMassMatrixLumped()
+ to retrieve the local mass lumping
+ + Add DMPlexMigrateGlobalToNaturalSF() modifies the NaturalSF to
+ map from the SF's old global section to the new global section
+ * DMPlex:
+ + Add DMLabelGetValueBounds()
+ + Add DMPlexOrientLabel()
+ + Add an argument to DMPlexLabelCohesiveComplete() in order to
+ change behavior at surface boundary Remove
+ DMPlexSnapToGeomModel()
+ + Add refinement argument to DMPlexCreateHexCylinderMesh()
+ + Now DMPlexComputeBdIntegral() takes one function per field
+ + Add DMPlexCreateEdgeNumbering()
+ + Add DMPlexComputeL2FluxDiffVec() and
+ DMPlexComputeL2FluxDiffVecLocal()
+ + Add DMAdaptorSetType(), DMAdaptorGetType(), DMAdaptorRegister(),
+ DMAdaptorRegisterAll(), and DMAdaptorRegisterDestroy()
+ + Add DMAdaptorGetMixedSetupFunction() and
+ DMAdaptorSetMixedSetupFunction()
+ + Add DMPlexCreateCellNumbering()
+ + Add DMPlexBuildFromCellSectionParallel() and
+ DMPlexCreateFromCellSectionParallel()
+ + Add -dm_plex_box_label to add "Face Sets" label with current
+ "box" conventions
+ + Add "Face Sets" label to simplex meshes using current "box"
+ conventions Update PetscViewerExodusII object to cache variable
+ names for faster and more robust look-ups
+ + Add PetscViewerExodusIISetNodalVariable(),
+ PetscViewerExodusIISetZonalVariable(),
+ PetscViewerExodusIIGetNodalVariable(), and
+ PetscViewerExodusIIGetZonalVariable() to set or get the number
+ of variables in a file
+ + Add PetscViewerExodusIISetNodalVariableName(),
+ PetscViewerExodusIISetZonalVariableName(),
+ PetscViewerExodusIIGetNodalVariableName(), and
+ PetscViewerExodusIIGetZonalVariableName() to set or get a
+ single variable name
+ + Add PetscViewerExodusIISetNodalVariablesNames(),
+ PetscViewerExodusIISetZonalVariablesNames(),
+ PetscViewerExodusIIGetNodalVariablesNames(), and
+ PetscViewerExodusIIGetZonalVariablesNames() to set or get all
+ variable names at the same time (not available in Fortran)
+ + Add degree bounds to DMCopyFields(), DMCopyDS(), PetscDSCopy(),
+ and PetscDSSelectDiscretizations()
+ + Add PetscFELimitDegree()
+ + Add localizationHeight and sparseLocalize arguments to
+ DMPlexCreateBoxMesh() for coordinate localization on periodic
+ meshes
+ + Add parallel CGNS reader, enabled by -dm_plex_cgns_parallel
+ + Add CGNS function for VecLoad() of solutions in parallel (must
+ be run with -dm_plex_cgns_parallel)
+ + Add PetscViewerCGNSOpen() convenience function
+ + Add PetscViewerCGNSGetSolutionTime(),
+ PetscViewerCGNSGetSolutionName(),
+ PetscViewerCGNSSetSolutionIndex(), and
+ PetscViewerCGNSGetSolutionIndex()
+ + Add DMPlexGetDepthStratumGlobalSize()
+ * DT:
+ + Add PetscDSSetIntegrationParameters() and
+ PetscDSSetCellParameters()
+ * Fortran:
+ + Add PETSC_NULL_ENUM to be used instead of PETSC_NULL_INTEGER
+ when a pointer to an enum is expected in a PETSc function call
+ + Add PETSC_NULL_INTEGER_ARRAY, PETSC_NULL_SCALAR_ARRAY, and
+ PETSC_NULL_REAL_ARRAY for use instead of PETSC_NULL_INTEGER,
+ PETSC_NULL_SCALAR, and PETSC_NULL_REAL when an array is
+ expected in a PETSc function call
+ + Add automatically generated interface definitions for most
+ PETSc functions to detect illegal usage at compile time
+ + Add PetscObjectIsNull() for users to check if a PETSc
+ object is NULL
+ + Change the PETSc Fortran API so that non-array values, v,
+ passed to PETSc routines expecting arrays must be cast with
+ [v] in the calling sequence
+
+-------------------------------------------------------------------
Old:
----
petsc-3.21.2.tar.gz
New:
----
petsc-3.22.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ petsc.spec ++++++
--- /var/tmp/diff_new_pack.1G7fbB/_old 2025-01-09 15:07:08.207551331 +0100
+++ /var/tmp/diff_new_pack.1G7fbB/_new 2025-01-09 15:07:08.211551497 +0100
@@ -19,10 +19,11 @@
%global flavor @BUILD_FLAVOR@%{nil}
+# Please also update slepc, which is version locked with petsc
%define pname petsc
-%define vers 3.21.2
-%define _vers 3_21_2
-%define so_ver 3_21
+%define vers 3.22.2
+%define _vers 3_22_2
+%define so_ver 3_22
%define openblas_vers 0.3.6
ExcludeArch: s390 s390x
@@ -284,7 +285,7 @@
BuildRequires: gcc-c++
BuildRequires: gcc-fortran
BuildRequires: lapack-devel
-BuildRequires: suitesparse-devel
+BuildRequires: suitesparse-devel >= 5.6.0
%if %{with mpi}
BuildRequires: %{mpi_family}%{?mpi_vers}-devel
@@ -672,9 +673,9 @@
ln -s %{p_libdir}/petsc/%{version}/%{petsc_arch}/lib/pkgconfig/petsc.pc \
%{buildroot}%{p_libdir}/pkgconfig/
%endif
-for d in /usr/lib64/petsc/3.21.2/linux-gnu-c-opt/share/petsc/matlab \
- /usr/lib64/petsc/3.21.2/linux-gnu-c-opt/lib/petsc/bin \
- /usr/lib64/petsc/3.21.2/linux-gnu-c-opt/share/petsc/bin
+for d in /usr/lib64/petsc/%{vers}/linux-gnu-c-opt/share/petsc/matlab \
+ /usr/lib64/petsc/%{vers}/linux-gnu-c-opt/lib/petsc/bin \
+ /usr/lib64/petsc/%{vers}/linux-gnu-c-opt/share/petsc/bin
do
for i in `find %{buildroot}/$d -type f -a -perm /a=x`
do
++++++ petsc-3.21.2.tar.gz -> petsc-3.22.2.tar.gz ++++++
/work/SRC/openSUSE:Factory/petsc/petsc-3.21.2.tar.gz /work/SRC/openSUSE:Factory/.petsc.new.1881/petsc-3.22.2.tar.gz differ: char 29, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package nextcloud-desktop for openSUSE:Factory checked in at 2025-01-09 15:06:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nextcloud-desktop (Old)
and /work/SRC/openSUSE:Factory/.nextcloud-desktop.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nextcloud-desktop"
Thu Jan 9 15:06:51 2025 rev:78 rq:1235701 version:3.15.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/nextcloud-desktop/nextcloud-desktop.changes 2024-12-17 19:25:02.097600255 +0100
+++ /work/SRC/openSUSE:Factory/.nextcloud-desktop.new.1881/nextcloud-desktop.changes 2025-01-09 15:07:05.755449365 +0100
@@ -1,0 +2,24 @@
+Tue Jan 7 15:20:47 UTC 2025 - RN <R_Nik_C(a)proton.me>
+
+- Update to version 3.15.3:
+ * Bugfix/catch exceptions to prevent crash
+ (gh#nextcloud/desktop#7705)
+ * Bugfix/elidedtext (gh#nextcloud/desktop#7706)
+ * Call setDesktopFileName without `.desktop` suffix
+ (gh#nextcloud/desktop#7707)
+ * add a simple github action workflow to build test the
+ documentation (gh#nextcloud/desktop#7709)
+ * Fix filename of fix-macosvfs-file-sharing.png
+ (gh#nextcloud/desktop#7712)
+ * Fix .netrc parsing (gh#nextcloud/desktop#7714)
+ * Bugfix/do not always free up storage windows shortcuts
+ (gh#nextcloud/desktop#7715)
+ * fix dev application name to keep a consitant migration
+ behaviour for the dev and prod build
+ (gh#nextcloud/desktop#7722)
+ * ensure proper read write access to root folder and db files
+ (gh#nextcloud/desktop#7726)
+ * gui/tray: Fix colour for secondary text items being too pale
+ (gh#nextcloud/desktop#7727)
+
+-------------------------------------------------------------------
Old:
----
nextcloud-desktop-3.15.2.tar.gz
New:
----
nextcloud-desktop-3.15.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nextcloud-desktop.spec ++++++
--- /var/tmp/diff_new_pack.kQGPaX/_old 2025-01-09 15:07:06.563482965 +0100
+++ /var/tmp/diff_new_pack.kQGPaX/_new 2025-01-09 15:07:06.567483131 +0100
@@ -1,7 +1,7 @@
#
# spec file for package nextcloud-desktop
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,7 +25,7 @@
%define gcc_ver 9
%endif
Name: nextcloud-desktop
-Version: 3.15.2
+Version: 3.15.3
Release: 0
Summary: Nextcloud desktop synchronisation client
License: GPL-2.0-or-later AND LGPL-3.0-or-later
++++++ nextcloud-desktop-3.15.2.tar.gz -> nextcloud-desktop-3.15.3.tar.gz ++++++
/work/SRC/openSUSE:Factory/nextcloud-desktop/nextcloud-desktop-3.15.2.tar.gz /work/SRC/openSUSE:Factory/.nextcloud-desktop.new.1881/nextcloud-desktop-3.15.3.tar.gz differ: char 30, line 1
1
0
09 Jan '25
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-opentelemetry-semantic-conventions for openSUSE:Factory checked in at 2025-01-09 15:05:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-semantic-conventions (Old)
and /work/SRC/openSUSE:Factory/.python-opentelemetry-semantic-conventions.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-semantic-conventions"
Thu Jan 9 15:05:56 2025 rev:4 rq:1235960 version:0.50b0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-opentelemetry-semantic-conventions/python-opentelemetry-semantic-conventions.changes 2024-09-04 13:22:31.704505174 +0200
+++ /work/SRC/openSUSE:Factory/.python-opentelemetry-semantic-conventions.new.1881/python-opentelemetry-semantic-conventions.changes 2025-01-09 15:06:36.474231752 +0100
@@ -1,0 +2,33 @@
+Wed Jan 8 11:59:10 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to 0.50b0
+ * Fix crash exporting a log record with None body
+ * Fix metrics export with exemplar and no context and filtering observable instruments
+ * Fix recursion error with sdk disabled and handler added to root logger
+ * sdk: setup EventLogger when OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED is set
+ * api: fix logging of duplicate EventLogger setup warning
+ * sdk: fix setting of process owner in ProcessResourceDetector
+ * sdk: fix serialization of logs severity_number field to int
+ * Remove `TestBase.assertEqualSpanInstrumentationInfo` method,
+ use `assertEqualSpanInstrumentationScope` instead
+ * sdk: instantiate lazily `ExemplarBucket`s in `ExemplarReservoir`s
+ * semantic-conventions: Bump to 1.29.0
+- from version 0.49b0
+ * Removed superfluous py.typed markers and added them where they were missing
+ * Include metric info in encoding exceptions
+ * sdk: Add support for log formatting
+ * sdk: Add Host resource detector
+ * sdk: Implementation of exemplars
+ * Implement events sdk
+ * Update semantic conventions to version 1.28.0
+ * Add support to protobuf 5+ and drop support to protobuf 3 and 4
+ * Update environment variable descriptions to match signal
+ * Record logger name as the instrumentation scope name
+ * Fix memory leak in exporter and reader
+ * Drop `OTEL_PYTHON_EXPERIMENTAL_DISABLE_PROMETHEUS_UNIT_NORMALIZATION` environment variable
+ * Improve compatibility with other logging libraries that override
+ `LogRecord.getMessage()` in order to customize message formatting
+- Update Requires from pyproject.toml
+- Use %{version} in BuildRequires for dependencies
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_semantic_conventions-0.48b0.tar.gz
New:
----
opentelemetry_semantic_conventions-0.50b0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-semantic-conventions.spec ++++++
--- /var/tmp/diff_new_pack.F3CePn/_old 2025-01-09 15:06:36.882248718 +0100
+++ /var/tmp/diff_new_pack.F3CePn/_new 2025-01-09 15:06:36.882248718 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-opentelemetry-semantic-conventions
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-opentelemetry-semantic-conventions
-Version: 0.48b0
+Version: 0.50b0
Release: 0
Summary: OpenTelemetry Semantic Conventions
License: Apache-2.0
@@ -31,7 +31,7 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-Deprecated >= 1.2.6
-Requires: python-opentelemetry-api >= 1.27.0
+Requires: python-opentelemetry-api >= 1.29.0
BuildArch: noarch
%python_subpackages
++++++ opentelemetry_semantic_conventions-0.48b0.tar.gz -> opentelemetry_semantic_conventions-0.50b0.tar.gz ++++++
++++ 2889 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-opentelemetry-api for openSUSE:Factory checked in at 2025-01-09 15:05:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-api (Old)
and /work/SRC/openSUSE:Factory/.python-opentelemetry-api.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-opentelemetry-api"
Thu Jan 9 15:05:54 2025 rev:16 rq:1235914 version:1.29.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-opentelemetry-api/python-opentelemetry-api.changes 2024-09-04 13:22:37.384742858 +0200
+++ /work/SRC/openSUSE:Factory/.python-opentelemetry-api.new.1881/python-opentelemetry-api.changes 2025-01-09 15:06:34.510150078 +0100
@@ -1,0 +2,32 @@
+Wed Jan 8 12:00:10 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to 1.29.0
+ * Fix crash exporting a log record with None body
+ * Fix metrics export with exemplar and no context and filtering observable instruments
+ * Fix recursion error with sdk disabled and handler added to root logger
+ * sdk: setup EventLogger when OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED is set
+ * api: fix logging of duplicate EventLogger setup warning
+ * sdk: fix setting of process owner in ProcessResourceDetector
+ * sdk: fix serialization of logs severity_number field to int
+ * Remove `TestBase.assertEqualSpanInstrumentationInfo` method,
+ use `assertEqualSpanInstrumentationScope` instead
+ * sdk: instantiate lazily `ExemplarBucket`s in `ExemplarReservoir`s
+ * semantic-conventions: Bump to 1.29.0
+- from version 1.28.0
+ * Removed superfluous py.typed markers and added them where they were missing
+ * Include metric info in encoding exceptions
+ * sdk: Add support for log formatting
+ * sdk: Add Host resource detector
+ * sdk: Implementation of exemplars
+ * Implement events sdk
+ * Update semantic conventions to version 1.28.0
+ * Add support to protobuf 5+ and drop support to protobuf 3 and 4
+ * Update environment variable descriptions to match signal
+ * Record logger name as the instrumentation scope name
+ * Fix memory leak in exporter and reader
+ * Drop `OTEL_PYTHON_EXPERIMENTAL_DISABLE_PROMETHEUS_UNIT_NORMALIZATION` environment variable
+ * Improve compatibility with other logging libraries that override
+ `LogRecord.getMessage()` in order to customize message formatting
+- Update BuildRequires from pyproject.toml
+
+-------------------------------------------------------------------
Old:
----
opentelemetry_api-1.27.0.tar.gz
New:
----
opentelemetry_api-1.29.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-opentelemetry-api.spec ++++++
--- /var/tmp/diff_new_pack.nUL8Zj/_old 2025-01-09 15:06:35.046172369 +0100
+++ /var/tmp/diff_new_pack.nUL8Zj/_new 2025-01-09 15:06:35.046172369 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-opentelemetry-api
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -27,7 +27,7 @@
%{?sle15_python_module_pythons}
Name: python-opentelemetry-api%{?psuffix}
-Version: 1.27.0
+Version: 1.29.0
Release: 0
Summary: OpenTelemetry Python API
License: Apache-2.0
@@ -51,7 +51,7 @@
%endif
%if %{with test}
BuildRequires: %{python_module opentelemetry-api = %{version}}
-BuildRequires: %{python_module opentelemetry-test-utils == 0.48b0}
+BuildRequires: %{python_module opentelemetry-test-utils == 0.50b0}
BuildRequires: %{python_module pytest}
%endif
%python_subpackages
++++++ opentelemetry_api-1.27.0.tar.gz -> opentelemetry_api-1.29.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/PKG-INFO new/opentelemetry_api-1.29.0/PKG-INFO
--- old/opentelemetry_api-1.27.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,11 +1,10 @@
Metadata-Version: 2.3
Name: opentelemetry-api
-Version: 1.27.0
+Version: 1.29.0
Summary: OpenTelemetry Python API
Project-URL: Homepage, https://github.com/open-telemetry/opentelemetry-python/tree/main/openteleme…
Author-email: OpenTelemetry Authors <cncf-opentelemetry-contributors(a)lists.cncf.io>
License: Apache-2.0
-License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: OpenTelemetry
Classifier: Intended Audience :: Developers
@@ -20,7 +19,7 @@
Classifier: Typing :: Typed
Requires-Python: >=3.8
Requires-Dist: deprecated>=1.2.6
-Requires-Dist: importlib-metadata<=8.4.0,>=6.0
+Requires-Dist: importlib-metadata<=8.5.0,>=6.0
Description-Content-Type: text/x-rst
OpenTelemetry Python API
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/pyproject.toml new/opentelemetry_api-1.29.0/pyproject.toml
--- old/opentelemetry_api-1.27.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -29,7 +29,7 @@
"Deprecated >= 1.2.6",
# FIXME This should be able to be removed after 3.12 is released if there is a reliable API
# in importlib.metadata.
- "importlib-metadata >= 6.0, <= 8.4.0",
+ "importlib-metadata >= 6.0, <= 8.5.0",
]
dynamic = [
"version",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/_events/__init__.py new/opentelemetry_api-1.29.0/src/opentelemetry/_events/__init__.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/_events/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/_events/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -31,7 +31,6 @@
class Event(LogRecord):
-
def __init__(
self,
name: str,
@@ -58,7 +57,6 @@
class EventLogger(ABC):
-
def __init__(
self,
name: str,
@@ -77,7 +75,6 @@
class NoOpEventLogger(EventLogger):
-
def emit(self, event: Event) -> None:
pass
@@ -119,7 +116,6 @@
class EventLoggerProvider(ABC):
-
@abstractmethod
def get_event_logger(
self,
@@ -132,7 +128,6 @@
class NoOpEventLoggerProvider(EventLoggerProvider):
-
def get_event_logger(
self,
name: str,
@@ -146,7 +141,6 @@
class ProxyEventLoggerProvider(EventLoggerProvider):
-
def get_event_logger(
self,
name: str,
@@ -175,7 +169,6 @@
def get_event_logger_provider() -> EventLoggerProvider:
-
global _EVENT_LOGGER_PROVIDER # pylint: disable=global-variable-not-assigned
if _EVENT_LOGGER_PROVIDER is None:
if _OTEL_PYTHON_EVENT_LOGGER_PROVIDER not in environ:
@@ -199,7 +192,7 @@
did_set = _EVENT_LOGGER_PROVIDER_SET_ONCE.do_once(set_elp)
- if log and did_set:
+ if log and not did_set:
_logger.warning(
"Overriding of current EventLoggerProvider is not allowed"
)
@@ -208,7 +201,6 @@
def set_event_logger_provider(
event_logger_provider: EventLoggerProvider,
) -> None:
-
_set_event_logger_provider(event_logger_provider, log=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/context/__init__.py new/opentelemetry_api-1.29.0/src/opentelemetry/context/__init__.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/context/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/context/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -37,9 +37,7 @@
# environment variables
default_context = "contextvars_context"
- configured_context = environ.get(
- OTEL_PYTHON_CONTEXT, default_context
- ) # type: str
+ configured_context = environ.get(OTEL_PYTHON_CONTEXT, default_context) # type: str
try:
return next( # type: ignore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/metrics/__init__.py new/opentelemetry_api-1.29.0/src/opentelemetry/metrics/__init__.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/metrics/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/metrics/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -53,15 +53,9 @@
CallbackOptions,
CallbackT,
Counter,
-)
-from opentelemetry.metrics._internal.instrument import Gauge as _Gauge
-from opentelemetry.metrics._internal.instrument import (
Histogram,
Instrument,
NoOpCounter,
-)
-from opentelemetry.metrics._internal.instrument import NoOpGauge as _NoOpGauge
-from opentelemetry.metrics._internal.instrument import (
NoOpHistogram,
NoOpObservableCounter,
NoOpObservableGauge,
@@ -73,6 +67,8 @@
Synchronous,
UpDownCounter,
)
+from opentelemetry.metrics._internal.instrument import Gauge as _Gauge
+from opentelemetry.metrics._internal.instrument import NoOpGauge as _NoOpGauge
from opentelemetry.metrics._internal.observation import Observation
for obj in [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/metrics/_internal/__init__.py new/opentelemetry_api-1.29.0/src/opentelemetry/metrics/_internal/__init__.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/metrics/_internal/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/metrics/_internal/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -40,7 +40,6 @@
.. versionadded:: 1.10.0
"""
-
import warnings
from abc import ABC, abstractmethod
from logging import getLogger
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/metrics/_internal/instrument.py new/opentelemetry_api-1.29.0/src/opentelemetry/metrics/_internal/instrument.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/metrics/_internal/instrument.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/metrics/_internal/instrument.py 2020-02-02 01:00:00.000000000 +0100
@@ -33,6 +33,7 @@
# pylint: disable=unused-import; needed for typing and sphinx
from opentelemetry import metrics
+from opentelemetry.context import Context
from opentelemetry.metrics._internal.observation import Observation
from opentelemetry.util.types import Attributes
@@ -173,6 +174,7 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
pass
@@ -192,8 +194,9 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
- return super().add(amount, attributes=attributes)
+ return super().add(amount, attributes=attributes, context=context)
class _ProxyCounter(_ProxyInstrument[Counter], Counter):
@@ -201,9 +204,10 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
if self._real_instrument:
- self._real_instrument.add(amount, attributes)
+ self._real_instrument.add(amount, attributes, context)
def _create_real_instrument(self, meter: "metrics.Meter") -> Counter:
return meter.create_counter(self._name, self._unit, self._description)
@@ -217,6 +221,7 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
pass
@@ -236,8 +241,9 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
- return super().add(amount, attributes=attributes)
+ return super().add(amount, attributes=attributes, context=context)
class _ProxyUpDownCounter(_ProxyInstrument[UpDownCounter], UpDownCounter):
@@ -245,9 +251,10 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
if self._real_instrument:
- self._real_instrument.add(amount, attributes)
+ self._real_instrument.add(amount, attributes, context)
def _create_real_instrument(self, meter: "metrics.Meter") -> UpDownCounter:
return meter.create_up_down_counter(
@@ -328,6 +335,7 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
pass
@@ -347,8 +355,9 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
- return super().record(amount, attributes=attributes)
+ return super().record(amount, attributes=attributes, context=context)
class _ProxyHistogram(_ProxyInstrument[Histogram], Histogram):
@@ -356,9 +365,10 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
if self._real_instrument:
- self._real_instrument.record(amount, attributes)
+ self._real_instrument.record(amount, attributes, context)
def _create_real_instrument(self, meter: "metrics.Meter") -> Histogram:
return meter.create_histogram(
@@ -406,6 +416,7 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
pass
@@ -425,8 +436,9 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
- return super().set(amount, attributes=attributes)
+ return super().set(amount, attributes=attributes, context=context)
class _ProxyGauge(
@@ -437,9 +449,10 @@
self,
amount: Union[int, float],
attributes: Optional[Attributes] = None,
+ context: Optional[Context] = None,
) -> None:
if self._real_instrument:
- self._real_instrument.set(amount, attributes)
+ self._real_instrument.set(amount, attributes, context)
def _create_real_instrument(self, meter: "metrics.Meter") -> Gauge:
return meter.create_gauge(self._name, self._unit, self._description)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/metrics/_internal/observation.py new/opentelemetry_api-1.29.0/src/opentelemetry/metrics/_internal/observation.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/metrics/_internal/observation.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/metrics/_internal/observation.py 2020-02-02 01:00:00.000000000 +0100
@@ -12,8 +12,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from typing import Union
+from typing import Optional, Union
+from opentelemetry.context import Context
from opentelemetry.util.types import Attributes
@@ -25,13 +26,18 @@
Args:
value: The float or int measured value
attributes: The measurement's attributes
+ context: The measurement's context
"""
def __init__(
- self, value: Union[int, float], attributes: Attributes = None
+ self,
+ value: Union[int, float],
+ attributes: Attributes = None,
+ context: Optional[Context] = None,
) -> None:
self._value = value
self._attributes = attributes
+ self._context = context
@property
def value(self) -> Union[float, int]:
@@ -41,12 +47,17 @@
def attributes(self) -> Attributes:
return self._attributes
+ @property
+ def context(self) -> Optional[Context]:
+ return self._context
+
def __eq__(self, other: object) -> bool:
return (
isinstance(other, Observation)
and self.value == other.value
and self.attributes == other.attributes
+ and self.context == other.context
)
def __repr__(self) -> str:
- return f"Observation(value={self.value}, attributes={self.attributes})"
+ return f"Observation(value={self.value}, attributes={self.attributes}, context={self.context})"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/propagate/__init__.py new/opentelemetry_api-1.29.0/src/opentelemetry/propagate/__init__.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/propagate/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/propagate/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -134,7 +134,6 @@
propagator = propagator.strip()
try:
-
propagators.append( # type: ignore
next( # type: ignore
iter( # type: ignore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/trace/__init__.py new/opentelemetry_api-1.29.0/src/opentelemetry/trace/__init__.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/trace/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/trace/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -73,7 +73,6 @@
`set_tracer_provider`.
"""
-
import os
import typing
from abc import ABC, abstractmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/trace/span.py new/opentelemetry_api-1.29.0/src/opentelemetry/trace/span.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/trace/span.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/trace/span.py 2020-02-02 01:00:00.000000000 +0100
@@ -45,7 +45,6 @@
def _is_valid_pair(key: str, value: str) -> bool:
-
return (
isinstance(key, str)
and _KEY_PATTERN.fullmatch(key) is not None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/util/_decorator.py new/opentelemetry_api-1.29.0/src/opentelemetry/util/_decorator.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/util/_decorator.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/util/_decorator.py 2020-02-02 01:00:00.000000000 +0100
@@ -30,7 +30,8 @@
class _AgnosticContextManager(
- contextlib._GeneratorContextManager, Generic[R] # type: ignore # FIXME use contextlib._GeneratorContextManager[R] when we drop the python 3.8 support
+ contextlib._GeneratorContextManager, # type: ignore # FIXME use contextlib._GeneratorContextManager[R] when we drop the python 3.8 support
+ Generic[R],
): # pylint: disable=protected-access
"""Context manager that can decorate both async and sync functions.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/util/_importlib_metadata.py new/opentelemetry_api-1.29.0/src/opentelemetry/util/_importlib_metadata.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/util/_importlib_metadata.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/util/_importlib_metadata.py 2020-02-02 01:00:00.000000000 +0100
@@ -15,15 +15,23 @@
# FIXME: Use importlib.metadata when support for 3.11 is dropped if the rest of
# the supported versions at that time have the same API.
from importlib_metadata import ( # type: ignore
+ Distribution,
EntryPoint,
EntryPoints,
+ PackageNotFoundError,
+ distributions,
entry_points,
+ requires,
version,
)
-# The importlib-metadata library has introduced breaking changes before to its
-# API, this module is kept just to act as a layer between the
-# importlib-metadata library and our project if in any case it is necessary to
-# do so.
-
-__all__ = ["entry_points", "version", "EntryPoint", "EntryPoints"]
+__all__ = [
+ "entry_points",
+ "version",
+ "EntryPoint",
+ "EntryPoints",
+ "requires",
+ "Distribution",
+ "distributions",
+ "PackageNotFoundError",
+]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/util/_providers.py new/opentelemetry_api-1.29.0/src/opentelemetry/util/_providers.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/util/_providers.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/util/_providers.py 2020-02-02 01:00:00.000000000 +0100
@@ -30,9 +30,7 @@
def _load_provider(
provider_environment_variable: str, provider: str
) -> Provider: # type: ignore[type-var]
-
try:
-
provider_name = cast(
str,
environ.get(provider_environment_variable, f"default_{provider}"),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/util/types.py new/opentelemetry_api-1.29.0/src/opentelemetry/util/types.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/util/types.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/util/types.py 2020-02-02 01:00:00.000000000 +0100
@@ -15,6 +15,20 @@
from typing import Mapping, Optional, Sequence, Tuple, Union
+# This is the implementation of the "Any" type as specified by the specifications of OpenTelemetry data model for logs.
+# For more details, refer to the OTel specification:
+# https://github.com/open-telemetry/opentelemetry-specification/blob/main/spe…
+AnyValue = Union[
+ str,
+ bool,
+ int,
+ float,
+ bytes,
+ Sequence["AnyValue"],
+ Mapping[str, "AnyValue"],
+ None,
+]
+
AttributeValue = Union[
str,
bool,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/src/opentelemetry/version/__init__.py new/opentelemetry_api-1.29.0/src/opentelemetry/version/__init__.py
--- old/opentelemetry_api-1.27.0/src/opentelemetry/version/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/src/opentelemetry/version/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-__version__ = "1.27.0"
+__version__ = "1.29.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/events/test_event_logger_provider.py new/opentelemetry_api-1.29.0/tests/events/test_event_logger_provider.py
--- old/opentelemetry_api-1.27.0/tests/events/test_event_logger_provider.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/events/test_event_logger_provider.py 2020-02-02 01:00:00.000000000 +0100
@@ -11,13 +11,28 @@
class TestGlobals(EventsGlobalsTest, unittest.TestCase):
- def test_set_event_logger_provider(self):
+ @patch("opentelemetry._events._logger")
+ def test_set_event_logger_provider(self, logger_mock):
elp_mock = Mock()
# pylint: disable=protected-access
self.assertIsNone(events._EVENT_LOGGER_PROVIDER)
set_event_logger_provider(elp_mock)
self.assertIs(events._EVENT_LOGGER_PROVIDER, elp_mock)
self.assertIs(get_event_logger_provider(), elp_mock)
+ logger_mock.warning.assert_not_called()
+
+ # pylint: disable=no-self-use
+ @patch("opentelemetry._events._logger")
+ def test_set_event_logger_provider_will_warn_second_call(
+ self, logger_mock
+ ):
+ elp_mock = Mock()
+ set_event_logger_provider(elp_mock)
+ set_event_logger_provider(elp_mock)
+
+ logger_mock.warning.assert_called_once_with(
+ "Overriding of current EventLoggerProvider is not allowed"
+ )
def test_get_event_logger_provider(self):
# pylint: disable=protected-access
@@ -35,7 +50,6 @@
"OTEL_PYTHON_EVENT_LOGGER_PROVIDER": "test_event_logger_provider"
},
):
-
with patch("opentelemetry._events._load_provider", Mock()):
with patch(
"opentelemetry._events.cast",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/logs/test_logger_provider.py new/opentelemetry_api-1.29.0/tests/logs/test_logger_provider.py
--- old/opentelemetry_api-1.27.0/tests/logs/test_logger_provider.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/logs/test_logger_provider.py 2020-02-02 01:00:00.000000000 +0100
@@ -53,7 +53,6 @@
"os.environ",
{_OTEL_PYTHON_LOGGER_PROVIDER: "test_logger_provider"},
):
-
with patch("opentelemetry._logs._internal._load_provider", Mock()):
with patch(
"opentelemetry._logs._internal.cast",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/metrics/test_instruments.py new/opentelemetry_api-1.29.0/tests/metrics/test_instruments.py
--- old/opentelemetry_api-1.27.0/tests/metrics/test_instruments.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/metrics/test_instruments.py 2020-02-02 01:00:00.000000000 +0100
@@ -677,7 +677,6 @@
)
def test_unit_check(self):
-
instrument = ChildInstrument("name")
self.assertEqual(
@@ -711,7 +710,6 @@
)
def test_description_check(self):
-
instrument = ChildInstrument("name")
self.assertEqual(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/metrics/test_meter.py new/opentelemetry_api-1.29.0/tests/metrics/test_meter.py
--- old/opentelemetry_api-1.27.0/tests/metrics/test_meter.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/metrics/test_meter.py 2020-02-02 01:00:00.000000000 +0100
@@ -63,7 +63,6 @@
class TestMeter(TestCase):
# pylint: disable=no-member
def test_repeated_instrument_names(self):
-
try:
test_meter = NoOpMeter("name")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/metrics/test_meter_provider.py new/opentelemetry_api-1.29.0/tests/metrics/test_meter_provider.py
--- old/opentelemetry_api-1.27.0/tests/metrics/test_meter_provider.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/metrics/test_meter_provider.py 2020-02-02 01:00:00.000000000 +0100
@@ -98,7 +98,6 @@
with patch.dict(
"os.environ", {OTEL_PYTHON_METER_PROVIDER: "test_meter_provider"}
):
-
with patch("opentelemetry.metrics._internal._load_provider", Mock()):
with patch(
"opentelemetry.metrics._internal.cast",
@@ -279,13 +278,15 @@
real_gauge.assert_not_called()
proxy_counter.add(amount, attributes=attributes)
- real_counter.add.assert_called_once_with(amount, attributes)
+ real_counter.add.assert_called_once_with(amount, attributes, None)
proxy_updowncounter.add(amount, attributes=attributes)
- real_updowncounter.add.assert_called_once_with(amount, attributes)
+ real_updowncounter.add.assert_called_once_with(
+ amount, attributes, None
+ )
proxy_histogram.record(amount, attributes=attributes)
- real_histogram.record.assert_called_once_with(amount, attributes)
+ real_histogram.record.assert_called_once_with(amount, attributes, None)
proxy_gauge.set(amount, attributes=attributes)
- real_gauge.set.assert_called_once_with(amount, attributes)
+ real_gauge.set.assert_called_once_with(amount, attributes, None)
def test_proxy_meter_with_real_meter(self) -> None:
# Creating new instruments on the _ProxyMeter with a real meter set
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/propagators/test_propagators.py new/opentelemetry_api-1.29.0/tests/propagators/test_propagators.py
--- old/opentelemetry_api-1.27.0/tests/propagators/test_propagators.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/propagators/test_propagators.py 2020-02-02 01:00:00.000000000 +0100
@@ -32,7 +32,6 @@
@patch("opentelemetry.propagators.composite.CompositePropagator")
def test_default_composite_propagators(self, mock_compositehttppropagator):
def test_propagators(propagators):
-
propagators = {propagator.__class__ for propagator in propagators}
self.assertEqual(len(propagators), 2)
@@ -56,7 +55,6 @@
def test_non_default_propagators(
self, mock_entry_points, mock_compositehttppropagator
):
-
mock_entry_points.configure_mock(
**{
"side_effect": [
@@ -107,7 +105,6 @@
environ, {OTEL_PROPAGATORS: "tracecontext , unknown , baggage"}
)
def test_composite_propagators_error(self):
-
with self.assertRaises(ValueError) as cm:
# pylint: disable=import-outside-toplevel
import opentelemetry.propagate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/propagators/test_w3cbaggagepropagator.py new/opentelemetry_api-1.29.0/tests/propagators/test_w3cbaggagepropagator.py
--- old/opentelemetry_api-1.27.0/tests/propagators/test_w3cbaggagepropagator.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/propagators/test_w3cbaggagepropagator.py 2020-02-02 01:00:00.000000000 +0100
@@ -130,7 +130,6 @@
)
def test_header_max_entries_skip_invalid_entry(self):
-
with self.assertLogs(level=WARNING) as warning:
self.assertEqual(
self._extract(
@@ -227,7 +226,6 @@
@patch("opentelemetry.baggage.propagation.get_all")
@patch("opentelemetry.baggage.propagation._format_baggage")
def test_fields(self, mock_format_baggage, mock_baggage):
-
mock_setter = Mock()
self.propagator.inject({}, setter=mock_setter)
@@ -250,7 +248,6 @@
@patch("opentelemetry.baggage._BAGGAGE_KEY", new="abc")
def test_inject_extract(self):
-
carrier = {}
context = set_baggage(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/trace/propagation/test_tracecontexthttptextformat.py new/opentelemetry_api-1.29.0/tests/trace/propagation/test_tracecontexthttptextformat.py
--- old/opentelemetry_api-1.27.0/tests/trace/propagation/test_tracecontexthttptextformat.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/trace/propagation/test_tracecontexthttptextformat.py 2020-02-02 01:00:00.000000000 +0100
@@ -245,7 +245,6 @@
@patch("opentelemetry.trace.INVALID_SPAN_CONTEXT")
@patch("opentelemetry.trace.get_current_span")
def test_fields(self, mock_get_current_span, mock_invalid_span_context):
-
mock_get_current_span.configure_mock(
return_value=Mock(
**{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/trace/test_globals.py new/opentelemetry_api-1.29.0/tests/trace/test_globals.py
--- old/opentelemetry_api-1.27.0/tests/trace/test_globals.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/trace/test_globals.py 2020-02-02 01:00:00.000000000 +0100
@@ -111,7 +111,6 @@
self.assertEqual(trace.get_current_span(), trace.INVALID_SPAN)
def test_use_span_end_on_exit(self):
-
test_span = SpanTest(trace.INVALID_SPAN_CONTEXT)
with trace.use_span(test_span):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/trace/test_status.py new/opentelemetry_api-1.29.0/tests/trace/test_status.py
--- old/opentelemetry_api-1.27.0/tests/trace/test_status.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/trace/test_status.py 2020-02-02 01:00:00.000000000 +0100
@@ -30,7 +30,10 @@
def test_invalid_description(self):
with self.assertLogs(level=WARNING) as warning:
- status = Status(status_code=StatusCode.ERROR, description={"test": "val"}) # type: ignore
+ status = Status(
+ status_code=StatusCode.ERROR,
+ description={"test": "val"}, # type: ignore
+ )
self.assertIs(status.status_code, StatusCode.ERROR)
self.assertEqual(status.description, None)
self.assertIn(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/util/test__importlib_metadata.py new/opentelemetry_api-1.29.0/tests/util/test__importlib_metadata.py
--- old/opentelemetry_api-1.27.0/tests/util/test__importlib_metadata.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/util/test__importlib_metadata.py 2020-02-02 01:00:00.000000000 +0100
@@ -15,7 +15,11 @@
from unittest import TestCase
from opentelemetry.metrics import MeterProvider
-from opentelemetry.util._importlib_metadata import EntryPoint, EntryPoints
+from opentelemetry.util._importlib_metadata import (
+ EntryPoint,
+ EntryPoints,
+ version,
+)
from opentelemetry.util._importlib_metadata import (
entry_points as importlib_metadata_entry_points,
)
@@ -23,7 +27,6 @@
class TestEntryPoints(TestCase):
def test_entry_points(self):
-
self.assertIsInstance(
next(
iter(
@@ -106,3 +109,5 @@
entry_points = importlib_metadata_entry_points(group="abc", name="abc")
self.assertIsInstance(entry_points, EntryPoints)
self.assertEqual(len(entry_points), 0)
+
+ self.assertIsInstance(version("opentelemetry-api"), str)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/opentelemetry_api-1.27.0/tests/util/test__providers.py new/opentelemetry_api-1.29.0/tests/util/test__providers.py
--- old/opentelemetry_api-1.27.0/tests/util/test__providers.py 2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_api-1.29.0/tests/util/test__providers.py 2020-02-02 01:00:00.000000000 +0100
@@ -29,7 +29,6 @@
)
@patch("opentelemetry.util._importlib_metadata.entry_points")
def test__providers(self, mock_entry_points):
-
reload(_providers)
mock_entry_points.configure_mock(
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-elastic-transport for openSUSE:Factory checked in at 2025-01-09 15:05:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-elastic-transport (Old)
and /work/SRC/openSUSE:Factory/.python-elastic-transport.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-elastic-transport"
Thu Jan 9 15:05:52 2025 rev:15 rq:1236129 version:8.17.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-elastic-transport/python-elastic-transport.changes 2024-12-13 22:33:38.934339191 +0100
+++ /work/SRC/openSUSE:Factory/.python-elastic-transport.new.1881/python-elastic-transport.changes 2025-01-09 15:06:33.158093856 +0100
@@ -1,0 +2,8 @@
+Wed Jan 8 09:45:07 UTC 2025 - Daniel Garcia <daniel.garcia(a)suse.com>
+
+- 8.17.0:
+ * Fix use of SSLContext with sniffing (#199)
+ * Fix enabled_cleanup_closed warning (#202)
+ * Remove unneeded install requirement (#196)
+
+-------------------------------------------------------------------
Old:
----
elastic-transport-python-8.15.1.tar.gz
New:
----
elastic-transport-python-8.17.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-elastic-transport.spec ++++++
--- /var/tmp/diff_new_pack.okaJSr/_old 2025-01-09 15:06:33.586111654 +0100
+++ /var/tmp/diff_new_pack.okaJSr/_new 2025-01-09 15:06:33.590111820 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-elastic-transport
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-elastic-transport
-Version: 8.15.1
+Version: 8.17.0
Release: 0
Summary: Transport classes and utilities shared among Python Elastic client libraries
License: Apache-2.0
@@ -77,6 +77,7 @@
donttest="$donttest or (TestHttpxAsyncNode and not Creation)"
# Flaky test
donttest="$donttest or test_decimal_serialization[OrjsonSerializer]"
+donttest="$donttest or test_sniff_before_requests or test_sniffed_nodes_added_to_pool or test_sniff_on_node_failure"
%pytest -W ignore::DeprecationWarning -k "not ($donttest)"
%files %{python_files}
++++++ elastic-transport-python-8.15.1.tar.gz -> elastic-transport-python-8.17.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/.github/workflows/ci.yml new/elastic-transport-python-8.17.0/.github/workflows/ci.yml
--- old/elastic-transport-python-8.15.1/.github/workflows/ci.yml 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/.github/workflows/ci.yml 2025-01-07 09:11:42.000000000 +0100
@@ -3,6 +3,9 @@
on: [push, pull_request]
+env:
+ FORCE_COLOR: 1
+
jobs:
package:
runs-on: ubuntu-latest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/CHANGELOG.md new/elastic-transport-python-8.17.0/CHANGELOG.md
--- old/elastic-transport-python-8.15.1/CHANGELOG.md 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/CHANGELOG.md 2025-01-07 09:11:42.000000000 +0100
@@ -1,5 +1,12 @@
# Changelog
+## 8.17.0 (2025-01-07)
+
+* Fix use of SSLContext with sniffing ([#199](https://github.com/elastic/elastic-transport-python/pull/199))
+* Fix enabled_cleanup_closed warning ([#202](https://github.com/elastic/elastic-transport-python/pull/202))
+* Remove unneeded install requirement ([#196](https://github.com/elastic/elastic-transport-python/pull/196))
+* Fix aiohttp call type: ignore differently ([#190](https://github.com/elastic/elastic-transport-python/pull/190))
+
## 8.15.1 (2024-10-09)
* Add explicit Python 3.13 support ([#189](https://github.com/elastic/elastic-transport-python/pull/189))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/README.md new/elastic-transport-python-8.17.0/README.md
--- old/elastic-transport-python-8.15.1/README.md 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/README.md 2025-01-07 09:11:42.000000000 +0100
@@ -1,7 +1,7 @@
# elastic-transport-python
-[![PyPI](https://img.shields.io/pypi/v/elastic-transport)](https://pypi.org/elastic-transport)
-[![Python Versions](https://img.shields.io/pypi/pyversions/elastic-transport)](https:…
+[![PyPI](https://img.shields.io/pypi/v/elastic-transport)](https://pypi.org/project/elastic-transport)
+[![Python Versions](https://img.shields.io/pypi/pyversions/elastic-transport)](https:…
[![PyPI Downloads](https://static.pepy.tech/badge/elastic-transport)](https://pepy.tech/project/elastic-transport)
[![CI Status](https://img.shields.io/github/actions/workflow/status/elastic/elast…
@@ -18,7 +18,7 @@
```
Versioning follows the major and minor version of the Elastic Stack version and
-the patch number is incremented for bug fixes within a minor release. |
+the patch number is incremented for bug fixes within a minor release.
## Documentation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/elastic_transport/_node/_http_aiohttp.py new/elastic-transport-python-8.17.0/elastic_transport/_node/_http_aiohttp.py
--- old/elastic-transport-python-8.15.1/elastic_transport/_node/_http_aiohttp.py 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/elastic_transport/_node/_http_aiohttp.py 2025-01-07 09:11:42.000000000 +0100
@@ -22,6 +22,7 @@
import os
import re
import ssl
+import sys
import warnings
from typing import Optional, TypedDict, Union
@@ -65,6 +66,11 @@
_AIOHTTP_FIXED_HEAD_BUG = False
+# Avoid aiohttp enabled_cleanup_closed warning: https://github.com/aio-libs/aiohttp/pull/9726
+_NEEDS_CLEANUP_CLOSED_313 = (3, 13, 0) <= sys.version_info < (3, 13, 1)
+_NEEDS_CLEANUP_CLOSED = _NEEDS_CLEANUP_CLOSED_313 or sys.version_info < (3, 12, 7)
+
+
class AiohttpHttpNode(BaseAsyncNode):
"""Default asynchronous node class using the ``aiohttp`` library via HTTP"""
@@ -262,7 +268,7 @@
connector=aiohttp.TCPConnector(
limit_per_host=self._connections_per_node,
use_dns_cache=True,
- enable_cleanup_closed=True,
+ enable_cleanup_closed=_NEEDS_CLEANUP_CLOSED,
ssl=self._ssl_context or False,
),
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/elastic_transport/_node/_urllib3_chain_certs.py new/elastic-transport-python-8.17.0/elastic_transport/_node/_urllib3_chain_certs.py
--- old/elastic-transport-python-8.15.1/elastic_transport/_node/_urllib3_chain_certs.py 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/elastic_transport/_node/_urllib3_chain_certs.py 2025-01-07 09:11:42.000000000 +0100
@@ -108,7 +108,7 @@
if sys.version_info >= (3, 13):
fingerprints = [
hash_func(cert).digest()
- for cert in conn.sock.get_verified_chain()
+ for cert in conn.sock.get_verified_chain() # type: ignore
]
else:
# 'get_verified_chain()' and 'Certificate.public_bytes()' are private APIs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/elastic_transport/_transport.py new/elastic-transport-python-8.17.0/elastic_transport/_transport.py
--- old/elastic-transport-python-8.15.1/elastic_transport/_transport.py 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/elastic_transport/_transport.py 2025-01-07 09:11:42.000000000 +0100
@@ -540,13 +540,13 @@
def warn_if_varying_node_config_options(node_configs: List[NodeConfig]) -> None:
"""Function which detects situations when sniffing may produce incorrect configs"""
- exempt_attrs = {"host", "port", "connections_per_node", "_extras"}
+ exempt_attrs = {"host", "port", "connections_per_node", "_extras", "ssl_context"}
match_attr_dict = None
for node_config in node_configs:
attr_dict = {
- k: v
- for k, v in dataclasses.asdict(node_config).items()
- if k not in exempt_attrs
+ field.name: getattr(node_config, field.name)
+ for field in dataclasses.fields(node_config)
+ if field.name not in exempt_attrs
}
if match_attr_dict is None:
match_attr_dict = attr_dict
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/elastic_transport/_version.py new/elastic-transport-python-8.17.0/elastic_transport/_version.py
--- old/elastic-transport-python-8.15.1/elastic_transport/_version.py 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/elastic_transport/_version.py 2025-01-07 09:11:42.000000000 +0100
@@ -15,4 +15,4 @@
# specific language governing permissions and limitations
# under the License.
-__version__ = "8.15.1"
+__version__ = "8.17.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/setup.cfg new/elastic-transport-python-8.17.0/setup.cfg
--- old/elastic-transport-python-8.15.1/setup.cfg 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/setup.cfg 2025-01-07 09:11:42.000000000 +0100
@@ -3,6 +3,7 @@
[tool:pytest]
addopts = -vvv --cov-report=term-missing --cov=elastic_transport
+asyncio_default_fixture_loop_scope = "function"
[coverage:report]
omit =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/setup.py new/elastic-transport-python-8.17.0/setup.py
--- old/elastic-transport-python-8.15.1/setup.py 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/setup.py 2025-01-07 09:11:42.000000000 +0100
@@ -52,7 +52,6 @@
install_requires=[
"urllib3>=1.26.2, <3",
"certifi",
- "importlib-metadata; python_version<'3.8'",
],
python_requires=">=3.8",
extras_require={
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/tests/async_/test_async_transport.py new/elastic-transport-python-8.17.0/tests/async_/test_async_transport.py
--- old/elastic-transport-python-8.15.1/tests/async_/test_async_transport.py 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/tests/async_/test_async_transport.py 2025-01-07 09:11:42.000000000 +0100
@@ -18,6 +18,7 @@
import asyncio
import random
import re
+import ssl
import sys
import time
import warnings
@@ -505,13 +506,21 @@
@pytest.mark.asyncio
async def test_heterogeneous_node_config_warning_with_sniffing():
with warnings.catch_warnings(record=True) as w:
+ # SSLContext objects cannot be compared and are thus ignored
+ context = ssl.create_default_context()
AsyncTransport(
[
- NodeConfig("http", "localhost", 80, path_prefix="/a"),
- NodeConfig("http", "localhost", 81, path_prefix="/b"),
+ NodeConfig(
+ "https", "localhost", 80, path_prefix="/a", ssl_context=context
+ ),
+ NodeConfig(
+ "https", "localhost", 81, path_prefix="/b", ssl_context=context
+ ),
],
sniff_on_start=True,
- sniff_callback=lambda *_: [],
+ sniff_callback=lambda *_: [
+ NodeConfig("https", "localhost", 80, path_prefix="/a")
+ ],
)
assert len(w) == 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/tests/conftest.py new/elastic-transport-python-8.17.0/tests/conftest.py
--- old/elastic-transport-python-8.15.1/tests/conftest.py 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/tests/conftest.py 2025-01-07 09:11:42.000000000 +0100
@@ -67,7 +67,6 @@
@pytest.fixture(scope="session", params=[True, False])
-(a)pytest.mark.usefixtures("httpbin_node_config")
def httpbin_cert_fingerprint(request) -> str:
"""Gets the SHA256 fingerprint of the certificate for 'httpbin.org'"""
sock = socket.create_connection(("httpbin.org", 443))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/elastic-transport-python-8.15.1/tests/test_transport.py new/elastic-transport-python-8.17.0/tests/test_transport.py
--- old/elastic-transport-python-8.15.1/tests/test_transport.py 2024-10-09 13:47:12.000000000 +0200
+++ new/elastic-transport-python-8.17.0/tests/test_transport.py 2025-01-07 09:11:42.000000000 +0100
@@ -17,6 +17,7 @@
import random
import re
+import ssl
import threading
import time
import warnings
@@ -537,14 +538,19 @@
def test_heterogeneous_node_config_warning_with_sniffing():
with warnings.catch_warnings(record=True) as w:
+ context = ssl.create_default_context()
Transport(
[
- NodeConfig("http", "localhost", 80, path_prefix="/a"),
- NodeConfig("http", "localhost", 81, path_prefix="/b"),
+ NodeConfig(
+ "https", "localhost", 80, path_prefix="/a", ssl_context=context
+ ),
+ NodeConfig(
+ "https", "localhost", 81, path_prefix="/b", ssl_context=context
+ ),
],
sniff_on_start=True,
sniff_callback=lambda *_: [
- NodeConfig("http", "localhost", 80, path_prefix="/a")
+ NodeConfig("https", "localhost", 80, path_prefix="/a")
],
)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package hyper-v for openSUSE:Factory checked in at 2025-01-09 15:05:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hyper-v (Old)
and /work/SRC/openSUSE:Factory/.hyper-v.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hyper-v"
Thu Jan 9 15:05:51 2025 rev:47 rq:1236106 version:9
Changes:
--------
--- /work/SRC/openSUSE:Factory/hyper-v/hyper-v.changes 2024-10-23 21:07:51.556665304 +0200
+++ /work/SRC/openSUSE:Factory/.hyper-v.new.1881/hyper-v.changes 2025-01-09 15:06:32.266056761 +0100
@@ -1,0 +2,13 @@
+Wed Jan 1 01:01:01 UTC 2025 - ohering(a)suse.de
+
+- update route parsing in kvp daemon
+- reduce resource usage in hv_kvp_daemon (175c71c2)
+- reduce resouce usage in hv_get_dns_info helper (a4d024fe)
+- hv_kvp_daemon: Pass NIC name to hv_get_dns_info as well (07dfa6e8)
+- terminate fcopy daemon if read from uio fails (a9640fcd)
+- change permissions of NetworkManager configuration file (91ae69c7)
+- Fix a complier warning in the fcopy uio daemon (cb1b78f1)
+- remove obsolete kvptest.ps1.txt which failed since a decade
+- remove obsolete rpm postinstall code for SLE11SP2
+
+-------------------------------------------------------------------
Old:
----
hyper-v.kvptest.ps1.txt
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ hyper-v.spec ++++++
--- /var/tmp/diff_new_pack.KBtVzc/_old 2025-01-09 15:06:32.898083043 +0100
+++ /var/tmp/diff_new_pack.KBtVzc/_new 2025-01-09 15:06:32.898083043 +0100
@@ -43,7 +43,6 @@
Version: 9
Release: 0
Source0: hyper-v.lsvmbus.py
-Source5: hyper-v.kvptest.ps1.txt
Source7: hyper-v.compare-with-upstream.sh
Source8: hyper-v.tools.hv.vmbus_bufring.h
Source9: hyper-v.include.linux.hyperv.h
@@ -63,7 +62,6 @@
%prep
%setup -Tc
-cp -avL %{S:5} kvptest.ps1.txt
cp -vL %{S:8} %vmbus_bufring.h
cp -vL %{S:9} %include_uapi_linux_hyperv.h
cp -vL %{S:10} .
@@ -263,57 +261,14 @@
%?python3_fix_shebang
%files
-%doc kvptest.ps1.txt
%_unitdir/*
%_udevrulesdir/*
%_sbindir/*
%helper_dir
-%pre
-# hv_kvp_daemon in SLES11 SP2 stored temporary state files in /var/opt
-# move them to /var/lib and remove old directory, if possible.
-if test -d /var/opt/hyperv
-then
- if mkdir -p -v -m 0755 /var/lib/hyperv
- then
- cd /var/lib/hyperv
- for oldfile in /var/opt/hyperv/ifcfg-* /var/opt/hyperv/.kvp_pool_*
- do
- if test -e "${oldfile}"
- then
- mv -vfb "${oldfile}" . || :
- fi
- done
- cd - >/dev/null
- fi
- rmdir -v /var/opt/hyperv || :
-fi
-: nothing to do in case of systemd
-
+# the relevant part is systemctl daemon-reload, due to udev triggers
%post
-board_vendor=
-product_name=
-if cd /sys/class/dmi/id 2>/dev/null
-then
- if test -r board_vendor
- then
- board_vendor="`cat board_vendor`"
- fi
- if test -r product_name
- then
- product_name="`cat product_name`"
- fi
- cd - >/dev/null
-fi
-if test "${board_vendor}" = "Microsoft Corporation" -a "${product_name}" = "Virtual Machine"
-then
-: nothing to do in case of systemd
-fi
-
-%preun
-: nothing to do in case of systemd
-
+%service_add_post %hv_kvp_daemon %hv_vss_daemon %hv_fcopy_daemon %hv_fcopy_uio_daemon
%postun
-# no restart on update because the daemon can not be restarted
-: nothing to do in case of systemd
+%service_del_postun_without_restart %hv_kvp_daemon %hv_vss_daemon %hv_fcopy_daemon %hv_fcopy_uio_daemon
++++++ hyper-v.kvp.gethostname.patch ++++++
--- /var/tmp/diff_new_pack.KBtVzc/_old 2025-01-09 15:06:32.950085206 +0100
+++ /var/tmp/diff_new_pack.KBtVzc/_new 2025-01-09 15:06:32.954085373 +0100
@@ -1,5 +1,131 @@
--- a/hyper-v.tools.hv.hv_kvp_daemon.c
+++ b/hyper-v.tools.hv.hv_kvp_daemon.c
+@@ -24,6 +24,7 @@
+
+ #include <sys/poll.h>
+ #include <sys/utsname.h>
++#include <stdbool.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+@@ -677,6 +678,83 @@ static void kvp_process_ipconfig_file(ch
+ pclose(file);
+ }
+
++static bool kvp_verify_ip_address(void *address_string)
++{
++ char verify_buf[sizeof(struct in6_addr)];
++
++ if (inet_pton(AF_INET, address_string, verify_buf) == 1)
++ return true;
++ if (inet_pton(AF_INET6, address_string, verify_buf) == 1)
++ return true;
++ return false;
++}
++
++static void kvp_extract_routes(void **output, size_t *output_len, char *line)
++{
++ static const char needle[] = "via ";
++ char *match, *haystack = line;
++
++ while ((match = strstr(haystack, needle))) {
++ char *address, *end;
++
++ /* Address starts after needle. */
++ address = match + strlen(needle);
++
++ /* The char following address is a space or end of line. */
++ end = strpbrk(address, " \t\\");
++ if (!end)
++ end = address + strlen(address) + 1;
++
++ /* Enough room for address and semicolon. */
++ if (*output_len >= (end - address) + 1) {
++ memcpy(*output, address, end - address);
++ /* Terminate string for verification. */
++ memcpy(*output + (end - address), "", 1);
++ if (kvp_verify_ip_address(*output)) {
++ /* Advance output buffer. */
++ *output += end - address;
++ *output_len -= end - address;
++
++ /* Each address needs a trailing semicolon. */
++ memcpy(*output, ";", 1);
++ *output += 1;
++ *output_len -= 1;
++ }
++ }
++ haystack = end;
++ }
++}
++
++static void kvp_get_gateway(void *buffer, size_t buffer_len)
++{
++ static const char needle[] = "default ";
++ FILE *f;
++ void *output = buffer;
++ char *line = NULL;
++ size_t alloc_size = 0, output_len = buffer_len - 1;
++ ssize_t num_chars;
++
++ /* Show route information in a single line, for each address family */
++ f = popen("ip --oneline -4 route show;exec ip --oneline -6 route show", "r");
++ while ((num_chars = getline(&line, &alloc_size, f)) > 0) {
++ /* Skip short lines. */
++ if (num_chars <= strlen(needle))
++ continue;
++ /* Skip lines without default route. */
++ if (memcmp(line, needle, strlen(needle)))
++ continue;
++ /* Remove trailing newline to simplify further parsing. */
++ if (line[num_chars - 1] == '\n')
++ line[num_chars - 1] = '\0';
++ /* Search routes after match. */
++ kvp_extract_routes(&output, &output_len, line + strlen(needle));
++ }
++ /* Convert buffer into C-String. */
++ memcpy(output, "", 1);
++ free(line);
++ pclose(f);
++}
++
+ static void kvp_get_ipconfig_info(char *if_name,
+ struct hv_kvp_ipaddr_value *buffer)
+ {
+@@ -684,32 +762,7 @@ static void kvp_get_ipconfig_info(char *
+ char dhcp_info[128];
+ char *p;
+ FILE *file;
+-
+- /*
+- * Get the address of default gateway (ipv4).
+- */
+- sprintf(cmd, "%s %s", "ip route show dev", if_name);
+- strcat(cmd, " | awk '/default/ {print $3 }'");
+-
+- /*
+- * Execute the command to gather gateway info.
+- */
+- kvp_process_ipconfig_file(cmd, (char *)buffer->gate_way,
+- (MAX_GATEWAY_SIZE * 2), INET_ADDRSTRLEN, 0);
+-
+- /*
+- * Get the address of default gateway (ipv6).
+- */
+- sprintf(cmd, "%s %s", "ip -f inet6 route show dev", if_name);
+- strcat(cmd, " | awk '/default/ {print $3 }'");
+-
+- /*
+- * Execute the command to gather gateway info (ipv6).
+- */
+- kvp_process_ipconfig_file(cmd, (char *)buffer->gate_way,
+- (MAX_GATEWAY_SIZE * 2), INET6_ADDRSTRLEN, 1);
+-
+-
++ kvp_get_gateway(buffer->gate_way, sizeof(buffer->gate_way));
+ /*
+ * Gather the DNS state.
+ * Since there is no standard way to get this information
@@ -1335,6 +1335,7 @@ kvp_get_domain_name(char *buffer, int le
struct addrinfo hints, *info ;
int error = 0;
++++++ hyper-v.tools.hv.hv_fcopy_uio_daemon.c ++++++
--- /var/tmp/diff_new_pack.KBtVzc/_old 2025-01-09 15:06:32.986086702 +0100
+++ /var/tmp/diff_new_pack.KBtVzc/_new 2025-01-09 15:06:32.990086869 +0100
@@ -35,8 +35,6 @@
#define WIN8_SRV_MINOR 1
#define WIN8_SRV_VERSION (WIN8_SRV_MAJOR << 16 | WIN8_SRV_MINOR)
-#define MAX_FOLDER_NAME 15
-#define MAX_PATH_LEN 15
#define FCOPY_UIO "/sys/bus/vmbus/devices/eb765408-105f-49b6-b4aa-c123b64d17d4/uio"
#define FCOPY_VER_COUNT 1
@@ -51,7 +49,7 @@
#define HV_RING_SIZE 0x4000 /* 16KB ring buffer size */
-unsigned char desc[HV_RING_SIZE];
+static unsigned char desc[HV_RING_SIZE];
static int target_fd;
static char target_fname[PATH_MAX];
@@ -409,8 +407,8 @@
struct vmbus_br txbr, rxbr;
void *ring;
uint32_t len = HV_RING_SIZE;
- char uio_name[MAX_FOLDER_NAME] = {0};
- char uio_dev_path[MAX_PATH_LEN] = {0};
+ char uio_name[NAME_MAX] = {0};
+ char uio_dev_path[PATH_MAX] = {0};
static struct option long_options[] = {
{"help", no_argument, 0, 'h' },
@@ -468,8 +466,10 @@
*/
ret = pread(fcopy_fd, &tmp, sizeof(int), 0);
if (ret < 0) {
+ if (errno == EINTR || errno == EAGAIN)
+ continue;
syslog(LOG_ERR, "pread failed: %s", strerror(errno));
- continue;
+ goto close;
}
len = HV_RING_SIZE;
++++++ hyper-v.tools.hv.hv_get_dns_info.sh ++++++
--- /var/tmp/diff_new_pack.KBtVzc/_old 2025-01-09 15:06:33.010087700 +0100
+++ /var/tmp/diff_new_pack.KBtVzc/_new 2025-01-09 15:06:33.014087867 +0100
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
# This script parses /etc/resolv.conf to retrive DNS information.
# In the interest of keeping the KVP daemon code free of distro specific
@@ -10,8 +10,9 @@
# this script can be based on the Network Manager APIs for retrieving DNS
# entries.
-if test -r /etc/resolv.conf
+if test -f /etc/resolv.conf
then
- awk -- '/^nameserver/ { print $2 }' /etc/resolv.conf
+ exec awk -- '/^nameserver/ { print $2 }' /etc/resolv.conf
fi
+exit 0
++++++ hyper-v.tools.hv.hv_kvp_daemon.c ++++++
--- /var/tmp/diff_new_pack.KBtVzc/_old 2025-01-09 15:06:33.030088533 +0100
+++ /var/tmp/diff_new_pack.KBtVzc/_new 2025-01-09 15:06:33.034088699 +0100
@@ -725,7 +725,7 @@
* .
*/
- sprintf(cmd, KVP_SCRIPTS_PATH "%s", "hv_get_dns_info");
+ sprintf(cmd, "exec %s %s", KVP_SCRIPTS_PATH "hv_get_dns_info", if_name);
/*
* Execute the command to gather DNS info.
@@ -742,7 +742,7 @@
* Enabled: DHCP enabled.
*/
- sprintf(cmd, KVP_SCRIPTS_PATH "%s %s", "hv_get_dhcp_info", if_name);
+ sprintf(cmd, "exec %s %s", KVP_SCRIPTS_PATH "hv_get_dhcp_info", if_name);
file = popen(cmd, "r");
if (file == NULL)
@@ -1606,8 +1606,9 @@
* invoke the external script to do its magic.
*/
- str_len = snprintf(cmd, sizeof(cmd), KVP_SCRIPTS_PATH "%s %s %s",
- "hv_set_ifconfig", if_filename, nm_filename);
+ str_len = snprintf(cmd, sizeof(cmd), "exec %s %s %s",
+ KVP_SCRIPTS_PATH "hv_set_ifconfig",
+ if_filename, nm_filename);
/*
* This is a little overcautious, but it's necessary to suppress some
* false warnings from gcc 8.0.1.
1
0