mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	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>
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			46 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
 |