From 91f2b9ed663bc58c2305edf2d52b4e54228394c4 Mon Sep 17 00:00:00 2001 From: Vladimír Čunát Date: Thu, 21 Apr 2016 15:37:52 +0200 Subject: bzip2: fix on mingw The whole expression is rather a mess, mainly due to upstream often behaving badly with non-standard configurations. --- pkgs/tools/compression/bzip2/default.nix | 51 ++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 22 deletions(-) (limited to 'pkgs/tools/compression/bzip2') diff --git a/pkgs/tools/compression/bzip2/default.nix b/pkgs/tools/compression/bzip2/default.nix index a165ab2b157b..d3ed5121ba98 100644 --- a/pkgs/tools/compression/bzip2/default.nix +++ b/pkgs/tools/compression/bzip2/default.nix @@ -35,10 +35,6 @@ in stdenv.mkDerivation { sed -i -e '//s|\\|/|' bzip2.c ''; preConfigure = "sh ./autogen.sh"; - # clear native hooks that are not needed with autoconf - preBuild = ""; - preInstall = ""; - postInstall = ""; }; outputs = [ "dev" "bin" "static" ] ++ stdenv.lib.optional sharedLibrary "out"; @@ -47,21 +43,23 @@ in stdenv.mkDerivation { make -f ${if stdenv.isDarwin then "Makefile-libbz2_dylib" else "Makefile-libbz2_so"} ''; - 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 - ) - ''); + preInstall = stdenv.lib.optionalString + (sharedLibrary && stdenv.cross.libc or null != "msvcrt") + (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)" ]; @@ -70,9 +68,18 @@ in stdenv.mkDerivation { ln -s bzip2 $bin/bin/bunzip2 ln -s bzip2 $bin/bin/bzcat - mkdir "$static" - mv "$bin/lib" "$static/" - ''; + '' + + (if stdenv.cross.libc or null != "msvcrt" # mingw TODO: avoided rebuilds for now + then '' + mkdir "$static" + mv "$bin/lib" "$static/" + '' + else '' + moveToOutput "lib/*.a" "$static" + moveToOutput "lib/*.dll.a" "$out" + mkdir -p "$static" # empty for now, but we want to avoid failure + '') + ; postPatch = '' substituteInPlace Makefile --replace CC=gcc CC=cc -- cgit 1.4.1