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

Closes: https://bugs.gentoo.org/956773
Signed-off-by: Azamat H. Hackimov <azamat.hackimov@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@gentoo.org>
This commit is contained in:
Azamat H. Hackimov
2025-06-08 15:33:49 +03:00
committed by Sam James
parent 9c94a830f1
commit 258feeb0a0
2 changed files with 166 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
From https://github.com/nih-at/libzip/pull/494
From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
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

View File

@@ -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
}