about summary refs log tree commit diff
path: root/x
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2022-08-12 15:39:26 -0700
committerJosh Stone <jistone@redhat.com>2022-08-12 15:39:26 -0700
commitde8dedb0a524208e4856e80c22bc7f47df2fd91a (patch)
tree77cd17c0284a6954a1993ec7041c52203af24ea1 /x
parentf22819bcce4abaff7d1246a56eec493418f9f4ee (diff)
downloadrust-de8dedb0a524208e4856e80c22bc7f47df2fd91a.tar.gz
rust-de8dedb0a524208e4856e80c22bc7f47df2fd91a.zip
Use an extensionless `x` script for non-Windows
Diffstat (limited to 'x')
-rwxr-xr-xx33
1 files changed, 33 insertions, 0 deletions
diff --git a/x b/x
new file mode 100755
index 00000000000..704d0f791f3
--- /dev/null
+++ b/x
@@ -0,0 +1,33 @@
+#!/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
+
+realpath() {
+    if [ -d "$1" ]; then
+        CDPATH='' command cd "$1" && pwd -P   
+    else
+        echo "$(realpath "$(dirname "$1")")/$(basename "$1")"
+    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
+echo "$0: error: did not find python installed" >&2
+exit 1