aboutsummaryrefslogtreecommitdiff
path: root/Tools/CI-linux-install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/CI-linux-install.sh')
-rw-r--r--Tools/CI-linux-install.sh176
1 files changed, 176 insertions, 0 deletions
diff --git a/Tools/CI-linux-install.sh b/Tools/CI-linux-install.sh
new file mode 100644
index 000000000..c16eb95d2
--- /dev/null
+++ b/Tools/CI-linux-install.sh
@@ -0,0 +1,176 @@
+#!/bin/bash
+# Expected to be called from elsewhere with certain variables set
+# e.g. RETRY=travis-retry SWIGLANG=python GCC=7
+set -e # exit on failure (same as -o errexit)
+
+if [[ -n "$GCC" ]]; then
+ $RETRY sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
+ $RETRY sudo apt-get -qq update
+ $RETRY sudo apt-get install -qq g++-$GCC
+else
+ $RETRY sudo apt-get -qq update
+fi
+
+$RETRY sudo apt-get -qq install libboost-dev libpcre3-dev
+# Note: testflags.py needs python, but python is pre-installed
+
+WITHLANG=$SWIGLANG
+
+case "$SWIGLANG" in
+ "") ;;
+ "csharp")
+ $RETRY sudo apt-get -qq install mono-devel
+ ;;
+ "d")
+ if [[ $VER =~ ^2\. ]]; then
+ $RETRY wget http://downloads.dlang.org/releases/2.x/${VER}/dmd_${VER}-0_amd64.deb
+ $RETRY sudo dpkg -i dmd_${VER}-0_amd64.deb
+ else
+ $RETRY sudo apt-get -qq install "$VER"
+ fi
+ ;;
+ "go")
+ if [[ "$VER" ]]; then
+ mkdir -p $HOME/bin
+ curl -sL -o $HOME/bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme
+ chmod +x $HOME/bin/gimme
+ eval "$($HOME/bin/gimme ${VER}.x)"
+ $HOME/bin/gimme --list
+ fi
+ ;;
+ "javascript")
+ case "$ENGINE" in
+ "node"|"napi")
+ $RETRY wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash
+ export NVM_DIR="$HOME/.nvm"
+ [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
+ $RETRY nvm install ${VER}
+ nvm use ${VER}
+ if [ "$VER" == "0.10" ] || [ "$VER" == "0.12" ] || [ "$VER" == "4" ] || [ "$VER" == "6" ] ; then
+# $RETRY sudo apt-get install -qq nodejs node-gyp
+ $RETRY npm install -g node-gyp@$VER
+ elif [ "$VER" == "8" ] ; then
+ $RETRY npm install -g node-gyp@6
+ elif [ "$VER" == "10" ] || [ "$VER" == "12" ] || [ "$VER" == "14" ] || [ "$VER" == "16" ]; then
+ $RETRY npm install -g node-gyp@7
+ else
+ $RETRY npm install -g node-gyp
+ fi
+ $RETRY npm install -g node-addon-api
+ ;;
+ "jsc")
+ $RETRY sudo apt-get install -qq libjavascriptcoregtk-${VER}-dev
+ ;;
+ "v8")
+ $RETRY sudo apt-get install -qq libnode-dev
+ ;;
+ esac
+ ;;
+ "guile")
+ $RETRY sudo apt-get -qq install guile-${VER:-2.0}-dev
+ ;;
+ "lua")
+ if [[ -z "$VER" ]]; then
+ $RETRY sudo apt-get -qq install lua5.2 liblua5.2-dev
+ else
+ $RETRY sudo apt-get -qq install lua${VER} liblua${VER}-dev
+ fi
+ ;;
+ "mzscheme")
+ $RETRY sudo apt-get -qq install racket
+ ;;
+ "ocaml")
+ $RETRY sudo apt-get -qq install ocaml camlp4
+ ;;
+ "octave")
+ if [[ "$VER" ]]; then
+ $RETRY sudo add-apt-repository -y ppa:devacom/science
+ $RETRY sudo apt-get -qq update
+ $RETRY sudo apt-get -qq install "liboctave-dev=$VER.*"
+ else
+ $RETRY sudo apt-get -qq update
+ $RETRY sudo apt-get -qq install liboctave-dev
+ fi
+ ;;
+ "php")
+ if [[ "$VER" ]]; then
+ $RETRY sudo apt-get -qq remove "php*-cli" "php*-dev" # Multiple versions are pre-installed
+ $RETRY sudo add-apt-repository -y ppa:ondrej/php
+ $RETRY sudo apt-get -qq update
+ $RETRY sudo apt-get -qq install php$VER-cli php$VER-dev
+ fi
+ ;;
+ "python")
+ pip install --user pycodestyle
+ if [[ "$PY2" ]]; then
+ WITHLANG=$SWIGLANG
+ else
+ WITHLANG=${SWIGLANG}3
+ fi
+ if [[ "$VER" ]]; then
+ $RETRY sudo add-apt-repository -y ppa:deadsnakes/ppa
+ $RETRY sudo apt-get -qq update
+ $RETRY sudo apt-get -qq install python${VER}-dev
+ WITHLANG=$WITHLANG=$SWIGLANG$VER
+ elif [[ "$PY2" ]]; then
+ $RETRY sudo apt-get install -qq python-dev
+ else
+ $RETRY sudo apt-get install -qq python3-dev
+ fi
+ ;;
+ "r")
+ $RETRY sudo apt-get -qq install r-base
+ ;;
+ "ruby")
+ if [[ "$VER" ]]; then
+ case "$VER" in
+ 3.1 | 3.2 | 3.2.2 | 3.3 )
+ # Ruby 3.1+ support is currently only rvm master (2023-04-19)
+ # YOLO
+ curl -sSL https://rvm.io/mpapis.asc | gpg --import -
+ curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
+ curl -sSL https://get.rvm.io | bash -s stable
+ set +x
+ source $HOME/.rvm/scripts/rvm
+ $RETRY rvm get master
+ rvm reload
+ rvm list known
+ set -x
+ ;;
+ * )
+ # Install from PPA as that also contains packages needed for the build.
+ sudo apt-add-repository -y ppa:rael-gc/rvm
+ sudo apt-get update
+ sudo apt-get install rvm
+ sudo usermod -a -G rvm $USER
+ set +x
+ source /etc/profile.d/rvm.sh
+ set -x
+ ;;
+ esac
+ set +x
+ $RETRY rvm install $VER
+ set -x
+ fi
+ ;;
+ "scilab")
+ if [[ -z "$VER" ]]; then
+ $RETRY sudo apt-get -qq install scilab
+ else
+ # Starting with version 2023.0.0 the download filename format changed.
+ case $VER in
+ 20*) scilab_tarball=scilab-$VER.bin.x86_64-pc-linux-gnu.tar.xz ;;
+ *) scilab_tarball=scilab-$VER.bin.linux-x86_64.tar.gz ;;
+ esac
+ $RETRY wget --progress=dot:giga "https://www.scilab.org/download/$VER/$scilab_tarball"
+ # $HOME/.local/bin is in PATH and writeable
+ mkdir -p "$HOME/.local"
+ tar -xf "$scilab_tarball" --strip-components=1 -C "$HOME/.local"
+ fi
+ ;;
+ "tcl")
+ $RETRY sudo apt-get -qq install tcl-dev
+ ;;
+esac
+
+set +e # turn off exit on failure (same as +o errexit)