#!/bin/bash # QB64-PE Installer # Argument 1: If not blank, qb64pe will not be started after compilation dont_run="$1" #This checks the currently installed packages for the one's QB64-PE needs #And runs the package manager to install them if that is the case pkg_install() { #Search packages_to_install= for pkg in $pkg_list; do if [ -z "$(echo "$installed_packages" | grep $pkg)" ]; then packages_to_install="$packages_to_install $pkg" fi done if [ -n "$packages_to_install" ]; then echo "Installing required packages. If prompted to, please enter your password." $installer_command $packages_to_install fi } #Make sure we're not running as root if [ $EUID == "0" ]; then echo "You are trying to run this script as root. This is highly unrecommended." echo "This script will prompt you for your sudo password if needed to install packages." exit 1 fi GET_WGET= #Path to Icon #Relative Path to icon -- Don't include beginning or trailing '/' QB64_ICON_PATH="source" #Name of the Icon picture QB64_ICON_NAME="qb64pe.png" DISTRO= lsb_command=`which lsb_release 2> /dev/null` if [ -z "$lsb_command" ]; then lsb_command=`which lsb_release 2> /dev/null` fi #Outputs from lsb_command: #Arch Linux = arch #Debian = debian #Fedora = Fedora #KUbuntu = ubuntu #LUbuntu = ubuntu #Linux Mint = linuxmint #Ubuntu = ubuntu #Slackware = slackware #VoidLinux = voidlinux #XUbuntu = ubuntu #Zorin = Zorin if [ -n "$lsb_command" ]; then DISTRO=`$lsb_command -si | tr '[:upper:]' '[:lower:]'` elif [ -e /etc/arch-release ]; then DISTRO=arch elif [ -e /etc/debian_version ] || [ -e /etc/debian_release ]; then DISTRO=debian elif [ -e /etc/fedora-release ]; then DISTRO=fedora elif [ -e /etc/redhat-release ]; then DISTRO=redhat elif [ -e /etc/centos-release ]; then DISTRO=centos fi #Find and install packages if [ "$DISTRO" == "arch" ]; then echo "ArchLinux detected." pkg_list="gcc make zlib xorg-xmessage $GET_WGET" installed_packages=`pacman -Q` installer_command="sudo pacman -S " pkg_install elif [ "$DISTRO" == "linuxmint" ] || [ "$DISTRO" == "ubuntu" ] || [ "$DISTRO" == "debian" ] || [ "$DISTRO" == "zorin" ]; then echo "Debian based distro detected." pkg_list="g++ make x11-utils mesa-common-dev libglu1-mesa-dev libasound2-dev zlib1g-dev $GET_WGET" installed_packages=`dpkg -l` installer_command="sudo apt-get -y install " pkg_install elif [ "$DISTRO" == "fedora" ] || [ "$DISTRO" == "redhat" ] || [ "$DISTRO" == "centos" ]; then echo "Fedora/Redhat based distro detected." pkg_list="gcc-c++ make xmessage mesa-libGLU-devel alsa-lib-devel zlib-devel $GET_WGET" installed_packages=`yum list installed` installer_command="sudo yum install " pkg_install elif [ "$DISTRO" == "voidlinux" ]; then echo "VoidLinux detected." pkg_list="gcc make xmessage glu-devel zlib-devel alsa-lib-devel $GET_WGET" installed_packages=`xbps-query -l |grep -v libgcc` installer_command="sudo xbps-install -Sy " pkg_install elif [ -z "$DISTRO" ]; then echo "Unable to detect distro, skipping package installation" echo "Please be aware that for QB64-PE to compile, you will need the following installed:" echo " OpenGL developement libraries" echo " ALSA development libraries" echo " GNU C++ Compiler (g++)" echo " xmessage (x11-utils)" echo " zlib" fi echo "Compiling and installing QB64-PE..." make clean OS=lnx make OS=lnx BUILD_QB64=y -j3 if [ -e "./qb64pe" ]; then echo "Done compiling!!" echo "Creating ./run_qb64pe.sh script..." _pwd=`pwd` echo "#!/bin/sh" > ./run_qb64pe.sh echo "cd $_pwd" >> ./run_qb64pe.sh echo "./qb64pe &" >> ./run_qb64pe.sh chmod +x ./run_qb64pe.sh #chmod -R 777 ./ echo "Adding QB64-PE menu entry..." cat > ~/.local/share/applications/qb64pe.desktop <