WIP breezy XDG re-org

This commit is contained in:
wheaney 2024-07-21 22:39:50 -07:00
parent 71585d0328
commit d6945af1c3
9 changed files with 273 additions and 145 deletions

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

42
vulkan/bin/breezy_vulkan_verify Executable file
View File

@ -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"

View File

@ -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"

View File

@ -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"