#!/bin/sh # Copyright (C) 2019 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only # Script to be sourced from everywhere you need a common environment. Defines: export PROVISIONING_DIR export PROVISIONING_OS export PROVISIONING_OS_ID export PROVISIONING_ARCH export CMD_PKG_INSTALL export CMD_PKG_LOCALINSTALL export CMD_INSTALL export COIN_RUNS_IN_QT_COMPANY if [ x"$IS_PROVISIONING_COMMON_SOURCED" != x ] then echo "common.sourced.sh has already been sourced, re-sourcing skipped" return fi # Do not export; you want children to re-source, because they only inherit the # variables but not the functions IS_PROVISIONING_COMMON_SOURCED=1 fatal () { echo "$1" 1>&2 if [ x"$2" != x ] then exit "$2" else exit fi } # Takes one argument which should be the filename of this script. Returns true # if the script is being sourced, false if the script is being executed. is_script_executed () { [ "$(basename "$(echo "$0" | sed s/^-//)")" = "$1" ] } is_script_executed common.sourced.sh \ && fatal "Script common.sourced.sh should always be sourced, not executed" _detect_linux_OS_ID () { if [ -f /etc/os-release ] then # shellcheck source=/dev/null . /etc/os-release PROVISIONING_OS_ID="$ID" elif [ -f /etc/redhat-release ] then case "$(cat /etc/redhat-release)" in "Red Hat Enterprise Linux"*) PROVISIONING_OS_ID="rhel" ;; "CentOS Linux"*) PROVISIONING_OS_ID="centos" ;; *) fatal "Unknown string in /etc/redhat-release" ;; esac fi } set_common_environment () { # Unfortunately we can't find the provisioning directory from a sourced # script in a portable way # PROVISIONING_DIR="$(dirname "$0")/../../" [ -z "$PROVISIONING_DIR" ] \ && fatal "PROVISIONING_DIR variable needs to be set before calling set_common_environment" uname_s="$(uname -s)" case "$uname_s" in Linux) PROVISIONING_OS=linux _detect_linux_OS_ID case "$PROVISIONING_OS_ID" in suse|sles|opensuse*) CMD_PKG_INSTALL="sudo zypper -nq install" CMD_PKG_LOCALINSTALL="sudo zypper --no-gpg-checks -nq install" ;; debian|ubuntu) CMD_PKG_INSTALL="sudo apt -y install" CMD_PKG_LOCALINSTALL="sudo apt -y install" ;; rhel|centos|fedora) CMD_PKG_INSTALL="sudo yum -y install" CMD_PKG_LOCALINSTALL="sudo yum -y --nogpgcheck localinstall" ;; *) fatal "Unknown ID in /etc/os-release: $PROVISIONING_OS_ID" ;; esac ;; Darwin) PROVISIONING_OS=macos PROVISIONING_OS_ID=macos CMD_PKG_INSTALL="brew install" CMD_PKG_LOCALINSTALL="echo 'TODO how to install a package file on macOS'" ;; *) fatal "Unknown system in uname: $uname_s" 42 ;; esac uname_m="$(uname -m)" case "$uname_m" in x86_64|amd64) PROVISIONING_ARCH=amd64 ;; aarch64|arm64)PROVISIONING_ARCH=arm64 ;; i[3456]86) PROVISIONING_ARCH=x86 ;; *) fatal "Unknown architecture in uname: $uname_m" 43 ;; esac CMD_INSTALL="sudo install" COIN_RUNS_IN_QT_COMPANY=false if ping -c1 repo-clones.ci.qt.io >/dev/null 2>&1 then COIN_RUNS_IN_QT_COMPANY=true fi } set_common_environment set_dry_run () { if [ x"$PROVISIONING_DRY_RUN" != x ] then CMD_PKG_INSTALL="echo DRYRUN: $CMD_PKG_INSTALL" CMD_PKG_LOCALINSTALL="echo DRYRUN: $CMD_PKG_LOCALINSTALL" CMD_INSTALL="echo DRYRUN: $CMD_INSTALL" fi } set_dry_run