Files
ci-emsdk/emsdk
Alexander Köplinger 7fbd555dbe Use "command -v" instead of "which" to detect python executable (#1419)
On a Linux distro that doesn't have the `which` program installed we're
getting the following error:

    $ ./emsdk install latest
    ./emsdk: line 39: exec: python: not found

It's failing to detect the installed `python3` and falls back to using
`python`, but this distro doesn't provide a python -> python3 symlink so
we fail.

Fix this by using `command -v` instead which is a POSIX standard.
The same change went into emscripten a couple years ago:
https://github.com/emscripten-core/emscripten/pull/15071
2024-07-01 09:22:28 -07:00

40 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
# Copyright 2019 The Emscripten Authors. All rights reserved.
# Emscripten is available under two separate licenses, the MIT license and the
# University of Illinois/NCSA Open Source License. Both these licenses can be
# found in the LICENSE file.
# Wrapper script that runs emsdk.py
# First look for python bundled in Emsdk
if [ -z "$EMSDK_PYTHON" ]; then
PYTHON3="$(dirname "$0")/python/3.9.2-1_64bit/bin/python3"
if [ ! -f "$PYTHON3" ]; then
PYTHON3="$(dirname "$0")/python/3.7.4-2_64bit/bin/python3"
fi
if [ -f "$PYTHON3" ]; then
EMSDK_PYTHON="$PYTHON3"
# When using our bundled python we never want the users
# PYTHONHOME or PYTHONPATH
# https://github.com/emscripten-core/emsdk/issues/598
unset PYTHONHOME
unset PYTHONPATH
fi
fi
# If bundled python is not found, look for `python3` in PATH. This is especially important on macOS (See:
# https://github.com/emscripten-core/emsdk/pull/273)
if [ -z "$EMSDK_PYTHON" ]; then
if PYTHON3="$(command -v python3 2>/dev/null)"; then
EMSDK_PYTHON=$PYTHON3
fi
fi
# Finally fall back to just looking for `python` in PATH
if [ -z "$EMSDK_PYTHON" ]; then
EMSDK_PYTHON=python
fi
exec "$EMSDK_PYTHON" "$0.py" "$@"