summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-arch/libarchive')
-rw-r--r--app-arch/libarchive/Manifest5
-rw-r--r--app-arch/libarchive/files/libarchive-3.5.0-darwin-strnlen.patch27
-rw-r--r--app-arch/libarchive/files/libarchive-3.7.2-lrzip.patch26
-rw-r--r--app-arch/libarchive/libarchive-3.7.3.ebuild (renamed from app-arch/libarchive/libarchive-3.5.2.ebuild)96
-rw-r--r--app-arch/libarchive/libarchive-3.7.4.ebuild176
-rw-r--r--app-arch/libarchive/metadata.xml7
6 files changed, 274 insertions, 63 deletions
diff --git a/app-arch/libarchive/Manifest b/app-arch/libarchive/Manifest
index 3a03eb163b0c..aa151c417a12 100644
--- a/app-arch/libarchive/Manifest
+++ b/app-arch/libarchive/Manifest
@@ -1 +1,4 @@
-DIST libarchive-3.5.2.tar.gz 7054934 BLAKE2B 1fc6ee0166573658dc5e0f170113c07ecdaa76b287cbf68bdee63ccd198dad615b3f2803a3fc1aed303cd1f7f32033e6d8e782ef6a8a991562cdc2a375894c9e SHA512 2003ec9b24086373451bd7317bdab86d81627f087c14a6f7df1a92e131a216749f9aa352504c3d04dc82b62078b59aeea5aad5543b7e6c1c21fcafa2955d3762
+DIST libarchive-3.7.3.tar.xz 5428992 BLAKE2B c53672c8cdbe8f406f00bf4fc6b36e4dffcd23a33909dbec6ef06b86dceefc6062840eff629ba3bd19c36121720e16a8ba10dfa1a35ebed186cc92eb144f55d0 SHA512 984e7c61010b9555bafe54d5f52ff2d089e28afe5cea3a14615e2aca8539075293789d18f17f8915882ec328bcbdca7b3d1536d6dc19620ca226e8b6d802ef63
+DIST libarchive-3.7.3.tar.xz.asc 659 BLAKE2B bfe18e36ef2e96ad46ab2cd1236701b4b80f41ebb840681c1baf7eac72f38444cc0619645fac17d3acdda6553b294483d87f0a92d9575138d117934e838d85d2 SHA512 9f340b41fc9db34f1c4e0823d559b666196d3031249e05981cfb43a401aa8a85710f14ba1cc784ab3ca367439e4c485668dffe7020f38f50b3ed35810df504a1
+DIST libarchive-3.7.4.tar.xz 5417660 BLAKE2B 128f72235da61e112201046c0cfe62a8c580cf73b426c4cfe270ae913356f6ad430ba33a663dcd617b082c7baf45ada8d1c9928c45fea16fd57e8020693a60bc SHA512 84bc346ba15861ab10aa54a3d687de955178e4efbe12bf3a49a467181e7f819673949f131f4c8338de8ed6e319a8565af376e5a540380bda08e60dffbc7c8686
+DIST libarchive-3.7.4.tar.xz.asc 659 BLAKE2B 77e705194f6e9a9f97da0ac43c9b3157e1a8a490d26da34079e4ef3f2bcf98d6f6e95567e110287fab0ec26d3fc27e5bbeff7569c9ca138de2caf47af737c6d0 SHA512 82caa18a78661ea717ce93cdcb0806eed48450c20fb4d45cb4c33001f2d4d0fb5a791552acbb24ad8c41772e1d0b66c76c9cb86946bc862109721a0c986f5331
diff --git a/app-arch/libarchive/files/libarchive-3.5.0-darwin-strnlen.patch b/app-arch/libarchive/files/libarchive-3.5.0-darwin-strnlen.patch
deleted file mode 100644
index 8f540e4aa07b..000000000000
--- a/app-arch/libarchive/files/libarchive-3.5.0-darwin-strnlen.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-https://github.com/macports/macports-ports/blob/master/archivers/libarchive/files/patch-libarchive-3.5-strnlen.diff
-
-next release should have a fix for this
-
---- a/libarchive/archive_read_support_format_mtree.c
-+++ b/libarchive/archive_read_support_format_mtree.c
-@@ -65,6 +65,20 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_mtree.c 2011
- #define O_CLOEXEC 0
- #endif
-
-+#ifdef __APPLE__
-+#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
-+static size_t strnlen(const char *s, size_t maxlen) {
-+ size_t l = 0;
-+ while (l < maxlen && *s) {
-+ l++;
-+ s++;
-+ }
-+ return l;
-+}
-+#endif
-+#endif
-+
-+
- #define MTREE_HAS_DEVICE 0x0001
- #define MTREE_HAS_FFLAGS 0x0002
- #define MTREE_HAS_GID 0x0004
diff --git a/app-arch/libarchive/files/libarchive-3.7.2-lrzip.patch b/app-arch/libarchive/files/libarchive-3.7.2-lrzip.patch
new file mode 100644
index 000000000000..f05b46c1a340
--- /dev/null
+++ b/app-arch/libarchive/files/libarchive-3.7.2-lrzip.patch
@@ -0,0 +1,26 @@
+diff --git a/libarchive/archive_read_support_filter_lrzip.c b/libarchive/archive_read_support_filter_lrzip.c
+index a562d538..f3ec40c4 100644
+--- a/libarchive/archive_read_support_filter_lrzip.c
++++ b/libarchive/archive_read_support_filter_lrzip.c
+@@ -109,7 +109,7 @@ lrzip_bidder_init(struct archive_read_filter *self)
+ {
+ int r;
+
+- r = __archive_read_program(self, "lrzip -d -q");
++ r = __archive_read_program(self, "lrzip -d -Q");
+ /* Note: We set the format here even if __archive_read_program()
+ * above fails. We do, after all, know what the format is
+ * even if we weren't able to read it. */
+diff --git a/libarchive/archive_write_add_filter_lrzip.c b/libarchive/archive_write_add_filter_lrzip.c
+index fe974c93..8fe498dd 100644
+--- a/libarchive/archive_write_add_filter_lrzip.c
++++ b/libarchive/archive_write_add_filter_lrzip.c
+@@ -133,7 +133,7 @@ archive_write_lrzip_open(struct archive_write_filter *f)
+ int r;
+
+ archive_string_init(&as);
+- archive_strcpy(&as, "lrzip -q");
++ archive_strcpy(&as, "lrzip -Q");
+
+ /* Specify compression type. */
+ switch (data->compression) {
diff --git a/app-arch/libarchive/libarchive-3.5.2.ebuild b/app-arch/libarchive/libarchive-3.7.3.ebuild
index 4693ba4bc318..7c609d3a3f58 100644
--- a/app-arch/libarchive/libarchive-3.5.2.ebuild
+++ b/app-arch/libarchive/libarchive-3.7.3.ebuild
@@ -1,19 +1,30 @@
-# Copyright 1999-2021 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=7
-inherit libtool multilib-minimal toolchain-funcs
+EAPI=8
+inherit libtool multilib-minimal toolchain-funcs verify-sig
DESCRIPTION="Multi-format archive and compression library"
-HOMEPAGE="https://www.libarchive.org/"
-SRC_URI="https://www.libarchive.org/downloads/${P}.tar.gz"
+HOMEPAGE="
+ https://www.libarchive.org/
+ https://github.com/libarchive/libarchive/
+"
+SRC_URI="
+ https://www.libarchive.de/downloads/${P}.tar.xz
+ verify-sig? ( https://www.libarchive.de/downloads/${P}.tar.xz.asc )
+"
LICENSE="BSD BSD-2 BSD-4 public-domain"
SLOT="0/13"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
-IUSE="acl blake2 +bzip2 +e2fsprogs expat +iconv kernel_linux lz4 +lzma lzo nettle static-libs xattr +zlib zstd"
+KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 sparc x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="
+ acl blake2 +bzip2 +e2fsprogs expat +iconv lz4 +lzma lzo nettle
+ static-libs test xattr +zstd
+"
+RESTRICT="!test? ( test )"
RDEPEND="
+ sys-libs/zlib[${MULTILIB_USEDEP}]
acl? ( virtual/acl[${MULTILIB_USEDEP}] )
blake2? ( app-crypt/libb2[${MULTILIB_USEDEP}] )
bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
@@ -28,21 +39,48 @@ RDEPEND="
lzma? ( >=app-arch/xz-utils-5.2.5-r1[${MULTILIB_USEDEP}] )
lzo? ( >=dev-libs/lzo-2[${MULTILIB_USEDEP}] )
nettle? ( dev-libs/nettle:0=[${MULTILIB_USEDEP}] )
- zlib? ( sys-libs/zlib[${MULTILIB_USEDEP}] )
- zstd? ( app-arch/zstd[${MULTILIB_USEDEP}] )"
+ zstd? ( app-arch/zstd[${MULTILIB_USEDEP}] )
+"
DEPEND="${RDEPEND}
kernel_linux? (
virtual/os-headers
- e2fsprogs? ( sys-fs/e2fsprogs )
- )"
+ e2fsprogs? ( sys-fs/e2fsprogs[${MULTILIB_USEDEP}] )
+ )
+ test? (
+ app-arch/lrzip
+ app-arch/lz4
+ app-arch/lzip
+ app-arch/lzop
+ app-arch/xz-utils
+ app-arch/zstd
+ lzma? ( app-arch/xz-utils[extra-filters(+)] )
+ )
+"
+BDEPEND="
+ verify-sig? ( >=sec-keys/openpgp-keys-libarchive-20221209 )
+ elibc_musl? ( sys-libs/queue-standalone )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libarchive.org.asc
+
+# false positives (checks for libc-defined hash functions)
+QA_CONFIG_IMPL_DECL_SKIP=(
+ SHA256_Init SHA256_Update SHA256_Final
+ SHA384_Init SHA384_Update SHA384_Final
+ SHA512_Init SHA512_Update SHA512_Final
+)
PATCHES=(
- "${FILESDIR}"/${PN}-3.5.0-darwin-strnlen.patch # drop on next release
+ # https://github.com/libarchive/libarchive/issues/2069
+ # (we can simply update the command since we don't support old lrzip)
+ "${FILESDIR}/${PN}-3.7.2-lrzip.patch"
)
src_prepare() {
default
- elibtoolize # is required for Solaris sol2_ld linker fix
+
+ # Needed for flags to be respected w/ LTO
+ elibtoolize
}
multilib_src_configure() {
@@ -61,7 +99,7 @@ multilib_src_configure() {
$(use_with lzma)
$(use_with lzo lzo2)
$(use_with nettle)
- $(use_with zlib)
+ --with-zlib
$(use_with zstd)
# Windows-specific
@@ -69,15 +107,17 @@ multilib_src_configure() {
)
if multilib_is_native_abi ; then
myconf+=(
- --enable-bsdcat=$(tc-is-static-only && echo static || echo shared)
- --enable-bsdcpio=$(tc-is-static-only && echo static || echo shared)
- --enable-bsdtar=$(tc-is-static-only && echo static || echo shared)
+ --enable-bsdcat="$(tc-is-static-only && echo static || echo shared)"
+ --enable-bsdcpio="$(tc-is-static-only && echo static || echo shared)"
+ --enable-bsdtar="$(tc-is-static-only && echo static || echo shared)"
+ --enable-bsdunzip="$(tc-is-static-only && echo static || echo shared)"
)
else
myconf+=(
--disable-bsdcat
--disable-bsdcpio
--disable-bsdtar
+ --disable-bsdunzip
)
fi
@@ -96,6 +136,13 @@ src_test() {
mkdir -p "${T}"/bin || die
# tests fail when lbzip2[symlink] is used in place of ref bunzip2
ln -s "${BROOT}/bin/bunzip2" "${T}"/bin || die
+ # workaround lrzip broken on 32-bit arches with >= 10 threads
+ # https://bugs.gentoo.org/927766
+ cat > "${T}"/bin/lrzip <<-EOF || die
+ #!/bin/sh
+ exec "$(type -P lrzip)" -p1 "\${@}"
+ EOF
+ chmod +x "${T}/bin/lrzip" || die
local -x PATH=${T}/bin:${PATH}
multilib-minimal_src_test
}
@@ -105,23 +152,13 @@ multilib_src_test() {
local -x SANDBOX_ON=0
local -x LD_PRELOAD=
# some locales trigger different output that breaks tests
- local -x LC_ALL=C
+ local -x LC_ALL=C.UTF-8
emake check
}
multilib_src_install() {
if multilib_is_native_abi ; then
emake DESTDIR="${D}" install
-
- # Create symlinks for FreeBSD
- if ! use prefix && [[ ${CHOST} == *-freebsd* ]]; then
- # Exclude cat for the time being #589876
- for bin in cpio tar; do
- dosym bsd${bin} /usr/bin/${bin}
- echo '.so bsd${bin}.1' > "${T}"/${bin}.1
- doman "${T}"/${bin}.1
- done
- fi
else
local install_targets=(
install-includeHEADERS
@@ -133,4 +170,7 @@ multilib_src_install() {
# Libs.private: should be used from libarchive.pc instead
find "${ED}" -type f -name "*.la" -delete || die
+ # https://github.com/libarchive/libarchive/issues/1766
+ sed -e '/Requires\.private/s:iconv::' \
+ -i "${ED}/usr/$(get_libdir)/pkgconfig/libarchive.pc" || die
}
diff --git a/app-arch/libarchive/libarchive-3.7.4.ebuild b/app-arch/libarchive/libarchive-3.7.4.ebuild
new file mode 100644
index 000000000000..4e1429fdc70c
--- /dev/null
+++ b/app-arch/libarchive/libarchive-3.7.4.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit libtool multilib-minimal toolchain-funcs verify-sig
+
+DESCRIPTION="Multi-format archive and compression library"
+HOMEPAGE="
+ https://www.libarchive.org/
+ https://github.com/libarchive/libarchive/
+"
+SRC_URI="
+ https://www.libarchive.de/downloads/${P}.tar.xz
+ verify-sig? ( https://www.libarchive.de/downloads/${P}.tar.xz.asc )
+"
+
+LICENSE="BSD BSD-2 BSD-4 public-domain"
+SLOT="0/13"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="
+ acl blake2 +bzip2 +e2fsprogs expat +iconv lz4 +lzma lzo nettle
+ static-libs test xattr +zstd
+"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ sys-libs/zlib[${MULTILIB_USEDEP}]
+ acl? ( virtual/acl[${MULTILIB_USEDEP}] )
+ blake2? ( app-crypt/libb2[${MULTILIB_USEDEP}] )
+ bzip2? ( app-arch/bzip2[${MULTILIB_USEDEP}] )
+ expat? ( dev-libs/expat[${MULTILIB_USEDEP}] )
+ !expat? ( dev-libs/libxml2[${MULTILIB_USEDEP}] )
+ iconv? ( virtual/libiconv[${MULTILIB_USEDEP}] )
+ kernel_linux? (
+ xattr? ( sys-apps/attr[${MULTILIB_USEDEP}] )
+ )
+ dev-libs/openssl:0=[${MULTILIB_USEDEP}]
+ lz4? ( >=app-arch/lz4-0_p131:0=[${MULTILIB_USEDEP}] )
+ lzma? ( >=app-arch/xz-utils-5.2.5-r1[${MULTILIB_USEDEP}] )
+ lzo? ( >=dev-libs/lzo-2[${MULTILIB_USEDEP}] )
+ nettle? ( dev-libs/nettle:0=[${MULTILIB_USEDEP}] )
+ zstd? ( app-arch/zstd[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}
+ kernel_linux? (
+ virtual/os-headers
+ e2fsprogs? ( sys-fs/e2fsprogs[${MULTILIB_USEDEP}] )
+ )
+ test? (
+ app-arch/lrzip
+ app-arch/lz4
+ app-arch/lzip
+ app-arch/lzop
+ app-arch/xz-utils
+ app-arch/zstd
+ lzma? ( app-arch/xz-utils[extra-filters(+)] )
+ )
+"
+BDEPEND="
+ verify-sig? ( >=sec-keys/openpgp-keys-libarchive-20221209 )
+ elibc_musl? ( sys-libs/queue-standalone )
+"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/libarchive.org.asc
+
+# false positives (checks for libc-defined hash functions)
+QA_CONFIG_IMPL_DECL_SKIP=(
+ SHA256_Init SHA256_Update SHA256_Final
+ SHA384_Init SHA384_Update SHA384_Final
+ SHA512_Init SHA512_Update SHA512_Final
+)
+
+PATCHES=(
+ # https://github.com/libarchive/libarchive/issues/2069
+ # (we can simply update the command since we don't support old lrzip)
+ "${FILESDIR}/${PN}-3.7.2-lrzip.patch"
+)
+
+src_prepare() {
+ default
+
+ # Needed for flags to be respected w/ LTO
+ elibtoolize
+}
+
+multilib_src_configure() {
+ export ac_cv_header_ext2fs_ext2_fs_h=$(usex e2fsprogs) #354923
+
+ local myconf=(
+ $(use_enable acl)
+ $(use_enable static-libs static)
+ $(use_enable xattr)
+ $(use_with blake2 libb2)
+ $(use_with bzip2 bz2lib)
+ $(use_with expat)
+ $(use_with !expat xml2)
+ $(use_with iconv)
+ $(use_with lz4)
+ $(use_with lzma)
+ $(use_with lzo lzo2)
+ $(use_with nettle)
+ --with-zlib
+ $(use_with zstd)
+
+ # Windows-specific
+ --without-cng
+ )
+ if multilib_is_native_abi ; then
+ myconf+=(
+ --enable-bsdcat="$(tc-is-static-only && echo static || echo shared)"
+ --enable-bsdcpio="$(tc-is-static-only && echo static || echo shared)"
+ --enable-bsdtar="$(tc-is-static-only && echo static || echo shared)"
+ --enable-bsdunzip="$(tc-is-static-only && echo static || echo shared)"
+ )
+ else
+ myconf+=(
+ --disable-bsdcat
+ --disable-bsdcpio
+ --disable-bsdtar
+ --disable-bsdunzip
+ )
+ fi
+
+ ECONF_SOURCE="${S}" econf "${myconf[@]}"
+}
+
+multilib_src_compile() {
+ if multilib_is_native_abi ; then
+ emake
+ else
+ emake libarchive.la
+ fi
+}
+
+src_test() {
+ mkdir -p "${T}"/bin || die
+ # tests fail when lbzip2[symlink] is used in place of ref bunzip2
+ ln -s "${BROOT}/bin/bunzip2" "${T}"/bin || die
+ # workaround lrzip broken on 32-bit arches with >= 10 threads
+ # https://bugs.gentoo.org/927766
+ cat > "${T}"/bin/lrzip <<-EOF || die
+ #!/bin/sh
+ exec "$(type -P lrzip)" -p1 "\${@}"
+ EOF
+ chmod +x "${T}/bin/lrzip" || die
+ local -x PATH=${T}/bin:${PATH}
+ multilib-minimal_src_test
+}
+
+multilib_src_test() {
+ # sandbox is breaking long symlink behavior
+ local -x SANDBOX_ON=0
+ local -x LD_PRELOAD=
+ # some locales trigger different output that breaks tests
+ local -x LC_ALL=C.UTF-8
+ emake check
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi ; then
+ emake DESTDIR="${D}" install
+ else
+ local install_targets=(
+ install-includeHEADERS
+ install-libLTLIBRARIES
+ install-pkgconfigDATA
+ )
+ emake DESTDIR="${D}" "${install_targets[@]}"
+ fi
+
+ # Libs.private: should be used from libarchive.pc instead
+ find "${ED}" -type f -name "*.la" -delete || die
+ # https://github.com/libarchive/libarchive/issues/1766
+ sed -e '/Requires\.private/s:iconv::' \
+ -i "${ED}/usr/$(get_libdir)/pkgconfig/libarchive.pc" || die
+}
diff --git a/app-arch/libarchive/metadata.xml b/app-arch/libarchive/metadata.xml
index d3de9d873aa0..a8ad4ecadcd9 100644
--- a/app-arch/libarchive/metadata.xml
+++ b/app-arch/libarchive/metadata.xml
@@ -24,13 +24,6 @@
<flag name="nettle">
Use <pkg>dev-libs/nettle</pkg> as crypto backend
</flag>
- <flag name="zlib">
- Allow accessing gzip-compressed archives through
- <pkg>sys-libs/zlib</pkg>. This only affects libarchive's native
- support: bsdtar will keep using gunzip as a filter if that's not
- built-in. It's also needed for supporting extraction of ZIP
- files.
- </flag>
</use>
<upstream>
<remote-id type="cpe">cpe:/a:libarchive:libarchive</remote-id>