2020-05-13 10:17:34 +02:00
|
|
|
#!/usr/bin/env sh
|
|
|
|
set -eu
|
|
|
|
|
2021-05-10 18:26:39 +02:00
|
|
|
# Copied from arch() in ci/lib.sh.
|
|
|
|
detect_arch() {
|
|
|
|
case "$(uname -m)" in
|
2021-06-28 18:36:55 +02:00
|
|
|
aarch64)
|
|
|
|
echo arm64
|
|
|
|
;;
|
|
|
|
x86_64 | amd64)
|
|
|
|
echo amd64
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
# This will cause the download to fail, but is intentional
|
|
|
|
uname -m
|
|
|
|
;;
|
2021-05-10 18:26:39 +02:00
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
ARCH="${NPM_CONFIG_ARCH:-$(detect_arch)}"
|
2021-06-07 23:09:54 +02:00
|
|
|
# This is due to an upstream issue with RHEL7/CentOS 7 comptability with node-argon2
|
|
|
|
# See: https://github.com/cdr/code-server/pull/3422#pullrequestreview-677765057
|
2021-06-07 23:46:59 +02:00
|
|
|
export npm_config_build_from_source=true
|
2021-05-10 18:26:39 +02:00
|
|
|
|
2020-05-13 10:17:34 +02:00
|
|
|
main() {
|
2020-05-15 03:37:58 +02:00
|
|
|
# Grabs the major version of node from $npm_config_user_agent which looks like
|
|
|
|
# yarn/1.21.1 npm/? node/v14.2.0 darwin x64
|
|
|
|
major_node_version=$(echo "$npm_config_user_agent" | sed -n 's/.*node\/v\([^.]*\).*/\1/p')
|
2021-06-01 19:19:03 +02:00
|
|
|
|
|
|
|
if [ -n "${FORCE_NODE_VERSION:-}" ]; then
|
|
|
|
echo "WARNING: Overriding required Node.js version to v$FORCE_NODE_VERSION"
|
|
|
|
echo "This could lead to broken functionality, and is unsupported."
|
|
|
|
echo "USE AT YOUR OWN RISK!"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$major_node_version" -ne "${FORCE_NODE_VERSION:-14}" ]; then
|
|
|
|
echo "ERROR: code-server currently requires node v14."
|
|
|
|
if [ -n "$FORCE_NODE_VERSION" ]; then
|
|
|
|
echo "However, you have overrided the version check to use v$FORCE_NODE_VERSION."
|
|
|
|
fi
|
2020-05-15 03:37:58 +02:00
|
|
|
echo "We have detected that you are on node v$major_node_version"
|
2021-06-01 19:19:03 +02:00
|
|
|
echo "You can override this version check by setting \$FORCE_NODE_VERSION,"
|
|
|
|
echo "but configurations that do not use the same node version are unsupported."
|
2020-05-15 03:37:58 +02:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2020-05-13 11:06:11 +02:00
|
|
|
case "${npm_config_user_agent-}" in npm*)
|
|
|
|
# We are running under npm.
|
|
|
|
if [ "${npm_config_unsafe_perm-}" != "true" ]; then
|
|
|
|
echo "Please pass --unsafe-perm to npm to install code-server"
|
|
|
|
echo "Otherwise the postinstall script does not have permissions to run"
|
|
|
|
echo "See https://docs.npmjs.com/misc/config#unsafe-perm"
|
|
|
|
echo "See https://stackoverflow.com/questions/49084929/npm-sudo-global-installation-unsafe-perm"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2020-10-12 08:09:48 +02:00
|
|
|
OS="$(uname | tr '[:upper:]' '[:lower:]')"
|
2021-10-28 22:27:17 +02:00
|
|
|
|
|
|
|
mkdir -p ./lib
|
|
|
|
|
2021-05-10 18:26:39 +02:00
|
|
|
if curl -fsSL "https://github.com/cdr/cloud-agent/releases/latest/download/cloud-agent-$OS-$ARCH" -o ./lib/coder-cloud-agent; then
|
2020-11-02 23:47:09 +01:00
|
|
|
chmod +x ./lib/coder-cloud-agent
|
|
|
|
else
|
|
|
|
echo "Failed to download cloud agent; --link will not work"
|
|
|
|
fi
|
2020-10-12 08:09:48 +02:00
|
|
|
|
2021-09-15 21:17:39 +02:00
|
|
|
if curl -fsSL "https://storage.googleapis.com/coder-link-releases/latest/linkup-$OS-$ARCH" -o ./lib/linkup; then
|
|
|
|
chmod +x ./lib/linkup
|
|
|
|
else
|
|
|
|
echo "Failed to download Link agent; the Link extension will not work"
|
|
|
|
fi
|
|
|
|
|
2020-05-19 03:30:24 +02:00
|
|
|
if ! vscode_yarn; then
|
2020-05-13 11:06:11 +02:00
|
|
|
echo "You may not have the required dependencies to build the native modules."
|
2021-02-03 17:32:35 +01:00
|
|
|
echo "Please see https://github.com/cdr/code-server/blob/master/docs/npm.md"
|
2020-05-13 11:06:11 +02:00
|
|
|
exit 1
|
|
|
|
fi
|
2021-06-01 19:19:03 +02:00
|
|
|
|
|
|
|
if [ -n "${FORCE_NODE_VERSION:-}" ]; then
|
|
|
|
echo "WARNING: The required Node.js version was overriden to v$FORCE_NODE_VERSION"
|
|
|
|
echo "This could lead to broken functionality, and is unsupported."
|
|
|
|
echo "USE AT YOUR OWN RISK!"
|
|
|
|
fi
|
2020-05-13 10:17:34 +02:00
|
|
|
}
|
|
|
|
|
2021-05-12 23:46:29 +02:00
|
|
|
# This is a copy of symlink_asar in ../lib.sh. Look there for details.
|
|
|
|
symlink_asar() {
|
2021-06-03 18:30:37 +02:00
|
|
|
rm -rf node_modules.asar
|
2021-05-12 23:46:29 +02:00
|
|
|
if [ "${WINDIR-}" ]; then
|
|
|
|
mklink /J node_modules.asar node_modules
|
|
|
|
else
|
|
|
|
ln -s node_modules node_modules.asar
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2020-05-19 03:30:24 +02:00
|
|
|
vscode_yarn() {
|
2021-09-08 21:05:49 +02:00
|
|
|
echo 'Installing vendor dependencies...'
|
|
|
|
cd vendor/modules/code-oss-dev
|
2020-05-19 03:30:24 +02:00
|
|
|
yarn --production --frozen-lockfile
|
2020-12-17 22:16:04 +01:00
|
|
|
|
2021-05-12 23:46:29 +02:00
|
|
|
symlink_asar
|
2020-12-17 22:16:04 +01:00
|
|
|
|
2020-05-19 03:30:24 +02:00
|
|
|
cd extensions
|
2020-07-30 17:42:34 +02:00
|
|
|
yarn --production --frozen-lockfile
|
2021-09-08 21:05:49 +02:00
|
|
|
|
2020-10-09 21:00:49 +02:00
|
|
|
for ext in */; do
|
|
|
|
ext="${ext%/}"
|
|
|
|
echo "extensions/$ext: installing dependencies"
|
|
|
|
cd "$ext"
|
|
|
|
yarn --production --frozen-lockfile
|
|
|
|
cd "$OLDPWD"
|
|
|
|
done
|
2020-05-19 03:30:24 +02:00
|
|
|
}
|
|
|
|
|
2020-05-13 10:17:34 +02:00
|
|
|
main "$@"
|