mirror of
https://github.com/rust-lang/rust
synced 2024-11-05 20:45:15 +00:00
e0fe1d6008
When bootstrapping from outside of the rust source, instead of calling 'x' from the absolute path (like /home/user/rust/x), we should be able to link 'x' from the rust source to binary paths so it can be used easily. Before this change, 'x' was not capable of finding 'x.py' when called from the linked file. Signed-off-by: onur-ozkan <work@onurozkan.dev>
45 lines
1.2 KiB
Bash
Executable file
45 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# Modern Linux and macOS systems commonly only have a thing called `python3` and
|
|
# not `python`, while Windows commonly does not have `python3`, so we cannot
|
|
# directly use python in the x.py shebang and have it consistently work. Instead we
|
|
# have a shell script to look for a python to run x.py.
|
|
|
|
set -eu
|
|
|
|
# syntax check
|
|
sh -n "$0"
|
|
|
|
realpath() {
|
|
local path="$1"
|
|
if [ -L "$path" ]; then
|
|
readlink -f "$path"
|
|
elif [ -d "$path" ]; then
|
|
(cd -P "$path" && pwd)
|
|
else
|
|
echo "$(realpath "$(dirname "$path")")/$(basename "$path")"
|
|
fi
|
|
}
|
|
|
|
xpy=$(dirname "$(realpath "$0")")/x.py
|
|
|
|
# On Windows, `py -3` sometimes works. We need to try it first because `python3`
|
|
# sometimes tries to launch the app store on Windows.
|
|
for SEARCH_PYTHON in py python3 python python2; do
|
|
if python=$(command -v $SEARCH_PYTHON) && [ -x "$python" ]; then
|
|
if [ $SEARCH_PYTHON = py ]; then
|
|
extra_arg="-3"
|
|
else
|
|
extra_arg=""
|
|
fi
|
|
exec "$python" $extra_arg "$xpy" "$@"
|
|
fi
|
|
done
|
|
|
|
python=$(bash -c "compgen -c python" | grep '^python[2-3]\.[0-9]\+$' | head -n1)
|
|
if ! [ "$python" = "" ]; then
|
|
exec "$python" "$xpy" "$@"
|
|
fi
|
|
|
|
echo "$0: error: did not find python installed" >&2
|
|
exit 1
|