diff --git a/community/android-tools/0002-protobuf-31.patch b/community/android-tools/0002-protobuf-31.patch
new file mode 100644
index 0000000..6580916
--- /dev/null
+++ b/community/android-tools/0002-protobuf-31.patch
@@ -0,0 +1,11 @@
+--- a/vendor/extras/libjsonpb/parse/jsonpb.cpp
++++ b/vendor/extras/libjsonpb/parse/jsonpb.cpp
+@@ -33,7 +33,7 @@
+ static constexpr char kTypeUrlPrefix[] = "type.googleapis.com";
+ 
+ std::string GetTypeUrl(const Message& message) {
+-  return std::string(kTypeUrlPrefix) + "/" + message.GetDescriptor()->full_name();
++  return std::string(kTypeUrlPrefix) + "/" + std::string(message.GetDescriptor()->full_name());
+ }
+ 
+ ErrorOr<std::string> MessageToJsonString(const Message& message) {
diff --git a/community/android-tools/APKBUILD b/community/android-tools/APKBUILD
index e94207c..b99b873 100644
--- a/community/android-tools/APKBUILD
+++ b/community/android-tools/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Sören Tempel <soeren+alpine@soeren-tempel.net>
 pkgname=android-tools
 pkgver=35.0.2
-pkgrel=11
+pkgrel=12
 pkgdesc="Android platform tools"
 url="https://sites.google.com/a/android.com/tools/"
 # s390x, ppc64le: Unsupported by vendored BoringSSL
@@ -14,7 +14,9 @@ makedepends="pcre2-dev linux-headers gtest-dev go perl cmake protobuf-dev
 	brotli-dev zstd-dev lz4-dev samurai abseil-cpp-dev fmt-dev"
 subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch"
 source="https://github.com/nmeum/android-tools/releases/download/$pkgver/android-tools-$pkgver.tar.xz
-	0001-Fix-libusb-enumeration.patch"
+	0001-Fix-libusb-enumeration.patch
+	0002-protobuf-31.patch
+	"
 
 export GOCACHE="${GOCACHE:-"$srcdir/go-cache"}"
 export GOTMPDIR="${GOTMPDIR:-"$srcdir"}"
@@ -42,4 +44,5 @@ bashcomp() {
 sha512sums="
 391ce4d638b274d7bbae24a3df8de8b5812a982570f29b2aef37d12a3ba7ed6f66b5c0b7f908759e0b0da30d152b5319af0fef16c54bdc3b9f4074fb22f80d10  android-tools-35.0.2.tar.xz
 941dddf82725b1f44d158e4ce361355004a63292f72f91e2008436bd687cf55e09cef12875f94057702d056e35cc0ba1df13432caefee7d37d039aa1fd31c65e  0001-Fix-libusb-enumeration.patch
+a67241924e6b83b9772efa99147f72278535ca306ff4311150ef45fd2228d186ccb0ba3759ece9f50c0f060859b2c809710224b5b290c34b0d92e08b484c96fc  0002-protobuf-31.patch
 "
diff --git a/community/apache-orc/APKBUILD b/community/apache-orc/APKBUILD
index 4cffaac..6d862cb 100644
--- a/community/apache-orc/APKBUILD
+++ b/community/apache-orc/APKBUILD
@@ -3,7 +3,7 @@
 # based on arch linux PKGBUILD
 pkgname=apache-orc
 pkgver=2.1.2
-pkgrel=1
+pkgrel=2
 pkgdesc="the smallest, fastest columnar storage for Hadoop workloads"
 url="https://orc.apache.org/"
 arch="all"
@@ -22,7 +22,10 @@ makedepends="
 	zstd-dev
 	"
 subpackages="$pkgname-dev $pkgname-doc"
-source="https://downloads.apache.org/orc/orc-$pkgver/orc-$pkgver.tar.gz"
+source="
+	https://downloads.apache.org/orc/orc-$pkgver/orc-$pkgver.tar.gz
+	protobuf-31.patch
+	"
 builddir="$srcdir/orc-$pkgver"
 
 build() {
@@ -57,4 +60,5 @@ package() {
 
 sha512sums="
 a2b2ddb120dbedc3f5b2bc315c83e177841dc089c09542404bdac330aaeea678063a2a654acfdfe63bced0307f970d22a790ddfee0ff9a7e231f67286344eed5  orc-2.1.2.tar.gz
+23bfa9781a6efbd7227f5bb95fcccf4136bd998e211a0d98b12933ef9721b7d2a03f1a902adb5e12854b2231df2cb5916a7d5a1a31bdf4ee66a4bfe3f7eceac9  protobuf-31.patch
 "
diff --git a/community/apache-orc/protobuf-31.patch b/community/apache-orc/protobuf-31.patch
new file mode 100644
index 0000000..8febc3f
--- /dev/null
+++ b/community/apache-orc/protobuf-31.patch
@@ -0,0 +1,56 @@
+diff --git a/c++/src/io/InputStream.cc b/c++/src/io/InputStream.cc
+index 06ef40bd4..5e1dc00cc 100644
+--- a/c++/src/io/InputStream.cc
++++ b/c++/src/io/InputStream.cc
+@@ -112,8 +112,8 @@ namespace orc {
+     return false;
+   }
+ 
+-  google::protobuf::int64 SeekableArrayInputStream::ByteCount() const {
+-    return static_cast<google::protobuf::int64>(position_);
++  int64_t SeekableArrayInputStream::ByteCount() const {
++    return static_cast<int64_t>(position_);
+   }
+ 
+   void SeekableArrayInputStream::seek(PositionProvider& seekPosition) {
+diff --git a/c++/src/io/InputStream.hh b/c++/src/io/InputStream.hh
+index 07aa623b5..8b251c930 100644
+--- a/c++/src/io/InputStream.hh
++++ b/c++/src/io/InputStream.hh
+@@ -72,7 +72,7 @@ namespace orc {
+     virtual bool Next(const void** data, int* size) override;
+     virtual void BackUp(int count) override;
+     virtual bool Skip(int count) override;
+-    virtual google::protobuf::int64 ByteCount() const override;
++    virtual int64_t ByteCount() const override;
+     virtual void seek(PositionProvider& position) override;
+     virtual std::string getName() const override;
+   };
+diff --git a/c++/src/io/OutputStream.cc b/c++/src/io/OutputStream.cc
+index fbf1ca61d..a55050d12 100644
+--- a/c++/src/io/OutputStream.cc
++++ b/c++/src/io/OutputStream.cc
+@@ -65,8 +65,8 @@ namespace orc {
+     // PASS
+   }
+ 
+-  google::protobuf::int64 BufferedOutputStream::ByteCount() const {
+-    return static_cast<google::protobuf::int64>(dataBuffer_->size());
++  int64_t BufferedOutputStream::ByteCount() const {
++    return static_cast<int64_t>(dataBuffer_->size());
+   }
+ 
+   bool BufferedOutputStream::WriteAliasedRaw(const void*, int) {
+diff --git a/c++/src/io/OutputStream.hh b/c++/src/io/OutputStream.hh
+index 6319de96d..b02981812 100644
+--- a/c++/src/io/OutputStream.hh
++++ b/c++/src/io/OutputStream.hh
+@@ -61,7 +61,7 @@ namespace orc {
+ 
+     virtual bool Next(void** data, int* size) override;
+     virtual void BackUp(int count) override;
+-    virtual google::protobuf::int64 ByteCount() const override;
++    virtual int64_t ByteCount() const override;
+     virtual bool WriteAliasedRaw(const void* data, int size) override;
+     virtual bool AllowsAliasing() const override;
+ 
diff --git a/community/bitcoin/APKBUILD b/community/bitcoin/APKBUILD
index 63f0f6b..6539406 100644
--- a/community/bitcoin/APKBUILD
+++ b/community/bitcoin/APKBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Stuart Cardall <developer@it-offshore.co.uk>
 pkgname=bitcoin
 pkgver=27.0
-pkgrel=3
+pkgrel=4
 pkgdesc="Decentralized P2P electronic cash system"
 url="https://www.bitcoincore.org/"
 # x86: segfault in check
diff --git a/community/bloaty/APKBUILD b/community/bloaty/APKBUILD
index eebc2de..22f1312 100644
--- a/community/bloaty/APKBUILD
+++ b/community/bloaty/APKBUILD
@@ -3,7 +3,7 @@
 maintainer="Celeste <cielesti@protonmail.com>"
 pkgname=bloaty
 pkgver=1.1
-pkgrel=28
+pkgrel=29
 pkgdesc="Bloaty McBloatface: a size profiler for binaries"
 options="!check" # no test suite
 url="https://github.com/google/bloaty"
diff --git a/community/curaengine/APKBUILD b/community/curaengine/APKBUILD
index ccb2ed2..03f6265 100644
--- a/community/curaengine/APKBUILD
+++ b/community/curaengine/APKBUILD
@@ -3,7 +3,7 @@
 pkgname=curaengine
 # If you plan to upgrade curaengine, libarcus probably needs to be upgraded too
 pkgver=5.2.2
-pkgrel=14
+pkgrel=15
 pkgdesc="3D slicer engine"
 url="https://github.com/Ultimaker/CuraEngine"
 license="AGPL-3.0-or-later"
diff --git a/community/flare/APKBUILD b/community/flare/APKBUILD
index 8b464d6..7d3d75b 100644
--- a/community/flare/APKBUILD
+++ b/community/flare/APKBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Krassy Boykinov <kboykinov@teamcentrixx.com>
 pkgname=flare
 pkgver=0.16.0
-pkgrel=0
+pkgrel=1
 pkgdesc="Unofficial Signal GTK client"
 url="https://gitlab.com/schmiddi-on-mobile/flare"
 arch="all"
diff --git a/community/grpc/APKBUILD b/community/grpc/APKBUILD
index 603c422..fb1e8ac 100644
--- a/community/grpc/APKBUILD
+++ b/community/grpc/APKBUILD
@@ -3,7 +3,7 @@
 # Maintainer: wener <wenermail@gmail.com>
 pkgname=grpc
 pkgver=1.73.0
-pkgrel=0
+pkgrel=1
 pkgdesc="The C based gRPC"
 url="https://grpc.io/"
 arch="all"
diff --git a/community/kicad/APKBUILD b/community/kicad/APKBUILD
index 1f60c69..20d6c27 100644
--- a/community/kicad/APKBUILD
+++ b/community/kicad/APKBUILD
@@ -2,7 +2,7 @@
 # Contributor: Marian Buschsieweke <marian.buschsieweke@posteo.net>
 pkgname=kicad
 pkgver=9.0.2
-pkgrel=1
+pkgrel=2
 pkgdesc="Cross Platform and Open Source Electronics Design Automation Suite"
 url="https://www.kicad.org/"
 # No support for s390x/riscv64 in libcontext (shipped with kicad)
diff --git a/community/knot-resolver/APKBUILD b/community/knot-resolver/APKBUILD
index 79f5a9f..f8c915c 100644
--- a/community/knot-resolver/APKBUILD
+++ b/community/knot-resolver/APKBUILD
@@ -3,7 +3,7 @@
 # Maintainer: Jakub Jirutka <jakub@jirutka.cz>
 pkgname=knot-resolver
 pkgver=5.7.4
-pkgrel=2
+pkgrel=3
 pkgdesc="Minimalistic caching DNS resolver implementation"
 url="https://www.knot-resolver.cz/"
 # s390x some problem with luajit
diff --git a/community/kosmindoormap/APKBUILD b/community/kosmindoormap/APKBUILD
index d869be2..a67f986 100644
--- a/community/kosmindoormap/APKBUILD
+++ b/community/kosmindoormap/APKBUILD
@@ -5,7 +5,7 @@
 maintainer="team/kde <bribbers@disroot.org>"
 pkgname=kosmindoormap
 pkgver=25.04.0
-pkgrel=0
+pkgrel=1
 # armhf blocked by qt6-qtdeclarative
 arch="all !armhf"
 url="https://invent.kde.org/libraries/kosmindoormap"
diff --git a/community/kpublictransport/APKBUILD b/community/kpublictransport/APKBUILD
index dadae92..07c7d84 100644
--- a/community/kpublictransport/APKBUILD
+++ b/community/kpublictransport/APKBUILD
@@ -3,7 +3,7 @@
 maintainer="team/kde <bribbers@disroot.org>"
 pkgname=kpublictransport
 pkgver=25.04.0
-pkgrel=0
+pkgrel=1
 # armhf blocked by qt6-qtdeclarative
 arch="all !armhf"
 url="https://invent.kde.org/libraries/kpublictransport"
@@ -37,7 +37,11 @@ build() {
 }
 
 check() {
-	ctest --test-dir build -E "(hafasmgaterequest|efarequest)test"
+	local _disabled_tests="hafasmgaterequest|efarequest"
+	case "$CARCH" in
+		riscv64) _disabled_tests="$_disabled_tests|cache" ;;
+	esac
+	ctest --test-dir build -E "($_disabled_tests)test"
 }
 
 package() {
diff --git a/community/libarcus/APKBUILD b/community/libarcus/APKBUILD
index 6ffde83..81983b3 100644
--- a/community/libarcus/APKBUILD
+++ b/community/libarcus/APKBUILD
@@ -5,7 +5,7 @@ pkgname=libarcus
 # Should be in sync with the CuraEngine aport, but sometimes
 # upstream doesn't version them together
 pkgver=5.2.2
-pkgrel=7
+pkgrel=8
 pkgdesc="Communication library for Cura"
 url="https://github.com/Ultimaker/libArcus"
 arch="all"
@@ -22,7 +22,9 @@ options="!check" # no test suite
 source="https://github.com/Ultimaker/libArcus/archive/$pkgver/libArcus-$pkgver.tar.gz
 	cmake-build.patch
 	ArcusConfig.patch
-	pb-errorcollector.patch"
+	pb-errorcollector.patch
+	protobuf-31.patch
+	"
 builddir="$srcdir/libArcus-$pkgver"
 
 build() {
@@ -45,4 +47,5 @@ d33fb7dae1fef4d99bad7a165b02767b9e8d1f48dc3e2d4fe635a56019f294c9703762421efcf3bc
 87c8d80afca0be287d8686e3a2133753f95dbc361fbffda8f0cfd63a8890fff9a9374e00bb6d42040ef23def9a116126e0d5a1a001d596dc74934292ed0791d7  cmake-build.patch
 9a058e240014de0c6698b3cc38a4b5064455adc0901fad05c0f78b67ae6cf82e9ca5dd4e74a8cc95d8915fd57b10336c7974b19f061e5a53a28d7b63f80c4851  ArcusConfig.patch
 0d6c4fa0916bc3c0d7dbf3dadf8c99aa3b8161775094f3e00a21795baf146af37f02815f904010bdd3780ff942132e2a13b49808fad5497cf4770199fa6f72e5  pb-errorcollector.patch
+3c6118736038b7593a5975f813ed2a6e181fde4e14fc57c9784169037e1ab9181df64d13ef6af5d6dd035d4431778fdc2f84f57a774650b2b8c7443bf3da6496  protobuf-31.patch
 "
diff --git a/community/libarcus/protobuf-31.patch b/community/libarcus/protobuf-31.patch
new file mode 100644
index 0000000..df8bd2a
--- /dev/null
+++ b/community/libarcus/protobuf-31.patch
@@ -0,0 +1,31 @@
+diff --git a/src/MessageTypeStore.cpp b/src/MessageTypeStore.cpp
+index 44c94ec..3b66c06 100644
+--- a/src/MessageTypeStore.cpp
++++ b/src/MessageTypeStore.cpp
+@@ -114,7 +114,7 @@ MessagePtr Arcus::MessageTypeStore::createMessage(const std::string& type_name)
+ 
+ uint32_t Arcus::MessageTypeStore::getMessageTypeId(const MessagePtr& message)
+ {
+-    return hash(message->GetTypeName());
++    return hash(std::string(message->GetTypeName()));
+ }
+ 
+ std::string Arcus::MessageTypeStore::getErrorMessages() const
+@@ -124,7 +124,7 @@ std::string Arcus::MessageTypeStore::getErrorMessages() const
+ 
+ bool Arcus::MessageTypeStore::registerMessageType(const google::protobuf::Message* message_type)
+ {
+-    uint32_t type_id = hash(message_type->GetTypeName());
++    uint32_t type_id = hash(std::string(message_type->GetTypeName()));
+ 
+     if (hasType(type_id))
+     {
+@@ -185,7 +185,7 @@ bool Arcus::MessageTypeStore::registerAllMessageTypes(const std::string& file_na
+     {
+         auto message_type_descriptor = descriptor->message_type(i);
+         auto message_type = d->message_factory->GetPrototype(message_type_descriptor);
+-        uint32_t type_id = hash(message_type->GetTypeName());
++        uint32_t type_id = hash(std::string(message_type->GetTypeName()));
+ #ifdef ARCUS_DEBUG
+         std::cerr << message_type->GetTypeName() << ": " << type_id << std::endl;
+ #endif // ARCUS_DEBUG
diff --git a/community/libphonenumber/APKBUILD b/community/libphonenumber/APKBUILD
index 0d5d318..a04327e 100644
--- a/community/libphonenumber/APKBUILD
+++ b/community/libphonenumber/APKBUILD
@@ -3,7 +3,7 @@
 maintainer="fossdd <fossdd@pwned.life>"
 pkgname=libphonenumber
 pkgver=9.0.5
-pkgrel=0
+pkgrel=1
 pkgdesc="Library for parsing, formatting, and validating international phone numbers."
 url="https://github.com/google/libphonenumber"
 arch="all"
diff --git a/community/libssc/APKBUILD b/community/libssc/APKBUILD
index 753954d..f7d05ce 100644
--- a/community/libssc/APKBUILD
+++ b/community/libssc/APKBUILD
@@ -2,7 +2,7 @@
 # Contributor: Dylan Van Assche <me@dylanvanassche.be>
 pkgname=libssc
 pkgver=0.2.2
-pkgrel=0
+pkgrel=1
 pkgdesc="Library to expose Qualcomm Sensor Core sensors"
 url="https://codeberg.org/DylanVanAssche/libssc"
 arch="all"
diff --git a/community/lighthouse/APKBUILD b/community/lighthouse/APKBUILD
index 0eac55d..fff0941 100644
--- a/community/lighthouse/APKBUILD
+++ b/community/lighthouse/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Oleg Titov <oleg.titov@gmail.com>
 pkgname=lighthouse
 pkgver=7.0.1
-pkgrel=0
+pkgrel=1
 pkgdesc="Ethereum 2.0 Client"
 url="https://lighthouse.sigmaprime.io/"
 arch="x86_64 aarch64"  # limited by upstream
diff --git a/community/mixxx/APKBUILD b/community/mixxx/APKBUILD
index 4720c9a..3410606 100644
--- a/community/mixxx/APKBUILD
+++ b/community/mixxx/APKBUILD
@@ -1,7 +1,7 @@
 maintainer="fossdd <fossdd@pwned.life>"
 pkgname=mixxx
 pkgver=2.5.1
-pkgrel=2
+pkgrel=3
 pkgdesc="DJ mixing software"
 url="https://www.mixxx.org/"
 # armhf: qt6-qtdeclarative
diff --git a/community/mumble/APKBUILD b/community/mumble/APKBUILD
index 922a1a9..b58be00 100644
--- a/community/mumble/APKBUILD
+++ b/community/mumble/APKBUILD
@@ -4,7 +4,7 @@
 pkgname=mumble
 pkgver=1.5.735
 _srvname="mumble-server"
-pkgrel=3
+pkgrel=4
 pkgdesc="Low-latency, high quality voice chat software"
 url="https://wiki.mumble.info/"
 arch="all"
diff --git a/community/netdata/APKBUILD b/community/netdata/APKBUILD
index e4ee330..312dd2b 100644
--- a/community/netdata/APKBUILD
+++ b/community/netdata/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Kevin Daudt <kdaudt@alpinelinux.org>
 pkgname=netdata
 pkgver=1.47.5
-pkgrel=9
+pkgrel=10
 pkgdesc="Real-time performance monitoring"
 url="https://www.netdata.cloud/"
 license="GPL-3.0-or-later"
diff --git a/community/nsjail/APKBUILD b/community/nsjail/APKBUILD
index d715ee8..8a908e4 100644
--- a/community/nsjail/APKBUILD
+++ b/community/nsjail/APKBUILD
@@ -2,7 +2,7 @@
 maintainer="John Vogel <jvogel@stygian.me>"
 pkgname=nsjail
 pkgver=3.4
-pkgrel=7
+pkgrel=8
 pkgdesc="A light-weight process isolation tool"
 url="https://github.com/google/nsjail"
 # upstream supported architectures
diff --git a/community/ostinato/APKBUILD b/community/ostinato/APKBUILD
index cb8dc98..da06966 100644
--- a/community/ostinato/APKBUILD
+++ b/community/ostinato/APKBUILD
@@ -3,7 +3,7 @@
 maintainer="Celeste <cielesti@protonmail.com>"
 pkgname=ostinato
 pkgver=1.3.0
-pkgrel=5
+pkgrel=6
 pkgdesc="Packet/Traffic Generator and Analyzer"
 url="https://ostinato.org/"
 arch="all"
@@ -21,6 +21,7 @@ makedepends="
 subpackages="$pkgname-drone $pkgname-gui"
 source="$pkgname-$pkgver.tar.gz::https://github.com/pstavirs/ostinato/archive/v$pkgver.tar.gz
 	ModelTest.patch
+	protobuf-31.patch
 	"
 	# ModelTest::ModelTest is included and needed during linking even in release mode
 
@@ -55,4 +56,5 @@ gui() {
 sha512sums="
 8f94b95c8c9042960635228bb22fc12dbd28c44a66ed5b2c3296975eefeb274a341adf0d6126e8e9a13d2a9410b61ab3f35a9a58ce0bda970f1dbea8aaad6e38  ostinato-1.3.0.tar.gz
 e0a3d2781c62b1898a80af8522b36d6b1a7aeae9831c33c42e4e76fe002ee7ebff50d432508a18046d7b5988f09d9a9f90a0433cfae1d2c1cbeaf664671abf6c  ModelTest.patch
+6344bf9555d1e56b01c56e391dcf63e35815e303c8553aa65fccf67ccbfff5374ab0b72d9466a979d338aacd9ee237dc5e8d7bc516c5d6d15862cc29a809fd9b  protobuf-31.patch
 "
diff --git a/community/ostinato/protobuf-31.patch b/community/ostinato/protobuf-31.patch
new file mode 100644
index 0000000..1b20411
--- /dev/null
+++ b/community/ostinato/protobuf-31.patch
@@ -0,0 +1,250 @@
+diff --git a/common/pythonfileformat.cpp b/common/pythonfileformat.cpp
+index b11efc8..a87c8ac 100644
+--- a/common/pythonfileformat.cpp
++++ b/common/pythonfileformat.cpp
+@@ -90,24 +90,24 @@ bool PythonFileFormat::save(const OstProto::StreamConfigList streams,
+                          fields.at(k)->message_type()->file()->name()) {
+                     imports.insert(
+                             QString("%1 import %2").arg(
+-                                QString(fields.at(k)->message_type()
+-                                        ->file()->name().c_str())
++                                QString::fromStdString(std::string(fields.at(k)->message_type()
++                                        ->file()->name()))
+                                     .replace(".proto", "_pb2"),
+-                                fields.at(k)->message_type()->name().c_str()));
++                                QString::fromStdString(std::string(fields.at(k)->message_type()->name()))));
+                     imports.insert(
+                             QString("%1 import %2").arg(
+-                                QString(fields.at(k)
+-                                        ->file()->name().c_str())
++                                QString::fromStdString(std::string(fields.at(k)
++                                        ->file()->name()))
+                                     .replace(".proto", "_pb2"),
+-                                fields.at(k)->name().c_str()));
++                                QString::fromStdString(std::string(fields.at(k)->name()))));
+                 }
+                 else {
+                     imports.insert(
+                             QString("%1 import %2, %3").arg(
+-                                QString(fields.at(k)->file()->name().c_str())
++                                QString::fromStdString(std::string(fields.at(k)->file()->name()))
+                                 .replace(".proto", "_pb2"),
+-                                fields.at(k)->message_type()->name().c_str(),
+-                                fields.at(k)->name().c_str()));
++                                QString::fromStdString(std::string(fields.at(k)->message_type()->name())),
++                                QString::fromStdString(std::string(fields.at(k)->name()))));
+                 }
+             }
+         }
+@@ -166,7 +166,7 @@ bool PythonFileFormat::save(const OstProto::StreamConfigList streams,
+         refl->ListFields(stream.core(), &fields);
+         for (uint j = 0; j < fields.size(); j++) {
+             writeFieldAssignment(out, QString("    s.core.")
+-                                        .append(fields.at(j)->name().c_str()),
++                                        .append(QString::fromStdString(std::string(fields.at(j)->name()))),
+                     stream.core(), refl, fields.at(j));
+         }
+          
+@@ -175,7 +175,7 @@ bool PythonFileFormat::save(const OstProto::StreamConfigList streams,
+         refl->ListFields(stream.control(), &fields);
+         for (uint j = 0; j < fields.size(); j++) {
+             writeFieldAssignment(out, QString("    s.control.")
+-                                        .append(fields.at(j)->name().c_str()),
++                                        .append(QString::fromStdString(std::string(fields.at(j)->name()))),
+                     stream.control(), refl, fields.at(j));
+         }
+ 
+@@ -186,9 +186,9 @@ bool PythonFileFormat::save(const OstProto::StreamConfigList streams,
+             out << "\n"
+                 << "    p = s.protocol.add()\n"
+                 << "    p.protocol_id.id = "
+-                << QString(OstProto::Protocol_k_descriptor()
++                << QString::fromStdString(std::string(OstProto::Protocol_k_descriptor()
+                             ->FindValueByNumber(protocol.protocol_id().id())
+-                                ->full_name().c_str())
++                                ->full_name()))
+                         .replace("OstProto", "ost_pb");
+             out << "\n";
+             refl = protocol.GetReflection();
+@@ -201,7 +201,7 @@ bool PythonFileFormat::save(const OstProto::StreamConfigList streams,
+                     continue;
+                 QString pfx("    p.Extensions[X]");
+                 pfx.replace(fields.at(k)->is_extension()? "X": "Extensions[X]",
+-                        fields.at(k)->name().c_str());
++                        QString::fromStdString(std::string(fields.at(k)->name())));
+                 writeFieldAssignment(out, pfx, protocol,
+                         refl, fields.at(k));
+             }
+@@ -352,7 +352,7 @@ void PythonFileFormat::writeFieldAssignment(
+     //     if index >= 0 => we are writing a repeated element 
+     if (fieldDesc->is_repeated() && (index < 0)) {
+         int n = refl->FieldSize(msg, fieldDesc);
+-        QString var = singularize(fieldDesc->name().c_str());
++        QString var = singularize(QString::fromStdString(std::string(fieldDesc->name())));
+         for (int i = 0; i < n; i++) {
+             out << "    " << var << " = " << fieldName.trimmed() << ".add()\n";
+             writeFieldAssignment(out, QString("    ").append(var), 
+@@ -470,8 +470,8 @@ void PythonFileFormat::writeFieldAssignment(
+             QString module = fieldDesc->file()->name() == "protocol.proto" ? 
+                                 "ost_pb." : "";
+             std::string val = fieldDesc->is_repeated() ?
+-                refl->GetRepeatedEnum(msg, fieldDesc, index)->full_name() :
+-                refl->GetEnum(msg, fieldDesc)->full_name();
++                std::string(refl->GetRepeatedEnum(msg, fieldDesc, index)->full_name()) :
++                std::string(refl->GetEnum(msg, fieldDesc)->full_name());
+             if (val != fieldDesc->default_value_enum()->full_name())
+                 out << fieldName << " = " << QString::fromStdString(val)
+                                                  .replace("OstProto.", module)
+@@ -499,7 +499,7 @@ void PythonFileFormat::writeFieldAssignment(
+             // We attempt a crude hack here to detect such fields and avoid
+             // writing assignment statements for them
+             for (uint i = 0; i < fields2.size(); i++) {
+-                std::string name = fields2.at(i)->name();
++                std::string name = std::string(fields2.at(i)->name());
+                 if ((fields2.at(i)->cpp_type() 
+                             == FieldDescriptor::CPPTYPE_BOOL)
+                         && (name.find("is_override_") == 0)
+@@ -511,12 +511,12 @@ void PythonFileFormat::writeFieldAssignment(
+ 
+             for (uint i = 0 ; i < fields2.size(); i++) {
+                 // skip auto fields that are not overridden
+-                if (autoFields.contains(fields2.at(i)->name()))
++                if (autoFields.contains(std::string(fields2.at(i)->name())))
+                     continue;
+ 
+                 writeFieldAssignment(out, 
+                         QString("%1.%2").arg(pfxStr, 
+-                                             fields2.at(i)->name().c_str()),
++                                             QString::fromStdString(std::string(fields2.at(i)->name()))),
+                         msg2, refl2, fields2.at(i));
+             }
+             break;
+diff --git a/rpc/pbrpcchannel.cpp b/rpc/pbrpcchannel.cpp
+index 8a87791..54481ae 100644
+--- a/rpc/pbrpcchannel.cpp
++++ b/rpc/pbrpcchannel.cpp
+@@ -108,7 +108,7 @@ void PbRpcChannel::CallMethod(
+         qDebug("RpcChannel: queueing rpc since method %d is pending;<----\n "
+                 "queued method = %d:%s\n"
+                 "queued message = \n%s\n---->", 
+-                pendingMethodId, method->index(), method->name().c_str(),
++                pendingMethodId, method->index(), std::string(method->name()),
+                 req->DebugString().c_str());
+ 
+         call.method = method;
+@@ -128,7 +128,7 @@ void PbRpcChannel::CallMethod(
+     if (!req->IsInitialized())
+     {
+         qWarning("RpcChannel: missing required fields in request <----");
+-        qDebug("req = %s\n%s", method->input_type()->name().c_str(),
++        qDebug("req = %s\n%s", std::string(method->input_type()->name()),
+                 req->DebugString().c_str());
+         qDebug("error = \n%s\n--->", req->InitializationErrorString().c_str());
+ 
+@@ -156,8 +156,8 @@ void PbRpcChannel::CallMethod(
+                 PB_HDR_SIZE + len);
+         BUFDUMP(msg, PB_HDR_SIZE);
+         qDebug("method = %d:%s\n req = %s\n%s\n---->",
+-                method->index(), method->name().c_str(),
+-                method->input_type()->name().c_str(),
++                method->index(), std::string(method->name()),
++                std::string(method->input_type()->name()),
+                 req->DebugString().c_str());
+     }
+ 
+@@ -307,8 +307,8 @@ _top:
+             {
+                 qDebug("client(%s): Received Msg <---- ", __FUNCTION__);
+                 qDebug("method = %d:%s\nresp = %s\n%s\n---->",
+-                        methodId, this->method->name().c_str(),
+-                        this->method->output_type()->name().c_str(),
++                        methodId, std::string(this->method->name()),
++                        std::string(this->method->output_type()->name()),
+                         response->DebugString().c_str());
+             }
+ 
+@@ -316,7 +316,7 @@ _top:
+             {
+                 qWarning("RpcChannel: missing required fields in response <----");
+                 qDebug("resp = %s\n%s",
+-                        this->method->output_type()->name().c_str(),
++                        std::string(this->method->output_type()->name()),
+                         response->DebugString().c_str());
+                 qDebug("error = \n%s\n--->", 
+                         response->InitializationErrorString().c_str());
+@@ -443,8 +443,8 @@ _top:
+         qDebug("RpcChannel: executing queued method <----\n"
+                "method = %d:%s\n"
+                "req = %s\n%s\n---->",
+-                call.method->index(), call.method->name().c_str(),
+-                call.method->input_type()->name().c_str(),
++                call.method->index(), std::string(call.method->name()),
++                std::string(call.method->input_type()->name()),
+                 call.request->DebugString().c_str());
+         CallMethod(call.method, call.controller, call.request, call.response,
+                 call.done);
+diff --git a/rpc/rpcconn.cpp b/rpc/rpcconn.cpp
+index 566f096..a1e9c5e 100644
+--- a/rpc/rpcconn.cpp
++++ b/rpc/rpcconn.cpp
+@@ -181,8 +181,8 @@ void RpcConnection::sendRpcReply(
+             __FUNCTION__, len + PB_HDR_SIZE);
+         BUFDUMP(msg, 8);
+         qDebug("method = %d:%s\nresp = %s\n%s---->",
+-            pendingMethodId, method ? method->name().c_str() : "",
+-            method ? method->output_type()->name().c_str() : "",
++            pendingMethodId, method ? std::string(method->name()) : "",
++            method ? std::string(method->output_type()->name()) : "",
+             response->DebugString().c_str());
+     }
+ 
+@@ -332,8 +332,8 @@ void RpcConnection::on_clientSock_dataAvail()
+         qDebug("server(%s): rpc pending, try again", __FUNCTION__);
+         error = QString("RPC %1() is pending; only one RPC allowed at a time; "
+                         "try again!").arg(QString::fromStdString(
+-                            service->GetDescriptor()->method(
+-                                pendingMethodId)->name()));
++                            std::string(service->GetDescriptor()->method(
++                                pendingMethodId)->name())));
+         goto _error_exit;
+     }
+ 
+@@ -348,7 +348,7 @@ void RpcConnection::on_clientSock_dataAvail()
+         if (!ok)
+             qWarning("ParseFromBoundedZeroCopyStream fail "
+                      "for method %d:%s and len %d",
+-                     method, methodDesc->name().c_str(),len);
++                     method, std::string(methodDesc->name()),len);
+     }
+ 
+     if (!req->IsInitialized())
+@@ -357,14 +357,14 @@ void RpcConnection::on_clientSock_dataAvail()
+         qDebug("method = %d:%s\n"
+                "req = %s\n%s"
+                "missing = \n%s----->",
+-                method, methodDesc->name().c_str(),
+-                methodDesc->input_type()->name().c_str(),
++                method, std::string(methodDesc->name()),
++                std::string(methodDesc->input_type()->name()),
+                 req->DebugString().c_str(),
+                 req->InitializationErrorString().c_str());
+         error = QString("RPC %1() missing required fields in request - %2")
+                     .arg(QString::fromStdString(
+-                                service->GetDescriptor()->method(
+-                                    pendingMethodId)->name()),
++                                std::string(service->GetDescriptor()->method(
++                                    pendingMethodId)->name())),
+                         QString(req->InitializationErrorString().c_str()));
+         delete req;
+         delete resp;
+@@ -376,8 +376,8 @@ void RpcConnection::on_clientSock_dataAvail()
+         qDebug("Server(%s): successfully received/parsed msg <----", __FUNCTION__);
+         qDebug("method = %d:%s\n"
+                "req = %s\n%s---->",
+-                method, methodDesc->name().c_str(),
+-                methodDesc->input_type()->name().c_str(),
++                method, std::string(methodDesc->name()),
++                std::string(methodDesc->input_type()->name()),
+                 req->DebugString().c_str());
+     }
+ 
diff --git a/community/pdns/APKBUILD b/community/pdns/APKBUILD
index 82e68b1..b002ea3 100644
--- a/community/pdns/APKBUILD
+++ b/community/pdns/APKBUILD
@@ -7,7 +7,7 @@
 # Maintainer: Peter van Dijk <peter.van.dijk@powerdns.com>
 pkgname=pdns
 pkgver=4.9.5
-pkgrel=0
+pkgrel=2
 pkgdesc="PowerDNS Authoritative Server"
 url="https://www.powerdns.com/"
 # s390x blocked by failing testsuite
diff --git a/community/protozero/APKBUILD b/community/protozero/APKBUILD
index cce32bb..2049917 100644
--- a/community/protozero/APKBUILD
+++ b/community/protozero/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Sascha Brawer <sascha@brawer.ch>
 pkgname=protozero
 pkgver=1.8.0
-pkgrel=0
+pkgrel=1
 pkgdesc="Minimalist protocol buffer decoder and encoder in C++"
 url="https://github.com/mapbox/protozero"
 arch="noarch"
diff --git a/community/qt6-qtgrpc/APKBUILD b/community/qt6-qtgrpc/APKBUILD
index 5cb182e..1e11f72 100644
--- a/community/qt6-qtgrpc/APKBUILD
+++ b/community/qt6-qtgrpc/APKBUILD
@@ -3,7 +3,7 @@
 maintainer="Bart Ribbers <bribbers@disroot.org>"
 pkgname=qt6-qtgrpc
 pkgver=6.8.3
-pkgrel=0
+pkgrel=1
 pkgdesc="Providing protobuf and gRPC support for Qt"
 url="https://qt.io/"
 arch="all"
@@ -37,7 +37,10 @@ case $pkgver in
 	*) _rel=official_releases;;
 esac
 
-source="https://download.qt.io/$_rel/qt/${pkgver%.*}/${pkgver/_/-}/submodules/qtgrpc-everywhere-src-${pkgver/_/-}.tar.xz"
+source="
+	https://download.qt.io/$_rel/qt/${pkgver%.*}/${pkgver/_/-}/submodules/qtgrpc-everywhere-src-${pkgver/_/-}.tar.xz
+	protobuf-31.patch
+	"
 
 build() {
 	export CFLAGS="$CFLAGS -flto=auto"
@@ -61,4 +64,5 @@ dev() {
 
 sha512sums="
 488c7e6a20cd9c267b44923c317e545e71543f68153228a4fee1fa9c0a2f6d3e212db9482962999bb80e87313a1a851b787759852089f17dca8add7040627c55  qtgrpc-everywhere-src-6.8.3.tar.xz
+035d61050f06a2d341aac89c440a6432247630eb7c3efaafb19824180732e7d974f0b2cfd4ffa153acbcb49d784fb3dc73e2f1f2bff6a2289f59af830e723d03  protobuf-31.patch
 "
diff --git a/community/qt6-qtgrpc/protobuf-31.patch b/community/qt6-qtgrpc/protobuf-31.patch
new file mode 100644
index 0000000..321738f
--- /dev/null
+++ b/community/qt6-qtgrpc/protobuf-31.patch
@@ -0,0 +1,379 @@
+diff --git a/src/tools/qtgrpcgen/qgrpcgenerator.cpp b/src/tools/qtgrpcgen/qgrpcgenerator.cpp
+index 6c205648..046b35b1 100644
+--- a/src/tools/qtgrpcgen/qgrpcgenerator.cpp
++++ b/src/tools/qtgrpcgen/qgrpcgenerator.cpp
+@@ -87,19 +87,19 @@ std::set<std::string> QGrpcGenerator::GetInternalIncludes(const FileDescriptor *
+         for (int j = 0; j < service->method_count(); ++j) {
+             const MethodDescriptor *method = service->method(j);
+             if (method->input_type()->file() != service->file()) {
+-                includes.insert(utils::removeFileSuffix(method->input_type()->file()->name())
++                includes.insert(utils::removeFileSuffix(std::string(method->input_type()->file()->name()))
+                                 + fullSuffix);
+             }
+ 
+             if (method->output_type()->file() != service->file()) {
+-                includes.insert(utils::removeFileSuffix(method->output_type()->file()->name())
++                includes.insert(utils::removeFileSuffix(std::string(method->output_type()->file()->name()))
+                                 + fullSuffix);
+             }
+         }
+     }
+     if (file->message_type_count() > 0) {
+         includes.insert(common::generateRelativeFilePath(file,
+-                                                         utils::extractFileBasename(file->name()))
++                                                         utils::extractFileBasename(std::string(file->name())))
+                         + fullSuffix);
+     }
+     return includes;
+@@ -128,7 +128,7 @@ void QGrpcGenerator::GenerateQmlClientServices(
+ 
+     const std::string qmlPrefix = "qml";
+ 
+-    const std::string basename = utils::extractFileBasename(file->name()) +
++    const std::string basename = utils::extractFileBasename(std::string(file->name())) +
+         GrpcTemplates::GrpcClientFileSuffix() + CommonTemplates::ProtoFileSuffix();
+     const std::string qmlBasename = qmlPrefix + basename;
+ 
+@@ -174,7 +174,7 @@ bool QGrpcGenerator::GenerateClientServices(const FileDescriptor *file,
+     if (file->service_count() <= 0)
+         return true;
+ 
+-    const std::string basename = utils::extractFileBasename(file->name()) +
++    const std::string basename = utils::extractFileBasename(std::string(file->name())) +
+         GrpcTemplates::GrpcClientFileSuffix() + CommonTemplates::ProtoFileSuffix();
+     std::string identifier = utils::toValidIdentifier(basename);
+     const std::string realtivePath = common::generateRelativeFilePath(file, basename);
+diff --git a/src/tools/qtprotobufgen/enumdeclarationprinter.cpp b/src/tools/qtprotobufgen/enumdeclarationprinter.cpp
+index a3f5274d..99bbee18 100644
+--- a/src/tools/qtprotobufgen/enumdeclarationprinter.cpp
++++ b/src/tools/qtprotobufgen/enumdeclarationprinter.cpp
+@@ -44,7 +44,7 @@ void EnumDeclarationPrinter::printEnum()
+     int numValues = m_descriptor->value_count();
+     for (int j = 0; j < numValues; ++j) {
+         const EnumValueDescriptor *valueDescr = m_descriptor->value(j);
+-        m_printer->Print({ { "enumvalue", common::qualifiedCppName(valueDescr->name()) },
++        m_printer->Print({ { "enumvalue", common::qualifiedCppName(std::string(valueDescr->name())) },
+                            { "value", std::to_string(valueDescr->number()) } },
+                          CommonTemplates::EnumFieldTemplate());
+     }
+diff --git a/src/tools/qtprotobufgen/messagedeclarationprinter.cpp b/src/tools/qtprotobufgen/messagedeclarationprinter.cpp
+index 452d023b..fc913477 100644
+--- a/src/tools/qtprotobufgen/messagedeclarationprinter.cpp
++++ b/src/tools/qtprotobufgen/messagedeclarationprinter.cpp
+@@ -442,7 +442,7 @@ void MessageDeclarationPrinter::printQEnums()
+         Indent();
+         for (int j = 0; j < enumDescr->value_count(); ++j) {
+             const auto *valueDescr = enumDescr->value(j);
+-            m_printer->Print({ { "enumvalue", common::qualifiedCppName(valueDescr->name()) },
++            m_printer->Print({ { "enumvalue", common::qualifiedCppName(std::string(valueDescr->name())) },
+                                { "value", std::to_string(valueDescr->number()) } },
+                              CommonTemplates::EnumFieldTemplate());
+         }
+@@ -464,7 +464,7 @@ void MessageDeclarationPrinter::printOneofEnums()
+                 for (int j = 0; j < oneofDescr->field_count(); ++j) {
+                     const auto *valueDescr = oneofDescr->field(j);
+                     m_printer->Print({ { "enumvalue",
+-                                         utils::capitalizeAsciiName(valueDescr->camelcase_name()) },
++                                         utils::capitalizeAsciiName(std::string(valueDescr->camelcase_name())) },
+                                        { "value", std::to_string(valueDescr->number()) } },
+                                      CommonTemplates::EnumFieldTemplate());
+                 }
+diff --git a/src/tools/qtprotobufgen/messagedefinitionprinter.cpp b/src/tools/qtprotobufgen/messagedefinitionprinter.cpp
+index 3ac81249..ae9e930f 100644
+--- a/src/tools/qtprotobufgen/messagedefinitionprinter.cpp
++++ b/src/tools/qtprotobufgen/messagedefinitionprinter.cpp
+@@ -257,7 +257,7 @@ void MessageDefinitionPrinter::printUintData(const char *templateString)
+             { "field_number", std::to_string(field->number()) },
+             { "property_index", std::to_string(propertyIndex) },
+             { "field_flags", common::collectFieldFlags(field) },
+-            { "json_name", field->json_name() },
++            { "json_name", std::string(field->json_name()) },
+         };
+ 
+         // Oneof and optional properties generate additional has<FieldName> property next to the
+@@ -278,7 +278,7 @@ void MessageDefinitionPrinter::printCharData()
+     m_printer->Print("// char_data\n");
+ 
+     m_printer->Print("/* metadata char_data: */\n\"");
+-    m_printer->Print(m_descriptor->full_name().c_str());
++    m_printer->Print(std::string(m_descriptor->full_name()));
+     m_printer->Print("\\0\" /* = full message name */\n");
+ 
+     m_printer->Print("/* field char_data: */\n\"");
+diff --git a/src/tools/qtprotobufgen/qprotobufgenerator.cpp b/src/tools/qtprotobufgen/qprotobufgenerator.cpp
+index d9d13a34..19f44afc 100644
+--- a/src/tools/qtprotobufgen/qprotobufgenerator.cpp
++++ b/src/tools/qtprotobufgen/qprotobufgenerator.cpp
+@@ -47,7 +47,7 @@ void QProtobufGenerator::GenerateSources(const FileDescriptor *file,
+     assert(file != nullptr);
+     assert(generatorContext != nullptr);
+ 
+-    std::string basename = utils::extractFileBasename(file->name());
++    std::string basename = utils::extractFileBasename(std::string(file->name()));
+     std::string identifier = utils::toValidIdentifier(basename);
+     std::string relativePath = common::generateRelativeFilePath(file, basename);
+     std::unique_ptr<io::ZeroCopyOutputStream> sourceStream(
+@@ -114,7 +114,7 @@ void QProtobufGenerator::GenerateHeader(const FileDescriptor *file,
+     assert(file != nullptr);
+     assert(generatorContext != nullptr);
+ 
+-    const std::string basename = utils::extractFileBasename(file->name()) +
++    const std::string basename = utils::extractFileBasename(std::string(file->name())) +
+         CommonTemplates::ProtoFileSuffix();
+     std::string identifier = utils::toValidIdentifier(basename);
+     std::string relativePath = common::generateRelativeFilePath(file, basename);
+@@ -169,9 +169,9 @@ void QProtobufGenerator::GenerateHeader(const FileDescriptor *file,
+             const auto *field = message->field(i);
+             if (field->type() == FieldDescriptor::TYPE_MESSAGE && !field->is_map()
+                 && !field->is_repeated() && common::isQtType(field)) {
+-                externalIncludes.insert(field->message_type()->file()->package()
+-                                        + "/" + field->message_type()->name());
+-                qtTypesSet.insert(field->message_type()->file()->package());
++                externalIncludes.insert(std::string(field->message_type()->file()->package())
++                                        + "/" + std::string(field->message_type()->name()));
++                qtTypesSet.insert(std::string(field->message_type()->file()->package()));
+             }
+ 
+             if (common::isOptionalField(field))
+@@ -202,7 +202,7 @@ void QProtobufGenerator::GenerateHeader(const FileDescriptor *file,
+             externalIncludes.insert("QtProtobufWellKnownTypes/qprotobufanysupport.h");
+             continue;
+         }
+-        internalIncludes.insert(utils::removeFileSuffix(file->dependency(i)->name())
++        internalIncludes.insert(utils::removeFileSuffix(std::string(file->dependency(i)->name()))
+                                 + CommonTemplates::ProtoFileSuffix()
+                                 + CommonTemplates::HeaderSuffix());
+     }
+diff --git a/src/tools/qtprotoccommon/generatorbase.cpp b/src/tools/qtprotoccommon/generatorbase.cpp
+index 880b5f80..d735b639 100644
+--- a/src/tools/qtprotoccommon/generatorbase.cpp
++++ b/src/tools/qtprotoccommon/generatorbase.cpp
+@@ -48,7 +48,7 @@ bool GeneratorBase::GenerateAll(const std::vector<const FileDescriptor *> &files
+         std::set<std::string> extraNamespaceFiles;
+         for (const FileDescriptor *file : files) {
+             assert(file != nullptr);
+-            extraNamespaceFiles.insert(file->name());
++            extraNamespaceFiles.insert(std::string(file->name()));
+         }
+         common::setExtraNamespacedFiles(extraNamespaceFiles);
+     }
+@@ -69,7 +69,7 @@ void GeneratorBase::OpenFileNamespaces(
+     const bool hasQtNamespace = (Options::instance().extraNamespace() == "QT_NAMESPACE");
+ 
+     const std::string scopeNamespaces
+-        = common::getFullNamespace(file->package() + ".noop", "::", true);
++        = common::getFullNamespace(std::string(file->package()) + ".noop", "::", true);
+ 
+     printer->Print("\n");
+     if (hasQtNamespace || file->package() == "QtCore" || file->package() == "QtGui")
+@@ -88,7 +88,7 @@ void GeneratorBase::CloseFileNamespaces(
+     const bool hasQtNamespace = (Options::instance().extraNamespace() == "QT_NAMESPACE");
+ 
+     const std::string scopeNamespaces
+-        = common::getFullNamespace(file->package() + ".noop", "::", true);
++        = common::getFullNamespace(std::string(file->package()) + ".noop", "::", true);
+     if (!scopeNamespaces.empty()) {
+         printer->Print({ { "scope_namespaces", scopeNamespaces } },
+                        CommonTemplates::NamespaceClosingTemplate());
+diff --git a/src/tools/qtprotoccommon/generatorcommon.cpp b/src/tools/qtprotoccommon/generatorcommon.cpp
+index f3bc6d98..4b1474aa 100644
+--- a/src/tools/qtprotoccommon/generatorcommon.cpp
++++ b/src/tools/qtprotoccommon/generatorcommon.cpp
+@@ -98,14 +98,14 @@ std::string common::buildExportMacro(bool addTrailingSpace)
+ std::string common::getNestedNamespace(const Descriptor *type, std::string_view separator)
+ {
+     assert(type != nullptr);
+-    std::string namespaces = type->file()->package();
++    std::string namespaces = std::string(type->file()->package());
+ 
+     std::string nestingNamespaces;
+     const Descriptor *containingType = type->containing_type();
+     while (containingType) {
+         nestingNamespaces.insert(0,
+                                  std::string(separator)
+-                                         + utils::capitalizeAsciiName(containingType->name())
++                                         + utils::capitalizeAsciiName(std::string(containingType->name()))
+                                          + CommonTemplates::QtProtobufNestedNamespace());
+         containingType = containingType->containing_type();
+     }
+@@ -151,7 +151,7 @@ TypeMap common::produceQtTypeMap(const Descriptor *type, const Descriptor *scope
+     std::string scopeNamespaces = getScopeNamespace(type, scope);
+     std::string qmlPackage = getFullNamespace(type, ".");
+ 
+-    std::string name = type->name();
++    std::string name = std::string(type->name());
+     std::string fullName = name;
+     std::string scopeName = name;
+ 
+@@ -176,7 +176,7 @@ TypeMap common::produceOverriddenTypeMap(const Descriptor *type, const Descripto
+     std::string namespaces = getFullNamespace(type, "::");
+     std::string qmlPackage = getFullNamespace(type, ".");
+ 
+-    std::string name = type->name();
++    std::string name = std::string(type->name());
+     std::string listName;
+     if (type->full_name() == "google.protobuf.Any") {
+         namespaces = "QtProtobuf";
+@@ -215,7 +215,7 @@ TypeMap common::produceMessageTypeMap(const Descriptor *type, const Descriptor *
+     if (qmlPackage.empty())
+         qmlPackage = "QtProtobuf";
+ 
+-    std::string name = utils::capitalizeAsciiName(type->name());
++    std::string name = utils::capitalizeAsciiName(std::string(type->name()));
+     std::string fullName = namespaces.empty() ? name : (namespaces + "::" + name);
+     std::string scopeName = scopeNamespaces.empty() ? name : (scopeNamespaces + "::" + name);
+ 
+@@ -228,7 +228,7 @@ TypeMap common::produceMessageTypeMap(const Descriptor *type, const Descriptor *
+     const std::string initializer = "nullptr";
+     return { { "classname", name },
+              { "dataclassname", name + CommonTemplates::DataClassName() },
+-             { "classname_low_case", utils::deCapitalizeAsciiName(type->name()) },
++             { "classname_low_case", utils::deCapitalizeAsciiName(std::string(type->name())) },
+              { "type", name },
+              { "full_type", fullName },
+              { "scope_type", scopeName },
+@@ -250,14 +250,14 @@ TypeMap common::produceEnumTypeMap(const EnumDescriptor *type, const Descriptor
+     EnumVisibility visibility = enumVisibility(type, scope);
+     std::string namespaces = getFullNamespace(type, "::");
+ 
+-    std::string name = utils::capitalizeAsciiName(type->name());
++    std::string name = utils::capitalizeAsciiName(std::string(type->name()));
+     // qml package should consist only from proto package
+     std::string qmlPackage = getFullNamespace(type, ".");
+     if (qmlPackage.empty())
+         qmlPackage = "QtProtobuf";
+ 
+     std::string scopeNamespaces = getScopeNamespace(type, scope);
+-    std::string enumGadget = scope != nullptr ? utils::capitalizeAsciiName(scope->name()) : "";
++    std::string enumGadget = scope != nullptr ? utils::capitalizeAsciiName(std::string(scope->name())) : "";
+     if (visibility == GLOBAL_ENUM) {
+         enumGadget = name + CommonTemplates::EnumClassSuffix();
+         namespaces += "::";
+@@ -277,7 +277,7 @@ TypeMap common::produceEnumTypeMap(const EnumDescriptor *type, const Descriptor
+     std::string propertyType = visibility == LOCAL_ENUM ? name : fullName;
+     std::string exportMacro =  common::buildExportMacro();
+ 
+-    std::string initializer = scopeName + "::" + common::qualifiedCppName(type->value(0)->name());
++    std::string initializer = scopeName + "::" + common::qualifiedCppName(std::string(type->value(0)->name()));
+     return { { "classname", name },
+              { "classname_low_case", utils::deCapitalizeAsciiName(name) },
+              { "type", name },
+@@ -340,10 +340,10 @@ TypeMap common::produceSimpleTypeMap(FieldDescriptor::Type type)
+ 
+ MethodMap common::produceMethodMap(const MethodDescriptor *method, const std::string &scope)
+ {
+-    std::string inputTypeName = method->input_type()->full_name();
+-    std::string outputTypeName = method->output_type()->full_name();
+-    std::string methodName = method->name();
+-    std::string methodNameUpper = method->name();
++    std::string inputTypeName = std::string(method->input_type()->full_name());
++    std::string outputTypeName = std::string(method->output_type()->full_name());
++    std::string methodName = std::string(method->name());
++    std::string methodNameUpper = std::string(method->name());
+     methodNameUpper[0] = static_cast<char>(utils::toAsciiUpper(methodNameUpper[0]));
+     inputTypeName = utils::replace(inputTypeName, ".", "::");
+     outputTypeName = utils::replace(outputTypeName, ".", "::");
+@@ -351,7 +351,7 @@ MethodMap common::produceMethodMap(const MethodDescriptor *method, const std::st
+     std::string senderName = methodNameUpper;
+     senderName += "Sender";
+ 
+-    std::string serviceName = method->service()->name();
++    std::string serviceName = std::string(method->service()->name());
+ 
+     //Make sure that we don't clash the same stream names from different services
+     std::string senderQmlName = serviceName;
+@@ -391,7 +391,7 @@ TypeMap common::produceServiceTypeMap(const ServiceDescriptor *service, const De
+ {
+     const std::string name = "Service";
+     const std::string fullName = "Service";
+-    const std::string scopeName = service->name();
++    const std::string scopeName = std::string(service->name());
+     static const std::string exportMacro = common::buildExportMacro();
+ 
+     const std::string namespaces = getFullNamespace(service, "::");
+@@ -411,14 +411,14 @@ TypeMap common::produceClientTypeMap(const ServiceDescriptor *service, const Des
+ {
+     const std::string name = "Client";
+     const std::string fullName = "Client";
+-    const std::string scopeName = service->name();
++    const std::string scopeName = std::string(service->name());
+     static const std::string exportMacro = common::buildExportMacro();
+ 
+     const std::string namespaces = getFullNamespace(service, "::");
+     const std::string scopeNamespaces = getScopeNamespace(namespaces,
+                                                           getFullNamespace(scope, "::"));
+ 
+-    const std::string serviceName =  service->full_name();
++    const std::string serviceName =  std::string(service->full_name());
+     return { { "classname", name },
+              { "classname_low_case", utils::deCapitalizeAsciiName(name) },
+              { "full_type", fullName },
+@@ -433,7 +433,7 @@ TypeMap common::produceQmlClientTypeMap(const ServiceDescriptor *service, const
+ {
+     const std::string name = "QmlClient";
+     const std::string fullName = "QmlClient";
+-    const std::string serviceName = service->name();
++    const std::string serviceName = std::string(service->name());
+     static const std::string exportMacro = common::buildExportMacro();
+ 
+     const std::string namespaces = getFullNamespace(service, "::");
+@@ -530,8 +530,8 @@ PropertyMap common::producePropertyMap(const OneofDescriptor *oneof, const Descr
+     assert(oneof != nullptr);
+ 
+     PropertyMap propertyMap;
+-    propertyMap["optional_property_name"] = qualifiedCppName(qualifiedQmlName(oneof->name()));
+-    propertyMap["optional_property_name_cap"] = utils::capitalizeAsciiName(oneof->name());
++    propertyMap["optional_property_name"] = qualifiedCppName(qualifiedQmlName(std::string(oneof->name())));
++    propertyMap["optional_property_name_cap"] = utils::capitalizeAsciiName(std::string(oneof->name()));
+     auto scopeTypeMap = produceMessageTypeMap(scope, nullptr);
+     propertyMap["classname"] = scope != nullptr ? scopeTypeMap["classname"] : "";
+     propertyMap["dataclassname"] = propertyMap["classname"] + CommonTemplates::DataClassName();
+@@ -557,7 +557,7 @@ PropertyMap common::producePropertyMap(const FieldDescriptor *field, const Descr
+     }
+ 
+     std::string propertyName = qualifiedCppName(
+-            qualifiedQmlName(utils::deCapitalizeAsciiName(field->camelcase_name())));
++            qualifiedQmlName(utils::deCapitalizeAsciiName(std::string(field->camelcase_name()))));
+     std::string propertyNameCap = utils::capitalizeAsciiName(propertyName);
+ 
+     propertyMap["property_name"] = propertyName;
+@@ -574,9 +574,9 @@ PropertyMap common::producePropertyMap(const FieldDescriptor *field, const Descr
+ 
+     if (common::isOneofField(field)) {
+         propertyMap["optional_property_name"] =
+-                qualifiedCppName(qualifiedQmlName(field->containing_oneof()->name()));
++                qualifiedCppName(qualifiedQmlName(std::string(field->containing_oneof()->name())));
+         propertyMap["optional_property_name_cap"] =
+-                utils::capitalizeAsciiName(field->containing_oneof()->name());
++                utils::capitalizeAsciiName(std::string(field->containing_oneof()->name()));
+     } else if (common::isOptionalField(field)) {
+         propertyMap["optional_property_name"] = propertyName;
+         propertyMap["optional_property_name_cap"] = propertyNameCap;
+diff --git a/src/tools/qtprotoccommon/generatorcommon.h b/src/tools/qtprotoccommon/generatorcommon.h
+index b9c73da9..e1310c87 100644
+--- a/src/tools/qtprotoccommon/generatorcommon.h
++++ b/src/tools/qtprotoccommon/generatorcommon.h
+@@ -59,12 +59,12 @@ struct common {
+                 nestingNamespaces.insert(
+                         0,
+                         std::string(separator)
+-                                + utils::capitalizeAsciiName(containingType->name()));
++                                + utils::capitalizeAsciiName(std::string(containingType->name())));
+                 containingType = containingType->containing_type();
+             }
+         }
+ 
+-        return getFullNamespace(type->file()->package() + nestingNamespaces + '.' + type->name(),
++        return getFullNamespace(std::string(type->file()->package()) + nestingNamespaces + '.' + std::string(type->name()),
+                                 separator,
+                                 common::isExtraNamespacedFile(std::string(type->file()->name())));
+     }
+@@ -93,7 +93,7 @@ struct common {
+         bool first = true;
+         while (containingType) {
+             nestingNamespaces.insert(0,
+-                                     utils::capitalizeAsciiName(containingType->name()) + suffix);
++                                     utils::capitalizeAsciiName(std::string(containingType->name())) + suffix);
+             // Scope is detected as parent, it doesn't make sense to go deeper.
+             if (containingType == scope)
+                 break;
diff --git a/community/seastar/APKBUILD b/community/seastar/APKBUILD
index f4764c0..73a946d 100644
--- a/community/seastar/APKBUILD
+++ b/community/seastar/APKBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Duncan Bellamy <dunk@denkimushi.com>
 pkgname=seastar
 pkgver=25.05.0
-pkgrel=0
+pkgrel=1
 _commit="8df8212e53577e1d8477a5c901457cd61d88afc7"
 _ver="${_commit:=$pkgver}"
 pkgdesc="High performance server-side application framework"
@@ -55,11 +55,13 @@ build() {
 		local _crossopts="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
 	fi
 	export CXXFLAGS="$CXXFLAGS -DSEASTAR_DEFAULT_ALLOCATOR -Wno-cpp"
+	# -DSEASTAR_P2581R1 fixes `error: call of overloaded 'tuple(int, long int)' is ambiguous` on newer versions of GCC
 	cmake -B build -G Ninja \
 		-DBUILD_SHARED_LIBS=ON \
 		-DCMAKE_INSTALL_PREFIX=/usr \
 		-DCMAKE_INSTALL_LIBDIR=lib \
 		-DCMAKE_BUILD_TYPE=MinSizeRel \
+		-DCMAKE_CXX_FLAGS="-DSEASTAR_P2581R1" \
 		-DSeastar_APPS=OFF \
 		-DSeastar_DEMOS=OFF \
 		-DSeastar_DOCS=OFF \
diff --git a/community/usbguard/APKBUILD b/community/usbguard/APKBUILD
index 430a7b4..a9d8b7b 100644
--- a/community/usbguard/APKBUILD
+++ b/community/usbguard/APKBUILD
@@ -4,7 +4,7 @@
 maintainer="omni <omni+alpine@hack.org>"
 pkgname=usbguard
 pkgver=1.1.3
-pkgrel=6
+pkgrel=7
 pkgdesc="Software framework for implementing USB device authorization policies"
 url="https://usbguard.github.io/"
 license="GPL-2.0-or-later"
@@ -36,14 +36,15 @@ subpackages="
 	"
 install="$pkgname.post-install $pkgname-dbus.post-install"
 source="https://github.com/USBGuard/usbguard/releases/download/usbguard-$pkgver/usbguard-$pkgver.tar.gz
+	protobuf-31.patch
 	usbguard.initd
 	usbguard-dbus.initd
 	"
 
 prepare() {
-	cp -a "$builddir" "$srcdir"/"$pkgname"-dbus
-
 	default_prepare
+
+	cp -a "$builddir" "$srcdir"/"$pkgname"-dbus
 }
 
 build() {
@@ -126,6 +127,7 @@ _dbus_openrc() {
 
 sha512sums="
 530bfea12ec8497c30d530c73f868207aad8b0e0e917cb7c7506f6148681a6a4ff12de5cddcfea458eb2b91ce8bb8b0e68d42e2590a4dc6b15f43c18f8256cf1  usbguard-1.1.3.tar.gz
+59496e6e3a113b79069c7795a2740e955967b25ad69c31d0f51b072fd772b98d8f515b9834768a870327dd5009d033e77dae5a2ab5bfc620d02faf1ff1bffd3e  protobuf-31.patch
 9d6752f08df0ba510fa02c0c9b55a92f063297653480c4d8863f87f159dc51449a34643e75af7619146e2e53c91d479be91ecc0c9adc0c764d037f4df466e534  usbguard.initd
 798c9c920eea7bc4b0bc101f60994621c3ff4a527d7c6d1eb098e40e0b2c68edddd723c07989b21398209230234e2d576e4982d46f69689a1a964773df17da19  usbguard-dbus.initd
 "
diff --git a/community/usbguard/protobuf-31.patch b/community/usbguard/protobuf-31.patch
new file mode 100644
index 0000000..4be166c
--- /dev/null
+++ b/community/usbguard/protobuf-31.patch
@@ -0,0 +1,86 @@
+From 2838890f097fb2f5419523801e71e54905a7d1dd Mon Sep 17 00:00:00 2001
+From: Christian Heusel <christian@heusel.eu>
+Date: Tue, 11 Mar 2025 21:43:51 +0100
+Subject: [PATCH] Adapt for protobuf 30.0 API changes
+
+Fixes https://github.com/USBGuard/usbguard/issues/649
+
+Link: https://protobuf.dev/support/migration/
+Signed-off-by: Christian Heusel <christian@heusel.eu>
+---
+ src/Library/IPCClientPrivate.cpp | 2 +-
+ src/Library/IPCClientPrivate.hpp | 2 +-
+ src/Library/IPCServerPrivate.cpp | 6 +++---
+ src/Library/IPCServerPrivate.hpp | 2 +-
+ 4 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/Library/IPCClientPrivate.cpp b/src/Library/IPCClientPrivate.cpp
+index 6aa52013..452ecd41 100644
+--- a/src/Library/IPCClientPrivate.cpp
++++ b/src/Library/IPCClientPrivate.cpp
+@@ -225,7 +225,7 @@ namespace usbguard
+     std::string payload;
+     message.SerializeToString(&payload);
+     struct qb_ipc_request_header hdr;
+-    hdr.id = QB_IPC_MSG_USER_START + IPC::messageTypeNameToNumber(message.GetTypeName());
++    hdr.id = QB_IPC_MSG_USER_START + IPC::messageTypeNameToNumber(std::string(message.GetTypeName()));
+     hdr.size = sizeof hdr + payload.size();
+     struct iovec iov[2];
+     iov[0].iov_base = &hdr;
+diff --git a/src/Library/IPCClientPrivate.hpp b/src/Library/IPCClientPrivate.hpp
+index d92a1d47..a33022e2 100644
+--- a/src/Library/IPCClientPrivate.hpp
++++ b/src/Library/IPCClientPrivate.hpp
+@@ -84,7 +84,7 @@ namespace usbguard
+     template<class T>
+     void registerHandler(MessageHandler::HandlerType method)
+     {
+-      const uint32_t type_number = IPC::messageTypeNameToNumber(T::default_instance().GetTypeName());
++      const uint32_t type_number = IPC::messageTypeNameToNumber(std::string(T::default_instance().GetTypeName()));
+       _handlers.emplace(type_number, MessageHandler::create<T>(*this, method));
+     }
+ 
+diff --git a/src/Library/IPCServerPrivate.cpp b/src/Library/IPCServerPrivate.cpp
+index 548a7261..b976f025 100644
+--- a/src/Library/IPCServerPrivate.cpp
++++ b/src/Library/IPCServerPrivate.cpp
+@@ -311,7 +311,7 @@ namespace usbguard
+     message->SerializeToString(&payload);
+     struct qb_ipc_response_header hdr;
+     struct iovec iov[2];
+-    hdr.id = QB_IPC_MSG_USER_START + IPC::messageTypeNameToNumber(message->GetTypeName());
++    hdr.id = QB_IPC_MSG_USER_START + IPC::messageTypeNameToNumber(std::string(message->GetTypeName()));
+     hdr.size = sizeof hdr + payload.size();
+     hdr.error = 0;
+     iov[0].iov_base = &hdr;
+@@ -555,7 +555,7 @@ namespace usbguard
+     std::string payload;
+     message->SerializeToString(&payload);
+     struct qb_ipc_response_header hdr = { };
+-    hdr.id = QB_IPC_MSG_USER_START + IPC::messageTypeNameToNumber(message->GetTypeName());
++    hdr.id = QB_IPC_MSG_USER_START + IPC::messageTypeNameToNumber(std::string(message->GetTypeName()));
+     hdr.size = sizeof hdr + payload.size();
+     hdr.error = 0;
+     struct iovec iov[2];
+@@ -563,7 +563,7 @@ namespace usbguard
+     iov[0].iov_len = sizeof hdr;
+     iov[1].iov_base = (void*)payload.data();
+     iov[1].iov_len = payload.size();
+-    qbIPCBroadcastData(iov, 2, messageTypeNameToAccessControlSection(message->GetTypeName()));
++    qbIPCBroadcastData(iov, 2, messageTypeNameToAccessControlSection(std::string(message->GetTypeName())));
+     iov[0].iov_base = nullptr;
+     iov[1].iov_base = nullptr;
+   }
+diff --git a/src/Library/IPCServerPrivate.hpp b/src/Library/IPCServerPrivate.hpp
+index 25f9ac38..3b3dcc51 100644
+--- a/src/Library/IPCServerPrivate.hpp
++++ b/src/Library/IPCServerPrivate.hpp
+@@ -134,7 +134,7 @@ namespace usbguard
+     void registerHandler(MessageHandler::HandlerType method, IPCServer::AccessControl::Section section,
+       IPCServer::AccessControl::Privilege privilege)
+     {
+-      const uint32_t type_number = IPC::messageTypeNameToNumber(T::default_instance().GetTypeName());
++      const uint32_t type_number = IPC::messageTypeNameToNumber(std::string(T::default_instance().GetTypeName()));
+       _handlers.emplace(type_number, MessageHandler::create<T>(*this, method, section, privilege));
+     }
+ 
diff --git a/community/valhalla/APKBUILD b/community/valhalla/APKBUILD
index f972d3e..eb6a93c 100644
--- a/community/valhalla/APKBUILD
+++ b/community/valhalla/APKBUILD
@@ -1,7 +1,7 @@
 maintainer="Bart Ribbers <bribbers@disroot.org>"
 pkgname=valhalla
 pkgver=3.1.4
-pkgrel=22
+pkgrel=23
 pkgdesc="Open Source Routing Engine for OpenStreetMap"
 url="https://valhalla.readthedocs.io/"
 # riscv64 blocked by luajit
diff --git a/main/mosh/APKBUILD b/main/mosh/APKBUILD
index de385bf..291412a 100644
--- a/main/mosh/APKBUILD
+++ b/main/mosh/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Francesco Colista <fcolista@alpinelinux.org>
 pkgname=mosh
 pkgver=1.4.0
-pkgrel=14
+pkgrel=15
 pkgdesc="Mobile shell surviving disconnects with local echo and line editing"
 url="https://mosh.org"
 arch="all"
diff --git a/main/protobuf-c/APKBUILD b/main/protobuf-c/APKBUILD
index e87a4de..2742356 100644
--- a/main/protobuf-c/APKBUILD
+++ b/main/protobuf-c/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
 pkgname=protobuf-c
 pkgver=1.5.2
-pkgrel=0
+pkgrel=1
 pkgdesc="Protocol Buffers implementation in C"
 url="https://github.com/protobuf-c/protobuf-c"
 arch="all"
diff --git a/testing/compiz/APKBUILD b/testing/compiz/APKBUILD
index b258042..4c136b4 100644
--- a/testing/compiz/APKBUILD
+++ b/testing/compiz/APKBUILD
@@ -1,7 +1,7 @@
 # Maintainer: leso-kn <info@lesosoftware.com>
 pkgname=compiz
 pkgver=0.9.14.2
-pkgrel=10
+pkgrel=11
 pkgdesc="OpenGL window and compositing manager"
 url="http://www.compiz.org/"
 arch="all"
diff --git a/testing/criu/APKBUILD b/testing/criu/APKBUILD
index 5399bae..aeca9ba 100644
--- a/testing/criu/APKBUILD
+++ b/testing/criu/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Stuart Cardall <developer@it-offshore.co.uk>
 pkgname=criu
 pkgver=3.19
-pkgrel=2
+pkgrel=3
 pkgdesc="Process tree checkpoint/restore utility"
 url="https://criu.org"
 arch="x86_64"
diff --git a/testing/kismet/APKBUILD b/testing/kismet/APKBUILD
index 065aa13..3fd149d 100644
--- a/testing/kismet/APKBUILD
+++ b/testing/kismet/APKBUILD
@@ -4,7 +4,7 @@ pkgname=kismet
 _pkgver=2023-07-R1
 pkgver=${_pkgver/-R/.}
 pkgver=0.${pkgver/-/}
-pkgrel=7
+pkgrel=8
 pkgdesc="Wireless network and device detector"
 url="https://www.kismetwireless.net/"
 arch="all"
diff --git a/testing/mir/APKBUILD b/testing/mir/APKBUILD
index 81f884a..fe1ea10 100644
--- a/testing/mir/APKBUILD
+++ b/testing/mir/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Luca Weiss <luca@lucaweiss.eu>
 pkgname=mir
 pkgver=2.20.2
-pkgrel=0
+pkgrel=1
 pkgdesc="Mir Display Server"
 url="https://mir-server.io"
 arch="all"
diff --git a/testing/onnxruntime/APKBUILD b/testing/onnxruntime/APKBUILD
index a0dc781..c1afe0b 100644
--- a/testing/onnxruntime/APKBUILD
+++ b/testing/onnxruntime/APKBUILD
@@ -1,7 +1,7 @@
 maintainer="leso-kn <info@lesosoftware.com>"
 pkgname=onnxruntime
 pkgver=1.22.0
-pkgrel=0
+pkgrel=1
 pkgdesc="Cross-platform, high performance ML inferencing and training accelerator"
 url="https://onnxruntime.ai/"
 # x86, s390x, loongarch64: fails to build
@@ -34,6 +34,7 @@ subpackages="
 	"
 source="$pkgname-$pkgver.tar.gz::https://github.com/microsoft/onnxruntime/archive/refs/tags/v$pkgver.tar.gz
 	flatbuffers-locale.patch.noauto
+	fix-eigen.patch
 	no-execinfo.patch
 	system.patch
 	0001-Remove-MATH_NO_EXCEPT-macro.patch
@@ -53,6 +54,7 @@ build() {
 	cmake -S cmake -B build -G Ninja \
 		-DCMAKE_BUILD_TYPE=None \
 		-DCMAKE_INSTALL_PREFIX=/usr \
+		-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
 		-DBUILD_ONNX_PYTHON=ON \
 		-Donnxruntime_BUILD_SHARED_LIB=ON \
 		-Donnxruntime_BUILD_UNIT_TESTS="$(want_check && echo ON || echo OFF)" \
@@ -99,6 +101,7 @@ py3() {
 sha512sums="
 32310215a3646c64ff5e0a309c3049dbe02ae9dd5bda8c89796bd9f86374d0f43443aed756b941d9af20ef1758bb465981ac517bbe8ac33661a292d81c59b152  onnxruntime-1.22.0.tar.gz
 52e1c1e4a69543b3b9bcfabbd3f6202edf309f56be129668ad226e7ad7c2f1220ce169f9957fbc1fc4f3cae5abc984f8fe5ea4990fb2ebb033d7111d1d298f95  flatbuffers-locale.patch.noauto
+66af5dbd2b85e1653ab5216847e56f1618c198656864c47453d820db5dcdbb2b150a025176807d6f15829c346e36f468c6b24b9bcbf40cff18b657023d82bbd1  fix-eigen.patch
 976913be90b0a82ff1ba403f46306ef4e5939bb05296227c99d3c4a609dd00f5750f9b1c6c30d20791ff0724c1bcffc6aa498eac906257aefefc6f35df796fe0  no-execinfo.patch
 a8d51449f1f8bebab42e05603826d381da8b08ffee16fd987bef95d52ace50f7970116d03212fd945c412f501c1ede092f1777d87a7b3a2a7851e2883774c653  system.patch
 8f6129686fc3f241df174b8a86e957642e0b0a3a9e2ef15bea98ddea199291b444b6b39e4f56f8a7a2e64ee03113ad140fd664a7b6f33a8a9e23c40e883e08df  0001-Remove-MATH_NO_EXCEPT-macro.patch
diff --git a/testing/onnxruntime/fix-eigen.patch b/testing/onnxruntime/fix-eigen.patch
new file mode 100644
index 0000000..dd25a87
--- /dev/null
+++ b/testing/onnxruntime/fix-eigen.patch
@@ -0,0 +1,30 @@
+From f57db79743c4d1a3553aa05cf95bcd10966030e6 Mon Sep 17 00:00:00 2001
+From: Prathik Rao <prathik.rao@gmail.com>
+Date: Thu, 29 May 2025 16:09:09 -0700
+Subject: [PATCH] change dependency from gitlab eigen to github eigen-mirror
+ (#24884)
+
+Fix for https://github.com/microsoft/onnxruntime/issues/24861
+
+---------
+
+Co-authored-by: Yulong Wang <7679871+fs-eire@users.noreply.github.com>
+---
+ cmake/deps.txt | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/cmake/deps.txt b/cmake/deps.txt
+index 728241840f723..6e045f6dcdc9d 100644
+--- a/cmake/deps.txt
++++ b/cmake/deps.txt
+@@ -22,7 +22,9 @@ dlpack;https://github.com/dmlc/dlpack/archive/5c210da409e7f1e51ddf445134a4376fdb
+ # it contains changes on top of 3.4.0 which are required to fix build issues.
+ # Until the 3.4.1 release this is the best option we have.
+ # Issue link: https://gitlab.com/libeigen/eigen/-/issues/2744
+-eigen;https://gitlab.com/libeigen/eigen/-/archive/1d8b82b0740839c0de7f1242a3585e3390ff5f33/eigen-1d8b82b0740839c0de7f1242a3585e3390ff5f33.zip;5ea4d05e62d7f954a46b3213f9b2535bdd866803
++# Moved to github mirror to avoid gitlab issues.
++# Issue link: https://github.com/bazelbuild/bazel-central-registry/issues/4355
++eigen;https://github.com/eigen-mirror/eigen/archive/1d8b82b0740839c0de7f1242a3585e3390ff5f33/eigen-1d8b82b0740839c0de7f1242a3585e3390ff5f33.zip;05b19b49e6fbb91246be711d801160528c135e34
+ flatbuffers;https://github.com/google/flatbuffers/archive/refs/tags/v23.5.26.zip;59422c3b5e573dd192fead2834d25951f1c1670c
+ fp16;https://github.com/Maratyszcza/FP16/archive/0a92994d729ff76a58f692d3028ca1b64b145d91.zip;b985f6985a05a1c03ff1bb71190f66d8f98a1494
+ fxdiv;https://github.com/Maratyszcza/FXdiv/archive/63058eff77e11aa15bf531df5dd34395ec3017c8.zip;a5658f4036402dbca7cebee32be57fb8149811e1
diff --git a/testing/otpclient/APKBUILD b/testing/otpclient/APKBUILD
index c96c3d6..96a4759 100644
--- a/testing/otpclient/APKBUILD
+++ b/testing/otpclient/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Michał Polański <michal@polanski.me>
 pkgname=otpclient
 pkgver=4.0.2
-pkgrel=0
+pkgrel=1
 pkgdesc="Simple GTK+ client for managing TOTP and HOTP"
 url="https://github.com/paolostivanin/OTPClient"
 license="GPL-3.0-or-later"
diff --git a/testing/pulsar-client-cpp/APKBUILD b/testing/pulsar-client-cpp/APKBUILD
index 84011cb..db6f00f 100644
--- a/testing/pulsar-client-cpp/APKBUILD
+++ b/testing/pulsar-client-cpp/APKBUILD
@@ -1,8 +1,8 @@
 # Contributor: Alex Yam <alex@alexyam.com>
 # Maintainer: Alex Yam <alex@alexyam.com>
 pkgname=pulsar-client-cpp
-pkgver=3.1.2
-pkgrel=7
+pkgver=3.7.1
+pkgrel=0
 pkgdesc="Apache Pulsar C++ client"
 url="https://github.com/apache/pulsar-client-cpp"
 arch="all"
@@ -24,8 +24,8 @@ makedepends="
 	zstd-dev
 	"
 source="$pkgname-$pkgver.tar.gz::https://github.com/apache/pulsar-client-cpp/archive/refs/tags/v$pkgver.tar.gz
-	cxx17.patch
 	no-werror.patch
+	protobuf-31.patch
 	"
 
 build() {
@@ -34,6 +34,7 @@ build() {
 	fi
 	cmake -B build -G Ninja \
 		-DCMAKE_INSTALL_PREFIX=/usr \
+		-DCMAKE_CXX_STANDARD=17 \
 		-DBUILD_SHARED_LIBS=ON \
 		-DCMAKE_BUILD_TYPE=Release \
 		-DCMAKE_SKIP_BUILD_RPATH=ON \
@@ -49,9 +50,9 @@ build() {
 package() {
 	DESTDIR="$pkgdir" cmake --install build
 }
-
+# 20591a050403d9e49a75c52cba1555a3568d7ec85212d051808ac6e308d8adcc846df25e2f0d14dda0a75ccadace346e9b95a13508b31c31be661a96cbf9e2f4  cxx17.patch
 sha512sums="
-9339eab337ab08a7ba3c52d96e017bc11fbfd604e65a9820d78348ed4adba285d3380738a063311b0cb542d17299b2770936f8a2be6d5cb8fa85b0e339bd6f0b  pulsar-client-cpp-3.1.2.tar.gz
-20591a050403d9e49a75c52cba1555a3568d7ec85212d051808ac6e308d8adcc846df25e2f0d14dda0a75ccadace346e9b95a13508b31c31be661a96cbf9e2f4  cxx17.patch
-6a757a63ae380de1d9b068a8567aad34a90cf8caa01dee48091d1cfa6c5584cd619392896c4bbfa4695e3def5934e87b5cdcf363217a0020f1784e36a976f08d  no-werror.patch
+771b46c5aac55d56873e2a0e2219452fdd50e0c18414a6b12ae6a81213a44b0dd0ec8a7ff8c3c01e77c918eaba423b2f8313ba9d1a81dc02ba9ad5952bb4032f  pulsar-client-cpp-3.7.1.tar.gz
+82f616be35251bc73cdb2ebb6919433a5ea3774b789b8de701478a8b7a3a17c3c6a2e820a757190b066bd8a1b9c16e29f68c28fe65a165a111cd48abe5eb778e  no-werror.patch
+96e7cd2824600648704a51fff763a1a4b97fa1c2c770d9b8263c10dbc0842c0d475fcb19db99cbc4542349c0c76d1db4c144062aa2c0613e7b33835762f50f1a  protobuf-31.patch
 "
diff --git a/testing/pulsar-client-cpp/no-werror.patch b/testing/pulsar-client-cpp/no-werror.patch
index c7b7c88..9a47096 100644
--- a/testing/pulsar-client-cpp/no-werror.patch
+++ b/testing/pulsar-client-cpp/no-werror.patch
@@ -1,8 +1,8 @@
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7db05c4..0e346e5 100644
+index b004653..b239baf 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -100,7 +100,7 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+@@ -88,7 +88,7 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
      # ?? Don't have this to test with
  else() # GCC or Clang are mostly compatible:
      # Turn on warnings and enable warnings-as-errors:
diff --git a/testing/pulsar-client-cpp/protobuf-31.patch b/testing/pulsar-client-cpp/protobuf-31.patch
new file mode 100644
index 0000000..e26409e
--- /dev/null
+++ b/testing/pulsar-client-cpp/protobuf-31.patch
@@ -0,0 +1,15 @@
+diff --git a/lib/ProtobufNativeSchema.cc b/lib/ProtobufNativeSchema.cc
+index 5cddf74..4bf45cf 100644
+--- a/lib/ProtobufNativeSchema.cc
++++ b/lib/ProtobufNativeSchema.cc
+@@ -39,8 +39,8 @@ SchemaInfo createProtobufNativeSchema(const google::protobuf::Descriptor* descri
+     }
+ 
+     const auto fileDescriptor = descriptor->file();
+-    const std::string rootMessageTypeName = descriptor->full_name();
+-    const std::string rootFileDescriptorName = fileDescriptor->name();
++    const std::string rootMessageTypeName = std::string(descriptor->full_name());
++    const std::string rootFileDescriptorName = std::string(fileDescriptor->name());
+ 
+     FileDescriptorSet fileDescriptorSet;
+     internalCollectFileDescriptors(fileDescriptor, fileDescriptorSet);
diff --git a/testing/py3-arcus/APKBUILD b/testing/py3-arcus/APKBUILD
index d3643d7..039a872 100644
--- a/testing/py3-arcus/APKBUILD
+++ b/testing/py3-arcus/APKBUILD
@@ -3,7 +3,7 @@
 pkgname=py3-arcus
 # Needs to be upgraded in sync with libarcus
 pkgver=5.3.0
-pkgrel=4
+pkgrel=5
 pkgdesc="Python bindings for libarcus"
 url="https://github.com/Ultimaker/pyArcus"
 arch="all"
@@ -20,6 +20,7 @@ options="!check" # package doesn't provide any tests
 source="$pkgname-$pkgver.tar.gz::https://github.com/Ultimaker/pyArcus/archive/refs/tags/$pkgver.tar.gz
 	cmake.patch
 	cmake-helpers.patch
+	protobuf-31.patch
 	pyproject.patch"
 builddir="$srcdir/pyArcus-$pkgver"
 
@@ -38,5 +39,6 @@ sha512sums="
 d4a114994fa3e3156eae95dde58df13237b8bb0571a1219d6dee6b6338fd65f911f27887d6ab32b7a3cb32bc45ca6c25147e7c2d246cb0707326b88246abfbcd  py3-arcus-5.3.0.tar.gz
 f14e55cd31c13051981f26364e34da8c94e8eb5227b1cfd6fe44b9f97b5a4dcf6142a1751fa62eb0514a47583e6ec2d51dc253f23cf72c3fe6a1cb5dca136f21  cmake.patch
 de75b985607feae0a9c511742915814e9c3d4bc467183f010ccc334ce4d0d952b6ff86020360b78558c4738cc03cf62c386b44ed76bcec12075c4a93dd03eeb7  cmake-helpers.patch
+84f44ce7add8f397d7a6ad108531ba42206cc02497b1a0c922412f178736f524c4770a8a1b5afa4c1ac14a64e3c699483e2d91a87dcbc11276521b8aa5c2f6a0  protobuf-31.patch
 ef593230d5c78da8ba0fc6ea83225c4543857de1837d3151c45e59ffd7c98063b8f97f25d01c15b6a8f90c26c919206f9f7fa26c9650117f4ce7be49ebca876f  pyproject.patch
 "
diff --git a/testing/py3-arcus/protobuf-31.patch b/testing/py3-arcus/protobuf-31.patch
new file mode 100644
index 0000000..212c5bd
--- /dev/null
+++ b/testing/py3-arcus/protobuf-31.patch
@@ -0,0 +1,13 @@
+diff --git a/src/PythonMessage.cpp b/src/PythonMessage.cpp
+index dd0fe90..efe582d 100644
+--- a/src/PythonMessage.cpp
++++ b/src/PythonMessage.cpp
+@@ -32,7 +32,7 @@ PythonMessage::~PythonMessage()
+ 
+ std::string Arcus::PythonMessage::getTypeName() const
+ {
+-    return _message->GetTypeName();
++    return std::string(_message->GetTypeName());
+ }
+ 
+ MessagePtr Arcus::PythonMessage::getSharedMessage() const
diff --git a/testing/turn-rs/APKBUILD b/testing/turn-rs/APKBUILD
index af88291..b6a7701 100644
--- a/testing/turn-rs/APKBUILD
+++ b/testing/turn-rs/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Matthias Ahouansou <matthias@ahouansou.cz>
 pkgname=turn-rs
 pkgver=3.4.0
-pkgrel=0
+pkgrel=1
 pkgdesc="A pure rust implemented turn server"
 url="https://github.com/mycrl/turn-rs"
 arch="all"
diff --git a/testing/vector/APKBUILD b/testing/vector/APKBUILD
index 272f8e0..4f876e1 100644
--- a/testing/vector/APKBUILD
+++ b/testing/vector/APKBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Hoang Nguyen <folliekazetani@protonmail.com>
 pkgname=vector
 pkgver=0.47.0
-pkgrel=0
+pkgrel=1
 pkgdesc="High-performance observability data pipeline"
 url="https://vector.dev/"
 # loongarch64: blocked by nix
diff --git a/testing/yosys/APKBUILD b/testing/yosys/APKBUILD
index 5679586..3070093 100644
--- a/testing/yosys/APKBUILD
+++ b/testing/yosys/APKBUILD
@@ -2,7 +2,7 @@
 # Maintainer: Dominika Liberda <ja@sdomi.pl>
 pkgname=yosys
 pkgver=0.42
-pkgrel=0
+pkgrel=1
 pkgdesc="Yosys Open SYnthesis Suite"
 url="https://yosyshq.net"
 # doesn't build
