summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2026-08-13 03:15:17 +0000
committerCoprDistGit <infra@openeuler.org>2026-08-13 03:15:17 +0000
commite1f205daf9fc6805fbdbfb0778c1bb2342ad14e9 (patch)
tree3fbf04b3ed4bb1d6bfdfeb8652a8b514cb7ec484
parent751879ada14a54de7983c3936d4b517c7f74db2c (diff)
automatic import of pocoopeneuler25.09
-rw-r--r--.gitignore1
-rw-r--r--0001-Fix-XML-compilation-due-to-new-methods-being-guarded.patch26
-rw-r--r--0002-Disable-tests-that-fail-in-koji.patch78
-rw-r--r--0003-Test-Use-12-byte-IV-for-aes-256-gcm.patch44
-rw-r--r--100-poco-uos-add-sw_64-support.patch46
-rw-r--r--poco-deal-with-libsuffix.patch12
-rw-r--r--poco.spec494
-rw-r--r--sources1
8 files changed, 702 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..0b8dd83 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/poco-1.12.4.tar.gz
diff --git a/0001-Fix-XML-compilation-due-to-new-methods-being-guarded.patch b/0001-Fix-XML-compilation-due-to-new-methods-being-guarded.patch
new file mode 100644
index 0000000..1945f65
--- /dev/null
+++ b/0001-Fix-XML-compilation-due-to-new-methods-being-guarded.patch
@@ -0,0 +1,26 @@
+From 25136270c5d6b8fa6c2238df640c812465aae1f4 Mon Sep 17 00:00:00 2001
+From: Scott Talbert <swt@techie.net>
+Date: Mon, 24 Oct 2022 21:21:31 -0500
+Subject: [PATCH 1/2] Fix XML compilation due to new methods being guarded by
+ XML_DTD
+
+---
+ XML/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/XML/CMakeLists.txt b/XML/CMakeLists.txt
+index 123657a0c..b99f4f376 100644
+--- a/XML/CMakeLists.txt
++++ b/XML/CMakeLists.txt
+@@ -51,7 +51,7 @@ target_include_directories(XML
+
+ if(POCO_UNBUNDLED)
+ target_link_libraries(XML PUBLIC EXPAT::EXPAT)
+- target_compile_definitions(XML PUBLIC POCO_UNBUNDLED)
++ target_compile_definitions(XML PUBLIC POCO_UNBUNDLED XML_DTD)
+ else()
+ if(WIN32)
+ #TODO: Is XML_STATIC only required with Windows? What does it do?
+--
+2.38.1
+
diff --git a/0002-Disable-tests-that-fail-in-koji.patch b/0002-Disable-tests-that-fail-in-koji.patch
new file mode 100644
index 0000000..39c665e
--- /dev/null
+++ b/0002-Disable-tests-that-fail-in-koji.patch
@@ -0,0 +1,78 @@
+From c9f4f36dfbbfc205953a45db2a783f0bae85e173 Mon Sep 17 00:00:00 2001
+From: Robin Lee <cheeselee@fedoraproject.org>
+Date: Sun, 21 Aug 2022 01:10:54 +0800
+Subject: [PATCH 2/2] Disable tests that fail in koji
+
+---
+ Foundation/testsuite/src/FileTest.cpp | 1 -
+ Net/testsuite/src/DatagramSocketTest.cpp | 3 ++-
+ Net/testsuite/src/ICMPSocketTest.cpp | 1 -
+ Net/testsuite/src/RawSocketTest.cpp | 1 -
+ NetSSL_OpenSSL/testsuite/src/HTTPSClientSessionTest.cpp | 1 -
+ 5 files changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/Foundation/testsuite/src/FileTest.cpp b/Foundation/testsuite/src/FileTest.cpp
+index df7d6f7c2..85d507332 100644
+--- a/Foundation/testsuite/src/FileTest.cpp
++++ b/Foundation/testsuite/src/FileTest.cpp
+@@ -639,7 +639,6 @@ CppUnit::Test* FileTest::suite()
+ CppUnit_addTest(pSuite, FileTest, testCreateFile);
+ CppUnit_addTest(pSuite, FileTest, testFileAttributes1);
+ CppUnit_addTest(pSuite, FileTest, testFileAttributes2);
+- CppUnit_addTest(pSuite, FileTest, testFileAttributes3);
+ CppUnit_addTest(pSuite, FileTest, testCompare);
+ CppUnit_addTest(pSuite, FileTest, testSwap);
+ CppUnit_addTest(pSuite, FileTest, testSize);
+diff --git a/Net/testsuite/src/DatagramSocketTest.cpp b/Net/testsuite/src/DatagramSocketTest.cpp
+index e765de29c..8407c8229 100644
+--- a/Net/testsuite/src/DatagramSocketTest.cpp
++++ b/Net/testsuite/src/DatagramSocketTest.cpp
+@@ -827,7 +827,8 @@ CppUnit::Test* DatagramSocketTest::suite()
+ CppUnit_addTest(pSuite, DatagramSocketTest, testReuseAddressPortWildcard);
+ CppUnit_addTest(pSuite, DatagramSocketTest, testReuseAddressPortSpecific);
+ #if (POCO_OS != POCO_OS_FREE_BSD) // works only with local net bcast and very randomly
+- CppUnit_addTest(pSuite, DatagramSocketTest, testBroadcast);
++ // Failed on ppc64le
++ //CppUnit_addTest(pSuite, DatagramSocketTest, testBroadcast);
+ #endif
+ CppUnit_addTest(pSuite, DatagramSocketTest, testGatherScatterFixed);
+ CppUnit_addTest(pSuite, DatagramSocketTest, testGatherScatterVariable);
+diff --git a/Net/testsuite/src/ICMPSocketTest.cpp b/Net/testsuite/src/ICMPSocketTest.cpp
+index 195b58f2a..ff1767b3e 100644
+--- a/Net/testsuite/src/ICMPSocketTest.cpp
++++ b/Net/testsuite/src/ICMPSocketTest.cpp
+@@ -117,7 +117,6 @@ CppUnit::Test* ICMPSocketTest::suite()
+ CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ICMPSocketTest");
+
+ CppUnit_addTest(pSuite, ICMPSocketTest, testSendToReceiveFrom);
+- CppUnit_addTest(pSuite, ICMPSocketTest, testAssign);
+ CppUnit_addTest(pSuite, ICMPSocketTest, testMTU);
+
+ return pSuite;
+diff --git a/Net/testsuite/src/RawSocketTest.cpp b/Net/testsuite/src/RawSocketTest.cpp
+index 036bf40a1..461f24d7a 100644
+--- a/Net/testsuite/src/RawSocketTest.cpp
++++ b/Net/testsuite/src/RawSocketTest.cpp
+@@ -128,7 +128,6 @@ CppUnit::Test* RawSocketTest::suite()
+
+ CppUnit_addTest(pSuite, RawSocketTest, testEchoIPv4);
+ CppUnit_addTest(pSuite, RawSocketTest, testSendToReceiveFromIPv4);
+- CppUnit_addTest(pSuite, RawSocketTest, testEchoIPv4Move);
+
+ return pSuite;
+ }
+diff --git a/NetSSL_OpenSSL/testsuite/src/HTTPSClientSessionTest.cpp b/NetSSL_OpenSSL/testsuite/src/HTTPSClientSessionTest.cpp
+index f487fb6e1..2cedbf402 100644
+--- a/NetSSL_OpenSSL/testsuite/src/HTTPSClientSessionTest.cpp
++++ b/NetSSL_OpenSSL/testsuite/src/HTTPSClientSessionTest.cpp
+@@ -459,7 +459,6 @@ CppUnit::Test* HTTPSClientSessionTest::suite()
+ CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostLargeChunked);
+ CppUnit_addTest(pSuite, HTTPSClientSessionTest, testPostLargeChunkedKeepAlive);
+ CppUnit_addTest(pSuite, HTTPSClientSessionTest, testKeepAlive);
+- CppUnit_addTest(pSuite, HTTPSClientSessionTest, testInterop);
+ CppUnit_addTest(pSuite, HTTPSClientSessionTest, testProxy);
+ CppUnit_addTest(pSuite, HTTPSClientSessionTest, testCachedSession);
+ CppUnit_addTest(pSuite, HTTPSClientSessionTest, testUnknownContentLength);
+--
+2.38.1
+
diff --git a/0003-Test-Use-12-byte-IV-for-aes-256-gcm.patch b/0003-Test-Use-12-byte-IV-for-aes-256-gcm.patch
new file mode 100644
index 0000000..501ffc2
--- /dev/null
+++ b/0003-Test-Use-12-byte-IV-for-aes-256-gcm.patch
@@ -0,0 +1,44 @@
+From b33e02d25316fdbef94da086b54541ce9e5fb699 Mon Sep 17 00:00:00 2001
+From: Matej Kenda <matejken@gmail.com>
+Date: Wed, 3 Jan 2024 20:13:57 +0100
+Subject: [PATCH] fix(test): Use 96-bit IV with aes-256-gcm to fix (#4347):
+ I/O error: error:1C800066:Provider routines::cipher operation failed
+
+Backport of upstream commit b33e02d25316fdbef94da086b54541ce9e5fb699
+(included in pocoproject/poco release 1.13.1).
+
+Upstream commit also removed an earlier mitigation comment added in
+commit 111fe90dd91ad6dcf2a487b69706e90132d97c44; that earlier comment
+never landed in the 1.12.x line, so this backport only carries the
+IV-size change and the new explanatory comment.
+
+The CI workflow change in the upstream commit is dropped: it removed
+the macOS-only EXCLUDE_TESTS entry that was added in 111fe90d, but
+neither change applies to the 1.12.x line.
+
+This change avoids the failing path entirely on OpenSSL 3 by using the
+GCM-recommended 12-byte IV (matches EVP_CIPHER_iv_length for aes-256-gcm),
+so the broken init order in CryptoTransformImpl is not exercised.
+The underlying init-order issue in CipherImpl.cpp remains and is being
+discussed with upstream separately.
+---
+ Crypto/testsuite/src/CryptoTest.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/Crypto/testsuite/src/CryptoTest.cpp b/Crypto/testsuite/src/CryptoTest.cpp
+--- a/Crypto/testsuite/src/CryptoTest.cpp
++++ b/Crypto/testsuite/src/CryptoTest.cpp
+@@ -213,7 +213,10 @@ void CryptoTest::testEncryptDecryptGCM()
+ {
+ CipherKey key("aes-256-gcm");
+
+- CipherKey::ByteVec iv(20, 213);
++ // 96-bit (12 byte) IV is recommended for usage with GCM.
++ // https://crypto.stackexchange.com/questions/41601/aes-gcm-recommended-iv-size-why-12-bytes
++
++ CipherKey::ByteVec iv(12, 213);
+ key.setIV(iv);
+
+ Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(key);
+--
+2.49.0
diff --git a/100-poco-uos-add-sw_64-support.patch b/100-poco-uos-add-sw_64-support.patch
new file mode 100644
index 0000000..cbcf965
--- /dev/null
+++ b/100-poco-uos-add-sw_64-support.patch
@@ -0,0 +1,46 @@
+From aa9fd90d003bab1d37ef5613929bc71276e0decb Mon Sep 17 00:00:00 2001
+From: root <root@localhost.localdomain>
+Date: Fri, 13 Dec 2024 14:42:26 +0800
+Subject: [PATCH] add sw_64 support
+
+---
+ Foundation/include/Poco/Platform.h | 4 ++++
+ Foundation/src/utils.h | 2 +-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/Foundation/include/Poco/Platform.h b/Foundation/include/Poco/Platform.h
+index 192d6c7..3dd37ef 100644
+--- a/Foundation/include/Poco/Platform.h
++++ b/Foundation/include/Poco/Platform.h
+@@ -137,11 +137,15 @@
+ #define POCO_ARCH_RISCV64 0x10
+ #define POCO_ARCH_RISCV32 0x11
+ #define POCO_ARCH_LOONGARCH64 0x12
++#define POCO_ARCH_SW_64 0x12
+
+
+ #if defined(__ALPHA) || defined(__alpha) || defined(__alpha__) || defined(_M_ALPHA)
+ #define POCO_ARCH POCO_ARCH_ALPHA
+ #define POCO_ARCH_LITTLE_ENDIAN 1
++#elif defined(__sw_64__)
++ #define POCO_ARCH POCO_ARCH_SW_64
++ #define POCO_ARCH_LITTLE_ENDIAN 1
+ #elif defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(EMSCRIPTEN)
+ #define POCO_ARCH POCO_ARCH_IA32
+ #define POCO_ARCH_LITTLE_ENDIAN 1
+diff --git a/Foundation/src/utils.h b/Foundation/src/utils.h
+index c9b6c00..5f567db 100644
+--- a/Foundation/src/utils.h
++++ b/Foundation/src/utils.h
+@@ -137,7 +137,7 @@ int main(int argc, char** argv) {
+ defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
+ defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
+ defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
+- defined(__SH4__) || defined(__alpha__) || \
++ defined(__SH4__) || defined(__alpha__) || defined(__sw_64__) ||\
+ defined(_MIPS_ARCH_MIPS32R2) || defined(__ARMEB__) ||\
+ defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \
+ (defined(__riscv) && defined(__riscv_float_abi_double)) || defined(__e2k__) || \
+--
+2.33.0
+
diff --git a/poco-deal-with-libsuffix.patch b/poco-deal-with-libsuffix.patch
new file mode 100644
index 0000000..09540f7
--- /dev/null
+++ b/poco-deal-with-libsuffix.patch
@@ -0,0 +1,12 @@
+--- poco-poco-1.12.4-release/CMakeLists.txt.orig 2025-08-23 10:35:09.617111500 +0800
++++ poco-poco-1.12.4-release/CMakeLists.txt 2025-08-23 10:38:06.806080300 +0800
+@@ -52,6 +52,9 @@
+
+ # Enable standard installation directories
+ include(GNUInstallDirs)
++if("${LIB_SUFFIX}" STREQUAL "" AND NOT ${CMAKE_INSTALL_LIBDIR} STREQUAL "lib")
++ STRING(REPLACE "lib" "" LIB_SUFFIX ${CMAKE_INSTALL_LIBDIR})
++endif("${LIB_SUFFIX}" STREQUAL "" AND NOT ${CMAKE_INSTALL_LIBDIR} STREQUAL "lib")
+
+ # Include some common macros to simpilfy the Poco CMake files
+ include(PocoMacros)
diff --git a/poco.spec b/poco.spec
new file mode 100644
index 0000000..4dcf06b
--- /dev/null
+++ b/poco.spec
@@ -0,0 +1,494 @@
+%global _bundled_pcre2_version 10.40
+# read from libversion
+%global libversion 94
+
+%global cmake_build_dir cmake-build
+%global cmake_debug_dir cmake-debug
+
+# build without tests on s390 (runs out of memory during linking due the 2 GB address space)
+%ifnarch s390
+%bcond_without tests
+%endif
+
+%bcond_without samples
+
+# mongodb still available only on little endian arches
+%ifarch aarch64 %{arm} %{ix86} x86_64 ppc64le
+%bcond_without mongodb
+%endif
+
+Name: poco
+Version: 1.12.4
+Release: 5
+Summary: C++ class libraries for network-centric applications
+
+License: BSL-1.0
+URL: https://pocoproject.org
+
+Source: https://github.com/pocoproject/poco/archive/poco-%{version}-release/poco-%{version}.tar.gz
+
+# Fix XML compilation due to new methods being guarded by XML_DTD
+Patch: 0001-Fix-XML-compilation-due-to-new-methods-being-guarded.patch
+# Disable the tests that will fail under Koji (mostly network)
+Patch: 0002-Disable-tests-that-fail-in-koji.patch
+# Backport upstream b33e02d2: use 96-bit IV in testEncryptDecryptGCM so it passes under OpenSSL 3
+Patch: 0003-Test-Use-12-byte-IV-for-aes-256-gcm.patch
+# Deal with upcoming LIB_SUFFIX removal
+Patch: poco-deal-with-libsuffix.patch
+#add by uos
+Patch100: 100-poco-uos-add-sw_64-support.patch
+#end
+
+BuildRequires: make
+BuildRequires: cmake
+BuildRequires: gcc-c++
+BuildRequires: openssl-devel
+BuildRequires: libiodbc-devel
+BuildRequires: mariadb-connector-c-devel
+BuildRequires: zlib-devel
+BuildRequires: pcre2-devel
+BuildRequires: sqlite-devel
+BuildRequires: expat-devel
+BuildRequires: libtool-ltdl-devel
+
+# We build poco to unbundle as much as possible, but unfortunately, it uses
+# some internal functions of pcre so there are a few files from pcre that are
+# still bundled. See https://github.com/pocoproject/poco/issues/120.
+Provides: bundled(pcre2) = %{_bundled_pcre2_version}
+
+%description
+The POCO C++ Libraries (POCO stands for POrtable COmponents)
+are open source C++ class libraries that simplify and accelerate the
+development of network-centric, portable applications in C++. The
+POCO C++ Libraries are built strictly on standard ANSI/ISO C++,
+including the standard library.
+
+%prep
+%autosetup -p1 -n %{name}-%{name}-%{version}-release
+
+# Fix libdir for Fedora
+/bin/sed -i.orig -e 's|$(INSTALLDIR)/lib\b|$(INSTALLDIR)/%{_lib}|g' Makefile
+# Disable rpath
+/bin/sed -i.orig -e 's|SHAREDOPT_LINK = -Wl,-rpath,$(LIBPATH)|SHAREDOPT_LINK =|g' build/config/Linux
+/bin/sed -i.orig -e 's|"Poco/zlib.h"|<zlib.h>|g' Zip/src/ZipStream.cpp
+/bin/sed -i.orig -e 's|#endif|#define POCO_UNBUNDLED 1\n\n#endif|g' Foundation/include/Poco/Config.h
+cmp build/config/Linux{,.orig} && exit 1
+
+rm -v Foundation/src/MSG00001.bin
+rm -v Foundation/include/Poco/zconf.h
+rm -v Foundation/include/Poco/zlib.h
+rm -v Foundation/src/adler32.c
+rm -v Foundation/src/compress.c
+rm -v Foundation/src/crc32.c
+rm -v Foundation/src/crc32.h
+rm -v Foundation/src/deflate.c
+rm -v Foundation/src/deflate.h
+rm -v Foundation/src/gzguts.h
+rm -v PDF/src/gzio.c
+rm -v Foundation/src/infback.c
+rm -v Foundation/src/inffast.c
+rm -v Foundation/src/inffast.h
+rm -v Foundation/src/inffixed.h
+rm -v Foundation/src/inflate.c
+rm -v Foundation/src/inflate.h
+rm -v Foundation/src/inftrees.c
+rm -v Foundation/src/inftrees.h
+rm -v Foundation/src/trees.c
+rm -v Foundation/src/trees.h
+rm -v Foundation/src/zconf.h
+rm -v Foundation/src/zlib.h
+rm -v Foundation/src/zutil.c
+rm -v Foundation/src/zutil.h
+
+# PCRE files that can't be removed due to still being used in
+# Foundation/src/Unicode.cpp:
+mv -v Foundation/src/pcre2_{config.h,internal.h,ucp.h,intmodedep.h,ucptables.c,tables.c,ucd.c} .
+rm -v Foundation/src/pcre2*
+mv -v pcre2_* Foundation/src
+
+rm -v Data/SQLite/src/sqlite3.h
+rm -v Data/SQLite/src/sqlite3.c
+rm -v XML/include/Poco/XML/expat.h
+rm -v XML/include/Poco/XML/expat_external.h
+rm -v XML/src/ascii.h
+rm -v XML/src/asciitab.h
+rm -v XML/src/expat_config.h
+rm -v XML/src/iasciitab.h
+rm -v XML/src/internal.h
+rm -v XML/src/latin1tab.h
+rm -v XML/src/nametab.h
+rm -v XML/src/utf8tab.h
+rm -v XML/src/xmlparse.cpp
+rm -v XML/src/xmlrole.c
+rm -v XML/src/xmlrole.h
+rm -v XML/src/xmltok.c
+rm -v XML/src/xmltok.h
+rm -v XML/src/xmltok_impl.c
+rm -v XML/src/xmltok_impl.h
+rm -v XML/src/xmltok_ns.c
+
+%build
+%if %{with tests}
+ %global poco_tests -DENABLE_TESTS=ON
+%endif
+%if %{without samples}
+ %global poco_samples --no-samples
+%endif
+%if %{without mongodb}
+ %global poco_mongodb -DENABLE_MONGODB=OFF
+%endif
+
+%define _vpath_builddir %{cmake_build_dir}
+%cmake -DPOCO_UNBUNDLED=ON %{?poco_tests} %{?poco_mongodb} -DENABLE_REDIS=OFF -DODBC_INCLUDE_DIR=%{_includedir}/libiodbc
+%cmake_build
+
+%define _vpath_builddir %{cmake_debug_dir}
+%cmake -DPOCO_UNBUNDLED=ON %{?poco_tests} %{?poco_mongodb} -DENABLE_REDIS=OFF -DODBC_INCLUDE_DIR=%{_includedir}/libiodbc -DCMAKE_BUILD_TYPE=Debug
+%cmake_build
+
+%install
+%define _vpath_builddir %{cmake_build_dir}
+%cmake_install
+
+%define _vpath_builddir %{cmake_debug_dir}
+%cmake_install
+# conflict with arc
+rm -v %{buildroot}%{_bindir}/arc
+
+%check
+%if %{with tests}
+export POCO_BASE="$(pwd)"
+%define _vpath_builddir %{cmake_build_dir}
+%ifarch s390x
+# NetSSL test timed out on s390x
+%ctest -V %{?_smp_mflags} -E "MongoDB|Redis|DataMySQL|DataODBC|NetSSL"
+%else
+%ctest -V %{?_smp_mflags} -E "MongoDB|Redis|DataMySQL|DataODBC"
+%endif
+%endif
+
+# -----------------------------------------------------------------------------
+%package foundation
+Summary: The Foundation POCO component
+
+%description foundation
+This package contains the Foundation component of POCO. (POCO is a set
+of C++ class libraries for network-centric applications.)
+%files foundation
+%license LICENSE
+%{_libdir}/libPocoFoundation.so.%{libversion}
+
+
+# -----------------------------------------------------------------------------
+%package xml
+Summary: The XML POCO component
+
+%description xml
+This package contains the XML component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files xml
+%{_libdir}/libPocoXML.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package util
+Summary: The Util POCO component
+
+%description util
+This package contains the Util component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files util
+%{_libdir}/libPocoUtil.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package net
+Summary: The Net POCO component
+
+%description net
+This package contains the Net component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files net
+%{_libdir}/libPocoNet.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package crypto
+Summary: The Crypto POCO component
+
+%description crypto
+This package contains the Crypto component of POCO. (POCO is a set of
+C++ class libraries for network-centric applications.)
+%files crypto
+%{_libdir}/libPocoCrypto.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package netssl
+Summary: The NetSSL POCO component
+
+%description netssl
+This package contains the NetSSL component of POCO. (POCO is a set of
+C++ class libraries for network-centric applications.)
+%files netssl
+%{_libdir}/libPocoNetSSL.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package data
+Summary: The Data POCO component
+
+%description data
+This package contains the Data component of POCO. (POCO is a set of
+C++ class libraries for network-centric applications.)
+%files data
+%{_libdir}/libPocoData.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package sqlite
+Summary: The Data/SQLite POCO component
+
+%description sqlite
+This package contains the Data/SQLite component of POCO. (POCO is a set
+of C++ class libraries for network-centric applications.)
+%files sqlite
+%{_libdir}/libPocoDataSQLite.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package odbc
+Summary: The Data/ODBC POCO component
+
+%description odbc
+This package contains the Data/ODBC component of POCO. (POCO is a set
+of C++ class libraries for network-centric applications.)
+%files odbc
+%{_libdir}/libPocoDataODBC.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package mysql
+Summary: The Data/MySQL POCO component
+
+%description mysql
+This package contains the Data/MySQL component of POCO. (POCO is a set
+of C++ class libraries for network-centric applications.)
+%files mysql
+%{_libdir}/libPocoDataMySQL.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package zip
+Summary: The Zip POCO component
+
+%description zip
+This package contains the Zip component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files zip
+%{_libdir}/libPocoZip.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package json
+Summary: The JSON POCO component
+
+%description json
+This package contains the JSON component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files json
+%{_libdir}/libPocoJSON.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%if %{with mongodb}
+%package mongodb
+Summary: The MongoDB POCO component
+
+%description mongodb
+This package contains the MongoDB component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files mongodb
+%{_libdir}/libPocoMongoDB.so.%{libversion}
+%endif
+
+# -----------------------------------------------------------------------------
+%package pagecompiler
+Summary: The PageCompiler POCO component
+
+%description pagecompiler
+This package contains the PageCompiler component of POCO. (POCO is a
+set of C++ class libraries for network-centric applications.)
+%files pagecompiler
+%{_bindir}/cpspc
+%{_bindir}/f2cpsp
+
+# -----------------------------------------------------------------------------
+%package encodings
+Summary: The Encodings POCO component
+
+%description encodings
+This package contains the Encodings component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files encodings
+%{_libdir}/libPocoEncodings.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package jwt
+Summary: The JWT POCO component
+
+%description jwt
+This package contains the JWT component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files jwt
+%{_libdir}/libPocoJWT.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package activerecord
+Summary: The ActiveRecord POCO component
+
+%description activerecord
+This package contains the ActiveRecord component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+%files activerecord
+%{_libdir}/libPocoActiveRecord.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package prometheus
+Summary: The Prometheus POCO component
+
+%description prometheus
+This package contains the Prometheus component of POCO. (POCO is a set of C++
+class libraries for network-centric applications.)
+
+%files prometheus
+%{_libdir}/libPocoPrometheus.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package debug
+Summary: Debug builds of the POCO libraries
+
+%description debug
+This package contains the debug builds of the POCO libraries for
+application testing purposes.
+%files debug
+%{_libdir}/libPocoFoundationd.so.%{libversion}
+%{_libdir}/libPocoXMLd.so.%{libversion}
+%{_libdir}/libPocoUtild.so.%{libversion}
+%{_libdir}/libPocoNetd.so.%{libversion}
+%{_libdir}/libPocoCryptod.so.%{libversion}
+%{_libdir}/libPocoNetSSLd.so.%{libversion}
+%{_libdir}/libPocoDatad.so.%{libversion}
+%{_libdir}/libPocoDataSQLited.so.%{libversion}
+%{_libdir}/libPocoDataODBCd.so.%{libversion}
+%{_libdir}/libPocoDataMySQLd.so.%{libversion}
+%{_libdir}/libPocoZipd.so.%{libversion}
+%{_libdir}/libPocoJSONd.so.%{libversion}
+%if %{with mongodb}
+%{_libdir}/libPocoMongoDBd.so.%{libversion}
+%endif
+%{_libdir}/libPocoEncodingsd.so.%{libversion}
+%{_libdir}/libPocoJWTd.so.%{libversion}
+%{_libdir}/libPocoActiveRecordd.so.%{libversion}
+%{_libdir}/libPocoPrometheusd.so.%{libversion}
+
+# -----------------------------------------------------------------------------
+%package devel
+Summary: Headers for developing programs that will use POCO
+
+Requires: poco-debug%{?_isa} = %{version}-%{release}
+Requires: poco-foundation%{?_isa} = %{version}-%{release}
+Requires: poco-xml%{?_isa} = %{version}-%{release}
+Requires: poco-util%{?_isa} = %{version}-%{release}
+Requires: poco-net%{?_isa} = %{version}-%{release}
+Requires: poco-crypto%{?_isa} = %{version}-%{release}
+Requires: poco-netssl%{?_isa} = %{version}-%{release}
+Requires: poco-data%{?_isa} = %{version}-%{release}
+Requires: poco-sqlite%{?_isa} = %{version}-%{release}
+Requires: poco-odbc%{?_isa} = %{version}-%{release}
+Requires: poco-mysql%{?_isa} = %{version}-%{release}
+Requires: poco-zip%{?_isa} = %{version}-%{release}
+Requires: poco-json%{?_isa} = %{version}-%{release}
+%if %{with mongodb}
+Requires: poco-mongodb%{?_isa} = %{version}-%{release}
+%endif
+Requires: poco-pagecompiler%{?_isa} = %{version}-%{release}
+Requires: poco-encodings%{?_isa} = %{version}-%{release}
+Requires: poco-jwt%{?_isa} = %{version}-%{release}
+Requires: poco-activerecord%{?_isa} = %{version}-%{release}
+
+Requires: zlib-devel
+Requires: pcre2-devel
+Requires: expat-devel
+Requires: openssl-devel
+
+%description devel
+The POCO C++ Libraries (POCO stands for POrtable COmponents)
+are open source C++ class libraries that simplify and accelerate the
+development of network-centric, portable applications in C++. The
+POCO C++ Libraries are built strictly on standard ANSI/ISO C++,
+including the standard library.
+
+This package contains the header files needed for developing
+POCO applications.
+
+%files devel
+%doc CHANGELOG CODE_OF_CONDUCT.md CONTRIBUTING.md CONTRIBUTORS README*
+%{_includedir}/Poco
+%{_libdir}/libPocoFoundation.so
+%{_libdir}/libPocoFoundationd.so
+%{_libdir}/libPocoXML.so
+%{_libdir}/libPocoXMLd.so
+%{_libdir}/libPocoUtil.so
+%{_libdir}/libPocoUtild.so
+%{_libdir}/libPocoNet.so
+%{_libdir}/libPocoNetd.so
+%{_libdir}/libPocoCrypto.so
+%{_libdir}/libPocoCryptod.so
+%{_libdir}/libPocoNetSSL.so
+%{_libdir}/libPocoNetSSLd.so
+%{_libdir}/libPocoData.so
+%{_libdir}/libPocoDatad.so
+%{_libdir}/libPocoDataSQLite.so
+%{_libdir}/libPocoDataSQLited.so
+%{_libdir}/libPocoDataODBC.so
+%{_libdir}/libPocoDataODBCd.so
+%{_libdir}/libPocoDataMySQL.so
+%{_libdir}/libPocoDataMySQLd.so
+%{_libdir}/libPocoZip.so
+%{_libdir}/libPocoZipd.so
+%{_libdir}/libPocoJSON.so
+%{_libdir}/libPocoJSONd.so
+%if %{with mongodb}
+%{_libdir}/libPocoMongoDB.so
+%{_libdir}/libPocoMongoDBd.so
+%endif
+%{_libdir}/libPocoEncodings.so
+%{_libdir}/libPocoEncodingsd.so
+%{_libdir}/libPocoJWT.so
+%{_libdir}/libPocoJWTd.so
+%{_libdir}/libPocoActiveRecord.so
+%{_libdir}/libPocoActiveRecordd.so
+%{_libdir}/libPocoPrometheus.so
+%{_libdir}/libPocoPrometheusd.so
+%{_libdir}/cmake/Poco
+
+# -----------------------------------------------------------------------------
+%package doc
+Summary: The POCO API reference documentation
+
+%description doc
+The POCO C++ Libraries (POCO stands for POrtable COmponents)
+are open source C++ class libraries that simplify and accelerate the
+development of network-centric, portable applications in C++. The
+POCO C++ Libraries are built strictly on standard ANSI/ISO C++,
+including the standard library.
+
+This is the complete POCO class library reference documentation in
+HTML format.
+
+%files doc
+%doc README NEWS LICENSE CONTRIBUTORS CHANGELOG doc/*
+
+%changelog
+* Thu Aug 13 2026 kuyan_kubuds <kuyan@kubuds.cn> - 1.12.4-5
+- Backport upstream b33e02d2 (issue #4347): use 96-bit IV in testEncryptDecryptGCM
+ so it passes under OpenSSL 3
+
+* Sun Oct 12 2025 Funda Wang <fundawang@yeah.net> - 1.12.4-4
+- fix build with ningja
+
+* Sat Aug 23 2025 Funda Wang <fundawang@yeah.net> - 1.12.4-3
+- deal with upcoming LIB_SUFFIX removal
+
+* Thu Feb 27 2025 zhangshaoning <zhangshaoning@uniontech.com> - 1.12.4-2
+- Add sw_64 support
diff --git a/sources b/sources
new file mode 100644
index 0000000..a4161f9
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+0ca5d1e2f2a5e8ba2f0a83c2e6df374a poco-1.12.4.tar.gz