2017-05-31 03:20:15 +01:00
{ stdenv
, fetchurl
, buildPlatform , hostPlatform
, static ? false
} :
* The stdenv setup script now defines a generic builder that allows
builders for typical Autoconf-style to be much shorten, e.g.,
. $stdenv/setup
genericBuild
The generic builder does lots of stuff automatically:
- Unpacks source archives specified by $src or $srcs (it knows about
gzip, bzip2, tar, zip, and unpacked source trees).
- Determines the source tree.
- Applies patches specified by $patches.
- Fixes libtool not to search for libraries in /lib etc.
- Runs `configure'.
- Runs `make'.
- Runs `make install'.
- Strips debug information from static libraries.
- Writes nested log information (in the format accepted by
`log2xml').
There are also lots of hooks and variables to customise the generic
builder. See `stdenv/generic/docs.txt'.
* Adapted the base packages (i.e., the ones used by stdenv) to use the
generic builder.
* We now use `curl' instead of `wget' to download files in `fetchurl'.
* Neither `curl' nor `wget' are part of stdenv. We shouldn't
encourage people to download stuff in builders (impure!).
* Updated some packages.
* `buildinputs' is now `buildInputs' (but the old name also works).
* `findInputs' in the setup script now prevents inputs from being
processed multiple times (which could happen, e.g., if an input was
a propagated input of several other inputs; this caused the size
variables like $PATH to blow up exponentially in the worst case).
* Patched GNU Make to write nested log information in the format
accepted by `log2xml'. Also, prior to writing the build command,
Make now writes a line `building X' to indicate what is being
built. This is unfortunately often obscured by the gigantic tool
invocations in many Makefiles. The actual build commands are marked
`unimportant' so that they don't clutter pages generated by
`log2html'.
svn path=/nixpkgs/trunk/; revision=845
2004-03-19 16:53:04 +00:00
2017-02-05 12:30:44 +00:00
let version = " 1 . 2 . 1 1 " ; in
2012-03-01 22:22:24 +00:00
2015-05-03 12:35:58 +01:00
stdenv . mkDerivation rec {
2012-03-01 22:22:24 +00:00
name = " z l i b - ${ version } " ;
2013-04-30 08:15:15 +01:00
2003-11-06 15:24:19 +00:00
src = fetchurl {
2012-03-01 22:22:24 +00:00
urls =
2017-01-08 17:09:57 +00:00
[ " h t t p : / / w w w . z l i b . n e t / f o s s i l s / ${ name } . t a r . g z " # stable archive path
2012-03-01 22:22:24 +00:00
" m i r r o r : / / s o u r c e f o r g e / l i b p n g / z l i b / ${ version } / ${ name } . t a r . g z "
2012-02-17 17:02:18 +00:00
] ;
2017-02-05 12:30:44 +00:00
sha256 = " c 3 e 5 e 9 f d d 5 0 0 4 d c b 5 4 2 f e d a 5 e e 4 f 0 f f 0 7 4 4 6 2 8 b a f 8 e d 2 d d 5 d 6 6 f 8 c a 1 1 9 7 c b 1 a 1 " ;
2003-11-06 15:24:19 +00:00
} ;
2010-07-18 22:52:39 +01:00
2017-05-23 14:36:56 +01:00
patches = stdenv . lib . optional hostPlatform . isCygwin ./disable-cygwin-widechar.patch ;
2015-06-12 01:58:26 +01:00
postPatch = stdenv . lib . optionalString stdenv . isDarwin ''
substituteInPlace configure \
- - replace ' /usr/bin/libtool ' ' ar' \
- - replace ' AR = " l i b t o o l " ' ' AR = " a r " ' \
- - replace ' ARFLAGS = " - o " ' ' ARFLAGS = " - r " '
'' ;
2016-08-29 01:30:01 +01:00
outputs = [ " o u t " " d e v " " s t a t i c " ] ;
2014-08-27 00:14:09 +01:00
setOutputFlags = false ;
2015-10-15 10:00:37 +01:00
outputDoc = " d e v " ; # single tiny man3 page
2014-08-27 00:14:09 +01:00
2017-05-31 03:20:15 +01:00
# TODO(@Dridus) CC set by cc-wrapper setup-hook, so just empty out the preConfigure script when cross building, but leave the old incorrect script when not
# cross building to avoid hash breakage. Once hash breakage is acceptable, remove preConfigure entirely.
preConfigure = stdenv . lib . optionalString ( hostPlatform == buildPlatform ) ''
2009-11-21 10:44:22 +00:00
if test - n " $ c r o s s C o n f i g " ; then
export CC = $ crossConfig-gcc
fi
'' ;
2016-02-22 18:32:53 +00:00
# FIXME needs gcc 4.9 in bootstrap tools
2016-02-26 17:38:15 +00:00
hardeningDisable = [ " s t a c k p r o t e c t o r " ] ;
2016-02-22 18:32:53 +00:00
2015-05-03 12:35:58 +01:00
configureFlags = stdenv . lib . optional ( ! static ) " - - s h a r e d " ;
2014-08-27 00:14:09 +01:00
postInstall = ''
2015-12-02 09:03:23 +00:00
moveToOutput lib/libz.a " $ s t a t i c "
2015-05-03 12:35:58 +01:00
''
# 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 /* . s o * $ o u t / l i b / * . d y l i b * ; d o
install_name_tool - id " $ f i l e " $ file
done
2014-08-27 00:14:09 +01:00
'' ;
2011-10-25 19:35:17 +01:00
# 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)
2016-01-28 01:46:59 +00:00
NIX_CFLAGS_COMPILE = stdenv . lib . optionalString ( ! stdenv . isDarwin ) " - s t a t i c - l i b g c c " ;
2011-10-25 19:35:17 +01:00
2010-03-09 23:11:12 +00:00
crossAttrs = {
2012-12-28 18:57:47 +00:00
dontStrip = static ;
2017-04-26 05:06:11 +01:00
configurePlatforms = [ ] ;
2012-03-01 23:15:21 +00:00
} // stdenv . lib . optionalAttrs ( stdenv . cross . libc == " m s v c r t " ) {
2016-04-21 15:12:50 +01:00
installFlags = [
" B I N A R Y _ P A T H = $ ( o u t ) / b i n "
" I N C L U D E _ P A T H = $ ( d e v ) / i n c l u d e "
" L I B R A R Y _ P A T H = $ ( o u t ) / l i b "
] ;
2011-04-23 07:59:04 +01:00
makeFlags = [
" - f " " w i n 3 2 / M a k e f i l e . g c c "
" P R E F I X = ${ stdenv . cross . config } - "
2016-04-21 15:12:50 +01:00
] ++ stdenv . lib . optional ( ! static ) " S H A R E D _ M O D E = 1 " ;
# Non-typical naming confuses libtool which then refuses to use zlib's DLL
# in some cases, e.g. when compiling libpng.
postInstall = postInstall + " l n - s z l i b 1 . d l l $ o u t / b i n / l i b z . d l l " ;
2014-03-10 21:30:13 +00:00
} // stdenv . lib . optionalAttrs ( stdenv . cross . libc == " l i b S y s t e m " ) {
makeFlags = [ " R A N L I B = ${ stdenv . cross . config } - r a n l i b " ] ;
2012-03-01 23:15:21 +00:00
} ;
2010-03-09 23:11:12 +00:00
2014-03-18 01:21:10 +00:00
passthru . version = version ;
2014-06-23 12:26:03 +01:00
meta = with stdenv . lib ; {
description = " L o s s l e s s d a t a - c o m p r e s s i o n l i b r a r y " ;
license = licenses . zlib ;
2015-05-01 22:36:51 +01:00
platforms = platforms . all ;
2014-06-23 12:26:03 +01:00
} ;
2015-05-03 12:35:58 +01:00
}