#!/usr/bin/env bash # Copyright © 2019 by The qTox Project Contributors # # This file is part of qTox, a Qt-based graphical interface for Tox. # qTox is libre software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # qTox is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with qTox. If not, see set -eu -o pipefail apt_install() { local apt_packages=( automake autotools-dev build-essential check checkinstall cmake git libavdevice-dev libexif-dev libgdk-pixbuf2.0-dev libgtk2.0-dev libopenal-dev libopus-dev libqrencode-dev libqt5opengl5-dev libqt5svg5-dev libsodium-dev libtool libvpx-dev libxss-dev qrencode qt5-default qttools5-dev qttools5-dev-tools libsqlcipher-dev ) sudo apt-get install "${apt_packages[@]}" } pacman_install() { local pacman_packages=( base-devel git libsodium libvpx libxss openal opus qrencode qt5 sqlcipher ) sudo pacman -S --needed "${pacman_packages[@]}" } dnf_install() { local dnf_group_packages=( 'Development Tools' 'C Development Tools and Libraries' ) sudo dnf group install "${dnf_group_packages[@]}" # pure Fedora doesn't have what it takes to compile qTox (ffmpeg) local fedora_version=$(rpm -E %fedora) local dnf_rpmfusion_package=( http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$fedora_version.noarch.rpm ) sudo dnf install "$dnf_rpmfusion_package" local dnf_packages=( ffmpeg-devel gdk-pixbuf2-devel git glib2-devel gtk2-devel kf5-sonnet-devel libconfig-devel libexif-devel libsodium-devel libvpx-devel libXScrnSaver-devel openal-soft-devel openssl-devel opus-devel qrencode-devel qt5-devel qt5-qtdoc qt5-qtsvg qt5-qtsvg-devel qt5-qttools-devel qtsingleapplication-qt5 readline-devel sqlcipher-devel sqlite-devel ) sudo dnf install "${dnf_packages[@]}" } # Fedora by default doesn't include libs in /usr/local/lib so add it fedora_locallib() { local llib_file="/etc/ld.so.conf.d/locallib.conf" local llib_lines=("/usr/local/lib/" "/usr/local/lib64/") # check whether needed line already exists is_locallib() { grep -q "^$1\$" "$llib_file" } # add each line only if it doesn't exist for llib_line in "${llib_lines[@]}"; do\ is_locallib "$llib_line" \ || echo "$llib_line" \ | sudo tee -a "$llib_file"; done } zypper_install() { local zypper_packages=( +pattern:devel_basis cmake git libavcodec-devel libavdevice-devel libopus-devel libexif-devel libQt5Concurrent-devel libqt5-linguist libqt5-linguist-devel libQt5Network-devel libQt5OpenGL-devel libqt5-qtbase-common-devel libqt5-qtsvg-devel libQt5Test-devel libQt5Xml-devel libsodium-devel libvpx-devel libXScrnSaver-devel openal-soft-devel qrencode-devel sqlcipher-devel ) # if not sudo is installed, e.g. in docker image, install it command -v sudo || zypper in sudo sudo zypper in "${zypper_packages[@]}" } main() { local BOOTSTRAP_ARGS="" if command -v zypper && [ -f /etc/products.d/openSUSE.prod ] then zypper_install elif command -v apt-get then apt_install elif command -v pacman then pacman_install elif command -v dnf then dnf_install fedora_locallib export PKG_CONFIG_PATH="${PKG_CONFIG_PATH-}:/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig" BOOTSTRAP_ARGS="--without-sqlcipher" else echo "Unknown package manager, attempting to compile anyways" fi ./bootstrap.sh ${BOOTSTRAP_ARGS} mkdir -p _build cd _build cmake ../ make -j$(nproc) } main