mirror of
https://github.com/luxfi/torus-ml.git
synced 2026-10-30 15:15:23 +00:00
208 lines
7.3 KiB
Bash
Executable File
208 lines
7.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
DIR=$(dirname "$0")
|
|
|
|
# shellcheck disable=SC1090,SC1091
|
|
source "${DIR}/detect_docker.sh"
|
|
|
|
LINUX_INSTALL_PYTHON=0
|
|
ONLY_LINUX_ACTIONLINT=0
|
|
|
|
while [ -n "$1" ]
|
|
do
|
|
case "$1" in
|
|
"--linux-install-python" )
|
|
LINUX_INSTALL_PYTHON=1
|
|
;;
|
|
|
|
"--only-linux-actionlint" )
|
|
ONLY_LINUX_ACTIONLINT=1
|
|
;;
|
|
|
|
*)
|
|
echo "Unknown param : $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
|
|
linux_install_gitleaks () {
|
|
GITLEAKS_VERSION=8.17.0
|
|
GITLEAKS_LINUX_X64_SHA256=e0e1d641cc55bcf3c0ecc1abcfc6b432e86611a53121d87ce40eacd9467f98c3
|
|
|
|
GITLEAKS_ARCHIVE_LINK="https://github.com/zricethezav/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz"
|
|
|
|
TMP_WORKDIR="$(mktemp -d)"
|
|
DOWNLOADED_FILE="${TMP_WORKDIR}/gitleaks.tar.gz"
|
|
wget --https-only --output-document="${DOWNLOADED_FILE}" "${GITLEAKS_ARCHIVE_LINK}"
|
|
SHA256_DOWNLOADED_FILE="$(sha256sum "${DOWNLOADED_FILE}" | cut -d ' ' -f 1)"
|
|
STATUS=0
|
|
if [[ "${SHA256_DOWNLOADED_FILE}" == "${GITLEAKS_LINUX_X64_SHA256}" ]]; then
|
|
tar -xvf "${DOWNLOADED_FILE}" -C "${TMP_WORKDIR}"
|
|
GITLEAKS_BIN="${TMP_WORKDIR}/gitleaks"
|
|
chmod +x "${GITLEAKS_BIN}"
|
|
${SUDO_BIN:+$SUDO_BIN} cp "${GITLEAKS_BIN}" /usr/local/bin/
|
|
else
|
|
echo "Hash mismatch"
|
|
echo "Got sha256: ${SHA256_DOWNLOADED_FILE}"
|
|
echo "Expected sha256: ${GITLEAKS_LINUX_X64_SHA256}"
|
|
STATUS=1
|
|
fi
|
|
rm -rf "${TMP_WORKDIR}"
|
|
return "${STATUS}"
|
|
}
|
|
|
|
linux_install_actionlint () {
|
|
ACTIONLINT_VERSION=1.6.12
|
|
ACTIONLINT_LINUX_X64_SHA256=9a7ea97e07a2c058756609274126e78b60ed15c1ed481ccb9da94b74c24d5f3f
|
|
|
|
ACTIONLINT_ARCHIVE_LINK="https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz"
|
|
|
|
TMP_WORKDIR="$(mktemp -d)"
|
|
DOWNLOADED_FILE="${TMP_WORKDIR}/actionlint.tar.gz"
|
|
wget --https-only --output-document="${DOWNLOADED_FILE}" "${ACTIONLINT_ARCHIVE_LINK}"
|
|
SHA256_DOWNLOADED_FILE="$(sha256sum "${DOWNLOADED_FILE}" | cut -d ' ' -f 1)"
|
|
STATUS=0
|
|
if [[ "${SHA256_DOWNLOADED_FILE}" == "${ACTIONLINT_LINUX_X64_SHA256}" ]]; then
|
|
tar -xvf "${DOWNLOADED_FILE}" -C "${TMP_WORKDIR}"
|
|
ACTIONLINT_BIN="${TMP_WORKDIR}/actionlint"
|
|
chmod +x "${ACTIONLINT_BIN}"
|
|
${SUDO_BIN:+$SUDO_BIN} cp "${ACTIONLINT_BIN}" /usr/local/bin/
|
|
else
|
|
echo "Hash mismatch"
|
|
echo "Got sha256: ${SHA256_DOWNLOADED_FILE}"
|
|
echo "Expected sha256: ${ACTIONLINT_LINUX_X64_SHA256}"
|
|
STATUS=1
|
|
fi
|
|
rm -rf "${TMP_WORKDIR}"
|
|
return "${STATUS}"
|
|
}
|
|
|
|
linux_install_github_cli () {
|
|
# Installs github cli
|
|
# https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt
|
|
echo "Installing github-CLI"
|
|
export GH_CLI_VERSION="2.51.0"
|
|
wget -P "$HOME" https://github.com/cli/cli/releases/download/v${GH_CLI_VERSION}/gh_${GH_CLI_VERSION}_linux_amd64.deb
|
|
${SUDO_BIN:+$SUDO_BIN} dpkg -i "$HOME/gh_${GH_CLI_VERSION}_linux_amd64.deb"
|
|
}
|
|
|
|
linux_install_cmake () {
|
|
# Install lsb-release if not present
|
|
if ! command -v lsb_release >/dev/null 2>&1; then
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get update
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get -y install lsb-release
|
|
fi
|
|
|
|
# Get Ubuntu version codename
|
|
UBUNTU_CODENAME=$(lsb_release -cs)
|
|
|
|
# For Ubuntu 22.04 (jammy) and newer, use the default package
|
|
if [[ "${UBUNTU_CODENAME}" == "jammy" || "${UBUNTU_CODENAME}" > "jammy" ]]; then
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get update
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get -y install cmake
|
|
return
|
|
fi
|
|
|
|
# For Ubuntu 20.04 (focal) and older, use Kitware's repository
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get update
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get -y install ca-certificates gpg wget
|
|
test -f /usr/share/doc/kitware-archive-keyring/copyright ||
|
|
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | \
|
|
gpg --dearmor - | \
|
|
${SUDO_BIN:+$SUDO_BIN} tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
|
|
echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ ${UBUNTU_CODENAME} main" | \
|
|
${SUDO_BIN:+$SUDO_BIN} tee /etc/apt/sources.list.d/kitware.list >/dev/null
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get update
|
|
test -f /usr/share/doc/kitware-archive-keyring/copyright || \
|
|
${SUDO_BIN:+$SUDO_BIN} rm /usr/share/keyrings/kitware-archive-keyring.gpg
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get install -y kitware-archive-keyring
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get update
|
|
${SUDO_BIN:+$SUDO_BIN} apt-get -y install cmake=3.28.3-0kitware1ubuntu20.04.1 cmake-data=3.28.3-0kitware1ubuntu20.04.1
|
|
|
|
cmake --version
|
|
}
|
|
|
|
OS_NAME=$(uname)
|
|
|
|
if [[ "${OS_NAME}" == "Linux" ]]; then
|
|
# Docker build
|
|
CLEAR_APT_LISTS=""
|
|
SUDO_BIN="$(command -v sudo)"
|
|
if [[ "${SUDO_BIN}" != "" ]]; then
|
|
SUDO_BIN="${SUDO_BIN} "
|
|
fi
|
|
|
|
PYTHON_PACKAGES=
|
|
if [[ "${LINUX_INSTALL_PYTHON}" == "1" ]]; then
|
|
PYTHON_PACKAGES="python3-pip \
|
|
python3 \
|
|
python3-dev \
|
|
python3-tk \
|
|
python3-venv \
|
|
python-is-python3 \
|
|
"
|
|
fi
|
|
|
|
if [[ "${ONLY_LINUX_ACTIONLINT}" == "1" ]]
|
|
then
|
|
SETUP_CMD="linux_install_actionlint"
|
|
else
|
|
SETUP_CMD="${SUDO_BIN:+$SUDO_BIN}apt-get update && \
|
|
${SUDO_BIN:+$SUDO_BIN}apt-get upgrade --no-install-recommends -y && \
|
|
${SUDO_BIN:+$SUDO_BIN}apt-get install --no-install-recommends -y \
|
|
build-essential \
|
|
curl \
|
|
${PYTHON_PACKAGES:+$PYTHON_PACKAGES} \
|
|
git \
|
|
git-lfs \
|
|
graphviz* \
|
|
jq \
|
|
make \
|
|
rsync \
|
|
unzip \
|
|
pandoc \
|
|
openssl \
|
|
shellcheck \
|
|
libssl-dev \
|
|
texlive-latex-base texlive-latex-extra texlive-fonts-recommended texlive-xetex lmodern \
|
|
wget pipx &&
|
|
${CLEAR_APT_LISTS:+$CLEAR_APT_LISTS} \
|
|
linux_install_gitleaks && \
|
|
linux_install_actionlint && \
|
|
linux_install_github_cli && \
|
|
linux_install_cmake"
|
|
fi
|
|
eval "${SETUP_CMD}"
|
|
|
|
|
|
# Install poetry, either with pipx for ubuntu >= 23
|
|
# or through regular pip for older ubuntu
|
|
(\
|
|
python3 -m pip install --no-cache-dir --upgrade pip && \
|
|
python3 -m pip install --no-cache-dir --ignore-installed poetry==1.8.4 \
|
|
) || (pipx install poetry==1.8.4 && pipx ensurepath);
|
|
|
|
echo "PATH=$PATH:$HOME/.local/bin/" >> "$HOME/.bashrc"
|
|
elif [[ "${OS_NAME}" == "Darwin" ]]; then
|
|
|
|
# Some problems with the git which is preinstalled on AWS virtual machines. Let's unlink it
|
|
# but not fail if it is not there, so use 'cat' as a hack to be sure that, even if set -x is
|
|
# activated later in this script, the status is still 0 == success
|
|
brew unlink [email protected] | cat
|
|
|
|
brew install curl git git-lfs gitleaks graphviz jq make pandoc shellcheck openssl libomp actionlint unzip gh rsync
|
|
python3 -m pip install -U pip
|
|
python3 -m pip install poetry==1.8.4
|
|
|
|
echo "Make is currently installed as gmake"
|
|
echo 'If you need to use it as "make", you can add a "gnubin" directory to your PATH from your bashrc like:'
|
|
# shellcheck disable=SC2016
|
|
echo 'PATH="/usr/local/opt/make/libexec/gnubin:$PATH"'
|
|
else
|
|
echo "Unknown OS"
|
|
exit 1
|
|
fi
|