#!/usr/bin/env bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" BINARY="$PROJECT_ROOT/target/debug/gateway" cargo build --package openshell-vm --bin gateway --quiet # On macOS, codesign with the hypervisor entitlement so libkrun can use # Apple's Hypervisor.framework. Re-sign after every build. ENTITLEMENTS="$PROJECT_ROOT/crates/openshell-vm/entitlements.plist" if [[ "$(uname)" == "Darwin" ]] && [[ -f "$ENTITLEMENTS" ]]; then codesign --entitlements "$ENTITLEMENTS" --force -s - "$BINARY" 2>/dev/null fi # Ensure libkrunfw is discoverable by libkrun's dlopen on macOS. # dyld only reads DYLD_FALLBACK_LIBRARY_PATH at process startup, so we # set it here before exec. if [[ "$(uname)" == "Darwin" ]]; then HOMEBREW_LIB="$(brew --prefix 2>/dev/null || echo /opt/homebrew)/lib" export DYLD_FALLBACK_LIBRARY_PATH="${HOMEBREW_LIB}${DYLD_FALLBACK_LIBRARY_PATH:+:$DYLD_FALLBACK_LIBRARY_PATH}" fi exec "$BINARY" "$@"