From 25fb0e0fc1727041d8982a0070ca0317b3c3e7bd Mon Sep 17 00:00:00 2001 From: Michael Mayer Date: Sat, 23 Jul 2022 13:55:05 +0200 Subject: [PATCH] CI: Improve dist install scripts and add usage docs Signed-off-by: Michael Mayer --- docker/demo/setup.sh | 2 +- docker/examples/cloud/setup.sh | 2 +- scripts/dist/install-chrome.sh | 37 ++++++++++------ scripts/dist/install-darktable.sh | 73 +++++++++++++++++++------------ scripts/dist/install-go-tools.sh | 34 +++++++++----- scripts/dist/install-go.sh | 32 +++++++++----- scripts/dist/install-gpu.sh | 34 +++++++++++--- scripts/dist/install-mariadb.sh | 3 ++ scripts/dist/install-nodejs.sh | 3 ++ 9 files changed, 148 insertions(+), 72 deletions(-) diff --git a/docker/demo/setup.sh b/docker/demo/setup.sh index c41519c00..2f3b8c39c 100755 --- a/docker/demo/setup.sh +++ b/docker/demo/setup.sh @@ -52,7 +52,7 @@ apt-get -qq install --no-install-recommends apt-transport-https ca-certificates # install docker if needed if ! command -v docker &> /dev/null; then - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/download.docker.com.gpg add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" apt-get update apt-get -qq install docker-ce diff --git a/docker/examples/cloud/setup.sh b/docker/examples/cloud/setup.sh index f90033fd9..9fa7fac11 100755 --- a/docker/examples/cloud/setup.sh +++ b/docker/examples/cloud/setup.sh @@ -44,7 +44,7 @@ apt-get -qq install --no-install-recommends apt-transport-https ca-certificates # install docker if needed if ! command -v docker &> /dev/null; then - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/download.docker.com.gpg add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" apt-get update apt-get -qq install docker-ce diff --git a/scripts/dist/install-chrome.sh b/scripts/dist/install-chrome.sh index 394fd5212..134e0e8bb 100755 --- a/scripts/dist/install-chrome.sh +++ b/scripts/dist/install-chrome.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# Installs Google Chrome on Linux +# bash <(curl -s https://raw.githubusercontent.com/photoprism/photoprism/develop/scripts/dist/install-chrome.sh) + PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts:$PATH" # abort if not executed as root @@ -8,22 +11,30 @@ if [[ $(id -u) != "0" ]]; then exit 1 fi -SYSTEM_ARCH=$("$(dirname "$0")/arch.sh") -DESTARCH=${2:-$SYSTEM_ARCH} -. /etc/os-release - -if [[ $DESTARCH != "amd64" ]]; then - echo "Google Chrome (stable) is only available for AMD64." - exit +if [[ $PHOTOPRISM_ARCH ]]; then + SYSTEM_ARCH=$PHOTOPRISM_ARCH +else + SYSTEM_ARCH=$(uname -m) fi -echo "Installing Google Chrome (stable) on ${ID} for ${DESTARCH^^}..." +DESTARCH=${2:-$SYSTEM_ARCH} -set -e +. /etc/os-release -wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - -sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' -apt-get update -apt-get -qq install google-chrome-stable +case $DESTARCH in + amd64 | AMD64 | x86_64 | x86-64) + echo "Installing Google Chrome (stable) on ${ID} for ${DESTARCH^^}..." + set -e + curl -fsSL https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /etc/apt/trusted.gpg.d/dl-ssl.google.com.gpg + sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' + apt-get update + apt-get -qq install google-chrome-stable + ;; + + *) + echo "Unsupported Machine Architecture: \"$BUILD_ARCH\"" 1>&2 + exit 0 + ;; +esac echo "Done." \ No newline at end of file diff --git a/scripts/dist/install-darktable.sh b/scripts/dist/install-darktable.sh index 044d8657b..069c4ba8d 100755 --- a/scripts/dist/install-darktable.sh +++ b/scripts/dist/install-darktable.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# Installs Darktable on Linux +# bash <(curl -s https://raw.githubusercontent.com/photoprism/photoprism/develop/scripts/dist/install-darktable.sh) + PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts:$PATH" # abort if not executed as root @@ -8,39 +11,51 @@ if [[ $(id -u) != "0" ]]; then exit 1 fi -set -e +if [[ $PHOTOPRISM_ARCH ]]; then + SYSTEM_ARCH=$PHOTOPRISM_ARCH +else + SYSTEM_ARCH=$(uname -m) +fi -SYSTEM_ARCH=$("$(dirname "$0")/arch.sh") DESTARCH=${2:-$SYSTEM_ARCH} +set -e + . /etc/os-release echo "Installing Darktable for ${DESTARCH^^}..." -if [[ $DESTARCH == "amd64" || $DESTARCH == "x86_64" ]]; then - if [[ $VERSION_CODENAME == "bullseye" ]]; then - apt-get update - apt-get -qq install -t bullseye-backports darktable - elif [[ $VERSION_CODENAME == "buster" ]]; then - apt-get update - apt-get -qq install -t buster-backports darktable - else - echo "install-darktable: installing standard amd64 (Intel 64-bit) package" - apt-get -qq install darktable - fi - echo "Done." -elif [[ $DESTARCH == "arm64" ]]; then - if [[ $VERSION_CODENAME == "bullseye" ]]; then - apt-get update - apt-get -qq install -t bullseye-backports darktable - elif [[ $VERSION_CODENAME == "buster" ]]; then - apt-get update - apt-get -qq install -t buster-backports darktable - else - echo "install-darktable: installing standard arm64 (ARM 64-bit) package" - apt-get -qq install darktable - fi - echo "Done." -else - echo "Unsupported Machine Architecture: $DESTARCH" -fi +case $DESTARCH in + amd64 | AMD64 | x86_64 | x86-64) + if [[ $VERSION_CODENAME == "bullseye" ]]; then + apt-get update + apt-get -qq install -t bullseye-backports darktable + elif [[ $VERSION_CODENAME == "buster" ]]; then + apt-get update + apt-get -qq install -t buster-backports darktable + else + echo "install-darktable: installing standard amd64 (Intel 64-bit) package" + apt-get -qq install darktable + fi + ;; + + arm64 | ARM64 | aarch64) + if [[ $VERSION_CODENAME == "bullseye" ]]; then + apt-get update + apt-get -qq install -t bullseye-backports darktable + elif [[ $VERSION_CODENAME == "buster" ]]; then + apt-get update + apt-get -qq install -t buster-backports darktable + else + echo "install-darktable: installing standard arm64 (ARM 64-bit) package" + apt-get -qq install darktable + fi + ;; + + *) + echo "Unsupported Machine Architecture: \"$BUILD_ARCH\"" 1>&2 + exit 0 + ;; +esac + +echo "Done." diff --git a/scripts/dist/install-go-tools.sh b/scripts/dist/install-go-tools.sh index 5d1b49729..f101a0ca7 100755 --- a/scripts/dist/install-go-tools.sh +++ b/scripts/dist/install-go-tools.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# Installs Go Tools on Linux +# bash <(curl -s https://raw.githubusercontent.com/photoprism/photoprism/develop/scripts/dist/install-go-tools.sh) + PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts:/usr/local/go/bin:/go/bin:$PATH" # abort if not executed as root @@ -13,7 +16,12 @@ if [[ -z "$GOPATH" ]] || [[ -z "$GOBIN" ]]; then exit 1 fi -SYSTEM_ARCH=$("$(dirname "$0")/arch.sh") +if [[ $PHOTOPRISM_ARCH ]]; then + SYSTEM_ARCH=$PHOTOPRISM_ARCH +else + SYSTEM_ARCH=$(uname -m) +fi + DESTARCH=${2:-$SYSTEM_ARCH} echo "Installing Go Tools for ${DESTARCH^^}..." @@ -24,16 +32,22 @@ mkdir -p "$GOPATH/src" "$GOBIN" go install github.com/tianon/gosu@latest -# no additional tools on ARMv7 to reduce build time -if [[ $DESTARCH != "arm" ]]; then - go install golang.org/x/tools/cmd/goimports@latest - go install github.com/psampaz/go-mod-outdated@latest - go install github.com/dsoprea/go-exif/v3/command/exif-read-tool@latest - go install github.com/mikefarah/yq/v4@latest +case $DESTARCH in + arm | ARM | aarch | armv7l | armhf) + # no additional tools on ARMv7 to reduce build time + echo "Skipping installation of goimports, go-mod-outdated, exif-read-tool and richgo." + ;; - go install github.com/kyoh86/richgo@latest - cp "$GOBIN/richgo" /usr/local/bin/richgo -fi + *) + go install golang.org/x/tools/cmd/goimports@latest + go install github.com/psampaz/go-mod-outdated@latest + go install github.com/dsoprea/go-exif/v3/command/exif-read-tool@latest + go install github.com/mikefarah/yq/v4@latest + + go install github.com/kyoh86/richgo@latest + cp "$GOBIN/richgo" /usr/local/bin/richgo + ;; +esac chmod -R a+rwX "$GOPATH" diff --git a/scripts/dist/install-go.sh b/scripts/dist/install-go.sh index 3d04dba9a..f6582013f 100755 --- a/scripts/dist/install-go.sh +++ b/scripts/dist/install-go.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# Installs Go on Linux +# bash <(curl -s https://raw.githubusercontent.com/photoprism/photoprism/develop/scripts/dist/install-go.sh) + PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts:$PATH" GOLANG_VERSION=1.18.4 @@ -15,13 +18,10 @@ echo "Installing Go in \"$DESTDIR\"..." set -e -if command -v uname &> /dev/null -then - SYSTEM_ARCH=$(uname -m) -elif [[ $PHOTOPRISM_ARCH ]]; then - SYSTEM_ARCH=$PHOTOPRISM_ARCH +if [[ $PHOTOPRISM_ARCH ]]; then + SYSTEM_ARCH=$PHOTOPRISM_ARCH else - SYSTEM_ARCH=$("$(dirname "$0")/arch.sh") + SYSTEM_ARCH=$(uname -m) fi DESTARCH=${2:-$SYSTEM_ARCH} @@ -30,19 +30,27 @@ mkdir -p "$DESTDIR" set -eux; -if [[ $DESTARCH == "amd64" || $DESTARCH == "x86_64" ]]; then +case $DESTARCH in + amd64 | AMD64 | x86_64 | x86-64) URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz" CHECKSUM="c9b099b68d93f5c5c8a8844a89f8db07eaa58270e3a1e01804f17f4cf8df02f5 *go.tgz" -elif [[ $DESTARCH == "arm64" ]]; then + ;; + + arm64 | ARM64 | aarch64) URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-arm64.tar.gz" CHECKSUM="35014d92b50d97da41dade965df7ebeb9a715da600206aa59ce1b2d05527421f *go.tgz" -elif [[ $DESTARCH == "arm" ]]; then + ;; + + arm | ARM | aarch | armv7l | armhf) URL="https://go.dev/dl/go${GOLANG_VERSION}.linux-armv6l.tar.gz" CHECKSUM="7dfeab572e49638b0f3d9901457f0622c27b73301c2b99db9f5e9568ff40460c *go.tgz" -else - echo "Unsupported Machine Architecture: $DESTARCH" 1>&2 + ;; + + *) + echo "Unsupported Machine Architecture: \"$BUILD_ARCH\"" 1>&2 exit 1 -fi + ;; +esac echo "Downloading Go from \"$URL\". Please wait." diff --git a/scripts/dist/install-gpu.sh b/scripts/dist/install-gpu.sh index 75b80ac4f..4e0ee1243 100755 --- a/scripts/dist/install-gpu.sh +++ b/scripts/dist/install-gpu.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# Installs GPU drivers on Linux +# bash <(curl -s https://raw.githubusercontent.com/photoprism/photoprism/develop/scripts/dist/install-gpu.sh) + PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts:$PATH" # abort if not executed as root @@ -10,15 +13,16 @@ fi set -e -SYSTEM_ARCH=$("$(dirname "$0")/arch.sh") +if [[ $PHOTOPRISM_ARCH ]]; then + SYSTEM_ARCH=$PHOTOPRISM_ARCH +else + SYSTEM_ARCH=$(uname -m) +fi + DESTARCH=${DESTARCH:-$SYSTEM_ARCH} TMPDIR=${TMPDIR:-/tmp} -. /etc/os-release -if [[ $DESTARCH != "amd64" ]]; then - echo "Installing GPU drivers for ${DESTARCH} is not supported yet." - exit -fi +. /etc/os-release apt-get update apt-get -qq upgrade @@ -29,6 +33,24 @@ GPU_DETECTED=($(lshw -c display -json 2>/dev/null | jq -r '.[].configuration.dri echo "GPU detected: ${GPU_DETECTED[*]}" +case $DESTARCH in + amd64 | AMD64 | x86_64 | x86-64) + echo "Installing GPU drivers for ${DESTARCH^^}..." + ;; + + *) + echo "Installing GPU drivers for ${DESTARCH^^} not supported at this time." + exit 0 + ;; +esac + +# TODO: Install NVIDIA Drivers from https://developer.download.nvidia.com/compute/cuda/repos/ +# curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/{DIST}/x86_64/7fa2af80.pub | gpg --dearmor -o /etc/apt/trusted.gpg.d/developer.download.nvidia.com.gpg +# add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/{DIST}/x86_64/ /" +# curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/{DIST}/x86_64/cuda-{DIST}.pin > /etc/apt/preferences.d/cuda-repository-pin-600 +# apt-get update +# apt-get install libglvnd-dev pkg-config dkms build-essential cuda nvidia-driver-510 nvidia-settings nvidia-utils-510 linux-headers-$(uname -r) + # shellcheck disable=SC2068 for t in ${GPU_DETECTED[@]}; do case $t in diff --git a/scripts/dist/install-mariadb.sh b/scripts/dist/install-mariadb.sh index c13c14b99..61d47b839 100755 --- a/scripts/dist/install-mariadb.sh +++ b/scripts/dist/install-mariadb.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# Installs MariaDB on Linux +# bash <(curl -s https://raw.githubusercontent.com/photoprism/photoprism/develop/scripts/dist/install-mariadb.sh) + PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts:$PATH" # abort if not executed as root diff --git a/scripts/dist/install-nodejs.sh b/scripts/dist/install-nodejs.sh index cab20f5d0..836677315 100755 --- a/scripts/dist/install-nodejs.sh +++ b/scripts/dist/install-nodejs.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# Installs NodeJS, NPM and TestCafe on Linux +# bash <(curl -s https://raw.githubusercontent.com/photoprism/photoprism/develop/scripts/dist/install-nodejs.sh) + PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/scripts:$PATH" # abort if not executed as root