configure: Don't use bash-specific string-replacement syntax
The variable string-replacement syntax ${var/old/new} is a bashism (though it is also supported by some other shells), and for instance does not work with the NetBSD /bin/sh, which complains: ../src/configure: 687: Syntax error: Bad substitution Replace it with a more portable sed-based approach, similar to what we already do in quote_sh(). Note that shellcheck also diagnoses this: In ./configure line 687: e=${e/'\'/'\\'} ^-----------^ SC2039: In POSIX sh, string replacement is undefined. ^-- SC1003: Want to escape a single quote? echo 'This is how it'\''s done'. ^-- SC1003: Want to escape a single quote? echo 'This is how it'\''s done'. In ./configure line 688: e=${e/\"/'\"'} ^----------^ SC2039: In POSIX sh, string replacement is undefined. Fixes: 8154f5e64b0cf ("meson: Prefix each element of firmware path") Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Thomas Huth <thuth@redhat.com> Message-id: 20220720152631.450903-4-peter.maydell@linaro.org
This commit is contained in:
parent
d466d416ed
commit
65842b03d1
7
configure
vendored
7
configure
vendored
@ -684,9 +684,10 @@ meson_option_build_array() {
|
|||||||
IFS=:
|
IFS=:
|
||||||
fi
|
fi
|
||||||
for e in $1; do
|
for e in $1; do
|
||||||
e=${e/'\'/'\\'}
|
printf '"""'
|
||||||
e=${e/\"/'\"'}
|
# backslash escape any '\' and '"' characters
|
||||||
printf '"""%s""",' "$e"
|
printf "%s" "$e" | sed -e 's/\([\"]\)/\\\1/g'
|
||||||
|
printf '""",'
|
||||||
done)
|
done)
|
||||||
printf ']\n'
|
printf ']\n'
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user