From 9f83e157502863d79d82a42b3534ccc59e51a912 Mon Sep 17 00:00:00 2001 From: Newbyte Date: Sun, 12 Apr 2020 11:51:14 +0200 Subject: [PATCH] Implement doas support in build and setup scripts --- bin/mangohud-setup.sh | 12 +++++++++--- build.sh | 17 +++++++++++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/bin/mangohud-setup.sh b/bin/mangohud-setup.sh index 0790c9d9..4bb7bf6f 100755 --- a/bin/mangohud-setup.sh +++ b/bin/mangohud-setup.sh @@ -1,5 +1,11 @@ XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" MANGOHUD_CONFIG_DIR="$XDG_CONFIG_HOME/MangoHud" +SU_CMD=$(command -v sudo || command -v doas) + +# doas requires a double dash if the command it runs will include any dashes, +# so append a double dash to the command +[[ $SU_CMD == *doas ]] && $SU_CMD="$SU_CMD -- " + mangohud_usage() { echo 'Accepted arguments: "install", "uninstall".' @@ -20,7 +26,7 @@ mangohud_install() { [ "$UID" -eq 0 ] || mangohud_config [ "$UID" -eq 0 ] || tar xf MangoHud-package.tar - [ "$UID" -eq 0 ] || exec sudo bash "$0" install + [ "$UID" -eq 0 ] || exec $SU_CMD bash "$0" install install -vm644 -D ./usr/lib/mangohud/lib32/libMangoHud.so /usr/lib/mangohud/lib32/libMangoHud.so install -vm644 -D ./usr/lib/mangohud/lib64/libMangoHud.so /usr/lib/mangohud/lib64/libMangoHud.so @@ -35,7 +41,7 @@ mangohud_install() { } mangohud_uninstall() { - [ "$UID" -eq 0 ] || exec sudo bash "$0" uninstall + [ "$UID" -eq 0 ] || exec $SU_CMD bash "$0" uninstall rm -rfv "/usr/lib/mangohud" rm -fv "/usr/share/vulkan/implicit_layer.d/MangoHud.x86.json" rm -fv "/usr/share/vulkan/implicit_layer.d/MangoHud.x86_64.json" @@ -56,4 +62,4 @@ done if [ -z $@ ]; then mangohud_usage -fi \ No newline at end of file +fi diff --git a/build.sh b/build.sh index 8bc48280..dd86c5d1 100755 --- a/build.sh +++ b/build.sh @@ -8,6 +8,11 @@ LAYER="build/release/usr/share/vulkan/implicit_layer.d/mangohud.json" INSTALL_DIR="build/package/" IMPLICIT_LAYER_DIR="$XDG_DATA_HOME/vulkan/implicit_layer.d" VERSION=$(git describe --long --tags --always | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//') +SU_CMD=$(command -v sudo || command -v doas) + +# doas requires a double dash if the command it runs will include any dashes, +# so append a double dash to the command +[[ $SU_CMD == *doas ]] && $SU_CMD="$SU_CMD -- " # Correctly identify the os-release file. for os_release in ${OS_RELEASE_FILES[@]} ; do @@ -37,7 +42,7 @@ dependencies() { if [[ ! -z "$INSTALL" ]]; then missing_deps if [[ "$PERMISSION" == "Y" || "$PERMISSION" == "y" ]]; then - sudo $MANAGER_INSTALL $INSTALL + $SU_CMD $MANAGER_INSTALL $INSTALL fi fi } @@ -66,13 +71,13 @@ dependencies() { DEPS="{gcc,g++,gcc-multilib,g++-multilib,ninja-build,python3-pip,python3-setuptools,python3-wheel,pkg-config,mesa-common-dev,libx11-dev:i386}" install - if [[ $(sudo pip3 show meson; echo $?) == 1 || $(sudo pip3 show mako; echo $?) == 1 ]]; then - sudo pip3 install meson mako + if [[ $($SU_CMD pip3 show meson; echo $?) == 1 || $($SU_CMD pip3 show mako; echo $?) == 1 ]]; then + $SU_CMD pip3 install meson mako fi if [[ ! -f /usr/local/bin/glslangValidator ]]; then wget https://github.com/KhronosGroup/glslang/releases/download/master-tot/glslang-master-linux-Release.zip unzip glslang-master-linux-Release.zip bin/glslangValidator - sudo install -m755 bin/glslangValidator /usr/local/bin/ + $SU_CMD install -m755 bin/glslangValidator /usr/local/bin/ rm bin/glslangValidator glslang-master-linux-Release.zip fi ;; @@ -160,7 +165,7 @@ install() { rm -f "$HOME/.local/share/vulkan/implicit_layer.d/"{mangohud32.json,mangohud64.json} [ "$UID" -eq 0 ] || mkdir -pv "${CONFIG_DIR}" - [ "$UID" -eq 0 ] || exec sudo bash "$0" install + [ "$UID" -eq 0 ] || exec $SU_CMD bash "$0" install /usr/bin/install -vm644 -D ./build/release/usr/lib/mangohud/lib32/libMangoHud.so /usr/lib/mangohud/lib32/libMangoHud.so /usr/bin/install -vm644 -D ./build/release/usr/lib/mangohud/lib64/libMangoHud.so /usr/lib/mangohud/lib64/libMangoHud.so @@ -179,7 +184,7 @@ clean() { } uninstall() { - [ "$UID" -eq 0 ] || exec sudo bash "$0" uninstall + [ "$UID" -eq 0 ] || exec $SU_CMD bash "$0" uninstall rm -rfv "/usr/lib/mangohud" rm -rfv "/usr/share/doc/mangohud" rm -fv "/usr/share/vulkan/implicit_layer.d/mangohud.json"