From a1d61e736750159f6e860c7649d5f46dcade4d42 Mon Sep 17 00:00:00 2001
From: Austin Seipp <aseipp@pobox.com>
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 <aseipp@pobox.com>
---
 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 da60ffbb67a..d9e7cc50730 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