summary refs log tree commit diff
path: root/pkgs/tools/compression/bzip2/default.nix
diff options
context:
space:
mode:
authorDan Peebles <pumpkin@me.com>2016-02-13 09:52:02 -0500
committerVladimír Čunát <vcunat@gmail.com>2016-02-13 17:20:44 +0100
commit6f2ab634f9f76365d7af195a3c8b14d81a070ff7 (patch)
tree7a147c19e029e6446bc90d838240d507cdfb4b67 /pkgs/tools/compression/bzip2/default.nix
parent5a13e9500c79ee38fd2bf99ae23d7d0276a858f6 (diff)
downloadnixpkgs-6f2ab634f9f76365d7af195a3c8b14d81a070ff7.tar
nixpkgs-6f2ab634f9f76365d7af195a3c8b14d81a070ff7.tar.gz
nixpkgs-6f2ab634f9f76365d7af195a3c8b14d81a070ff7.tar.bz2
nixpkgs-6f2ab634f9f76365d7af195a3c8b14d81a070ff7.tar.lz
nixpkgs-6f2ab634f9f76365d7af195a3c8b14d81a070ff7.tar.xz
nixpkgs-6f2ab634f9f76365d7af195a3c8b14d81a070ff7.tar.zst
nixpkgs-6f2ab634f9f76365d7af195a3c8b14d81a070ff7.zip
bzip2: fix shared library generation on darwin
This fixes #6504
(cherry picked from commit 31ab7d38f23e556fd4e25508bed02455474b6c97)
Diffstat (limited to 'pkgs/tools/compression/bzip2/default.nix')
-rw-r--r--pkgs/tools/compression/bzip2/default.nix24
1 files changed, 20 insertions, 4 deletions
diff --git a/pkgs/tools/compression/bzip2/default.nix b/pkgs/tools/compression/bzip2/default.nix
index ea2ee660a2c..59da8d10791 100644
--- a/pkgs/tools/compression/bzip2/default.nix
+++ b/pkgs/tools/compression/bzip2/default.nix
@@ -3,9 +3,13 @@
 let
   version = "1.0.6";
 
-  sharedLibrary = !stdenv.isDarwin && !(stdenv ? isStatic)
+  sharedLibrary = !(stdenv ? isStatic)
                && stdenv.system != "i686-cygwin" && !linkStatic;
 
+  darwinMakefile = fetchurl {
+    url    = "https://gitweb.gentoo.org/repo/proj/prefix.git/plain/app-arch/bzip2/files/bzip2-1.0.6-Makefile-libbz2_dylib";
+    sha256 = "1lq6g98kfpwv2f7wn4sk8hzcf87dwf92gviq0b4691f5bvc9mawz";
+  };
 in stdenv.mkDerivation {
   name = "bzip2-${version}";
 
@@ -40,17 +44,24 @@ in stdenv.mkDerivation {
   outputs = [ "dev" "bin" "static" ] ++ stdenv.lib.optional sharedLibrary "out";
 
   preBuild = stdenv.lib.optionalString sharedLibrary ''
-    make -f Makefile-libbz2_so
+    make -f ${if stdenv.isDarwin then "Makefile-libbz2_dylib" else "Makefile-libbz2_so"}
   '';
 
-  preInstall = stdenv.lib.optionalString sharedLibrary ''
+  preInstall = stdenv.lib.optionalString sharedLibrary (if !stdenv.isDarwin then ''
     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
     )
-  '';
+  '' else ''
+    mkdir -p $out/lib
+    mv libbz2.*.dylib $out/lib
+    ( cd $out/lib &&
+      ln -s libbz2.1.0.?.dylib libbz2.dylib &&
+      ln -s libbz2.1.0.?.dylib libbz2.1.dylib
+    )
+  '');
 
   installFlags = [ "PREFIX=$(bin)" ];
 
@@ -66,6 +77,11 @@ in stdenv.mkDerivation {
   patchPhase = ''
     substituteInPlace Makefile --replace CC=gcc CC=cc
     substituteInPlace Makefile-libbz2_so --replace CC=gcc CC=cc
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    cp ${darwinMakefile} Makefile-libbz2_dylib
+    substituteInPlace Makefile-libbz2_dylib \
+      --replace "CC=gcc" "CC=cc" \
+      --replace "PREFIX=/usr" "PREFIX=$out"
   '';
 
   preConfigure = ''