bzip2: fix shared library generation on darwin

This fixes #6504

+20 -4
+20 -4
pkgs/tools/compression/bzip2/default.nix
··· 3 3 let 4 4 version = "1.0.6"; 5 5 6 - sharedLibrary = !stdenv.isDarwin && !(stdenv ? isStatic) 6 + sharedLibrary = !(stdenv ? isStatic) 7 7 && stdenv.system != "i686-cygwin" && !linkStatic; 8 8 9 + darwinMakefile = fetchurl { 10 + url = "https://gitweb.gentoo.org/repo/proj/prefix.git/plain/app-arch/bzip2/files/bzip2-1.0.6-Makefile-libbz2_dylib"; 11 + sha256 = "1lq6g98kfpwv2f7wn4sk8hzcf87dwf92gviq0b4691f5bvc9mawz"; 12 + }; 9 13 in stdenv.mkDerivation { 10 14 name = "bzip2-${version}"; 11 15 ··· 38 42 }; 39 43 40 44 preBuild = stdenv.lib.optionalString sharedLibrary '' 41 - make -f Makefile-libbz2_so 45 + make -f ${if stdenv.isDarwin then "Makefile-libbz2_dylib" else "Makefile-libbz2_so"} 42 46 ''; 43 47 44 - preInstall = stdenv.lib.optionalString sharedLibrary '' 48 + preInstall = stdenv.lib.optionalString sharedLibrary (if !stdenv.isDarwin then '' 45 49 mkdir -p $out/lib 46 50 mv libbz2.so* $out/lib 47 51 ( cd $out/lib && 48 52 ln -s libbz2.so.1.0.? libbz2.so && 49 53 ln -s libbz2.so.1.0.? libbz2.so.1 50 54 ) 51 - ''; 55 + '' else '' 56 + mkdir -p $out/lib 57 + mv libbz2.*.dylib $out/lib 58 + ( cd $out/lib && 59 + ln -s libbz2.1.0.?.dylib libbz2.dylib && 60 + ln -s libbz2.1.0.?.dylib libbz2.1.dylib 61 + ) 62 + ''); 52 63 53 64 installFlags = [ "PREFIX=$(out)" ]; 54 65 ··· 61 72 postPatch = '' 62 73 substituteInPlace Makefile --replace CC=gcc CC=cc 63 74 substituteInPlace Makefile-libbz2_so --replace CC=gcc CC=cc 75 + '' + stdenv.lib.optionalString stdenv.isDarwin '' 76 + cp ${darwinMakefile} Makefile-libbz2_dylib 77 + substituteInPlace Makefile-libbz2_dylib \ 78 + --replace "CC=gcc" "CC=cc" \ 79 + --replace "PREFIX=/usr" "PREFIX=$out" 64 80 ''; 65 81 66 82 preConfigure = ''