nixpkgs/pkgs/development/libraries/zlib/default.nix
Sebastian Hagen d042abef26 zlib: Fix zlib.net URL. (#21753)
Look for primary source file below
  http://zlib.net/fossils/ as opposed to
  http://zlib.net/
. zlib-1.2.8.tar.gz is still available at the former location, and will likely
remain there. In addition, it's important that the first URL work since zlib
is in the bootstrap path, and 16.09 (at least) bootstrap doesn't try to fetch
from later ones.
2017-01-08 18:09:57 +01:00

91 lines
2.6 KiB
Nix

{ stdenv, fetchurl, static ? false }:
let version = "1.2.8"; in
stdenv.mkDerivation rec {
name = "zlib-${version}";
src = fetchurl {
urls =
[ "http://www.zlib.net/fossils/${name}.tar.gz" # stable archive path
"mirror://sourceforge/libpng/zlib/${version}/${name}.tar.gz"
];
sha256 = "039agw5rqvqny92cpkrfn243x2gd4xn13hs3xi6isk55d2vqqr9n";
};
patches = [
./CVE-2016-9840.patch
./CVE-2016-9841.patch
./CVE-2016-9842.patch
./CVE-2016-9843.patch
];
postPatch = stdenv.lib.optionalString stdenv.isDarwin ''
substituteInPlace configure \
--replace '/usr/bin/libtool' 'ar' \
--replace 'AR="libtool"' 'AR="ar"' \
--replace 'ARFLAGS="-o"' 'ARFLAGS="-r"'
'';
outputs = [ "out" "dev" "static" ];
setOutputFlags = false;
outputDoc = "dev"; # single tiny man3 page
preConfigure = ''
if test -n "$crossConfig"; then
export CC=$crossConfig-gcc
fi
'';
# FIXME needs gcc 4.9 in bootstrap tools
hardeningDisable = [ "stackprotector" ];
configureFlags = stdenv.lib.optional (!static) "--shared";
postInstall = ''
moveToOutput lib/libz.a "$static"
''
# jww (2015-01-06): Sometimes this library install as a .so, even on
# Darwin; others time it installs as a .dylib. I haven't yet figured out
# what causes this difference.
+ stdenv.lib.optionalString stdenv.isDarwin ''
for file in $out/lib/*.so* $out/lib/*.dylib* ; do
install_name_tool -id "$file" $file
done
'';
# As zlib takes part in the stdenv building, we don't want references
# to the bootstrap-tools libgcc (as uses to happen on arm/mips)
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (!stdenv.isDarwin) "-static-libgcc";
crossAttrs = {
dontStrip = static;
dontSetConfigureCross = true;
} // stdenv.lib.optionalAttrs (stdenv.cross.libc == "msvcrt") {
installFlags = [
"BINARY_PATH=$(out)/bin"
"INCLUDE_PATH=$(dev)/include"
"LIBRARY_PATH=$(out)/lib"
];
makeFlags = [
"-f" "win32/Makefile.gcc"
"PREFIX=${stdenv.cross.config}-"
] ++ stdenv.lib.optional (!static) "SHARED_MODE=1";
# Non-typical naming confuses libtool which then refuses to use zlib's DLL
# in some cases, e.g. when compiling libpng.
postInstall = postInstall + "ln -s zlib1.dll $out/bin/libz.dll";
} // stdenv.lib.optionalAttrs (stdenv.cross.libc == "libSystem") {
makeFlags = [ "RANLIB=${stdenv.cross.config}-ranlib" ];
};
passthru.version = version;
meta = with stdenv.lib; {
description = "Lossless data-compression library";
license = licenses.zlib;
platforms = platforms.all;
};
}