diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2006-12-27 17:14:00 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2006-12-27 17:14:00 +0000 |
commit | 592cb44e525d8d724995be9c97511a0ab84852be (patch) | |
tree | acb325c9bc12187a82622b26d008219759c25178 /pkgs | |
parent | eb98a4c328614010da2c6c805ee206ea6460b01a (diff) | |
download | nixpkgs-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.sh | 13 |
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 |