about summary refs log tree commit diff
path: root/pkgs/stdenv/generic/builder.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/stdenv/generic/builder.sh')
-rw-r--r--pkgs/stdenv/generic/builder.sh29
1 files changed, 18 insertions, 11 deletions
diff --git a/pkgs/stdenv/generic/builder.sh b/pkgs/stdenv/generic/builder.sh
index ee2dbb3d0f9e..0af3210dbc94 100644
--- a/pkgs/stdenv/generic/builder.sh
+++ b/pkgs/stdenv/generic/builder.sh
@@ -3,19 +3,26 @@ p2=$param2
 p3=$param3
 p4=$param4
 p5=$param5
+_preHook="$preHook"
+_postHook="$postHook"
+preHook=
+postHook=
 
 source $stdenv/setup
 
 mkdir $out
 
-substitute "$setup" "$out/setup" \
-    --subst-var preHook \
-    --subst-var postHook \
-    --subst-var initialPath \
-    --subst-var gcc \
-    --subst-var shell \
-    --subst-var-by param1 "$p1" \
-    --subst-var-by param2 "$p2" \
-    --subst-var-by param3 "$p3" \
-    --subst-var-by param4 "$p4" \
-    --subst-var-by param5 "$p5"
+# Can't use substitute() here, because replace may not have been
+# built yet (in the bootstrap).
+sed \
+    -e "s^@preHook@^$_preHook^g" \
+    -e "s^@postHook@^$_postHook^g" \
+    -e "s^@initialPath@^$initialPath^g" \
+    -e "s^@gcc@^$gcc^g" \
+    -e "s^@shell@^$shell^g" \
+    -e "s^@param1@^$p1^g" \
+    -e "s^@param2@^$p2^g" \
+    -e "s^@param3@^$p3^g" \
+    -e "s^@param4@^$p4^g" \
+    -e "s^@param5@^$p5^g" \
+    < "$setup" > "$out/setup"