104 lines
3.7 KiB
Bash
Executable File
104 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# exit when any command fails
|
|
set -e
|
|
|
|
ARCH=${ARCH:-$(uname -m)}
|
|
BUILD_ARCH=$ARCH
|
|
if [ -n "${STEAMOS+x}" ]; then
|
|
ARCH="x86_64"
|
|
BUILD_ARCH="steamos"
|
|
fi
|
|
|
|
# https://stackoverflow.com/a/246128
|
|
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
|
|
ROOT_DIR=$(realpath $SCRIPT_DIR/..)
|
|
XR_DRIVER_DIR=$ROOT_DIR/modules/XRLinuxDriver
|
|
|
|
echo "Building Breezy KWin for $BUILD_ARCH"
|
|
KWIN_DIR=$ROOT_DIR/kwin
|
|
BUILD_FILE_NAME=breezyKWin-$BUILD_ARCH.tar.gz
|
|
|
|
TMP_DIR=$(mktemp -d -t breezy-kwin-XXXXXXXXXX)
|
|
PACKAGE_DIR=$TMP_DIR/breezy_kwin
|
|
mkdir -p $PACKAGE_DIR
|
|
|
|
source $XR_DRIVER_DIR/bin/inject_ua
|
|
|
|
# copy vulkan setup scripts and configs
|
|
mkdir -p $PACKAGE_DIR/bin
|
|
copy_and_inject_ua "$XR_DRIVER_DIR/bin/ua.sh" "$PACKAGE_DIR/bin" "$KWIN_DIR/bin/setup" "$KWIN_DIR/bin/breezy_kwin_uninstall" "$KWIN_DIR/bin/breezy_kwin_logs"
|
|
|
|
XR_DRIVER_BINARY_NAME=xrDriver-$ARCH.tar.gz
|
|
XR_DRIVER_BINARY="$XR_DRIVER_DIR/out/$XR_DRIVER_BINARY_NAME"
|
|
|
|
XR_DRIVER_VERSION=$(sed -nE 's/^project\([^)]*VERSION[[:space:]]+([0-9]+\.[0-9]+\.[0-9]+).*$/\1/p' "$XR_DRIVER_DIR/CMakeLists.txt" | head -n 1)
|
|
if [ "$1" == "--download-driver" ]; then
|
|
driver_download_url="https://github.com/wheaney/XRLinuxDriver/releases/download/v$XR_DRIVER_VERSION/xrDriver-$ARCH.tar.gz"
|
|
setup_download_url="https://github.com/wheaney/XRLinuxDriver/releases/download/v$XR_DRIVER_VERSION/xr_driver_setup"
|
|
|
|
curl -L "$driver_download_url" > "$PACKAGE_DIR/$XR_DRIVER_BINARY_NAME"
|
|
curl -L "$setup_download_url" > "$PACKAGE_DIR/bin/xr_driver_setup"
|
|
chmod +x "$PACKAGE_DIR/bin/xr_driver_setup"
|
|
|
|
echo "Downloaded XRLinuxDriver binary and setup script, with hashes:"
|
|
printf '\txrDriver-%s.tar.gz: %s\n' "$ARCH" "$(sha256sum "$PACKAGE_DIR/$XR_DRIVER_BINARY_NAME" | sort | sha256sum | sed 's/ .*//')"
|
|
printf '\txr_driver_setup: %s\n' "$(sha256sum "$PACKAGE_DIR/bin/xr_driver_setup" | sort | sha256sum | sed 's/ .*//')"
|
|
else
|
|
if [ ! -e "$XR_DRIVER_BINARY" ] || [ "$1" == "--rebuild-driver" ] || [ "$1" == "--rebuild-all" ]; 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 $XR_DRIVER_DIR
|
|
fi
|
|
|
|
pushd $XR_DRIVER_DIR > /dev/null
|
|
|
|
# strange issue where the base library produces a .so file if the build is not cleaned
|
|
rm -rf build/
|
|
|
|
docker-build/init.sh
|
|
docker-build/run-build.sh $ARCH
|
|
popd > /dev/null
|
|
fi
|
|
|
|
XR_DRIVER_TMP_DIR=$(mktemp -d -t xr-driver-XXXXXXXXXX)
|
|
pushd $XR_DRIVER_TMP_DIR > /dev/null
|
|
cp "$XR_DRIVER_BINARY" "$XR_DRIVER_TMP_DIR/$XR_DRIVER_BINARY_NAME"
|
|
tar -xf "$XR_DRIVER_TMP_DIR/$XR_DRIVER_BINARY_NAME"
|
|
|
|
XR_DRIVER_MANIFEST_LINE=$(sha256sum xr_driver/manifest)
|
|
popd > /dev/null
|
|
rm -rf $XR_DRIVER_TMP_DIR
|
|
|
|
cp "$XR_DRIVER_BINARY" "$PACKAGE_DIR/$XR_DRIVER_BINARY_NAME"
|
|
cp $XR_DRIVER_DIR/bin/xr_driver_setup $PACKAGE_DIR/bin/xr_driver_setup
|
|
fi
|
|
|
|
# alternative to symlinking, since the Docker build can't resolve to the parent directory
|
|
# this file is in .gitignore so it doesn't get duplicated
|
|
cp ui/modules/PyXRLinuxDriverIPC/xrdriveripc.py $KWIN_DIR/src/xrdriveripc/xrdriveripc.py
|
|
cp VERSION $KWIN_DIR
|
|
cp modules/sombrero/*.png $KWIN_DIR/src/qml
|
|
cp ui/data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg $KWIN_DIR/src/kcm/
|
|
|
|
pushd $KWIN_DIR > /dev/null
|
|
if [ -z "${LOCAL_BUILD_SYSTEM+x}" ]; then
|
|
docker-build/init.sh
|
|
docker-build/run-build.sh "$BUILD_ARCH"
|
|
else
|
|
bin/package_kwin_plugin
|
|
fi
|
|
popd > /dev/null
|
|
cp $KWIN_DIR/out/breezyKWinPlugin-$BUILD_ARCH.tar.gz $PACKAGE_DIR/breezyKWinPlugin.tar.gz
|
|
|
|
pushd $TMP_DIR > /dev/null
|
|
tar -zcvf $BUILD_FILE_NAME breezy_kwin
|
|
popd > /dev/null
|
|
|
|
mkdir -p out
|
|
if [ -e "out/$BUILD_FILE_NAME" ]; then
|
|
rm out/$BUILD_FILE_NAME
|
|
fi
|
|
cp $TMP_DIR/$BUILD_FILE_NAME out
|
|
|
|
rm -rf $TMP_DIR |