diff --git a/scripts/KlipperScreen-install.sh b/scripts/KlipperScreen-install.sh index 7c59c881..85c21a7e 100755 --- a/scripts/KlipperScreen-install.sh +++ b/scripts/KlipperScreen-install.sh @@ -8,18 +8,40 @@ PKGLIST="xserver-xorg-video-fbturbo xdotool xinit xinput x11-xserver-utils libop PKGLIST="${PKGLIST} python3-gi-cairo python3-virtualenv gir1.2-gtk-3.0 virtualenv matchbox-keyboard wireless-tools" PKGLIST="${PKGLIST} libatlas-base-dev" +DGRAY='\033[1;30m' +NC='\033[0m' + +echo_text () +{ + printf "${NC}$1${DGRAY}\n" +} + install_packages() { - echo "Update package data" - sudo apt update + echo_text "Update package data" + sudo apt-get update - echo "Installing package dependencies" - sudo apt install -y $PKGLIST + echo_text "Checking for broken packages..." + output=$(dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' | grep -E ^.[^nci]) + if [ $? -eq 0 ]; then + echo_text "Detectected broken pacakges. Attempting to fix" + sudo apt-get -f install + output=$(dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' | grep -E ^.[^nci]) + if [ $? -eq 0 ]; then + echo_text "Unable to fix dependencies. These must be fixed before KlipperScreen can be installed" + exit 1 + fi + else + echo_text "No broken packages" + fi + + echo_text "Installing KlipperScreen dependencies" + sudo apt-get install -y $PKGLIST } create_virtualenv() { - echo "Creating virtual environment" + echo_text "Creating virtual environment" [ ! -d ${KSENV} ] && virtualenv -p /usr/bin/python3 ${KSENV} ${KSENV}/bin/pip install -r ${KSPATH}/scripts/KlipperScreen-requirements.txt @@ -30,10 +52,10 @@ create_virtualenv() install_systemd_service() { if [ -f "/etc/systemd/system/KlipperScreen.service" ]; then - echo "KlipperScreen unit file already installed" + echo_text "KlipperScreen unit file already installed" return fi - echo "Installing KlipperScreen unit file" + echo_text "Installing KlipperScreen unit file" SERVICE=$(<$SCRIPTPATH/KlipperScreen.service) KSPATH_ESC=$(sed "s/\//\\\\\//g" <<< $KSPATH) @@ -57,10 +79,10 @@ update_x11() { if [ -e /etc/X11/Xwrapper.conf ] then - echo "Updating X11 Xwrapper" + echo_text "Updating X11 Xwrapper" sudo sed -i 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config else - echo "Adding X11 Xwrapper" + echo_text "Adding X11 Xwrapper" echo 'allowed_users=anybody' | sudo tee /etc/X11/Xwrapper.config fi } @@ -75,3 +97,4 @@ modify_user install_systemd_service update_x11 start_KlipperScreen +echo "${NC}"