···189189 EXTRA_LINK=$(sed -n "s/^cargo:rustc-link-lib=\(.*\)/\1/p" target/build/${crateName}.opt | tr '\n' ' ')
190190 EXTRA_LINK_SEARCH=$(sed -n "s/^cargo:rustc-link-search=\(.*\)/\1/p" target/build/${crateName}.opt | tr '\n' ' ' | sort -u)
191191192192+ # We want to read part of every line that has cargo:rustc-env= prefix and
193193+ # export it as environment variables. This turns out tricky if the lines
194194+ # have spaces: we can't wrap the command in double quotes as that captures
195195+ # all the lines in single output. We can't use while read loop because
196196+ # exporting from inside of it doesn't make it to the outside scope. We
197197+ # can't use xargs as export is a built-in and does not work from it. As a
198198+ # last resort then, we change the IFS so that the for loop does not split
199199+ # on spaces and reset it after we are done. See ticket #199298.
200200+ #
201201+ _OLDIFS="$IFS"
202202+ IFS=$'\n'
192203 for env in $(sed -n "s/^cargo:rustc-env=\(.*\)/\1/p" target/build/${crateName}.opt); do
193193- export $env
204204+ export "$env"
194205 done
206206+ IFS="$_OLDIFS"
195207196208 CRATENAME=$(echo ${crateName} | sed -e "s/\(.*\)-sys$/\U\1/" -e "s/-/_/g")
197209 grep -P "^cargo:(?!(rustc-|warning=|rerun-if-changed=|rerun-if-env-changed))" target/build/${crateName}.opt \