Spaces:
Running
Running
| # Inject our custom AppRun into Tauri's auto-generated AppImage staging dir. | |
| # | |
| # Wired into tauri.conf.json's `build.beforeBundleCommand`, this script runs | |
| # AFTER `cargo build` but BEFORE `appimagetool` packs the .AppDir. We overwrite | |
| # the default AppRun (which Tauri generates without WEBKIT_DISABLE_COMPOSITING_MODE | |
| # handling) with our conditional launcher. | |
| # | |
| # Issue: #56 (AppImage white-screen on Fedora 44 / Ubuntu 24.04) | |
| # Decision: .planning/decisions/apprun-strategy.md | |
| # | |
| # Idempotent + safe on non-Linux: if no AppDir staging exists (e.g. macOS | |
| # build, or `--bundles app` only), the script exits 0 cleanly. | |
| set -euo pipefail | |
| SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" | |
| REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" | |
| APPRUN_SRC="$REPO_ROOT/frontend/src-tauri/appimage/AppRun" | |
| if [ ! -f "$APPRUN_SRC" ]; then | |
| echo "inject-apprun: source not found: $APPRUN_SRC" >&2 | |
| exit 1 | |
| fi | |
| # Tauri's AppImage staging dir: frontend/src-tauri/target/{profile}/bundle/appimage/*.AppDir/ | |
| # The .AppDir name follows productName (e.g. "OmniVoice Studio.AppDir"). | |
| # Glob across both release and debug profiles in case the caller used --debug. | |
| STAGE_BASE_RELEASE="$REPO_ROOT/frontend/src-tauri/target/release/bundle/appimage" | |
| STAGE_BASE_DEBUG="$REPO_ROOT/frontend/src-tauri/target/debug/bundle/appimage" | |
| found=0 | |
| for stage_base in "$STAGE_BASE_RELEASE" "$STAGE_BASE_DEBUG"; do | |
| if [ ! -d "$stage_base" ]; then | |
| continue | |
| fi | |
| # Use a glob loop instead of `find` to avoid surprises with names containing spaces. | |
| shopt -s nullglob | |
| for appdir in "$stage_base"/*.AppDir; do | |
| if [ -d "$appdir" ]; then | |
| echo "inject-apprun: replacing AppRun in $appdir" | |
| cp -f "$APPRUN_SRC" "$appdir/AppRun" | |
| chmod 755 "$appdir/AppRun" | |
| found=1 | |
| fi | |
| done | |
| shopt -u nullglob | |
| done | |
| if [ $found -eq 0 ]; then | |
| # Not necessarily an error — beforeBundleCommand runs unconditionally even | |
| # when the active target list does not include appimage. Stay quiet so | |
| # macOS/Windows builds do not see noisy stderr. | |
| echo "inject-apprun: no AppDir staging found (skipping — not an AppImage build)" | |
| fi | |
| exit 0 | |