mirror of
https://github.com/bluxmit/alnoda-workspaces.git
synced 2024-07-02 13:10:25 +12:00
59 lines
1.6 KiB
Bash
59 lines
1.6 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
## build ARGs
|
|
NCPUS=${NCPUS:--1}
|
|
|
|
JULIA_VERSION=${1:-${JULIA_VERSION:-latest}}
|
|
|
|
# a function to install apt packages only if they are not installed
|
|
function apt_install() {
|
|
if ! dpkg -s "$@" >/dev/null 2>&1; then
|
|
if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then
|
|
apt-get update
|
|
fi
|
|
apt-get install -y --no-install-recommends "$@"
|
|
fi
|
|
}
|
|
|
|
ARCH_LONG=$(uname -p)
|
|
ARCH_SHORT=$ARCH_LONG
|
|
|
|
if [ "$ARCH_LONG" = "x86_64" ]; then
|
|
ARCH_SHORT="x64"
|
|
fi
|
|
|
|
apt_install wget
|
|
|
|
install2.r --error --skipmissing --skipinstalled -n "$NCPUS" \
|
|
yaml \
|
|
JuliaCall \
|
|
JuliaConnectoR
|
|
|
|
# Get the latest Julia version by using R and the R yaml package.
|
|
if [ "$JULIA_VERSION" = "latest" ]; then
|
|
# shellcheck disable=SC2016
|
|
JULIA_VERSION=$(Rscript -e '
|
|
js <- yaml::read_yaml("https://julialang-s3.julialang.org/bin/versions.json")
|
|
versions <- names(js)
|
|
is_stable <- unlist(Map(function(x) x$stable, js))
|
|
latest_version <- sort(versions[is_stable], decreasing = TRUE)[1]
|
|
cat(latest_version)
|
|
')
|
|
fi
|
|
|
|
JULIA_MINOR_VERSION=${JULIA_VERSION%.*}
|
|
|
|
# Download Julia and create a symbolic link.
|
|
wget "https://julialang-s3.julialang.org/bin/linux/${ARCH_SHORT}/${JULIA_MINOR_VERSION}/julia-${JULIA_VERSION}-linux-${ARCH_LONG}.tar.gz"
|
|
mkdir /opt/julia
|
|
tar zxvf "julia-${JULIA_VERSION}-linux-${ARCH_LONG}.tar.gz" -C /opt/julia --strip-components 1
|
|
rm -f "julia-${JULIA_VERSION}-linux-${ARCH_LONG}.tar.gz"
|
|
ln -s /opt/julia/bin/julia /usr/local/bin/julia
|
|
|
|
julia --version
|
|
|
|
# Clean up
|
|
rm -rf /var/lib/apt/lists/*
|
|
rm -rf /tmp/downloaded_packages
|