diff --git a/simple_make.sh b/simple_make.sh index d745ce1b2..a30efad9f 100755 --- a/simple_make.sh +++ b/simple_make.sh @@ -1,48 +1,157 @@ #!/usr/bin/env bash -if which apt-get; then - sudo apt-get install \ - git build-essential qt5-qmake qt5-default qttools5-dev-tools \ - libqt5opengl5-dev libqt5svg5-dev libopenal-dev libavdevice-dev \ - libxss-dev qrencode libqrencode-dev libtool autotools-dev \ - automake checkinstall check libopus-dev libvpx-dev libsodium-dev \ - libglib2.0-dev libgdk-pixbuf2.0-dev libgtk2.0-dev \ - libsqlcipher-dev -elif which pacman; then - sudo pacman -S --needed \ - git base-devel qt5 openal libxss qrencode opus libvpx libsodium -elif which dnf; then - sudo dnf group install \ - "Development Tools" \ - "C Development Tools and Libraries" - # pure Fedora doesn't have what it takes to compile qTox (ffmpeg) - sudo dnf install \ - http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm - sudo dnf install \ - git qt-devel qt-doc qt-creator qt5-qtsvg qt5-qtsvg-devel \ - openal-soft-devel qt5-qttools-devel libXScrnSaver-devel \ - qrencode-devel opus-devel libvpx-devel glib2-devel gdk-pixbuf2-devel \ - gtk2-devel libsodium-devel ffmpeg-devel sqlite sqlite-devel libtool \ - openssl-devel - # Fedora by default doesn't include libs in /usr/local/lib so add it - echo '/usr/local/lib/' | sudo tee -a /etc/ld.so.conf.d/locallib.conf -elif which zypper; then - sudo zypper in \ - git patterns-openSUSE-devel_basis libqt5-qtbase-common-devel \ - libqt5-qtsvg-devel libqt5-linguist libQt5Network-devel \ - libQt5OpenGL-devel libQt5Concurrent-devel libQt5Xml-devel \ - libQt5Sql-devel openal-soft-devel qrencode-devel \ - libXScrnSaver-devel libQt5Sql5-sqlite libffmpeg-devel \ - libsodium-devel libvpx-devel libopus-devel \ - patterns-openSUSE-devel_basis sqlcipher-devel -else - echo "Unknown package manager, attempting to compile anyways" -fi +set -eu -o pipefail -./bootstrap.sh -if [ -e /etc/redhat-release -o -e /etc/zypp ]; then - qmake-qt5 -else - qmake -fi -make -j$(nproc) +apt_install() { + local apt_packages=( + automake + autotools-dev + check + checkinstall + git build-essential + libavdevice-dev + libgdk-pixbuf2.0-dev + libglib2.0-dev + libgtk2.0-dev + libopenal-dev + libopus-dev + libqrencode-dev + libqt5opengl5-dev + libqt5svg5-dev + libsodium-dev + libsqlcipher-dev + libtool + libvpx-dev + libxss-dev + qrencode + qt5-default + qt5-qmake + qttools5-dev-tools + ) + sudo apt-get install "${apt_packages[@]}" +} + +pacman_install() { + local pacman_packages=( + base-devel + git + libsodium + libvpx + libxss + openal + opus + qrencode + qt5 + ) + 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 + libsodium-devel + libtool + libvpx-devel + libXScrnSaver-devel + openal-soft-devel + openssl-devel + opus-devel + qrencode-devel + qt5-qtsvg + qt5-qtsvg-devel + qt5-qttools-devel + qt-creator + qt-devel + qt-doc + sqlite + 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_line="/usr/local/lib/" + + # check whether needed line already exists + is_locallib() { + grep -q "^$llib_line\$" "$llib_file" + } + + # proceed only if line doesn't exist + is_locallib \ + || echo "$llib_line" \ + | sudo tee -a "$llib_file" +} + +zypper_install() { + local zypper_packages=( + git + libffmpeg-devel + libopus-devel + libQt5Concurrent-devel + libqt5-linguist + libQt5Network-devel + libQt5OpenGL-devel + libqt5-qtbase-common-devel + libqt5-qtsvg-devel + libQt5Sql5-sqlite + libQt5Sql-devel + libQt5Xml-devel + libsodium-devel + libvpx-devel + libXScrnSaver-devel + openal-soft-devel + patterns-openSUSE-devel_basis + patterns-openSUSE-devel_basis + qrencode-devel + sqlcipher-devel + ) + sudo zypper in "${zypper_packages[@]}" +} + +main() { + if which apt-get + then + apt_install + elif which pacman + then + pacman_install + elif which dnf + then + dnf_install + fedora_locallib + elif which zypper + then + zypper_install + else + echo "Unknown package manager, attempting to compile anyways" + fi + + ./bootstrap.sh + if [ -e /etc/redhat-release -o -e /etc/zypp ]; then + qmake-qt5 + else + qmake + fi + make -j$(nproc) +} +main