From 592cb44e525d8d724995be9c97511a0ab84852be Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Dec 2006 17:14:00 +0000 Subject: [PATCH] * Fix the quadratic performance in substitute(). svn path=/nixpkgs/trunk/; revision=7488 --- pkgs/stdenv/generic/setup-new2.sh | 13 ++++++++----- 1 file 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