commit:     258feeb0a0831138d5f5f4c4b0749c5cf0b03c3c
Author:     Azamat H. Hackimov <azamat.hackimov <AT> gmail <DOT> com>
AuthorDate: Sun Jun  8 12:33:49 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Jun  9 02:21:29 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=258feeb0

dev-libs/libzip: migrate to use mbedtls:3

Closes: https://bugs.gentoo.org/956773
Signed-off-by: Azamat H. Hackimov <azamat.hackimov <AT> gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/42311
Closes: https://github.com/gentoo/gentoo/pull/42311
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../libzip/files/libzip-1.11.4-mbedtls-3.patch     | 80 ++++++++++++++++++++
 dev-libs/libzip/libzip-1.11.4-r2.ebuild            | 86 ++++++++++++++++++++++
 2 files changed, 166 insertions(+)

diff --git a/dev-libs/libzip/files/libzip-1.11.4-mbedtls-3.patch 
b/dev-libs/libzip/files/libzip-1.11.4-mbedtls-3.patch
new file mode 100644
index 000000000000..20a8b08f531a
--- /dev/null
+++ b/dev-libs/libzip/files/libzip-1.11.4-mbedtls-3.patch
@@ -0,0 +1,80 @@
+From https://github.com/nih-at/libzip/pull/494
+From: "Azamat H. Hackimov" <[email protected]>
+Date: Wed, 28 May 2025 22:01:25 +0300
+Subject: [PATCH] Use MbedTLS 3.6
+
+Older versions of MbedTLS reached EOL and not supported anymore.
+MbedTLS 3.6 provides own configuration module for CMake, but some
+distributions may not iclude it into mbedtls package, so it is
+reasonable to keep own FindMbedTLS for compatibility.
+
+Changed MbedTLS::MbedTLS target to MbedTLS::mbedcrypto to follow
+upstream naming.
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -50,7 +50,7 @@ if(ENABLE_GNUTLS)
+   find_package(GnuTLS)
+ endif()
+ if(ENABLE_MBEDTLS)
+-  find_package(MbedTLS 1.0)
++  find_package(MbedTLS 3.6)
+ endif()
+ if(ENABLE_OPENSSL)
+   find_package(OpenSSL)
+@@ -269,7 +269,7 @@ elseif (OPENSSL_FOUND)
+ elseif (GNUTLS_FOUND AND NETTLE_FOUND)
+   set(HAVE_CRYPTO 1)
+   set(HAVE_GNUTLS 1)
+-elseif (MBEDTLS_FOUND)
++elseif (MbedTLS_FOUND)
+   set(HAVE_CRYPTO 1)
+   set(HAVE_MBEDTLS 1)
+ endif()
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -478,7 +478,6 @@ if(LIBZIP_DO_INSTALL)
+   install(FILES
+     ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindNettle.cmake
+     ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Findzstd.cmake
+-    ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindMbedTLS.cmake
+     DESTINATION
+     ${CMAKE_INSTALL_LIBDIR}/cmake/libzip/modules
+   )
+--- a/cmake/FindMbedTLS.cmake
++++ b/cmake/FindMbedTLS.cmake
+@@ -41,7 +41,7 @@ Imported Targets
+ 
+ This module provides the following imported targets, if found:
+ 
+-``MbedTLS::MbedTLS``
++``MbedTLS::mbedcrypto``
+   The Mbed TLS library
+ 
+ Result Variables
+@@ -126,9 +126,9 @@ if(MbedTLS_FOUND)
+ #  set(MbedTLS_DEFINITIONS ${PC_MbedTLS_CFLAGS_OTHER})
+ endif()
+ 
+-if(MbedTLS_FOUND AND NOT TARGET MbedTLS::MbedTLS)
+-  add_library(MbedTLS::MbedTLS UNKNOWN IMPORTED)
+-  set_target_properties(MbedTLS::MbedTLS PROPERTIES
++if(MbedTLS_FOUND AND NOT TARGET MbedTLS::mbedcrypto)
++  add_library(MbedTLS::mbedcrypto UNKNOWN IMPORTED)
++  set_target_properties(MbedTLS::mbedcrypto PROPERTIES
+     IMPORTED_LOCATION "${MbedTLS_LIBRARY}"
+ #    INTERFACE_COMPILE_OPTIONS "${PC_MbedTLS_CFLAGS_OTHER}"
+     INTERFACE_INCLUDE_DIRECTORIES "${MbedTLS_INCLUDE_DIR}"
+--- a/lib/CMakeLists.txt
++++ b/lib/CMakeLists.txt
+@@ -167,7 +167,7 @@ elseif(HAVE_OPENSSL)
+   target_link_libraries(zip PRIVATE OpenSSL::Crypto)
+ elseif(HAVE_MBEDTLS)
+   target_sources(zip PRIVATE zip_crypto_mbedtls.c)
+-  target_link_libraries(zip PRIVATE MbedTLS::MbedTLS)
++  target_link_libraries(zip PRIVATE MbedTLS::mbedcrypto)
+ endif()
+ 
+ if(HAVE_CRYPTO)
+-- 
+2.49.0
+

diff --git a/dev-libs/libzip/libzip-1.11.4-r2.ebuild 
b/dev-libs/libzip/libzip-1.11.4-r2.ebuild
new file mode 100644
index 000000000000..165ac7562331
--- /dev/null
+++ b/dev-libs/libzip/libzip-1.11.4-r2.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CMAKE_REMOVE_MODULES_LIST=( FindMbedTLS )
+
+inherit cmake flag-o-matic
+
+DESCRIPTION="Library for manipulating zip archives"
+HOMEPAGE="https://nih.at/libzip/";
+SRC_URI="https://www.nih.at/libzip/${P}.tar.xz";
+
+LICENSE="BSD"
+SLOT="0/5"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv 
~sparc ~x86"
+IUSE="bzip2 gnutls lzma mbedtls ssl test tools zstd"
+REQUIRED_USE="test? ( ssl tools )"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+       sys-libs/zlib
+       bzip2? ( app-arch/bzip2:= )
+       lzma? ( app-arch/xz-utils )
+       ssl? (
+               gnutls? (
+                       dev-libs/nettle:=
+                       >=net-libs/gnutls-3.6.5:=
+               )
+               !gnutls? (
+                       mbedtls? ( net-libs/mbedtls:3= )
+                       !mbedtls? ( dev-libs/openssl:= )
+               )
+       )
+       zstd? ( >=app-arch/zstd-1.4.0:= )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="test? ( dev-util/nihtest )"
+
+PATCHES=(
+       "${FILESDIR}/libzip-1.11.4-mbedtls-3.patch"
+)
+
+src_configure() {
+       append-lfs-flags
+       local mycmakeargs=(
+               -DBUILD_DOC=ON
+               -DBUILD_OSSFUZZ=OFF
+               -DBUILD_EXAMPLES=OFF # nothing is installed
+               -DENABLE_COMMONCRYPTO=OFF # not in tree
+               -DENABLE_BZIP2=$(usex bzip2)
+               -DENABLE_LZMA=$(usex lzma)
+               -DENABLE_ZSTD=$(usex zstd)
+               -DBUILD_REGRESS=$(usex test)
+               -DBUILD_TOOLS=$(usex tools)
+       )
+
+       if use ssl; then
+               if use gnutls; then
+                       mycmakeargs+=(
+                               -DENABLE_GNUTLS=$(usex gnutls)
+                               -DENABLE_MBEDTLS=OFF
+                               -DENABLE_OPENSSL=OFF
+                       )
+               elif use mbedtls; then
+                       mycmakeargs+=(
+                               -DENABLE_GNUTLS=OFF
+                               -DENABLE_MBEDTLS=$(usex mbedtls)
+                               -DENABLE_OPENSSL=OFF
+                       )
+               else
+                       mycmakeargs+=(
+                               -DENABLE_GNUTLS=OFF
+                               -DENABLE_MBEDTLS=OFF
+                               -DENABLE_OPENSSL=ON
+                       )
+               fi
+       else
+               mycmakeargs+=(
+                       -DENABLE_GNUTLS=OFF
+                       -DENABLE_MBEDTLS=OFF
+                       -DENABLE_OPENSSL=OFF
+               )
+       fi
+       cmake_src_configure
+}

Reply via email to