Update setup script to perform local build if a binary isn't available for download
This commit is contained in:
parent
b266a20949
commit
dbb2196819
|
|
@ -52,9 +52,52 @@ fi
|
||||||
|
|
||||||
if [ -z "$binary_path_arg" ]
|
if [ -z "$binary_path_arg" ]
|
||||||
then
|
then
|
||||||
# download and unzip the binary
|
http_code=$(curl -s -o /dev/null -w "%{http_code}" -L "$binary_download_url" || echo "000")
|
||||||
echo "Downloading to: ${tmp_dir}/$FILE_NAME"
|
|
||||||
curl -L "$binary_download_url" > "$FILE_NAME"
|
if [[ "$http_code" =~ ^(2|3) ]]; then
|
||||||
|
echo "Downloading to: ${tmp_dir}/$FILE_NAME"
|
||||||
|
curl -L "$binary_download_url" -o "$FILE_NAME"
|
||||||
|
else
|
||||||
|
check_command "git"
|
||||||
|
|
||||||
|
# handle -v / --tag like the rest of the script
|
||||||
|
if [ "$1" = "--tag" ] && [ -n "$2" ]; then
|
||||||
|
requested_tag="$2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# resolve tag: prefer requested_tag, then LATEST_RELEASE if already fetched, else query GitHub API
|
||||||
|
if [ -n "$requested_tag" ]; then
|
||||||
|
tag="$requested_tag"
|
||||||
|
else
|
||||||
|
tag=$(curl -s "https://api.github.com/repos/wheaney/breezy-desktop/releases/latest" \
|
||||||
|
| grep -m1 '"tag_name":' \
|
||||||
|
| sed -E 's/.*"tag_name":[[:space:]]*"([^"]+)".*/\1/')
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$tag" ]; then
|
||||||
|
echo "Failed to determine latest tag for wheaney/breezy-desktop" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Cloning wheaney/breezy-desktop (tag: ${tag})"
|
||||||
|
if git clone --depth 1 --branch "$tag" "https://github.com/wheaney/breezy-desktop.git" breezy-desktop 2>/dev/null; then
|
||||||
|
pushd breezy-desktop > /dev/null
|
||||||
|
else
|
||||||
|
git clone "https://github.com/wheaney/breezy-desktop.git" breezy-desktop
|
||||||
|
pushd breezy-desktop > /dev/null
|
||||||
|
git checkout "$tag"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Downloading git submodules"
|
||||||
|
git submodule sync --recursive || true
|
||||||
|
git submodule update --init --recursive modules/XRLinuxDriver
|
||||||
|
git submodule update --init --recursive ui/modules/PyXRLinuxDriverIPC
|
||||||
|
|
||||||
|
LOCAL_BUILD_SYSTEM=1 bin/package_kwin --download-driver
|
||||||
|
FILE_NAME="breezyKWin-$ARCH.tar.gz"
|
||||||
|
cp "out/$FILE_NAME" "$tmp_dir"
|
||||||
|
popd > /dev/null
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
FILE_NAME=$(basename $binary_path_arg)
|
FILE_NAME=$(basename $binary_path_arg)
|
||||||
if [[ "$binary_path_arg" = /* ]]; then
|
if [[ "$binary_path_arg" = /* ]]; then
|
||||||
|
|
|
||||||
|
|
@ -30,43 +30,60 @@ 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"
|
copy_and_inject_ua "$XR_DRIVER_DIR/bin/ua.sh" "$PACKAGE_DIR/bin" "$KWIN_DIR/bin/setup" "$KWIN_DIR/bin/breezy_kwin_uninstall"
|
||||||
|
|
||||||
XR_DRIVER_BINARY=$XR_DRIVER_DIR/out/xrDriver-$ARCH.tar.gz
|
XR_DRIVER_BINARY=$XR_DRIVER_DIR/out/xrDriver-$ARCH.tar.gz
|
||||||
|
if [ "$1" == "--download-driver" ]; then
|
||||||
|
driver_download_url="https://github.com/wheaney/XRLinuxDriver/releases/latest/download/xrDriver-$ARCH.tar.gz"
|
||||||
|
setup_download_url="https://github.com/wheaney/XRLinuxDriver/releases/latest/download/xr_driver_setup"
|
||||||
|
|
||||||
if [ ! -e "$XR_DRIVER_BINARY" ] || [ "$1" == "--rebuild-driver" ] || [ "$1" == "--rebuild-all" ]; then
|
curl -L "$driver_download_url" > "$PACKAGE_DIR/xrDriver.tar.gz"
|
||||||
# if a file exists at custom_banner_config.yml, copy it to the xrealAirLinuxDriver directory
|
curl -L "$setup_download_url" > "$PACKAGE_DIR/bin/xr_driver_setup"
|
||||||
if [ -e "$VULKAN_DIR/custom_banner_config.yml" ]; then
|
chmod +x "$PACKAGE_DIR/bin/xr_driver_setup"
|
||||||
cp $VULKAN_DIR/custom_banner_config.yml $XR_DRIVER_DIR
|
|
||||||
|
echo "Downloaded XRLinuxDriver binary and setup script, with hashes:"
|
||||||
|
echo "xrDriver-$ARCH.tar.gz: $(sha256sum "$PACKAGE_DIR/xrDriver.tar.gz")"
|
||||||
|
echo "xr_driver_setup: $(sha256sum "$PACKAGE_DIR/bin/xr_driver_setup")"
|
||||||
|
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
|
||||||
|
|
||||||
|
# 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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pushd $XR_DRIVER_DIR
|
XR_DRIVER_TMP_DIR=$(mktemp -d -t xr-driver-XXXXXXXXXX)
|
||||||
|
pushd $XR_DRIVER_TMP_DIR
|
||||||
|
cp $XR_DRIVER_BINARY $XR_DRIVER_TMP_DIR/xrDriver.tar.gz
|
||||||
|
tar -xf $XR_DRIVER_TMP_DIR/xrDriver.tar.gz
|
||||||
|
|
||||||
# strange issue where the base library produces a .so file if the build is not cleaned
|
XR_DRIVER_MANIFEST_LINE=$(sha256sum xr_driver/manifest)
|
||||||
rm -rf build/
|
|
||||||
|
|
||||||
docker-build/init.sh
|
|
||||||
docker-build/run-build.sh $ARCH
|
|
||||||
popd
|
popd
|
||||||
|
rm -rf $XR_DRIVER_TMP_DIR
|
||||||
|
|
||||||
|
cp $XR_DRIVER_BINARY $PACKAGE_DIR/xrDriver.tar.gz
|
||||||
|
cp $XR_DRIVER_DIR/bin/xr_driver_setup $PACKAGE_DIR/bin/xr_driver_setup
|
||||||
fi
|
fi
|
||||||
|
|
||||||
XR_DRIVER_TMP_DIR=$(mktemp -d -t xr-driver-XXXXXXXXXX)
|
|
||||||
pushd $XR_DRIVER_TMP_DIR
|
|
||||||
cp $XR_DRIVER_BINARY $XR_DRIVER_TMP_DIR/xrDriver.tar.gz
|
|
||||||
tar -xf $XR_DRIVER_TMP_DIR/xrDriver.tar.gz
|
|
||||||
|
|
||||||
XR_DRIVER_MANIFEST_LINE=$(sha256sum xr_driver/manifest)
|
|
||||||
popd
|
|
||||||
rm -rf $XR_DRIVER_TMP_DIR
|
|
||||||
|
|
||||||
cp $XR_DRIVER_BINARY $PACKAGE_DIR/xrDriver.tar.gz
|
|
||||||
cp $XR_DRIVER_DIR/bin/xr_driver_setup $PACKAGE_DIR/bin
|
|
||||||
|
|
||||||
# alternative to symlinking, since the Docker build can't resolve to the parent directory
|
# 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
|
# this file is in .gitignore so it doesn't get duplicated
|
||||||
cp ui/modules/PyXRLinuxDriverIPC/xrdriveripc.py $KWIN_DIR/src/xrdriveripc/xrdriveripc.py
|
cp ui/modules/PyXRLinuxDriverIPC/xrdriveripc.py $KWIN_DIR/src/xrdriveripc/xrdriveripc.py
|
||||||
cp VERSION $KWIN_DIR
|
cp VERSION $KWIN_DIR
|
||||||
|
|
||||||
pushd $KWIN_DIR
|
pushd $KWIN_DIR
|
||||||
docker-build/init.sh
|
if [ -z "${LOCAL_BUILD_SYSTEM+x}" ]; then
|
||||||
docker-build/run-build.sh $BUILD_ARCH
|
docker-build/init.sh
|
||||||
|
docker-build/run-build.sh "$BUILD_ARCH"
|
||||||
|
else
|
||||||
|
echo "LOCAL_BUILD_SYSTEM set; skipping Docker build"
|
||||||
|
bin/package_kwin_plugin
|
||||||
|
fi
|
||||||
popd
|
popd
|
||||||
cp $KWIN_DIR/out/breezyKWinPlugin-$BUILD_ARCH.tar.gz $PACKAGE_DIR/breezyKWinPlugin.tar.gz
|
cp $KWIN_DIR/out/breezyKWinPlugin-$BUILD_ARCH.tar.gz $PACKAGE_DIR/breezyKWinPlugin.tar.gz
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ EFFECT_ID="breezy_desktop"
|
||||||
EFFECT_DIR="$XDG_DATA_HOME/kwin/effects/$EFFECT_ID"
|
EFFECT_DIR="$XDG_DATA_HOME/kwin/effects/$EFFECT_ID"
|
||||||
PLUGIN_SO="$LIB_HOME/qt6/plugins/kwin/effects/plugins/${EFFECT_ID}.so"
|
PLUGIN_SO="$LIB_HOME/qt6/plugins/kwin/effects/plugins/${EFFECT_ID}.so"
|
||||||
CONFIG_SO="$LIB_HOME/qt6/plugins/kwin/effects/configs/${EFFECT_ID}_config.so"
|
CONFIG_SO="$LIB_HOME/qt6/plugins/kwin/effects/configs/${EFFECT_ID}_config.so"
|
||||||
|
BREEZY_LIBRARY_DIR="$LIB_HOME/breezy_kwin"
|
||||||
|
|
||||||
if [[ -d "$EFFECT_DIR" ]]; then
|
if [[ -d "$EFFECT_DIR" ]]; then
|
||||||
[ "$for_install" -eq 0 ] && echo "Removing $EFFECT_DIR and its contents"
|
[ "$for_install" -eq 0 ] && echo "Removing $EFFECT_DIR and its contents"
|
||||||
|
|
@ -47,6 +48,11 @@ if [[ -f "$CONFIG_SO" ]]; then
|
||||||
$SUDO rm -f "$CONFIG_SO"
|
$SUDO rm -f "$CONFIG_SO"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -d "$BREEZY_LIBRARY_DIR" ]]; then
|
||||||
|
[ "$for_install" -eq 0 ] && echo "Removing $BREEZY_LIBRARY_DIR and its contents"
|
||||||
|
$SUDO rm -rf "$BREEZY_LIBRARY_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -e "$XDG_BIN_HOME/xr_driver_uninstall" && "$for_install" -eq 0 ]]; then
|
if [[ -e "$XDG_BIN_HOME/xr_driver_uninstall" && "$for_install" -eq 0 ]]; then
|
||||||
echo "Uninstalling XRLinuxDriver"
|
echo "Uninstalling XRLinuxDriver"
|
||||||
sudo "$XDG_BIN_HOME/xr_driver_uninstall"
|
sudo "$XDG_BIN_HOME/xr_driver_uninstall"
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,15 @@
|
||||||
# exit when any command fails
|
# exit when any command fails
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
check_command() {
|
||||||
|
if ! command -v "$1" &>/dev/null; then
|
||||||
|
echo "Please install \"$1\" and make sure it's available in your \$PATH, then rerun the setup."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
check_command "cmake"
|
||||||
|
check_command "make"
|
||||||
|
|
||||||
ARCH=${ARCH:-$(uname -m)}
|
ARCH=${ARCH:-$(uname -m)}
|
||||||
if [ -n "${STEAMOS+x}" ]; then
|
if [ -n "${STEAMOS+x}" ]; then
|
||||||
ARCH="steamos"
|
ARCH="steamos"
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QProgressBar>
|
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QJsonValue>
|
#include <QJsonValue>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue