summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2006-12-27 17:14:00 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2006-12-27 17:14:00 +0000
commit592cb44e525d8d724995be9c97511a0ab84852be (patch)
treeacb325c9bc12187a82622b26d008219759c25178 /pkgs
parenteb98a4c328614010da2c6c805ee206ea6460b01a (diff)
downloadnixpkgs-592cb44e525d8d724995be9c97511a0ab84852be.tar
nixpkgs-592cb44e525d8d724995be9c97511a0ab84852be.tar.gz
nixpkgs-592cb44e525d8d724995be9c97511a0ab84852be.tar.bz2
nixpkgs-592cb44e525d8d724995be9c97511a0ab84852be.tar.lz
nixpkgs-592cb44e525d8d724995be9c97511a0ab84852be.tar.xz
nixpkgs-592cb44e525d8d724995be9c97511a0ab84852be.tar.zst
nixpkgs-592cb44e525d8d724995be9c97511a0ab84852be.zip
* Fix the quadratic performance in substitute().
svn path=/nixpkgs/trunk/; revision=7488
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/stdenv/generic/setup-new2.sh13
1 files changed, 8 insertions, 5 deletions
diff --git a/pkgs/stdenv/generic/setup-new2.sh b/pkgs/stdenv/generic/setup-new2.sh
index 401a655632b..ddd171fae14 100644
--- a/pkgs/stdenv/generic/setup-new2.sh
+++ b/pkgs/stdenv/generic/setup-new2.sh
@@ -180,7 +180,9 @@ substitute() {
 
     local params=("$@")
 
-    local sedArgs=()
+    local sedScript=$NIX_BUILD_TOP/.sedargs
+    rm -f $sedScript
+    touch $sedScript
 
     local n p pattern replacement varName
     
@@ -191,25 +193,26 @@ substitute() {
             pattern=${params[$((n + 1))]}
             replacement=${params[$((n + 2))]}
             n=$((n + 2))
-            sedArgs=("${sedArgs[@]}" "-e" "s^$pattern^$replacement^g")
+            echo "s^$pattern^$replacement^g" >> $sedScript
+            sedArgs=("${sedArgs[@]}" "-e" )
         fi
 
         if test "$p" = "--subst-var"; then
             varName=${params[$((n + 1))]}
             n=$((n + 1))
-            sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^${!varName}^g")
+            echo "s^@${varName}@^${!varName}^g" >> $sedScript
         fi
 
         if test "$p" = "--subst-var-by"; then
             varName=${params[$((n + 1))]}
             replacement=${params[$((n + 2))]}
             n=$((n + 2))
-            sedArgs=("${sedArgs[@]}" "-e" "s^@${varName}@^$replacement^g")
+            echo "s^@${varName}@^$replacement^g" >> $sedScript
         fi
 
     done
 
-    sed "${sedArgs[@]}" < "$input" > "$output".tmp
+    sed -f $sedScript < "$input" > "$output".tmp
     if test -x "$output"; then
         chmod +x "$output".tmp
     fi