From a1d61e736750159f6e860c7649d5f46dcade4d42 Mon Sep 17 00:00:00 2001 From: Austin Seipp Date: Sun, 1 May 2016 22:10:18 +0000 Subject: [PATCH] nixpkgs: fix chez build failures The Chez build was failing, as usual, due to impurities. The build system refers to absolute paths for tools like `ln` or `true`, which was the real culprit here. Furthermore the build also 'helpfully' suppresses errors in these cases by piping to /dev/null, so you never see any errors at build time until it's too late (otherwise, you'd see failures to call /bin/ln or at ./configure time). This also re-enables parallel builds, as they should be safe from all my testing, I believe. Signed-off-by: Austin Seipp --- pkgs/development/compilers/chez/default.nix | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/chez/default.nix b/pkgs/development/compilers/chez/default.nix index da60ffbb67a1..d9e7cc507305 100644 --- a/pkgs/development/compilers/chez/default.nix +++ b/pkgs/development/compilers/chez/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchgit, ncurses, libX11 }: +{ stdenv, fetchgit, coreutils, ncurses, libX11 }: stdenv.mkDerivation rec { name = "chez-scheme-${version}"; @@ -12,6 +12,7 @@ stdenv.mkDerivation rec { fetchSubmodules = true; }; + enableParallelBuilding = true; buildInputs = [ ncurses libX11 ]; /* Chez uses a strange default search path, which completely @@ -19,14 +20,25 @@ stdenv.mkDerivation rec { ** defaults to {/usr,/usr/local,$HOME}/lib for finding the .boot ** file. ** - ** Also, we patch out a very annoying 'feature' in ./configure, too. + ** Also, we patch out a very annoying 'feature' in ./configure, too, + ** which tries to use 'git' to update submodules. + ** + ** Finally, we have to also fix a few occurrences to tools with + ** absolute paths in some helper scripts, otherwise the build will + ** fail on NixOS or in any chroot build. */ patchPhase = '' - substituteInPlace c/scheme.c \ + substituteInPlace ./c/scheme.c \ --replace "/usr/lib/csv" "$out/lib/csv" substituteInPlace ./configure \ --replace "git submodule init && git submodule update || exit 1" "" + + substituteInPlace ./workarea \ + --replace "/bin/ln" "${coreutils}/bin/ln" + + substituteInPlace ./makefiles/installsh \ + --replace "/usr/bin/true" "${coreutils}/bin/true" ''; /* Don't use configureFlags, since that just implicitly appends