| #!/bin/sh |
| |
| set -e |
| OUT="$1" |
| |
| find_node() { |
| NODE="${NODE_DIR}/bin/node" |
| CE_NODE="/opt/compiler-explorer/node/bin/node" |
| SYS_NODE="$(which node 2>/dev/null || true)" |
| SYS_NODEJS="$(which nodejs 2>/dev/null || true)" |
| |
| if test -x "${NODE}" -a -n "${NODE_DIR}"; then |
| echo "${NODE}" |
| elif test -x "${CE_NODE}"; then |
| echo "${CE_NODE}" |
| elif test -x "${SYS_NODE}"; then |
| echo "${SYS_NODE}" |
| elif test -x "${SYS_NODEJS}"; then |
| echo "${SYS_NODEJS}" |
| else |
| echo >&2 "Unable to find a node" |
| fi |
| } |
| |
| NODE="$(find_node)" |
| |
| NODE_MIN_VERSION=16 |
| NODE_VERSION_USED=18 |
| NODE_VERSION=$(${NODE} --version) |
| NODE_MAJOR_VERSION=$(echo "${NODE_VERSION}" | cut -f1 -d. | sed 's/^v//g') |
| |
| if test "${NODE_MAJOR_VERSION}" -lt ${NODE_MIN_VERSION}; then |
| echo >&2 "Compiler Explorer is known not to run with versions prior to v${NODE_MIN_VERSION}" |
| echo >&2 "Visit https://nodejs.org/ for installation instructions for newer versions" |
| echo >&2 "To configure where we look for node, set NODE_DIR to its installation base" |
| exit 1 |
| fi |
| |
| if test ${NODE_VERSION_USED} -ne "${NODE_MAJOR_VERSION}"; then |
| echo >&2 "Warning: Compiler Explorer is only tested against v${NODE_VERSION_USED}.x, but v${NODE_MAJOR_VERSION} was found." |
| echo >&2 "Note that you might find issues if you decide to keep this version" |
| echo >&2 "Visit https://nodejs.org/ for installation instructions for the required version" |
| echo >&2 "To configure where we look for node, set NODE_DIR to its installation base" |
| fi |
| |
| echo "${NODE}" >"${OUT}" |