summary refs log tree commit diff
path: root/pkgs/tools/compression/bzip2/default.nix
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-04-18 19:32:52 +0200
committerVladimír Čunát <vcunat@gmail.com>2015-04-18 19:32:52 +0200
commita99e543c36e78edbbdda68f4269b37c5bcf2a4d0 (patch)
tree0431e6b40a2908b187593ffdaef3949569aa2c6a /pkgs/tools/compression/bzip2/default.nix
parentd484c392aaa4e17f48bd09bcb2e41030f76a920a (diff)
downloadnixpkgs-a99e543c36e78edbbdda68f4269b37c5bcf2a4d0.tar
nixpkgs-a99e543c36e78edbbdda68f4269b37c5bcf2a4d0.tar.gz
nixpkgs-a99e543c36e78edbbdda68f4269b37c5bcf2a4d0.tar.bz2
nixpkgs-a99e543c36e78edbbdda68f4269b37c5bcf2a4d0.tar.lz
nixpkgs-a99e543c36e78edbbdda68f4269b37c5bcf2a4d0.tar.xz
nixpkgs-a99e543c36e78edbbdda68f4269b37c5bcf2a4d0.tar.zst
nixpkgs-a99e543c36e78edbbdda68f4269b37c5bcf2a4d0.zip
bzip2: split into multiple outputs, refactor
Diffstat (limited to 'pkgs/tools/compression/bzip2/default.nix')
-rw-r--r--pkgs/tools/compression/bzip2/default.nix45
1 files changed, 32 insertions, 13 deletions
diff --git a/pkgs/tools/compression/bzip2/default.nix b/pkgs/tools/compression/bzip2/default.nix
index 74da91431a4..da6695ee1da 100644
--- a/pkgs/tools/compression/bzip2/default.nix
+++ b/pkgs/tools/compression/bzip2/default.nix
@@ -1,17 +1,25 @@
 { stdenv, fetchurl, linkStatic ? false }:
 
-let version = "1.0.6"; in
-
-stdenv.mkDerivation {
+let
+  version = "1.0.6";
+  inherit (stdenv.lib) optionalString;
+  sharedLibrary = with stdenv;
+    !( isDarwin || (stdenv ? isStatic) || system == "i686-cygwin" || linkStatic );
+in
+
+stdenv.mkDerivation rec {
   name = "bzip2-${version}";
 
-  builder = ./builder.sh;
-
   src = fetchurl {
     url = "http://www.bzip.org/${version}/bzip2-${version}.tar.gz";
     sha256 = "1kfrc7f0ja9fdn6j1y6yir6li818npy6217hvr3wzmnmzhs8z152";
   };
 
+  patchPhase = optionalString stdenv.isDarwin
+    "substituteInPlace Makefile --replace 'CC=gcc' 'CC=clang'";
+
+  outputs = [ "dev" "bin" "static" ] ++ stdenv.lib.optional sharedLibrary "out";
+
   crossAttrs = {
     patchPhase = ''
       sed -i -e '/<sys\\stat\.h>/s|\\|/|' bzip2.c
@@ -23,16 +31,27 @@ stdenv.mkDerivation {
     '';
   };
 
-  sharedLibrary =
-    !stdenv.isDarwin && !(stdenv ? isStatic) && stdenv.system != "i686-cygwin" && !linkStatic;
-
-  patchPhase = stdenv.lib.optionalString stdenv.isDarwin "substituteInPlace Makefile --replace 'CC=gcc' 'CC=clang'";
-
   preConfigure = "substituteInPlace Makefile --replace '$(PREFIX)/man' '$(PREFIX)/share/man'";
 
-  makeFlags = if linkStatic then "LDFLAGS=-static" else "";
-
-  inherit linkStatic;
+  preBuild = optionalString sharedLibrary "make -f Makefile-libbz2_so";
+  makeFlags = optionalString linkStatic "LDFLAGS=-static";
+
+  installFlags = "PREFIX=$(bin)";
+
+  postInstall = optionalString sharedLibrary ''
+    mkdir -p $out/lib
+    mv libbz2.so* $out/lib
+    ( cd $out/lib && ln -s libbz2.so.1.*.* libbz2.so && ln -s libbz2.so.1.*.* libbz2.so.1 )
+  '' + ''
+    mkdir -p "$static"
+    mv "$bin/lib" "$static/"
+    (
+      cd "$bin/bin"
+      rm {bunzip2,bzcat}*
+      ln -s bzip2 bunzip2
+      ln -s bzip2 bzcat
+    )
+  '';
 
   meta = {
     homepage = "http://www.bzip.org";