diff options
author | V3n3RiX <venerix@koprulu.sector> | 2022-10-02 07:12:21 +0100 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2022-10-02 07:12:21 +0100 |
commit | e374e165c2ee372e9c6d10860ea6ef47f180f6b2 (patch) | |
tree | 3c2c37c3e4e272c01ca3062d0f2428478f1f83e6 /sys-libs/minizip-ng | |
parent | b0bab803d2f1c96af5760374e2684f9a85591916 (diff) |
gentoo auto-resync : 02:10:2022 - 07:12:21
Diffstat (limited to 'sys-libs/minizip-ng')
5 files changed, 304 insertions, 0 deletions
diff --git a/sys-libs/minizip-ng/Manifest b/sys-libs/minizip-ng/Manifest new file mode 100644 index 000000000000..ae6ee5bf9d19 --- /dev/null +++ b/sys-libs/minizip-ng/Manifest @@ -0,0 +1,5 @@ +AUX minizip-ng-3.0.6-Switch-getrandom-and-arc4random_buf-usage-order.patch 2040 BLAKE2B 679a4c8878b06eb28352942e6b0f8285daf0f2d1cc3315071e3592f10fcfaaa11caf1b67e4a73c83201a85bf63750bbf7d3d0d4d7c2a5b2dd1b317eb5beac9f6 SHA512 b1913d03a49931b929435372b2e07d63ec13bf0513ac39549612514443efcd114d143848e6d0a6de751f1ed8499ecae4ecbfb0fce579e6e66549ea90f862417d +AUX minizip-ng-3.0.6-test-temporary.patch 6922 BLAKE2B 65bc4803aec94e56d7d868096320bac78f425485cff9c0d8d7214e5321e136e239100c292356be69e638f34bba6104bbca95e3db7e8b9f71ccec5e60cab92510 SHA512 e52ebc658cf1bc6df0fcff481562fe61527fbae6fd4a1477ef0a9185e967d9eb0ea7678e6f330429f993fae97a639baf82df672fc1a71275c7f3d7f1c83c8596 +DIST minizip-ng-3.0.6.tar.gz 642138 BLAKE2B 3faddeef035da0417671ef5578b90ad9ec9a69f376d04fb8095f93e27e3276931ef432e179613e841e754ff6e915e8c631eeaa48795aaa87773e45465bd14afa SHA512 92aaad655e7dbec60ab8075435ccdc72314f75f0516aa4a16094215df2b14b108c2b49cdf6c876e396f0f43f52ad63f52ce7db2e119efe25c55b8b873bef9d4f +EBUILD minizip-ng-3.0.6-r1.ebuild 2493 BLAKE2B 8a8e100a651d7557535991fc3c93dea319a21f95384625d30130c8b29a3c895193f054f65506bb88be56b80f18465a8adce7fd5ea2e2bc643811da5607facb8b SHA512 a0b261602e0fe1d4f0dc2a620d677c4d4f9cf1df88eec77e640f2eb08e327e88cd8fa2cb1b63171223fa92c9dd6854d8b3934a39e75026be1d04dba634ff4db3 +MISC metadata.xml 638 BLAKE2B 8a74cb73b53a8fa34aa5ad31ff7770fe47a6224161b6cce692d837004ffcbad15de7d318b3eb9dfa6db0f6f83eae0ed6238df19c27a82daeb7d958113f96478f SHA512 596d4f19cd3680b59ba2f94a8ebedb1fa84f5ca9e3d5125c76b5e787cd8b2e560152bf8151bfe140d03beae6a244b7a87210cc211c8493e0766852c776eef721 diff --git a/sys-libs/minizip-ng/files/minizip-ng-3.0.6-Switch-getrandom-and-arc4random_buf-usage-order.patch b/sys-libs/minizip-ng/files/minizip-ng-3.0.6-Switch-getrandom-and-arc4random_buf-usage-order.patch new file mode 100644 index 000000000000..92db9c05b5d1 --- /dev/null +++ b/sys-libs/minizip-ng/files/minizip-ng-3.0.6-Switch-getrandom-and-arc4random_buf-usage-order.patch @@ -0,0 +1,68 @@ +https://github.com/zlib-ng/minizip-ng/pull/651 + +From 1be6ea22e127a99786aefd2896e08bab43ad1333 Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Sun, 2 Oct 2022 01:39:17 +0100 +Subject: [PATCH] Switch getrandom() and arc4random_buf() usage order + +We need to match the order of inclusions at the top of the file +otherwise we might end up trying to use arc4random_buf() when +available (because HAVE_ARC4RANODM_BUF is set) even though +we hit HAVE_GETRANDOM first above and only included +<sys/random.h> because of it. + +Besides, if getrandom() is available, we should really prefer +it anyway. + +Fixes an implicit function declaration: +``` +minizip-ng-3.0.6/mz_os_posix.c:124:5: error: implicit declaration of function 'arc4random_buf' [-Werror=implicit-function-declaration] +``` +--- a/mz_os_posix.c ++++ b/mz_os_posix.c +@@ -117,7 +117,22 @@ void mz_os_utf8_string_delete(uint8_t **string) { + + /***************************************************************************/ + +-#if defined(HAVE_ARC4RANDOM_BUF) ++#if defined(HAVE_GETRANDOM) ++int32_t mz_os_rand(uint8_t *buf, int32_t size) { ++ int32_t left = size; ++ int32_t written = 0; ++ ++ while (left > 0) { ++ written = getrandom(buf, left, 0); ++ if (written < 0) ++ return MZ_INTERNAL_ERROR; ++ ++ buf += written; ++ left -= written; ++ } ++ return size - left; ++} ++#elif defined(HAVE_ARC4RANDOM_BUF) + int32_t mz_os_rand(uint8_t *buf, int32_t size) { + if (size < 0) + return 0; +@@ -139,21 +154,6 @@ int32_t mz_os_rand(uint8_t *buf, int32_t size) { + } + return size - left; + } +-#elif defined(HAVE_GETRANDOM) +-int32_t mz_os_rand(uint8_t *buf, int32_t size) { +- int32_t left = size; +- int32_t written = 0; +- +- while (left > 0) { +- written = getrandom(buf, left, 0); +- if (written < 0) +- return MZ_INTERNAL_ERROR; +- +- buf += written; +- left -= written; +- } +- return size - left; +-} + #else + int32_t mz_os_rand(uint8_t *buf, int32_t size) { + static unsigned calls = 0; diff --git a/sys-libs/minizip-ng/files/minizip-ng-3.0.6-test-temporary.patch b/sys-libs/minizip-ng/files/minizip-ng-3.0.6-test-temporary.patch new file mode 100644 index 000000000000..d38603ac7378 --- /dev/null +++ b/sys-libs/minizip-ng/files/minizip-ng-3.0.6-test-temporary.patch @@ -0,0 +1,129 @@ +https://github.com/zlib-ng/minizip-ng/issues/623 +https://github.com/zlib-ng/minizip-ng/commit/6261d6f5ec5bd275257354c048f68ad9723c3231 + +From 6261d6f5ec5bd275257354c048f68ad9723c3231 Mon Sep 17 00:00:00 2001 +From: Nathan Moinvaziri <nathan@solidstatenetworks.com> +Date: Sat, 11 Jun 2022 10:36:42 -0700 +Subject: [PATCH] Generate test files in binary temp directory. + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -804,6 +804,8 @@ if(MZ_BUILD_TESTS AND MZ_BUILD_UNIT_TESTS) + endif() + endif() + ++ set(TEST_TEMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/Testing/Temporary) ++ + add_test(NAME test_cmd COMMAND test_cmd WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + + function(create_compress_tests EXTRA_NAME EXTRA_ARGS) +@@ -840,33 +842,43 @@ if(MZ_BUILD_TESTS AND MZ_BUILD_UNIT_TESTS) + foreach(INDEX RANGE ${COMPRESS_METHOD_COUNT}) + list(GET COMPRESS_METHOD_NAMES ${INDEX} COMPRESS_METHOD_NAME) + list(GET COMPRESS_METHOD_ARGS ${INDEX} COMPRESS_METHOD_ARG) ++ ++ set(COMPRESS_METHOD_DEST_DIR ++ ${TEST_TEMP_DIR}/${COMPRESS_METHOD_NAME}-${EXTRA_NAME}) ++ set(COMPRESS_METHOD_PATH ++ ${TEST_TEMP_DIR}/${COMPRESS_METHOD_NAME}-${EXTRA_NAME}.zip) ++ + add_test(NAME ${COMPRESS_METHOD_NAME}-zip-${EXTRA_NAME} + COMMAND minizip_cmd ${COMPRESS_METHOD_ARG} -o ${EXTRA_ARGS} +- result.zip test.c test.h empty.txt random.bin uniform.bin fuzz ++ ${COMPRESS_METHOD_PATH} ++ test.c test.h empty.txt random.bin uniform.bin fuzz + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + add_test(NAME ${COMPRESS_METHOD_NAME}-list-${EXTRA_NAME} +- COMMAND minizip_cmd -l ${EXTRA_ARGS} result.zip ++ COMMAND minizip_cmd -l ${EXTRA_ARGS} ${COMPRESS_METHOD_PATH} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + if(NOT MZ_COMPRESS_ONLY) + add_test(NAME ${COMPRESS_METHOD_NAME}-unzip-${EXTRA_NAME} +- COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out result.zip ++ COMMAND minizip_cmd -x -o ${EXTRA_ARGS} ++ -d ${COMPRESS_METHOD_DEST_DIR} ${COMPRESS_METHOD_PATH} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + add_test(NAME ${COMPRESS_METHOD_NAME}-append-${EXTRA_NAME} + COMMAND minizip_cmd ${COMPRESS_METHOD_ARG} -a ${EXTRA_ARGS} +- result.zip single.txt ++ ${COMPRESS_METHOD_PATH} single.txt + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + if(NOT MZ_COMPRESS_ONLY) + add_test(NAME ${COMPRESS_METHOD_NAME}-append-unzip-${EXTRA_NAME} +- COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out result.zip ++ COMMAND minizip_cmd -x -o ${EXTRA_ARGS} ++ -d ${COMPRESS_METHOD_DEST_DIR} ${COMPRESS_METHOD_PATH} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + add_test(NAME ${COMPRESS_METHOD_NAME}-erase-${EXTRA_NAME} +- COMMAND minizip_cmd -o -e result.zip test.c test.h ++ COMMAND minizip_cmd -o -e ${COMPRESS_METHOD_PATH} test.c test.h + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + if(NOT MZ_COMPRESS_ONLY) + add_test(NAME ${COMPRESS_METHOD_NAME}-erase-unzip-${EXTRA_NAME} +- COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out result.zip ++ COMMAND minizip_cmd -x -o ${EXTRA_ARGS} ++ -d ${COMPRESS_METHOD_DEST_DIR} ${COMPRESS_METHOD_PATH} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + endforeach() +@@ -891,43 +903,49 @@ if(MZ_BUILD_TESTS AND MZ_BUILD_UNIT_TESTS) + if(NOT MZ_COMPRESS_ONLY) + if(MZ_ZLIB OR MZ_LIBCOMP) + add_test(NAME unzip-tiny +- COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out ++ COMMAND minizip_cmd -x -o ${EXTRA_ARGS} ++ -d ${TEST_TEMP_DIR}/unzip-tiny + fuzz/unzip_fuzzer_seed_corpus/tiny.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + if(MZ_BZIP2) + add_test(NAME unzip-bzip2 +- COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out ++ COMMAND minizip_cmd -x -o ${EXTRA_ARGS} ++ -d ${TEST_TEMP_DIR}/unzip-bzip2 + fuzz/unzip_fuzzer_seed_corpus/bzip2.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + if(MZ_LZMA) + add_test(NAME unzip-lzma +- COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out ++ COMMAND minizip_cmd -x -o ${EXTRA_ARGS} ++ -d ${TEST_TEMP_DIR}/unzip-lzma + fuzz/unzip_fuzzer_seed_corpus/lzma.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + if(MZ_PKCRYPT) + add_test(NAME unzip-pkcrypt +- COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out -p test123 ++ COMMAND minizip_cmd -x -o ${EXTRA_ARGS} ++ -d ${TEST_TEMP_DIR}/unzip-pkcrypt -p test123 + fuzz/unzip_fuzzer_seed_corpus/encrypted_pkcrypt.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + if(MZ_WZAES) + add_test(NAME unzip-wzaes +- COMMAND minizip_cmd -x -o ${EXTRA_ARGS} -d out -p test123 ++ COMMAND minizip_cmd -x -o ${EXTRA_ARGS} ++ -d ${TEST_TEMP_DIR}/unzip-wzaes -p test123 + fuzz/unzip_fuzzer_seed_corpus/encrypted_wzaes.zip + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) + endif() + endif() + if(NOT MZ_COMPRESS_ONLY AND NOT MZ_DECOMPRESS_ONLY) + if(MZ_ZLIB AND NOT MZ_LIBCOMP) ++ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/test/random.bin DESTINATION ${TEST_TEMP_DIR}) + add_test(NAME gz + COMMAND minigzip_cmd random.bin +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) ++ WORKING_DIRECTORY ${TEST_TEMP_DIR}) + add_test(NAME ungz +- COMMAND minigzip_cmd -x -d out random.bin.gz +- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) ++ COMMAND minigzip_cmd -x -d ${TEST_TEMP_DIR} random.bin.gz ++ WORKING_DIRECTORY ${TEST_TEMP_DIR}) + endif() + endif() + endif() + diff --git a/sys-libs/minizip-ng/metadata.xml b/sys-libs/minizip-ng/metadata.xml new file mode 100644 index 000000000000..f1896c5bcb81 --- /dev/null +++ b/sys-libs/minizip-ng/metadata.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>base-system@gentoo.org</email> + <name>Gentoo Base System</name> + </maintainer> + <use> + <flag name="compat">Enable compatibility with <pkg>sys-libs/zlib</pkg>'s USE=minizip</flag> + <flag name="openssl">Use <pkg>dev-libs/openssl</pkg> for further encryption capabilities</flag> + <flag name="zstd">Add Zstandard compression support via <pkg>app-arch/zstd</pkg></flag> + </use> + <upstream> + <remote-id type="github">zlib-ng/minizip-ng</remote-id> + </upstream> +</pkgmetadata> diff --git a/sys-libs/minizip-ng/minizip-ng-3.0.6-r1.ebuild b/sys-libs/minizip-ng/minizip-ng-3.0.6-r1.ebuild new file mode 100644 index 000000000000..42790b51b0d3 --- /dev/null +++ b/sys-libs/minizip-ng/minizip-ng-3.0.6-r1.ebuild @@ -0,0 +1,86 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake + +DESCRIPTION="Fork of the popular zip manipulation library found in the zlib distribution" +HOMEPAGE="https://github.com/zlib-ng/minizip-ng" +SRC_URI="https://github.com/zlib-ng/minizip-ng/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="ZLIB" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="compat openssl test zstd" +RESTRICT="!test? ( test )" + +# Automagically prefers sys-libs/zlib-ng if installed, so let's +# just depend on it as presumably it's better tested anyway. +RDEPEND=" + app-arch/bzip2 + app-arch/xz-utils + sys-libs/zlib-ng + virtual/libiconv + compat? ( !sys-libs/zlib[minizip] ) + openssl? ( dev-libs/openssl:= ) + zstd? ( app-arch/zstd:= ) +" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-3.0.6-Switch-getrandom-and-arc4random_buf-usage-order.patch + "${FILESDIR}"/${P}-test-temporary.patch +) + +src_configure() { + local mycmakeargs=( + -DMZ_COMPAT=$(usex compat) + -DMZ_BUILD_TESTS=$(usex test) + -DMZ_BUILD_UNIT_TESTS=$(usex test) + -DMZ_FETCH_LIBS=OFF + -DMZ_FORCE_FETCH_LIBS=OFF + + # Compression library options + -DMZ_ZLIB=ON + -DMZ_BZIP2=ON + -DMZ_LZMA=ON + -DMZ_ZSTD=$(usex zstd) + -DMZ_LIBCOMP=OFF + + # Encryption support options + -DMZ_PKCRYPT=ON + -DMZ_WZAES=ON + -DMZ_OPENSSL=$(usex openssl) + # TODO: Re-enable, ideally unconditionally, for arc4random + # Revisit when https://github.com/zlib-ng/minizip-ng/pull/648 fixed + -DMZ_LIBBSD=ON + -DMZ_SIGNING=ON + + # Character conversion options + -DMZ_ICONV=ON + ) + + cmake_src_configure +} + +src_test() { + local myctestargs=( + # TODO: investigate + -E "(raw-unzip-pkcrypt|raw-append-unzip-pkcrypt|raw-erase-unzip-pkcrypt|deflate-unzip-pkcrypt|deflate-append-unzip-pkcrypt|deflate-erase-unzip-pkcrypt|bzip2-unzip-pkcrypt|bzip2-append-unzip-pkcrypt|bzip2-erase-unzip-pkcrypt|lzma-unzip-pkcrypt|lzma-append-unzip-pkcrypt|lzma-erase-unzip-pkcrypt|xz-unzip-pkcrypt|xz-append-unzip-pkcrypt|xz-erase-unzip-pkcrypt|zstd-unzip-pkcrypt|zstd-append-unzip-pkcrypt|zstd-erase-unzip-pkcrypt)" + ) + + # TODO: A bunch of tests end up looping and writing over each other's files + # It gets better with a patch applied (see https://github.com/zlib-ng/minizip-ng/issues/623#issuecomment-1264518994) + # but still hangs. + cmake_src_test -j1 +} + +src_install() { + cmake_src_install + + if use compat ; then + ewarn "minizip-ng is experimental and replacing the system zlib[minizip] is dangerous" + ewarn "Please be careful!" + fi +} |