sys-libs/zlib: Sync with Gentoo; updates to 1.2.12

gentoo sync ref: 6bdba56dea

Signed-off-by: Sayan Chowdhury <schowdhury@microsoft.com>
This commit is contained in:
Sayan Chowdhury 2022-03-31 10:41:30 +05:30
parent 88b3580fe8
commit b4f09e35d7
11 changed files with 810 additions and 0 deletions

View File

@ -0,0 +1 @@
- zlib ([CVE-2018-25032](https://nvd.nist.gov/vuln/detail/CVE-2018-25032))

View File

@ -0,0 +1 @@
- zlib ([1.2.12](https://github.com/madler/zlib/blob/21767c654d31d2dccdde4330529775c6c5fd5389/ChangeLog#L4))

View File

@ -1,3 +1,5 @@
DIST zlib-1.2.11-cygwin-gzopen_w.patch 1170 BLAKE2B fe351436716634bd823da8c2811d332327d335d450d89bee85d7713b09dd454fe6aee264b044a41bf3be603aa36d67943ba6c7d8b46470e180e9b639728b5274 SHA512 14cc63a17fbf6afb6c8a8dd0b92df9807b48e0faf09c88f952083f10716ae62be8de2a0e1424b77fb538605b88898b381160521f2872afdda59e12bd27535c5a
DIST zlib-1.2.11.tar.gz 607698 BLAKE2B 6bfc4bca5dcadba8a0d4121a2b3ed0bfe440c261003521862c8e6381f1a6f0a72d3fc037351d30afd7ef321e8e8d2ec817c046ac749f2ca0c97fbdc2f7e840b7 SHA512 73fd3fff4adeccd4894084c15ddac89890cd10ef105dd5e1835e1e9bbb6a49ff229713bd197d203edfa17c2727700fce65a2a235f07568212d820dca88b528ae
DIST zlib-1.2.12.tar.gz 1490071 BLAKE2B 76e7b26f8dc761b0eae6276cc32bc36fa74a88197699c95d158c1548f97b80db5e39d21144ecd6ee3eb90c42730aa5f387f9952d9a3f0930b56e9dfcd12f1e67 SHA512 cc2366fa45d5dfee1f983c8c51515e0cff959b61471e2e8d24350dea22d3f6fcc50723615a911b046ffc95f51ba337d39ae402131a55e6d1541d3b095d6c0a14
DIST zlib-1.2.12.tar.gz.asc 235 BLAKE2B bb1efc89b10b894ebc8e8008ee3e98104348f197fae54d298d62057a2d8b8d7246de937962b531189f80ad64a803112300a73862cba121cbf6a6d5ac5f9bc40c SHA512 5c1144371a83b83f9f1d008aa9297e23c0db992cab6c4a8966f9320e70c6186867d62753511d6a663b0fe181cd37fe256c53586358a42ea348ccc0747b1a7153
DIST zlib-1.2.7-cygwin-minizip.patch 2626 BLAKE2B 885f1fda877c0b783618b163702fb46126b7db572767cd4edb86bd92db1f432c887ef1724e70c8319c26886368dba3a962af5284ec0875c20ec8ad2245fd100a SHA512 e372f1e06311e843eca2092e182c41abb009b5e9880b60292d708e4bc0de5a9e4c43d49b25b0c09df4784bc46a1254472bc5cdbdd8d6c762a9f6a145a555bfe7

View File

@ -0,0 +1,88 @@
From 4232e67ee1440634af8209c7022dfc64cf862819 Mon Sep 17 00:00:00 2001
From: Adrian Ratiu <adrian.ratiu@collabora.com>
Date: Mon, 17 Jan 2022 10:49:58 +0200
Subject: [PATCH v3] configure: fix AR/RANLIB/NM detection
Taken from zlib-devel ML:
https://madler.net/pipermail/zlib-devel_madler.net/2022-January/003322.html
Bug: https://bugs.gentoo.org/831628
Scenarios where ${CROSS_PREFIX}ar & co are set but not desired
are possible, for example in ChromiumOS we use the GNU binutils
tools & GCC to build glibc but LLVM/Clang is used for the rest
of the system.
This allows $AR/$RANLIB/$NM to override default CROSS_PREFIX
tools so they can be set to llvm-ar/ranlib/nm.
Suggested-by: Manoj Gupta <manojgupta@chromium.org>
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
---
Changes in v3:
* Whitespace style fixes
* Fixed top level variable tests (eg -z AR -> -z $AR)
* Review and testing as part of Gentoo PR:
https://github.com/gentoo/gentoo/pull/23888
Changes in v2:
* Fixed a typo in the "unset NM" case
---
configure | 38 ++++++++++++++++++++++----------------
1 file changed, 22 insertions(+), 16 deletions(-)
diff --git a/configure b/configure
index e974d1f..045c616 100755
--- a/configure
+++ b/configure
@@ -46,25 +46,31 @@ VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.
VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h`
# establish commands for library building
-if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
- AR=${AR-"${CROSS_PREFIX}ar"}
- test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
-else
- AR=${AR-"ar"}
- test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
+if [ -z "$AR" ]; then
+ if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
+ AR=${AR-"${CROSS_PREFIX}ar"}
+ test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
+ else
+ AR="ar"
+ test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
+ fi
fi
ARFLAGS=${ARFLAGS-"rc"}
-if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then
- RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
- test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log
-else
- RANLIB=${RANLIB-"ranlib"}
+if [ -z "$RANLIB" ]; then
+ if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then
+ RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
+ test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log
+ else
+ RANLIB="ranlib"
+ fi
fi
-if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then
- NM=${NM-"${CROSS_PREFIX}nm"}
- test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log
-else
- NM=${NM-"nm"}
+if [ -z "$NM" ]; then
+ if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then
+ NM=${NM-"${CROSS_PREFIX}nm"}
+ test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log
+ else
+ NM="nm"
+ fi
fi
# set defaults before processing command line options
--
2.35.0

View File

@ -1,3 +1,5 @@
https://github.com/madler/zlib/commit/f9694097dd69354b03cb8af959094c7f260db0a1
From f9694097dd69354b03cb8af959094c7f260db0a1 Mon Sep 17 00:00:00 2001
From: Mark Adler <madler@alumni.caltech.edu>
Date: Mon, 16 Jan 2017 09:49:35 -0800

View File

@ -0,0 +1,50 @@
https://github.com/madler/zlib/commit/ec3df00224d4b396e2ac6586ab5d25f673caa4c2
https://github.com/madler/zlib/issues/613
https://bugs.gentoo.org/836370
From ec3df00224d4b396e2ac6586ab5d25f673caa4c2 Mon Sep 17 00:00:00 2001
From: Mark Adler <madler@alumni.caltech.edu>
Date: Wed, 30 Mar 2022 11:14:53 -0700
Subject: [PATCH] Correct incorrect inputs provided to the CRC functions.
The previous releases of zlib were not sensitive to incorrect CRC
inputs with bits set above the low 32. This commit restores that
behavior, so that applications with such bugs will continue to
operate as before.
--- a/crc32.c
+++ b/crc32.c
@@ -630,7 +630,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
#endif /* DYNAMIC_CRC_TABLE */
/* Pre-condition the CRC */
- crc ^= 0xffffffff;
+ crc = (~crc) & 0xffffffff;
/* Compute the CRC up to a word boundary. */
while (len && ((z_size_t)buf & 7) != 0) {
@@ -749,7 +749,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len)
#endif /* DYNAMIC_CRC_TABLE */
/* Pre-condition the CRC */
- crc ^= 0xffffffff;
+ crc = (~crc) & 0xffffffff;
#ifdef W
@@ -1077,7 +1077,7 @@ uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
#ifdef DYNAMIC_CRC_TABLE
once(&made, make_crc_table);
#endif /* DYNAMIC_CRC_TABLE */
- return multmodp(x2nmodp(len2, 3), crc1) ^ crc2;
+ return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff);
}
/* ========================================================================= */
@@ -1112,5 +1112,5 @@ uLong crc32_combine_op(crc1, crc2, op)
uLong crc2;
uLong op;
{
- return multmodp(op, crc1) ^ crc2;
+ return multmodp(op, crc1) ^ (crc2 & 0xffffffff);
}

View File

@ -0,0 +1,45 @@
https://github.com/madler/zlib/pull/607
From 80d086357a55b94a13e43756cf3e131f25eef0e4 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Mon, 28 Mar 2022 08:40:45 +0100
Subject: [PATCH] Fix CC logic in configure
In https://github.com/madler/zlib/commit/e9a52aa129efe3834383e415580716a7c4027f8d,
the logic was changed to try check harder for GCC, but it dropped
the default setting of cc=${CC}. It was throwing away any pre-set CC value as
a result.
The rest of the script then cascades down a bad path because it's convinced
it's not GCC or a GCC-like compiler.
This led to e.g. misdetection of inability to build shared libs
for say, multilib cases (w/ CC being one thing from the environment being used
for one test (e.g. x86_64-unknown-linux-gnu-gcc -m32 and then 'cc' used for
shared libs (but missing "-m32"!)). Obviously just one example of how
the old logic could break.
This restores the old default of 'CC' if nothing overrides it later
in configure.
Bug: https://bugs.gentoo.org/836308
Signed-off-by: Sam James <sam@gentoo.org>
---
configure | 3 +++
1 file changed, 3 insertions(+)
diff --git a/configure b/configure
index 52ff4a04e..3fa3e8618 100755
--- a/configure
+++ b/configure
@@ -174,7 +174,10 @@ if test -z "$CC"; then
else
cc=${CROSS_PREFIX}cc
fi
+else
+ cc=${CC}
fi
+
cflags=${CFLAGS-"-O3"}
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
case "$cc" in

View File

@ -0,0 +1,71 @@
https://github.com/madler/zlib/pull/599
From 37c9730ba474d274f4cc6a974943eef95087b9f6 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 8 Mar 2022 22:38:47 -0800
Subject: [PATCH] configure: Pass LDFLAGS to link tests
LDFLAGS can contain critical flags without which linking wont succeed
therefore ensure that all configure tests involving link time checks are
using LDFLAGS on compiler commandline along with CFLAGS to ensure the
tests perform correctly. Without this some tests may fail resulting in
wrong confgure result, ending in miscompiling the package
Signed-off-by: Khem Raj <raj.khem@gmail.com>
--- a/configure
+++ b/configure
@@ -410,7 +410,7 @@ if test $shared -eq 1; then
echo Checking for shared library support... | tee -a configure.log
# we must test in two steps (cc then ld), required at least on SunOS 4.x
if try $CC -w -c $SFLAGS $test.c &&
- try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
+ try $LDSHARED $SFLAGS $LDFLAGS -o $test$shared_ext $test.o; then
echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
elif test -z "$old_cc" -a -z "$old_cflags"; then
echo No shared library support. | tee -a configure.log
@@ -492,7 +492,7 @@ int main(void) {
}
EOF
fi
- if try $CC $CFLAGS -o $test $test.c; then
+ if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
sizet=`./$test`
echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log
else
@@ -530,7 +530,7 @@ int main(void) {
return 0;
}
EOF
- if try $CC $CFLAGS -o $test $test.c; then
+ if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
echo "Checking for fseeko... Yes." | tee -a configure.log
else
CFLAGS="${CFLAGS} -DNO_FSEEKO"
@@ -547,7 +547,7 @@ cat > $test.c <<EOF
#include <errno.h>
int main() { return strlen(strerror(errno)); }
EOF
-if try $CC $CFLAGS -o $test $test.c; then
+if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
echo "Checking for strerror... Yes." | tee -a configure.log
else
CFLAGS="${CFLAGS} -DNO_STRERROR"
@@ -654,7 +654,7 @@ int main()
return (mytest("Hello%d\n", 1));
}
EOF
- if try $CC $CFLAGS -o $test $test.c; then
+ if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log
echo >> configure.log
@@ -744,7 +744,7 @@ int main()
}
EOF
- if try $CC $CFLAGS -o $test $test.c; then
+ if try $CC $CFLAGS $LDFLAGS -o $test $test.c; then
echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log
echo >> configure.log

View File

@ -0,0 +1,168 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
AUTOTOOLS_AUTO_DEPEND="no"
inherit autotools multilib-minimal usr-ldscript
CYGWINPATCHES=(
"https://github.com/cygwinports/zlib/raw/22a3462cae33a82ad966ea0a7d6cbe8fc1368fec/1.2.11-gzopen_w.patch -> ${PN}-1.2.11-cygwin-gzopen_w.patch"
"https://github.com/cygwinports/zlib/raw/22a3462cae33a82ad966ea0a7d6cbe8fc1368fec/1.2.7-minizip-cygwin.patch -> ${PN}-1.2.7-cygwin-minizip.patch"
)
DESCRIPTION="Standard (de)compression library"
HOMEPAGE="https://zlib.net/"
SRC_URI="https://zlib.net/${P}.tar.gz
http://www.gzip.org/zlib/${P}.tar.gz
http://www.zlib.net/current/beta/${P}.tar.gz
elibc_Cygwin? ( ${CYGWINPATCHES[*]} )"
LICENSE="ZLIB"
SLOT="0/1" # subslot = SONAME
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 ~x86-winnt"
IUSE="minizip static-libs"
BDEPEND="minizip? ( ${AUTOTOOLS_DEPEND} )"
# See #309623 for libxml2
RDEPEND="
!<dev-libs/libxml2-2.7.7
!sys-libs/zlib-ng[compat]
"
DEPEND="${RDEPEND}"
PATCHES=(
"${FILESDIR}"/${PN}-1.2.11-fix-deflateParams-usage.patch
"${FILESDIR}"/${PN}-1.2.11-minizip-drop-crypt-header.patch #658536
"${FILESDIR}"/${PN}-1.2.11-configure-fix-AR-RANLIB-NM-detection.patch #831628
)
src_prepare() {
default
if use elibc_Cygwin ; then
local p
for p in "${CYGWINPATCHES[@]}" ; do
# Strip out the "... -> " from the array
eapply -p2 "${DISTDIR}/${p#*> }"
done
fi
if use minizip ; then
cd contrib/minizip || die
eautoreconf
fi
case ${CHOST} in
*-cygwin*)
# do not use _wopen, is a mingw symbol only
sed -i -e '/define WIDECHAR/d' "${S}"/gzguts.h || die
# zlib1.dll is the mingw name, need cygz.dll
# cygz.dll is loaded by toolchain, put into subdir
sed -i -e 's|zlib1.dll|win32/cygz.dll|' win32/Makefile.gcc || die
;;
esac
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
# uses preconfigured Makefile rather than configure script
multilib_copy_sources
;;
esac
}
echoit() { echo "$@"; "$@"; }
multilib_src_configure() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
;;
*)
local uname=$("${EPREFIX}"/usr/share/gnuconfig/config.sub "${CHOST}" | cut -d- -f3) #347167
local myconf=(
--shared
--prefix="${EPREFIX}/usr"
--libdir="${EPREFIX}/usr/$(get_libdir)"
${uname:+--uname=${uname}}
)
# not an autoconf script, so can't use econf
echoit "${S}"/configure "${myconf[@]}" || die
;;
esac
if use minizip ; then
local minizipdir="contrib/minizip"
mkdir -p "${BUILD_DIR}/${minizipdir}" || die
cd ${minizipdir} || die
ECONF_SOURCE="${S}/${minizipdir}" \
econf $(use_enable static-libs static)
fi
}
multilib_src_compile() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
emake -f win32/Makefile.gcc STRIP=true PREFIX=${CHOST}-
sed \
-e 's|@prefix@|'"${EPREFIX}"'/usr|g' \
-e 's|@exec_prefix@|${prefix}|g' \
-e 's|@libdir@|${exec_prefix}/'$(get_libdir)'|g' \
-e 's|@sharedlibdir@|${exec_prefix}/'$(get_libdir)'|g' \
-e 's|@includedir@|${prefix}/include|g' \
-e 's|@VERSION@|'${PV}'|g' \
zlib.pc.in > zlib.pc || die
;;
*)
emake
;;
esac
use minizip && emake -C contrib/minizip
}
sed_macros() {
# clean up namespace a little #383179
# we do it here so we only have to tweak 2 files
sed -i -r 's:\<(O[FN])\>:_Z_\1:g' "$@" || die
}
multilib_src_install() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
emake -f win32/Makefile.gcc install \
BINARY_PATH="${ED}/usr/bin" \
LIBRARY_PATH="${ED}/usr/$(get_libdir)" \
INCLUDE_PATH="${ED}/usr/include" \
SHARED_MODE=1
# overwrites zlib.pc created from win32/Makefile.gcc #620136
insinto /usr/$(get_libdir)/pkgconfig
doins zlib.pc
;;
*)
emake install DESTDIR="${D}" LDCONFIG=:
gen_usr_ldscript -a z
;;
esac
sed_macros "${ED}"/usr/include/*.h
if use minizip ; then
emake -C contrib/minizip install DESTDIR="${D}"
sed_macros "${ED}"/usr/include/minizip/*.h
fi
if use minizip; then
# This might not exist if slibtool is used.
# https://bugs.gentoo.org/816756
rm -f "${ED}"/usr/$(get_libdir)/libminizip.la || die
fi
if ! use static-libs ; then
# https://bugs.gentoo.org/419645
rm "${ED}"/usr/$(get_libdir)/libz.a || die
fi
}
multilib_src_install_all() {
dodoc FAQ README ChangeLog doc/*.txt
use minizip && dodoc contrib/minizip/*.txt
}

View File

@ -0,0 +1,187 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
AUTOTOOLS_AUTO_DEPEND="no"
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/madler.asc
inherit autotools multilib-minimal usr-ldscript verify-sig
CYGWINPATCHES=(
"https://github.com/cygwinports/zlib/raw/22a3462cae33a82ad966ea0a7d6cbe8fc1368fec/1.2.11-gzopen_w.patch -> ${PN}-1.2.11-cygwin-gzopen_w.patch"
"https://github.com/cygwinports/zlib/raw/22a3462cae33a82ad966ea0a7d6cbe8fc1368fec/1.2.7-minizip-cygwin.patch -> ${PN}-1.2.7-cygwin-minizip.patch"
)
DESCRIPTION="Standard (de)compression library"
HOMEPAGE="https://zlib.net/"
SRC_URI="https://zlib.net/${P}.tar.gz
https://www.gzip.org/zlib/${P}.tar.gz
https://www.zlib.net/current/beta/${P}.tar.gz
verify-sig? ( https://zlib.net/${P}.tar.gz.asc )
elibc_Cygwin? ( ${CYGWINPATCHES[*]} )"
LICENSE="ZLIB"
SLOT="0/1" # subslot = SONAME
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 ~x86-winnt"
IUSE="minizip static-libs"
RDEPEND="!sys-libs/zlib-ng[compat]"
DEPEND="${RDEPEND}"
BDEPEND="minizip? ( ${AUTOTOOLS_DEPEND} )
verify-sig? ( sec-keys/openpgp-keys-madler )"
PATCHES=(
# bug #658536
"${FILESDIR}"/${PN}-1.2.11-minizip-drop-crypt-header.patch
# bug #831628
"${FILESDIR}"/${PN}-1.2.11-configure-fix-AR-RANLIB-NM-detection.patch
# Fix broken CC logic
"${FILESDIR}"/${PN}-1.2.12-fix-CC-logic-in-configure.patch
)
src_prepare() {
default
if use elibc_Cygwin ; then
local p
for p in "${CYGWINPATCHES[@]}" ; do
# Strip out the "... -> " from the array
eapply -p2 "${DISTDIR}/${p#*> }"
done
fi
if use minizip ; then
cd contrib/minizip || die
eautoreconf
fi
case ${CHOST} in
*-cygwin*)
# Do not use _wopen, it's a mingw-only symbol
sed -i -e '/define WIDECHAR/d' "${S}"/gzguts.h || die
# zlib1.dll is the mingw name, need cygz.dll
# cygz.dll is loaded by toolchain, put into subdir
sed -i -e 's|zlib1.dll|win32/cygz.dll|' win32/Makefile.gcc || die
;;
esac
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
# Uses preconfigured Makefile rather than configure script
multilib_copy_sources
;;
esac
}
echoit() { echo "$@"; "$@"; }
multilib_src_configure() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
;;
*)
# bug #347167
local uname=$("${BROOT}"/usr/share/gnuconfig/config.sub "${CHOST}" | cut -d- -f3)
local myconf=(
--shared
--prefix="${EPREFIX}/usr"
--libdir="${EPREFIX}/usr/$(get_libdir)"
${uname:+--uname=${uname}}
)
# Not an autoconf script, so can't use econf
echoit "${S}"/configure "${myconf[@]}" || die
;;
esac
if use minizip ; then
local minizipdir="contrib/minizip"
mkdir -p "${BUILD_DIR}/${minizipdir}" || die
cd ${minizipdir} || die
ECONF_SOURCE="${S}/${minizipdir}" econf $(use_enable static-libs static)
fi
}
multilib_src_compile() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
emake -f win32/Makefile.gcc STRIP=true PREFIX=${CHOST}-
sed \
-e 's|@prefix@|'"${EPREFIX}"'/usr|g' \
-e 's|@exec_prefix@|${prefix}|g' \
-e 's|@libdir@|${exec_prefix}/'$(get_libdir)'|g' \
-e 's|@sharedlibdir@|${exec_prefix}/'$(get_libdir)'|g' \
-e 's|@includedir@|${prefix}/include|g' \
-e 's|@VERSION@|'${PV}'|g' \
zlib.pc.in > zlib.pc || die
;;
*)
emake
;;
esac
use minizip && emake -C contrib/minizip
}
sed_macros() {
# Clean up namespace a little, bug #383179
# We do it here so we only have to tweak 2 files
sed -i -r 's:\<(O[FN])\>:_Z_\1:g' "$@" || die
}
multilib_src_install() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
emake -f win32/Makefile.gcc install \
BINARY_PATH="${ED}/usr/bin" \
LIBRARY_PATH="${ED}/usr/$(get_libdir)" \
INCLUDE_PATH="${ED}/usr/include" \
SHARED_MODE=1
# Overwrites zlib.pc created from win32/Makefile.gcc, bug #620136
insinto /usr/$(get_libdir)/pkgconfig
doins zlib.pc
;;
*)
emake install DESTDIR="${D}" LDCONFIG=:
gen_usr_ldscript -a z
;;
esac
sed_macros "${ED}"/usr/include/*.h
if use minizip ; then
emake -C contrib/minizip install DESTDIR="${D}"
sed_macros "${ED}"/usr/include/minizip/*.h
fi
if use minizip; then
# This might not exist if slibtool is used.
# bug #816756
rm -f "${ED}"/usr/$(get_libdir)/libminizip.la || die
fi
if ! use static-libs ; then
# bug #419645
rm "${ED}"/usr/$(get_libdir)/libz.a || die
fi
}
multilib_src_install_all() {
dodoc FAQ README ChangeLog doc/*.txt
use minizip && dodoc contrib/minizip/*.txt
}

View File

@ -0,0 +1,195 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
# Worth keeping an eye on 'develop' branch upstream for possible backports.
AUTOTOOLS_AUTO_DEPEND="no"
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/madler.asc
inherit autotools multilib-minimal usr-ldscript verify-sig
CYGWINPATCHES=(
"https://github.com/cygwinports/zlib/raw/22a3462cae33a82ad966ea0a7d6cbe8fc1368fec/1.2.11-gzopen_w.patch -> ${PN}-1.2.11-cygwin-gzopen_w.patch"
"https://github.com/cygwinports/zlib/raw/22a3462cae33a82ad966ea0a7d6cbe8fc1368fec/1.2.7-minizip-cygwin.patch -> ${PN}-1.2.7-cygwin-minizip.patch"
)
DESCRIPTION="Standard (de)compression library"
HOMEPAGE="https://zlib.net/"
SRC_URI="https://zlib.net/${P}.tar.gz
https://www.gzip.org/zlib/${P}.tar.gz
https://www.zlib.net/current/beta/${P}.tar.gz
verify-sig? ( https://zlib.net/${P}.tar.gz.asc )
elibc_Cygwin? ( ${CYGWINPATCHES[*]} )"
LICENSE="ZLIB"
SLOT="0/1" # subslot = SONAME
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 ~x86-winnt"
IUSE="minizip static-libs"
RDEPEND="!sys-libs/zlib-ng[compat]"
DEPEND="${RDEPEND}"
BDEPEND="minizip? ( ${AUTOTOOLS_DEPEND} )
verify-sig? ( sec-keys/openpgp-keys-madler )"
PATCHES=(
# Don't install unexpected & unused crypt.h header (which would clash with other pkgs)
# Pending upstream. bug #658536
"${FILESDIR}"/${PN}-1.2.11-minizip-drop-crypt-header.patch
# Respect AR, RANLIB, NM during build. Pending upstream. bug #831628
"${FILESDIR}"/${PN}-1.2.11-configure-fix-AR-RANLIB-NM-detection.patch
# Respect LDFLAGS during configure tests. Pending upstream
"${FILESDIR}"/${PN}-1.2.12-use-LDFLAGS-in-configure.patch
# Fix broken CC logic
"${FILESDIR}"/${P}-fix-CC-logic-in-configure.patch
# Backport for Java (and others), bug #836370
"${FILESDIR}"/${P}-CRC-buggy-input.patch
)
src_prepare() {
default
if use elibc_Cygwin ; then
local p
for p in "${CYGWINPATCHES[@]}" ; do
# Strip out the "... -> " from the array
eapply -p2 "${DISTDIR}/${p#*> }"
done
fi
if use minizip ; then
cd contrib/minizip || die
eautoreconf
fi
case ${CHOST} in
*-cygwin*)
# Do not use _wopen, it's a mingw-only symbol
sed -i -e '/define WIDECHAR/d' "${S}"/gzguts.h || die
# zlib1.dll is the mingw name, need cygz.dll
# cygz.dll is loaded by toolchain, put into subdir
sed -i -e 's|zlib1.dll|win32/cygz.dll|' win32/Makefile.gcc || die
;;
esac
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
# Uses preconfigured Makefile rather than configure script
multilib_copy_sources
;;
esac
}
echoit() { echo "$@"; "$@"; }
multilib_src_configure() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
;;
*)
# bug #347167
local uname=$("${BROOT}"/usr/share/gnuconfig/config.sub "${CHOST}" | cut -d- -f3)
local myconf=(
--shared
--prefix="${EPREFIX}/usr"
--libdir="${EPREFIX}/usr/$(get_libdir)"
${uname:+--uname=${uname}}
)
# Not an autoconf script, so can't use econf
echoit "${S}"/configure "${myconf[@]}" || die
;;
esac
if use minizip ; then
local minizipdir="contrib/minizip"
mkdir -p "${BUILD_DIR}/${minizipdir}" || die
cd ${minizipdir} || die
ECONF_SOURCE="${S}/${minizipdir}" econf $(use_enable static-libs static)
fi
}
multilib_src_compile() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
emake -f win32/Makefile.gcc STRIP=true PREFIX=${CHOST}-
sed \
-e 's|@prefix@|'"${EPREFIX}"'/usr|g' \
-e 's|@exec_prefix@|${prefix}|g' \
-e 's|@libdir@|${exec_prefix}/'$(get_libdir)'|g' \
-e 's|@sharedlibdir@|${exec_prefix}/'$(get_libdir)'|g' \
-e 's|@includedir@|${prefix}/include|g' \
-e 's|@VERSION@|'${PV}'|g' \
zlib.pc.in > zlib.pc || die
;;
*)
emake
;;
esac
use minizip && emake -C contrib/minizip
}
sed_macros() {
# Clean up namespace a little, bug #383179
# We do it here so we only have to tweak 2 files
sed -i -r 's:\<(O[FN])\>:_Z_\1:g' "$@" || die
}
multilib_src_install() {
case ${CHOST} in
*-mingw*|mingw*|*-cygwin*)
emake -f win32/Makefile.gcc install \
BINARY_PATH="${ED}/usr/bin" \
LIBRARY_PATH="${ED}/usr/$(get_libdir)" \
INCLUDE_PATH="${ED}/usr/include" \
SHARED_MODE=1
# Overwrites zlib.pc created from win32/Makefile.gcc, bug #620136
insinto /usr/$(get_libdir)/pkgconfig
doins zlib.pc
;;
*)
emake install DESTDIR="${D}" LDCONFIG=:
gen_usr_ldscript -a z
;;
esac
sed_macros "${ED}"/usr/include/*.h
if use minizip ; then
emake -C contrib/minizip install DESTDIR="${D}"
sed_macros "${ED}"/usr/include/minizip/*.h
fi
if use minizip; then
# This might not exist if slibtool is used.
# bug #816756
rm -f "${ED}"/usr/$(get_libdir)/libminizip.la || die
fi
if ! use static-libs ; then
# bug #419645
rm "${ED}"/usr/$(get_libdir)/libz.a || die
fi
}
multilib_src_install_all() {
dodoc FAQ README ChangeLog doc/*.txt
use minizip && dodoc contrib/minizip/*.txt
}