Files
BackOneUI/scripts/linux-build.sh
T
2026-07-06 08:28:58 +07:00

41 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Build BackOneUI on Ubuntu/Debian without system-wide -dev packages.
# Preferred: sudo apt install libgtk-3-dev libayatana-appindicator3-dev meson ninja-build
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
DEPROOT="${BACKONE_UI_DEPROOT:-$HOME/backone-ui-build-deps}"
VENV="${ROOT}/.venv"
if ! command -v cargo >/dev/null 2>&1; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
fi
# shellcheck disable=SC1091
source "$HOME/.cargo/env"
if [[ ! -x "$VENV/bin/meson" ]]; then
python3 -m venv "$VENV"
"$VENV/bin/pip" install meson ninja
fi
export PATH="$VENV/bin:$PATH"
export PKG_CONFIG_PATH="${DEPROOT}/usr/lib/x86_64-linux-gnu/pkgconfig:${PKG_CONFIG_PATH:-}"
export PKG_CONFIG_SYSROOT_DIR="$DEPROOT"
export LD_LIBRARY_PATH="${DEPROOT}/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH:-}"
cd "$ROOT/tray"
ln -sf ayatana-appindicator3-0.1.pc "${DEPROOT}/usr/lib/x86_64-linux-gnu/pkgconfig/appindicator3-0.1.pc" 2>/dev/null || true
make zt_lib
cd "$ROOT"
if [[ ! -f libui-ng/build/meson-out/libui.a ]]; then
rm -rf libui-ng/build
cd libui-ng
CFLAGS="-O" meson setup build --buildtype=release --default-library=static --backend=ninja
ninja -C build meson-out/libui.a
cd "$ROOT"
fi
cargo build "$@"
echo "Built: $ROOT/target/debug/backone_desktop_ui"