git: 65f5909c8083 - main - devel/qca: Update to 2.3.10

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Fri, 14 Mar 2025 05:14:29 UTC
The branch main has been updated by jhale:

URL: https://cgit.FreeBSD.org/ports/commit/?id=65f5909c808320dc6767351534d9c965fc2f0561

commit 65f5909c808320dc6767351534d9c965fc2f0561
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2025-03-14 05:05:33 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2025-03-14 05:14:23 +0000

    devel/qca: Update to 2.3.10
    
    Convert TEST option to cmake:testing after 8cb78e3688bf.
    
    Fix build with BOTAN option enabled if security/botan2 is also
    installed. [1]
    
    Fixes:          16577400db6b devel/qca: switch to botan3 instead of deprecated botan2 [1]
---
 devel/qca/Makefile                                 | 20 ++++++++--------
 devel/qca/distinfo                                 |  6 ++---
 .../files/patch-plugins_qca-botan_CMakeLists.txt   | 27 ++++++++++++++++++++++
 .../qca/files/patch-plugins_qca-ossl_qca-ossl.cpp  | 26 ++++++++++-----------
 4 files changed, 52 insertions(+), 27 deletions(-)

diff --git a/devel/qca/Makefile b/devel/qca/Makefile
index bd103c4e7520..ffeb2a585be9 100644
--- a/devel/qca/Makefile
+++ b/devel/qca/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	qca
-DISTVERSION=	2.3.9
-PORTREVISION=	1
+DISTVERSION=	2.3.10
 CATEGORIES=	devel
 MASTER_SITES=	KDE/stable/qca/${PORTVERSION}
 PKGNAMESUFFIX=	-${FLAVOR}
@@ -18,10 +17,12 @@ RUN_DEPENDS=	${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss
 FLAVORS=	qt5 qt6
 FLAVOR?=	qt5
 
-USES=		cmake compiler:c++17-lang localbase:ldflags pkgconfig \
+USES=		cmake:testing compiler:c++20-lang localbase:ldflags pkgconfig \
 		qt:${FLAVOR:S/qt//} tar:xz
 USE_LDCONFIG=	yes
-_USE_QT_qt5=	core buildtools:build qmake:build
+_USE_QT_qt5=	core \
+		buildtools:build qmake:build \
+		network:test testlib:test
 _USE_QT_qt6=	5compat base
 USE_QT=		${_USE_QT_${FLAVOR}}
 
@@ -30,6 +31,9 @@ CMAKE_ARGS=	-DBUILD_PLUGINS=none \
 		-DQCA_FEATURE_INSTALL_DIR=${QT_MKSPECDIR}/features \
 		-DQCA_SUFFIX=${FLAVOR} \
 		-D${FLAVOR:tu}:BOOL=TRUE
+CMAKE_OFF=	BUILD_TESTS
+CMAKE_TESTING_ON=	BUILD_TESTS
+
 CONFIGURE_ENV=	QC_CERTSTORE_PATH=${LOCALBASE}/share/certs/ca-root-nss.crt
 
 _PLIST_SUB_qt5=	QT5_ONLY=""
@@ -38,7 +42,7 @@ PLIST_SUB=	SHLIB_VER=${PORTVERSION} \
 		QCA_QT_VERSION=${FLAVOR} \
 		${_PLIST_SUB_${FLAVOR}}
 
-OPTIONS_DEFINE=	BOTAN GCRYPT GNUPG LOGGER NSS OPENSSL PKCS11 SASL SOFTSTORE TEST
+OPTIONS_DEFINE=	BOTAN GCRYPT GNUPG LOGGER NSS OPENSSL PKCS11 SASL SOFTSTORE
 OPTIONS_DEFAULT=GNUPG OPENSSL
 OPTIONS_SUB=	yes
 
@@ -73,10 +77,4 @@ SASL_CMAKE_ON=		-DWITH_cyrus-sasl_PLUGIN=yes
 SOFTSTORE_DESC=		Simple persistent certificate store
 SOFTSTORE_CMAKE_ON=	-DWITH_softstore_PLUGIN=yes
 
-_TEST_USE_qt5=		QT=network:build,testlib:build
-_TEST_USE_qt6=		# Network and Test included in base
-TEST_USE=		${_TEST_USE_${FLAVOR}}
-TEST_CMAKE_BOOL=	BUILD_TESTS
-TEST_TEST_TARGET=	test
-
 .include <bsd.port.mk>
diff --git a/devel/qca/distinfo b/devel/qca/distinfo
index a42f599aad16..91100a4e4e25 100644
--- a/devel/qca/distinfo
+++ b/devel/qca/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1719288772
-SHA256 (qca-2.3.9.tar.xz) = c555d5298cdd7b6bafe2b1f96106f30cfa543a23d459d50c8a91eac33c476e4e
-SIZE (qca-2.3.9.tar.xz) = 765256
+TIMESTAMP = 1741916166
+SHA256 (qca-2.3.10.tar.xz) = 1c5b722da93d559365719226bb121c726ec3c0dc4c67dea34f1e50e4e0d14a02
+SIZE (qca-2.3.10.tar.xz) = 764844
diff --git a/devel/qca/files/patch-plugins_qca-botan_CMakeLists.txt b/devel/qca/files/patch-plugins_qca-botan_CMakeLists.txt
new file mode 100644
index 000000000000..a0d966149996
--- /dev/null
+++ b/devel/qca/files/patch-plugins_qca-botan_CMakeLists.txt
@@ -0,0 +1,27 @@
+Prefer botan-3 and prevent linking to botan-2, as security/botan2 is currently
+marked for removal. [1] Although we depend on libbotan-3.so for the BOTAN
+option, previous code would link to libbotan-2.so if installed.
+
+[1] https://cgit.freebsd.org/ports/commit/?id=eb1217e8e983cae63d99af35ac6de924b56691ab
+
+--- plugins/qca-botan/CMakeLists.txt.orig	2025-03-09 12:09:03 UTC
++++ plugins/qca-botan/CMakeLists.txt
+@@ -1,13 +1,10 @@ find_package(PkgConfig REQUIRED)
+ find_package(PkgConfig REQUIRED)
+ 
+-pkg_check_modules(BOTAN IMPORTED_TARGET botan-2)
+-if(NOT BOTAN_FOUND)
+-  pkg_check_modules(BOTAN IMPORTED_TARGET botan-3)
+-  if(BOTAN_FOUND)
+-    set(CMAKE_CXX_STANDARD 20)
+-    set(CMAKE_CXX_STANDARD_REQUIRED ON)
+-    set(CMAKE_CXX_EXTENSIONS OFF)
+-  endif()
++pkg_check_modules(BOTAN IMPORTED_TARGET botan-3)
++if(BOTAN_FOUND)
++  set(CMAKE_CXX_STANDARD 20)
++  set(CMAKE_CXX_STANDARD_REQUIRED ON)
++  set(CMAKE_CXX_EXTENSIONS OFF)
+ endif()
+ 
+ if(WITH_botan_PLUGIN STREQUAL "yes" AND NOT BOTAN_FOUND)
diff --git a/devel/qca/files/patch-plugins_qca-ossl_qca-ossl.cpp b/devel/qca/files/patch-plugins_qca-ossl_qca-ossl.cpp
index fb1e6745eaec..10548649b6bd 100644
--- a/devel/qca/files/patch-plugins_qca-ossl_qca-ossl.cpp
+++ b/devel/qca/files/patch-plugins_qca-ossl_qca-ossl.cpp
@@ -3,11 +3,11 @@ Patch from OpenBSD rsadowski@
 LibreSSL 3.0.x support from Stefan Strogin <steils@gentoo.org>
 
 Index: plugins/qca-ossl/qca-ossl.cpp
---- plugins/qca-ossl/qca-ossl.cpp.orig	2021-02-04 10:29:44 UTC
+--- plugins/qca-ossl/qca-ossl.cpp.orig	2025-03-09 12:09:03 UTC
 +++ plugins/qca-ossl/qca-ossl.cpp
-@@ -41,7 +41,13 @@
- #include <openssl/ssl.h>
- #include <openssl/x509v3.h>
+@@ -45,7 +45,13 @@
+ #include <openssl/provider.h>
+ #endif
  
 +#ifndef RSA_F_RSA_OSSL_PRIVATE_DECRYPT
 +#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT RSA_F_RSA_EAY_PRIVATE_DECRYPT
@@ -19,7 +19,7 @@ Index: plugins/qca-ossl/qca-ossl.cpp
  
  using namespace QCA;
  
-@@ -1239,6 +1245,7 @@ class opensslPbkdf2Context : public KDFContext (public
+@@ -1262,6 +1268,7 @@ class opensslPbkdf2Context : public KDFContext (protec
  protected:
  };
  
@@ -27,7 +27,7 @@ Index: plugins/qca-ossl/qca-ossl.cpp
  class opensslHkdfContext : public HKDFContext
  {
      Q_OBJECT
-@@ -1271,6 +1278,7 @@ class opensslHkdfContext : public HKDFContext (public)
+@@ -1294,6 +1301,7 @@ class opensslHkdfContext : public HKDFContext (public)
          return out;
      }
  };
@@ -35,7 +35,7 @@ Index: plugins/qca-ossl/qca-ossl.cpp
  
  class opensslHMACContext : public MACContext
  {
-@@ -4951,7 +4959,11 @@ class MyTLSContext : public TLSContext (public)
+@@ -5004,7 +5012,11 @@ class MyTLSContext : public TLSContext (public)
          case TLS::TLS_v1:
              ctx = SSL_CTX_new(TLS_client_method());
              SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION);
@@ -47,7 +47,7 @@ Index: plugins/qca-ossl/qca-ossl.cpp
              break;
          case TLS::DTLS_v1:
          default:
-@@ -4972,7 +4984,11 @@ class MyTLSContext : public TLSContext (public)
+@@ -5025,7 +5037,11 @@ class MyTLSContext : public TLSContext (public)
          QStringList cipherList;
          for (int i = 0; i < sk_SSL_CIPHER_num(sk); ++i) {
              const SSL_CIPHER *thisCipher = sk_SSL_CIPHER_value(sk, i);
@@ -59,7 +59,7 @@ Index: plugins/qca-ossl/qca-ossl.cpp
          }
          sk_SSL_CIPHER_free(sk);
  
-@@ -5345,7 +5361,11 @@ class MyTLSContext : public TLSContext (public)
+@@ -5398,7 +5414,11 @@ class MyTLSContext : public TLSContext (public)
              sessInfo.version = TLS::TLS_v1;
          }
  
@@ -71,9 +71,9 @@ Index: plugins/qca-ossl/qca-ossl.cpp
  
          sessInfo.cipherMaxBits = SSL_get_cipher_bits(ssl, &(sessInfo.cipherBits));
  
-@@ -6629,7 +6649,9 @@ class opensslProvider : public Provider (public)
- #endif
-         list += QStringLiteral("pbkdf1(sha1)");
+@@ -6705,7 +6725,9 @@ class opensslProvider : public Provider (public)
+         }
+         list += QStringLiteral("pkcs12");
          list += QStringLiteral("pbkdf2(sha1)");
 +#ifndef LIBRESSL_VERSION_NUMBER
          list += QStringLiteral("hkdf(sha256)");
@@ -81,7 +81,7 @@ Index: plugins/qca-ossl/qca-ossl.cpp
          list += QStringLiteral("pkey");
          list += QStringLiteral("dlgroup");
          list += QStringLiteral("rsa");
-@@ -6698,8 +6720,10 @@ class opensslProvider : public Provider (public)
+@@ -6755,8 +6777,10 @@ class opensslProvider : public Provider (public)
  #endif
          else if (type == QLatin1String("pbkdf2(sha1)"))
              return new opensslPbkdf2Context(this, type);