diff --git a/pkgs/stdenv/mingw/builder.sh b/pkgs/stdenv/mingw/builder.sh index cfafde6b00dc..9cbadb5091e0 100755 --- a/pkgs/stdenv/mingw/builder.sh +++ b/pkgs/stdenv/mingw/builder.sh @@ -4,7 +4,6 @@ origShell=$SHELL origGcc=$GCC source $STDENV/setup -source $SUBSTITUTE mkdir $OUT diff --git a/pkgs/stdenv/mingw/simple-stdenv/builder.sh b/pkgs/stdenv/mingw/simple-stdenv/builder.sh index 650f6fb082f7..0cbc13e4fab3 100644 --- a/pkgs/stdenv/mingw/simple-stdenv/builder.sh +++ b/pkgs/stdenv/mingw/simple-stdenv/builder.sh @@ -29,6 +29,52 @@ header() { stopNest() { echo "Nothing to do" } + +# !!! Awful copy&paste. +substitute() { + local input="\$1" + local output="\$2" + + local -a params=("\$@") + + local sedScript=\$NIX_BUILD_TOP/.sedargs + rm -f \$sedScript + touch \$sedScript + + local n p pattern replacement varName + + for ((n = 2; n < \${#params[*]}; n += 1)); do + p=\${params[\$n]} + + if test "\$p" = "--replace"; then + pattern=\${params[\$((n + 1))]} + replacement=\${params[\$((n + 2))]} + n=\$((n + 2)) + echo "s^\$pattern^\$replacement^g" >> \$sedScript + sedArgs=("\${sedArgs[@]}" "-e" ) + fi + + if test "\$p" = "--subst-var"; then + varName=\${params[\$((n + 1))]} + n=\$((n + 1)) + 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)) + echo "s^@\${varName}@^\$replacement^g" >> \$sedScript + fi + + done + + sed -f \$sedScript < "\$input" > "\$output".tmp + if test -x "\$output"; then + chmod +x "\$output".tmp + fi + mv -f "\$output".tmp "\$output" +} EOF chmod +x $out/setup