|
| 1 | +#!/bin/bash |
| 2 | +set -euxo pipefail |
| 3 | +TRIK_PYTHON=python3.${TRIK_PYTHON3_VERSION_MINOR} |
| 4 | + |
| 5 | +install_qt(){ |
| 6 | + # Usage: install_qt <os> <platform-type> <qt-version> <path-to-install-qt> <modules> <archives> |
| 7 | + # TODO: add <addittional-options> |
| 8 | + "$TRIK_PYTHON" -m venv venv |
| 9 | + . ./venv/bin/activate |
| 10 | + "$TRIK_PYTHON" -m pip install -U pip |
| 11 | + "$TRIK_PYTHON" -m pip install aqtinstall |
| 12 | + if [ -z "${6+x}" ]; then |
| 13 | + "$TRIK_PYTHON" -m aqt install-qt "$1" "$2" "$3" -O "$4" -m "${modules[@]}" |
| 14 | + else |
| 15 | + "$TRIK_PYTHON" -m aqt install-qt "$1" "$2" "$3" -O "$4" -m "${modules[@]}" --archives "${archives[@]}" |
| 16 | + fi |
| 17 | + if [ "$BUILD_INSTALLER" = "true" ]; then |
| 18 | + [ -d $HOME/qtifw ] || env TRIK_QTIFW_INSTALL_DIR="$HOME/qtifw" "$(dirname $(realpath ${BASH_SOURCE[0]}))"/install_qtifw.sh |
| 19 | + fi |
| 20 | + deactivate |
| 21 | +} |
| 22 | + |
| 23 | +case "$(uname)" in |
| 24 | + Darwin) |
| 25 | + export HOMEBREW_NO_INSTALL_CLEANUP=1 |
| 26 | + export HOMEBREW_NO_AUTO_UPDATE=1 |
| 27 | + brew tap "hudochenkov/sshpass" |
| 28 | + TRIK_BREW_PACKAGES="ccache coreutils libusb pkg-config gnu-sed sshpass p7zip python@3.${TRIK_PYTHON3_VERSION_MINOR}" |
| 29 | + for pkg in $TRIK_BREW_PACKAGES ; do |
| 30 | + p="${pkg##*/}" |
| 31 | + p="${p%.*}" |
| 32 | + brew install --quiet "$pkg" || brew upgrade "$pkg" || brew link --force "$pkg" || echo "Failed to install/upgrade $pkg" |
| 33 | + done |
| 34 | + modules=("qtscript") |
| 35 | + install_qt mac desktop "${TRIK_QT_VERSION}" "$HOME/Qt" $modules |
| 36 | + sudo xcode-select -s /Applications/Xcode_${XCODE_VERSION}.app/Contents/Developer |
| 37 | + xcodebuild -showsdks |
| 38 | + xcrun -sdk macosx --show-sdk-path |
| 39 | + ;; |
| 40 | + Linux) |
| 41 | + ID=$(grep '^ID=' /etc/os-release | cut -d'=' -f2) |
| 42 | + |
| 43 | + if [ "$ID" = "altlinux" ]; then |
| 44 | + sudo apt-get update && sudo apt-get install -y gcc-c++ curl xz p7zip-standalone rsync libusb-devel \ |
| 45 | + libudev-devel libGL-devel libGLX-mesa python3-dev zlib-devel make ccache python3-module-pip time \ |
| 46 | + qt5-multimedia-devel qt5-svg-devel qt5-script-devel qt5-tools qt5-serialport-devel |
| 47 | + elif [ "$ID" = "ubuntu" ]; then |
| 48 | + sudo apt-get update && sudo apt-get install -y --no-install-recommends ccache curl libusb-1.0-0-dev \ |
| 49 | + make qtscript5-dev qttools5-dev-tools qtmultimedia5-dev libqt5serialport5-dev libqt5svg5-dev \ |
| 50 | + libudev-dev "$TRIK_PYTHON"-dev qtbase5-private-dev qtwayland5 |
| 51 | + elif [[ "$ID" = "rocky" || "$ID" = '"rocky"' ]]; then |
| 52 | + GCC_VERSION=${GCC_VERSION:-13} |
| 53 | + sudo yum update -y && sudo yum install -y --setopt=install_weak_deps=False epel-release |
| 54 | + sudo yum install --allowerasing -y --setopt=install_weak_deps=False sudo which libusbx-devel curl \ |
| 55 | + wget make gcc-toolset-"$GCC_VERSION"-{gcc-c++,libasan-devel,libubsan-devel,gdb} git-core ccache \ |
| 56 | + zlib-devel rsync "$TRIK_PYTHON"-{devel,pip,urllib3} mesa-libGL-devel systemd-devel fontconfig p7zip xz time findutils |
| 57 | + |
| 58 | + #no desire to enumerate all required libraries for QtIFw |
| 59 | + # pulseaudio-libs-glib2 to run TS and 2D-model even with `minimal` platform |
| 60 | + sudo yum install -y --setopt=install_weak_deps=False pulseaudio-libs-glib2 libxkbcommon-x11 qt5-qtbase-gui libwayland-{server,client,cursor} |
| 61 | + |
| 62 | + echo $INSTALL_INSTALLER_ENVIRONMENT |
| 63 | + if [ "$INSTALL_INSTALLER_ENVIRONMENT" != "true" ]; then |
| 64 | + sudo yum install -y --setopt=install_weak_deps=False qt5-qtscript-devel qt5-qttools-devel qt5-qtmultimedia-devel qt5-qtserialport-devel \ |
| 65 | + qt5-qtsvg-devel qt5-qtbase-devel qt5-qtbase-private-devel qt5-qtwayland |
| 66 | + else |
| 67 | + sudo yum install -y --setopt=install_weak_deps=False libX11-xcb libXext libxkbcommon-x11 fontconfig freetype libXrender |
| 68 | + #libQt5WaylandCompositor.so.5.15: libQt5Quick.so.5 libQt5Qml.so.5 libQt5QmlModels.so.5 |
| 69 | + modules=("qtscript" "qtwaylandcompositor") |
| 70 | + archives=("qtbase" "qtmultimedia" "qtsvg" "qtscript" "qttools" "qtserialport" "qtimageformats" "icu" "qtwayland" "qtdeclarative") |
| 71 | + install_qt linux desktop "$TRIK_QT_VERSION" "$HOME/Qt" $modules $archives |
| 72 | + QT_ROOT_DIR=$(ls -1d "$HOME"/Qt/$TRIK_QT_VERSION*/gcc_64 | head -n 1) |
| 73 | + echo "$QT_ROOT_DIR/bin" >> $GITHUB_PATH |
| 74 | + fi |
| 75 | + echo "source scl_source enable gcc-toolset-$GCC_VERSION" >> ~/.bash_profile |
| 76 | + fi |
| 77 | + ;; |
| 78 | + *) exit 1 ;; |
| 79 | +esac |
0 commit comments