WIP breezy XDG re-org
This commit is contained in:
parent
71585d0328
commit
d6945af1c3
|
|
@ -13,9 +13,7 @@ fi
|
|||
|
||||
start_dir=$(pwd)
|
||||
|
||||
|
||||
ARCH=$(uname -m)
|
||||
echo "Building for $ARCH"
|
||||
|
||||
# create temp directory
|
||||
tmp_dir=$(mktemp -d -t breezy-gnome-XXXXXXXXXX)
|
||||
|
|
|
|||
|
|
@ -14,17 +14,21 @@ fi
|
|||
|
||||
start_dir=$(pwd)
|
||||
|
||||
ARCH=$(uname -m)
|
||||
|
||||
# create temp directory
|
||||
tmp_dir=$(mktemp -d -t breezy-vulkan-XXXXXXXXXX)
|
||||
pushd $tmp_dir > /dev/null
|
||||
echo "Created temp directory: ${tmp_dir}"
|
||||
|
||||
# if the first argument is "-v" then the second argument is metrics version, and the third argument is binary path
|
||||
# otherwise, if the first argument is present, it's the binary path
|
||||
binary_download_url="https://github.com/wheaney/breezy-desktop/releases/latest/download/breezyVulkan-$ARCH.tar.gz"
|
||||
if [ "$1" = "-v" ]
|
||||
then
|
||||
metrics_version="$2"
|
||||
binary_path_arg="$3"
|
||||
elif [ "$1" = "--tag" ] && [ -n "$2" ]
|
||||
then
|
||||
binary_download_url="https://github.com/wheaney/breezy-desktop/releases/download/$2/breezyVulkan-$ARCH.tar.gz"
|
||||
else
|
||||
binary_path_arg="$1"
|
||||
fi
|
||||
|
|
@ -32,8 +36,9 @@ fi
|
|||
if [ -z "$binary_path_arg" ]
|
||||
then
|
||||
# download and unzip the latest driver
|
||||
echo "Downloading latest release to: ${tmp_dir}/breezyVulkan.tar.gz"
|
||||
curl -L -O https://github.com/wheaney/breezy-desktop/releases/latest/download/breezyVulkan.tar.gz
|
||||
echo "Downloading to: ${tmp_dir}/breezyVulkan-$ARCH.tar.gz"
|
||||
curl -L -O $binary_download_url
|
||||
binary_path_arg="breezyVulkan-$ARCH.tar.gz"
|
||||
else
|
||||
if [[ "$binary_path_arg" = /* ]]; then
|
||||
abs_path="$binary_path_arg"
|
||||
|
|
@ -45,7 +50,7 @@ else
|
|||
fi
|
||||
|
||||
echo "Extracting to: ${tmp_dir}/breezy_vulkan"
|
||||
tar -xf breezyVulkan.tar.gz
|
||||
tar -xf $(basename $binary_path_arg)
|
||||
|
||||
pushd breezy_vulkan > /dev/null
|
||||
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ PACKAGE_DIR=$GNOME_BUILD_DIR/breezy_gnome
|
|||
rm -rf $PACKAGE_DIR
|
||||
mkdir -p $PACKAGE_DIR
|
||||
|
||||
XREAL_DRIVER_DIR=$ROOT_DIR/modules/XRLinuxDriver
|
||||
source $XREAL_DRIVER_DIR/bin/inject_ua
|
||||
XR_DRIVER_DIR=$ROOT_DIR/modules/XRLinuxDriver
|
||||
source $XR_DRIVER_DIR/bin/inject_ua
|
||||
|
||||
# if a custom_banner image exists, copy it over the sombrero one
|
||||
if [ -e "$VULKAN_DIR/custom_banner.png" ]; then
|
||||
|
|
@ -33,36 +33,37 @@ fi
|
|||
|
||||
# copy vulkan setup scripts and configs
|
||||
mkdir -p $PACKAGE_DIR/bin
|
||||
copy_and_inject_ua "$XREAL_DRIVER_DIR/bin/ua.sh" "$PACKAGE_DIR/bin" "$GNOME_DIR/bin/setup" "$GNOME_DIR/bin/breezy_gnome_verify" "$GNOME_DIR/bin/breezy_gnome_uninstall"
|
||||
copy_and_inject_ua "$XR_DRIVER_DIR/bin/ua.sh" "$PACKAGE_DIR/bin" "$GNOME_DIR/bin/setup" "$GNOME_DIR/bin/breezy_gnome_verify" "$GNOME_DIR/bin/breezy_gnome_uninstall"
|
||||
|
||||
XREAL_BINARY=$XREAL_DRIVER_DIR/out/xrealAirLinuxDriver-$ARCH.tar.gz
|
||||
pushd $XREAL_DRIVER_DIR
|
||||
XR_DRIVER_BINARY=$XR_DRIVER_DIR/out/xrDriver-$ARCH.tar.gz
|
||||
|
||||
if [ ! -e "$XREAL_BINARY" ] || [ "$1" == "--rebuild-driver" ]; then
|
||||
if [ ! -e "$XR_DRIVER_BINARY" ] || [ "$1" == "--rebuild-driver" ]; then
|
||||
# if a file exists at custom_banner_config.yml, copy it to the xrealAirLinuxDriver directory
|
||||
if [ -e "$VULKAN_DIR/custom_banner_config.yml" ]; then
|
||||
cp $VULKAN_DIR/custom_banner_config.yml $XREAL_DRIVER_DIR
|
||||
cp $VULKAN_DIR/custom_banner_config.yml $XR_DRIVER_DIR
|
||||
fi
|
||||
|
||||
pushd $XR_DRIVER_DIR
|
||||
|
||||
# strange issue where the base library produces a .so file if the build is not cleaned
|
||||
rm -rf build/
|
||||
|
||||
docker-build/init.sh
|
||||
BREEZY_DESKTOP=1 docker-build/run-build.sh $ARCH
|
||||
popd
|
||||
fi
|
||||
popd
|
||||
|
||||
TMP_DIR=$(mktemp -d -t breezy-gnome-XXXXXXXXXX)
|
||||
pushd $TMP_DIR
|
||||
cp $XREAL_BINARY $TMP_DIR/xrealAirLinuxDriver.tar.gz
|
||||
tar -xf $TMP_DIR/xrealAirLinuxDriver.tar.gz
|
||||
cp $XR_DRIVER_BINARY $TMP_DIR/xrDriver.tar.gz
|
||||
tar -xf $TMP_DIR/xrDriver.tar.gz
|
||||
|
||||
XREAL_MANIFEST_LINE=$(sha256sum driver_air_glasses/manifest)
|
||||
XR_DRIVER_MANIFEST_LINE=$(sha256sum xr_driver/manifest)
|
||||
popd
|
||||
rm -rf $TMP_DIR
|
||||
|
||||
cp $XREAL_BINARY $PACKAGE_DIR/xrealAirLinuxDriver.tar.gz
|
||||
cp $XREAL_DRIVER_DIR/bin/xreal_driver_setup $PACKAGE_DIR/bin
|
||||
cp $XR_DRIVER_BINARY $PACKAGE_DIR/xrDriver.tar.gz
|
||||
cp $XR_DRIVER_DIR/bin/xr_driver_setup $PACKAGE_DIR/bin
|
||||
|
||||
gnome/bin/package_extension
|
||||
cp gnome/out/breezydesktop@xronlinux.com.shell-extension.zip $PACKAGE_DIR
|
||||
|
|
@ -78,7 +79,7 @@ cp ui/out/com.xronlinux.BreezyDesktop-$ARCH.flatpak $PACKAGE_DIR/com.xronlinux.B
|
|||
# create manifest file for verifying installed file checksums against the originally packaged versions
|
||||
# include any file that doesn't get modified during setup (e.g. vkBasalt.json files)
|
||||
pushd $PACKAGE_DIR
|
||||
echo $XREAL_MANIFEST_LINE > manifest
|
||||
echo $XR_DRIVER_MANIFEST_LINE > manifest
|
||||
echo -e "$GNOME_MANIFEST_LINE breezydesktop@xronlinux.com" >> manifest
|
||||
popd
|
||||
|
||||
|
|
|
|||
|
|
@ -3,27 +3,28 @@
|
|||
# exit when any command fails
|
||||
set -e
|
||||
|
||||
XREAL_DRIVER_DIR=modules/XRLinuxDriver
|
||||
source $XREAL_DRIVER_DIR/bin/inject_ua
|
||||
ARCH=${ARCH:-$(uname -m)}
|
||||
echo "Building Breezy Vulkan for $ARCH"
|
||||
|
||||
# check out submodules, recursively for nested ones
|
||||
git submodule update --init --recursive
|
||||
XR_DRIVER_DIR=modules/XRLinuxDriver
|
||||
source $XR_DRIVER_DIR/bin/inject_ua
|
||||
|
||||
VULKAN_DIR=vulkan
|
||||
VULKAN_BUILD=$VULKAN_DIR/build
|
||||
if [ ! -d "$VULKAN_BUILD" ]; then
|
||||
mkdir -p $VULKAN_BUILD
|
||||
VULKAN_BUILD_DIR=$VULKAN_DIR/build
|
||||
if [ ! -d "$VULKAN_BUILD_DIR" ]; then
|
||||
mkdir -p $VULKAN_BUILD_DIR
|
||||
else
|
||||
rm -rf $VULKAN_BUILD/*
|
||||
rm -rf $VULKAN_BUILD_DIR/*
|
||||
fi
|
||||
|
||||
VULKAN_MODULES=$VULKAN_DIR/modules
|
||||
PACKAGE_DIR=$VULKAN_BUILD/breezy_vulkan
|
||||
PACKAGE_DIR=$VULKAN_BUILD_DIR/breezy_vulkan
|
||||
if [ ! -d "$PACKAGE_DIR" ]; then
|
||||
mkdir -p $PACKAGE_DIR
|
||||
else
|
||||
rm -rf $PACKAGE_DIR/*
|
||||
fi
|
||||
BUILD_FILE_NAME=breezyVulkan-$ARCH.tar.gz
|
||||
|
||||
# build vkBasalt
|
||||
VKBASALT_MODULE_DIR=$VULKAN_MODULES/vkBasalt
|
||||
|
|
@ -53,41 +54,55 @@ fi
|
|||
|
||||
# copy vulkan setup scripts and configs
|
||||
mkdir -p $PACKAGE_DIR/bin
|
||||
copy_and_inject_ua "$XREAL_DRIVER_DIR/bin/ua.sh" "$PACKAGE_DIR/bin" "$VULKAN_DIR/bin/setup" "$VULKAN_DIR/bin/verify_installation" "$VULKAN_DIR/bin/breezy_vulkan_uninstall"
|
||||
copy_and_inject_ua "$XR_DRIVER_DIR/bin/ua.sh" "$PACKAGE_DIR/bin" "$VULKAN_DIR/bin/setup" "$VULKAN_DIR/bin/breezy_vulkan_verify" "$VULKAN_DIR/bin/breezy_vulkan_uninstall"
|
||||
cp -r $VULKAN_DIR/config $PACKAGE_DIR
|
||||
|
||||
# build xreal driver
|
||||
XREAL_BINARY=$XREAL_DRIVER_DIR/build/xrealAirLinuxDriver.tar.gz
|
||||
# build XR driver
|
||||
XR_DRIVER_BINARY=$XR_DRIVER_DIR/out/xrDriver-$ARCH.tar.gz
|
||||
|
||||
if [ ! -e "$XREAL_BINARY" ] || [ "$1" != "--skip-module-builds" ]; then
|
||||
if [ ! -e "$XR_DRIVER_BINARY" ] || [ "$1" != "--skip-module-builds" ]; then
|
||||
# if a file exists at custom_banner_config.yml, copy it to the xrealAirLinuxDriver directory
|
||||
if [ -e "$VULKAN_DIR/custom_banner_config.yml" ]; then
|
||||
cp $VULKAN_DIR/custom_banner_config.yml $XREAL_DRIVER_DIR
|
||||
cp $VULKAN_DIR/custom_banner_config.yml $XR_DRIVER_DIR
|
||||
fi
|
||||
|
||||
pushd $XREAL_DRIVER_DIR
|
||||
pushd $XR_DRIVER_DIR
|
||||
|
||||
# strange issue where the base library produces a .so file if the build is not cleaned
|
||||
rm -rf build/
|
||||
|
||||
bin/package
|
||||
else
|
||||
pushd $XREAL_DRIVER_DIR
|
||||
docker-build/init.sh
|
||||
docker-build/run-build.sh $ARCH
|
||||
popd
|
||||
fi
|
||||
|
||||
XREAL_MANIFEST_LINE=$(sha256sum build/driver_air_glasses/manifest)
|
||||
popd
|
||||
TMP_DIR=$(mktemp -d -t breezy-vulkan-XXXXXXXXXX)
|
||||
cp $XR_DRIVER_BINARY $TMP_DIR/xrDriver.tar.gz
|
||||
pushd $TMP_DIR
|
||||
tar -xf $TMP_DIR/xrDriver.tar.gz
|
||||
|
||||
# copy xreal binary and setup script
|
||||
cp $XREAL_BINARY $PACKAGE_DIR
|
||||
cp $XREAL_DRIVER_DIR/bin/xreal_driver_setup $PACKAGE_DIR/bin
|
||||
XR_DRIVER_MANIFEST_LINE=$(sha256sum xr_driver/manifest)
|
||||
popd
|
||||
rm -rf $TMP_DIR
|
||||
|
||||
# copy XR driver binary and setup script
|
||||
cp $XR_DRIVER_BINARY $PACKAGE_DIR/xrDriver.tar.gz
|
||||
cp $XR_DRIVER_DIR/bin/xr_driver_setup $PACKAGE_DIR/bin
|
||||
|
||||
# create manifest file for verifying installed file checksums against the originally packaged versions
|
||||
# include any file that doesn't get modified during setup (e.g. vkBasalt.json files)
|
||||
pushd $PACKAGE_DIR
|
||||
echo $XREAL_MANIFEST_LINE > manifest
|
||||
echo $XR_DRIVER_MANIFEST_LINE > manifest
|
||||
sha256sum bin/breezy_vulkan_uninstall vkBasalt.64/libvkbasalt.so vkBasalt.32/libvkbasalt.so *.fx* *.png >> manifest
|
||||
popd
|
||||
|
||||
# bundle everything up
|
||||
tar -zcvf $VULKAN_BUILD/breezyVulkan.tar.gz --directory $VULKAN_BUILD breezy_vulkan
|
||||
pushd $VULKAN_BUILD_DIR
|
||||
tar -zcvf $BUILD_FILE_NAME breezy_vulkan
|
||||
popd
|
||||
|
||||
mkdir -p out
|
||||
if [ -e "out/$BUILD_FILE_NAME" ]; then
|
||||
rm out/$BUILD_FILE_NAME
|
||||
fi
|
||||
cp $VULKAN_BUILD_DIR/$BUILD_FILE_NAME out
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 21452bcf6a073888186448e247ed8ddca85946aa
|
||||
Subproject commit 98df6469d5bf084f93cded90a69ec60258f80b44
|
||||
|
|
@ -15,30 +15,76 @@ if [ "$(id -u)" != "0" ]; then
|
|||
fi
|
||||
|
||||
USER=${SUDO_USER:-$USER}
|
||||
GROUP=$(id -gn $USER)
|
||||
USER_HOME=$(getent passwd $USER | cut -d: -f6)
|
||||
|
||||
if [ -z "$XDG_DATA_HOME" ]; then
|
||||
XDG_DATA_HOME="$USER_HOME/.local/share"
|
||||
fi
|
||||
DATA_DIR="$XDG_DATA_HOME/breezy_vulkan"
|
||||
if [ ! -d "$DATA_DIR" ]; then
|
||||
mkdir -p $DATA_DIR
|
||||
fi
|
||||
VULKAN_DATA_DIR="$XDG_DATA_HOME/vulkan"
|
||||
XR_DRIVER_DATA_DIR="$XDG_DATA_HOME/breezy_vulkan"
|
||||
|
||||
if [ -z "$XDG_CONFIG_HOME" ]; then
|
||||
XDG_CONFIG_HOME="$USER_HOME/.config"
|
||||
fi
|
||||
CONFIG_DIR="$XDG_CONFIG_HOME/breezy_vulkan"
|
||||
if [ ! -d "$CONFIG_DIR" ]; then
|
||||
mkdir -p $CONFIG_DIR
|
||||
fi
|
||||
|
||||
if [ -z "$XDG_BIN_HOME" ]; then
|
||||
XDG_BIN_HOME="$USER_HOME/.local/bin"
|
||||
fi
|
||||
BIN_DIR="$XDG_BIN_HOME"
|
||||
if [ ! -d "$BIN_DIR" ]; then
|
||||
mkdir -p $BIN_DIR
|
||||
fi
|
||||
|
||||
if [ -z "$XDG_STATE_HOME" ]; then
|
||||
XDG_STATE_HOME="$USER_HOME/.local/state"
|
||||
fi
|
||||
STATE_DIR="$XDG_STATE_HOME/breezy_vulkan"
|
||||
if [ ! -d "$STATE_DIR" ]; then
|
||||
mkdir -p $STATE_DIR
|
||||
fi
|
||||
|
||||
LIB_DIR="$USER_HOME/.local/lib"
|
||||
if [ ! -d "$LIB_DIR" ]; then
|
||||
mkdir -p "$LIB_DIR"
|
||||
fi
|
||||
|
||||
LIB32_DIR="$USER_HOME/.local/lib32"
|
||||
if [ ! -d "$LIB32_DIR" ]; then
|
||||
mkdir -p "$LIB32_DIR"
|
||||
fi
|
||||
|
||||
if [ "$for_install" -eq 0 ]; then
|
||||
UA_EVENT_NAME="breezy_uninstall"
|
||||
UA_CLIENT_ID="BreezyVulkan"
|
||||
#INJECT_UA_CALL
|
||||
fi
|
||||
|
||||
[ "$for_install" -eq 0 ] && echo "Removing vkBasalt binaries from $USER_HOME/.local/lib[32]/"
|
||||
rm $USER_HOME/.local/lib/libvkbasalt.so
|
||||
rm $USER_HOME/.local/lib32/libvkbasalt.so
|
||||
[ "$for_install" -eq 0 ] && echo "Removing vkBasalt binaries from $LIB_DIR[32]/"
|
||||
rm $LIB_DIR/libvkbasalt.so
|
||||
rm $LIB32_DIR/libvkbasalt.so
|
||||
|
||||
[ "$for_install" -eq 0 ] && echo "Removing vkBasalt vulkan layer configs from $USER_HOME/.local/share/vulkan/implicit_layer.d/"
|
||||
rm $USER_HOME/.local/share/vulkan/implicit_layer.d/vkBasalt.json
|
||||
rm $USER_HOME/.local/share/vulkan/implicit_layer.d/vkBasalt.x86.json
|
||||
[ "$for_install" -eq 0 ] && echo "Removing vkBasalt vulkan layer configs from $VULKAN_DATA_DIR/implicit_layer.d/"
|
||||
rm $VULKAN_DATA_DIR/implicit_layer.d/vkBasalt.json
|
||||
rm $VULKAN_DATA_DIR/implicit_layer.d/vkBasalt.x86.json
|
||||
|
||||
[ "$for_install" -eq 0 ] && echo "Removing vkBasalt and reshade directories at $USER_HOME/.config/"
|
||||
rm -rf $USER_HOME/.config/vkBasalt
|
||||
rm -rf $USER_HOME/.config/reshade
|
||||
[ "$for_install" -eq 0 ] && echo "Removing vkBasalt and reshade directories at $CONFIG_DIR/"
|
||||
rm -rf $CONFIG_DIR/vkBasalt
|
||||
rm -rf $CONFIG_DIR/reshade
|
||||
|
||||
[ "$for_install" -eq 0 ] && echo "Removing scripts at $USER_HOME/.local/bin/breezy_vulkan"
|
||||
rm -rf $USER_HOME/.local/bin/breezy_vulkan
|
||||
[ "$for_install" -eq 0 ] && echo "Removing scripts at $BIN_DIR"
|
||||
rm -f $BIN_DIR/breezy_vulkan_verify
|
||||
|
||||
[ "$for_install" -eq 0 ] && echo "SKIPPING xrealAirLinuxDriver uninstall to keep mouse/joystick driver functionality."
|
||||
[ "$for_install" -eq 0 ] && echo "To manually uninstall xrealAirLinuxDriver, do: \"sudo ~/bin/xreal_driver_uninstall\""
|
||||
[ "$for_install" -eq 0 ] && echo "SKIPPING xrDriver uninstall to keep mouse/joystick driver functionality."
|
||||
[ "$for_install" -eq 0 ] && echo "To manually uninstall xrDriver, do: \"sudo xr_driver_uninstall\""
|
||||
|
||||
# this script is self-deleting, leave this as the last command
|
||||
rm -f $USER_HOME/bin/breezy_vulkan_uninstall
|
||||
rm -f $BIN_DIR/breezy_vulkan_uninstall
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
# create a string to string mapping, file name to expected file location
|
||||
declare -A file_paths
|
||||
file_paths=(
|
||||
["bin/breezy_vulkan_uninstall"]="{bin_dir}/breezy_vulkan_uninstall"
|
||||
["vkBasalt.64/libvkbasalt.so"]="{lib_dir}/libvkbasalt.so"
|
||||
["vkBasalt.32/libvkbasalt.so"]="{lib32_dir}/libvkbasalt.so"
|
||||
["IMUAdjust.fx"]="{reshade_config_dir}/Shaders/IMUAdjust.fx"
|
||||
["ReShade.fxh"]="{reshade_config_dir}/Shaders/ReShade.fxh"
|
||||
["ReShadeUI.fxh"]="{reshade_config_dir}/Shaders/ReShadeUI.fxh"
|
||||
["Sideview.fx"]="{reshade_config_dir}/Shaders/Sideview.fx"
|
||||
["calibrating.png"]="{reshade_config_dir}/Textures/calibrating.png"
|
||||
["custom_banner.png"]="{reshade_config_dir}/Textures/custom_banner.png"
|
||||
["xr_driver/manifest"]="{xr_driver_data_dir}/manifest"
|
||||
)
|
||||
|
||||
# verify the file hashes in ./manifest
|
||||
while IFS= read -r line
|
||||
do
|
||||
# split the line into hash and filename
|
||||
manifest_hash=$(echo $line | awk '{print $1}')
|
||||
file=$(echo $line | awk '{print $2}')
|
||||
|
||||
actual_file_path=${file_paths[$file]}
|
||||
|
||||
# compute the SHA256 hash of the actual file
|
||||
actual_hash=$(sha256sum $actual_file_path | awk '{print $1}')
|
||||
|
||||
# compare the hashes
|
||||
if ! [ "$manifest_hash" = "$actual_hash" ]; then
|
||||
echo "Verification failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
done < "{data_dir}/manifest"
|
||||
|
||||
# if our checks succeeded, run the xr_driver verify script
|
||||
{bin_dir}/xr_driver_verify > /dev/null
|
||||
|
||||
echo "Verification succeeded"
|
||||
147
vulkan/bin/setup
147
vulkan/bin/setup
|
|
@ -6,8 +6,52 @@ set -e
|
|||
# to a specific release of the code, and guarantees it will never run along-side newer or older binaries.
|
||||
|
||||
USER=${SUDO_USER:-$USER}
|
||||
GROUP=$(id -gn $USER)
|
||||
USER_HOME=$(getent passwd $USER | cut -d: -f6)
|
||||
UA_EVENT_NAME="breezy_install"
|
||||
|
||||
if [ -z "$XDG_DATA_HOME" ]; then
|
||||
XDG_DATA_HOME="$USER_HOME/.local/share"
|
||||
fi
|
||||
DATA_DIR="$XDG_DATA_HOME/breezy_vulkan"
|
||||
if [ ! -d "$DATA_DIR" ]; then
|
||||
mkdir -p $DATA_DIR
|
||||
fi
|
||||
VULKAN_DATA_DIR="$XDG_DATA_HOME/vulkan"
|
||||
XR_DRIVER_DATA_DIR="$XDG_DATA_HOME/xr_driver"
|
||||
|
||||
if [ -z "$XDG_CONFIG_HOME" ]; then
|
||||
XDG_CONFIG_HOME="$USER_HOME/.config"
|
||||
fi
|
||||
RESHADE_CONFIG_DIR="$XDG_CONFIG_HOME/reshade"
|
||||
VKBASALT_CONFIG_DIR="$XDG_CONFIG_HOME/vkBasalt"
|
||||
|
||||
if [ -z "$XDG_BIN_HOME" ]; then
|
||||
XDG_BIN_HOME="$USER_HOME/.local/bin"
|
||||
fi
|
||||
BIN_DIR="$XDG_BIN_HOME"
|
||||
if [ ! -d "$BIN_DIR" ]; then
|
||||
mkdir -p $BIN_DIR
|
||||
fi
|
||||
|
||||
if [ -z "$XDG_STATE_HOME" ]; then
|
||||
XDG_STATE_HOME="$USER_HOME/.local/state"
|
||||
fi
|
||||
STATE_DIR="$XDG_STATE_HOME/breezy_vulkan"
|
||||
if [ ! -d "$STATE_DIR" ]; then
|
||||
mkdir -p $STATE_DIR
|
||||
fi
|
||||
|
||||
LIB_DIR="$USER_HOME/.local/lib"
|
||||
if [ ! -d "$LIB_DIR" ]; then
|
||||
mkdir -p "$LIB_DIR"
|
||||
fi
|
||||
|
||||
LIB32_DIR="$USER_HOME/.local/lib32"
|
||||
if [ ! -d "$LIB32_DIR" ]; then
|
||||
mkdir -p "$LIB32_DIR"
|
||||
fi
|
||||
|
||||
if [ -e "$USER_HOME/bin/breezy_vulkan_uninstall" ]; then
|
||||
echo "Cleaning up the previous installation"
|
||||
|
||||
|
|
@ -17,68 +61,87 @@ if [ -e "$USER_HOME/bin/breezy_vulkan_uninstall" ]; then
|
|||
UA_EVENT_NAME="breezy_update"
|
||||
fi
|
||||
|
||||
if [ -e "$BIN_DIR/breezy_vulkan_uninstall" ]; then
|
||||
echo "Cleaning up the previous installation"
|
||||
|
||||
# ` || true` will ensure that this can't cause a failure, even with `set -e`
|
||||
$BIN_DIR/breezy_vulkan_uninstall --for-install || true
|
||||
|
||||
UA_EVENT_NAME="breezy_update"
|
||||
fi
|
||||
|
||||
UA_CLIENT_ID="BreezyVulkan"
|
||||
UA_EVENT_VERSION="$1"
|
||||
#INJECT_UA_CALL
|
||||
|
||||
echo "Copying the breezy_vulkan scripts to ${USER_HOME}/bin"
|
||||
if [ ! -d "$USER_HOME/bin" ]; then
|
||||
su -c 'mkdir -p '$USER_HOME'/bin' $USER
|
||||
fi
|
||||
cp bin/breezy_vulkan_uninstall $USER_HOME/bin
|
||||
|
||||
echo "Installing vkBasalt; copying binaries, configs, and shader files to ${USER_HOME}/.local and ${USER_HOME}/.config"
|
||||
# escaping sed replace: https://stackoverflow.com/questions/407523/escape-a-string-for-a-sed-replace-pattern
|
||||
ESCAPED_BIN_DIR=$(printf '%s\n' "$BIN_DIR" | sed -e 's/[\/&]/\\&/g')
|
||||
ESCAPED_LIB_DIR=$(printf '%s\n' "$LIB_DIR" | sed -e 's/[\/&]/\\&/g')
|
||||
ESCAPED_LIB32_DIR=$(printf '%s\n' "$LIB32_DIR" | sed -e 's/[\/&]/\\&/g')
|
||||
ESCAPED_RESHADE_CONFIG_DIR=$(printf '%s\n' "$RESHADE_CONFIG_DIR" | sed -e 's/[\/&]/\\&/g')
|
||||
ESCAPED_STATE_DIR=$(printf '%s\n' "$STATE_DIR" | sed -e 's/[\/&]/\\&/g')
|
||||
ESCAPED_DATA_DIR=$(printf '%s\n' "$DATA_DIR" | sed -e 's/[\/&]/\\&/g')
|
||||
ESCAPED_XR_DRIVER_DATA_DIR=$(printf '%s\n' "$XR_DRIVER_DATA_DIR" | sed -e 's/[\/&]/\\&/g')
|
||||
|
||||
echo "Copying the breezy_vulkan scripts to ${BIN_DIR} and related files to ${DATA_DIR}"
|
||||
cp bin/breezy_vulkan_uninstall $BIN_DIR
|
||||
sed -i -e "s/{bin_dir}/$ESCAPED_BIN_DIR/g" \
|
||||
-e "s/{lib_dir}/$ESCAPED_LIB_DIR/g" \
|
||||
-e "s/{lib32_dir}/$ESCAPED_LIB32_DIR/g" \
|
||||
-e "s/{reshade_config_dir}/$ESCAPED_RESHADE_CONFIG_DIR/g" \
|
||||
-e "s/{state_dir}/$ESCAPED_STATE_DIR/g" \
|
||||
-e "s/{data_dir}/$ESCAPED_DATA_DIR/g" \
|
||||
-e "s/{xr_driver_data_dir}/$ESCAPED_XR_DRIVER_DATA_DIR/g" \
|
||||
bin/breezy_vulkan_verify
|
||||
cp bin/breezy_vulkan_verify $BIN_DIR
|
||||
cp manifest $DATA_DIR
|
||||
|
||||
echo "Installing vkBasalt; copying binaries, configs, and shader files"
|
||||
|
||||
# much of the setup below was informed by https://github.com/simons-public/steam-deck-vkbasalt-install
|
||||
# copy the vkBasalt binaries and configs
|
||||
su -c 'mkdir -p '$USER_HOME'/.local/{lib,lib32,share/vulkan/implicit_layer.d}' $USER
|
||||
su -c 'mkdir -p '$USER_HOME'/.config/{vkBasalt,reshade/Shaders,reshade/Textures}' $USER
|
||||
cp vkBasalt.64/libvkbasalt.so $USER_HOME/.local/lib/
|
||||
cp vkBasalt.32/libvkbasalt.so $USER_HOME/.local/lib32/
|
||||
chown $USER:$USER $USER_HOME/.local/lib/libvkbasalt.so
|
||||
chown $USER:$USER $USER_HOME/.local/lib32/libvkbasalt.so
|
||||
mkdir -p "$VULKAN_DATA_DIR"/implicit_layer.d
|
||||
mkdir -p "$XDG_CONFIG_HOME"/{vkBasalt,reshade/Shaders,reshade/Textures}
|
||||
cp vkBasalt.64/libvkbasalt.so $LIB_DIR/
|
||||
cp vkBasalt.32/libvkbasalt.so $LIB32_DIR/
|
||||
|
||||
# there is only one vkBasalt.json file, use the 64-bit directory for both, copy and make replacements
|
||||
if grep -q SteamOS /etc/os-release ; then
|
||||
sed -e "s|libvkbasalt.so|${USER_HOME}/.local/lib/libvkbasalt.so|" -e "s/ENABLE_VKBASALT/SteamDeck/" vkBasalt.64/vkBasalt.json > $USER_HOME/.local/share/vulkan/implicit_layer.d/vkBasalt.json
|
||||
sed -e "s|libvkbasalt.so|${USER_HOME}/.local/lib32/libvkbasalt.so|" -e "s/ENABLE_VKBASALT/SteamDeck/" vkBasalt.64/vkBasalt.json > $USER_HOME/.local/share/vulkan/implicit_layer.d/vkBasalt.x86.json
|
||||
sed -e "s|libvkbasalt.so|${LIB_DIR}/libvkbasalt.so|" -e "s/ENABLE_VKBASALT/SteamDeck/" vkBasalt.64/vkBasalt.json > $VULKAN_DATA_DIR/implicit_layer.d/vkBasalt.json
|
||||
sed -e "s|libvkbasalt.so|${LIB32_DIR}/libvkbasalt.so|" -e "s/ENABLE_VKBASALT/SteamDeck/" vkBasalt.64/vkBasalt.json > $VULKAN_DATA_DIR/implicit_layer.d/vkBasalt.x86.json
|
||||
else
|
||||
sed -e "s|libvkbasalt.so|${USER_HOME}/.local/lib/libvkbasalt.so|" vkBasalt.64/vkBasalt.json > $USER_HOME/.local/share/vulkan/implicit_layer.d/vkBasalt.json
|
||||
sed -e "s|libvkbasalt.so|${USER_HOME}/.local/lib32/libvkbasalt.so|" vkBasalt.64/vkBasalt.json > $USER_HOME/.local/share/vulkan/implicit_layer.d/vkBasalt.x86.json
|
||||
sed -e "s|libvkbasalt.so|${LIB_DIR}/libvkbasalt.so|" vkBasalt.64/vkBasalt.json > $VULKAN_DATA_DIR/implicit_layer.d/vkBasalt.json
|
||||
sed -e "s|libvkbasalt.so|${LIB32_DIR}/libvkbasalt.so|" vkBasalt.64/vkBasalt.json > $VULKAN_DATA_DIR/implicit_layer.d/vkBasalt.x86.json
|
||||
fi
|
||||
chown $USER:$USER $USER_HOME/.local/share/vulkan/implicit_layer.d/vkBasalt.*
|
||||
|
||||
# copy the vkBasalt.conf file and make replacements
|
||||
sed -e "s|/path/to/reshade-shaders|${USER_HOME}/.config/reshade|" \
|
||||
-e "s|/path/to/virtual_display|${USER_HOME}/.config/reshade/Shaders/IMUAdjust.fx|" \
|
||||
-e "s|/path/to/sideview|${USER_HOME}/.config/reshade/Shaders/Sideview.fx|" \
|
||||
config/vkBasalt.conf > $USER_HOME/.config/vkBasalt/vkBasalt.conf
|
||||
chown -R $USER:$USER $USER_HOME/.config/vkBasalt
|
||||
sed -e "s|/path/to/reshade-shaders|${RESHADE_CONFIG_DIR}|" \
|
||||
-e "s|/path/to/virtual_display|${RESHADE_CONFIG_DIR}/Shaders/IMUAdjust.fx|" \
|
||||
-e "s|/path/to/sideview|${RESHADE_CONFIG_DIR}/Shaders/Sideview.fx|" \
|
||||
config/vkBasalt.conf > $VKBASALT_CONFIG_DIR/vkBasalt.conf
|
||||
|
||||
echo "Installing the Sombrero shaders and texture files to ${USER_HOME}/.config/reshade/{Shaders,Textures}"
|
||||
cp *.fx* $USER_HOME/.config/reshade/Shaders
|
||||
cp *.png $USER_HOME/.config/reshade/Textures
|
||||
chown -R $USER:$USER $USER_HOME/.config/reshade
|
||||
echo "Installing the Sombrero shaders and texture files to ${RESHADE_CONFIG_DIR}/{Shaders,Textures}"
|
||||
cp *.fx* $RESHADE_CONFIG_DIR/Shaders
|
||||
cp *.png $RESHADE_CONFIG_DIR/Textures
|
||||
|
||||
# escaping sed replace: https://stackoverflow.com/questions/407523/escape-a-string-for-a-sed-replace-pattern
|
||||
ESCAPED_USER_HOME=$(printf '%s\n' "$USER_HOME" | sed -e 's/[\/&]/\\&/g')
|
||||
chown -R $USER:$GROUP $LIB_DIR
|
||||
chown -R $USER:$GROUP $LIB32_DIR
|
||||
chown -R $USER:$GROUP $DATA_DIR
|
||||
chown -R $USER:$GROUP $VULKAN_DATA_DIR
|
||||
chown -R $USER:$GROUP $RESHADE_CONFIG_DIR
|
||||
chown -R $USER:$GROUP $VKBASALT_CONFIG_DIR
|
||||
chown -R $USER:$GROUP $STATE_DIR
|
||||
chown -R $USER:$GROUP $BIN_DIR/breezy_vulkan_*
|
||||
|
||||
echo "Copying the verification script and manifest to ${USER_HOME}/.local/bin/breezy_vulkan"
|
||||
sed -i -e "s/{user_home}/$ESCAPED_USER_HOME/g" bin/verify_installation
|
||||
if [ ! -d "$USER_HOME/.local/bin/breezy_vulkan" ]; then
|
||||
mkdir -p $USER_HOME/.local/bin/breezy_vulkan
|
||||
fi
|
||||
cp -p bin/verify_installation $USER_HOME/.local/bin/breezy_vulkan
|
||||
cp manifest $USER_HOME/.local/bin/breezy_vulkan
|
||||
|
||||
# set up the XREAL driver using the local binary
|
||||
echo "Installing xrealAirLinuxDriver"
|
||||
echo "BEGIN - xreal_driver_setup"
|
||||
# set up the XR driver using the local binary
|
||||
echo "Installing xrDriver"
|
||||
echo "BEGIN - xr_driver_setup"
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
bin/xreal_driver_setup $(pwd)/xrealAirLinuxDriver.tar.gz
|
||||
bin/xr_driver_setup $(pwd)/xrDriver.tar.gz
|
||||
else
|
||||
bin/xreal_driver_setup -v $1 $(pwd)/xrealAirLinuxDriver.tar.gz
|
||||
bin/xr_driver_setup -v $1 $(pwd)/xrDriver.tar.gz
|
||||
fi
|
||||
|
||||
echo "END - xreal_driver_setup"
|
||||
echo "END - xr_driver_setup"
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
# create a string to string mapping, file name to expected file location
|
||||
declare -A file_paths
|
||||
file_paths=(
|
||||
["bin/breezy_vulkan_uninstall"]="{user_home}/bin/breezy_vulkan_uninstall"
|
||||
["vkBasalt.64/libvkbasalt.so"]="{user_home}/.local/lib/libvkbasalt.so"
|
||||
["vkBasalt.32/libvkbasalt.so"]="{user_home}/.local/lib32/libvkbasalt.so"
|
||||
["IMUAdjust.fx"]="{user_home}/.config/reshade/Shaders/IMUAdjust.fx"
|
||||
["ReShade.fxh"]="{user_home}/.config/reshade/Shaders/ReShade.fxh"
|
||||
["ReShadeUI.fxh"]="{user_home}/.config/reshade/Shaders/ReShadeUI.fxh"
|
||||
["Sideview.fx"]="{user_home}/.config/reshade/Shaders/Sideview.fx"
|
||||
["calibrating.png"]="{user_home}/.config/reshade/Textures/calibrating.png"
|
||||
["custom_banner.png"]="{user_home}/.config/reshade/Textures/custom_banner.png"
|
||||
["build/driver_air_glasses/manifest"]="{user_home}/.local/bin/xr_driver/manifest"
|
||||
)
|
||||
|
||||
# verify the file hashes in ./manifest
|
||||
while IFS= read -r line
|
||||
do
|
||||
# split the line into hash and filename
|
||||
manifest_hash=$(echo $line | awk '{print $1}')
|
||||
file=$(echo $line | awk '{print $2}')
|
||||
|
||||
actual_file_path=${file_paths[$file]}
|
||||
|
||||
# compute the SHA256 hash of the actual file
|
||||
actual_hash=$(sha256sum $actual_file_path | awk '{print $1}')
|
||||
|
||||
# compare the hashes
|
||||
if ! [ "$manifest_hash" = "$actual_hash" ]; then
|
||||
echo "Verification failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
done < "{user_home}/.local/bin/breezy_vulkan/manifest"
|
||||
|
||||
# if our checks succeeded, run the xr_driver verify script
|
||||
{user_home}/.local/bin/xr_driver/verify_installation > /dev/null
|
||||
|
||||
echo "Verification succeeded"
|
||||
Loading…
Reference in New Issue