3
0
Fork 0
forked from mirrors/nixpkgs
nixpkgs/pkgs/tools/compression/bzip2/default.nix
aszlig 96648a8526
bzip2: Get rid of the custom builder.sh.
Everything the builder.sh did can be done with the generic builder which
makes it easier to override attributes and also easier to read.

The reason I've done this is because of #10820, which tries to override
the preBuild hook, but the latter is hardcoded in the builder.sh of
bzip2.

I have compared the output of this against the previous version and the
only things that were different were timestamps in libbz2.a.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2015-11-17 16:25:56 +01:00

69 lines
1.7 KiB
Nix

{ stdenv, fetchurl, linkStatic ? false }:
let
version = "1.0.6";
sharedLibrary = !stdenv.isDarwin && !(stdenv ? isStatic)
&& stdenv.system != "i686-cygwin" && !linkStatic;
in stdenv.mkDerivation {
name = "bzip2-${version}";
src = fetchurl {
url = "http://www.bzip.org/${version}/bzip2-${version}.tar.gz";
sha256 = "1kfrc7f0ja9fdn6j1y6yir6li818npy6217hvr3wzmnmzhs8z152";
};
crossAttrs = {
patchPhase = ''
sed -i -e '/<sys\\stat\.h>/s|\\|/|' bzip2.c
sed -i -e 's/CC=gcc/CC=${stdenv.cross.config}-gcc/' \
-e 's/AR=ar/AR=${stdenv.cross.config}-ar/' \
-e 's/RANLIB=ranlib/RANLIB=${stdenv.cross.config}-ranlib/' \
-e 's/bzip2recover test/bzip2recover/' \
Makefile*
'';
};
preBuild = stdenv.lib.optionalString sharedLibrary ''
make -f Makefile-libbz2_so
'';
preInstall = stdenv.lib.optionalString sharedLibrary ''
mkdir -p $out/lib
mv libbz2.so* $out/lib
( cd $out/lib &&
ln -s libbz2.so.1.0.? libbz2.so &&
ln -s libbz2.so.1.0.? libbz2.so.1
)
'';
installFlags = [ "PREFIX=$(out)" ];
postInstall = ''
rm $out/bin/bunzip2* $out/bin/bzcat*
ln -s bzip2 $out/bin/bunzip2
ln -s bzip2 $out/bin/bzcat
'';
patchPhase = stdenv.lib.optionalString stdenv.isDarwin ''
substituteInPlace Makefile --replace 'CC=gcc' 'CC=clang'
'';
preConfigure = ''
substituteInPlace Makefile --replace '$(PREFIX)/man' '$(PREFIX)/share/man'
'';
makeFlags = stdenv.lib.optional linkStatic "LDFLAGS=-static";
inherit linkStatic;
meta = {
homepage = "http://www.bzip.org";
description = "high-quality data compression program";
platforms = stdenv.lib.platforms.all;
maintainers = [];
};
}