mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 22:35:42 +00:00
* Move SparklePlugin to separate Bazel workspace to resolve rules_swift conflict The problem: grpc 1.76.0.bcr.1 requires rules_swift 3.x, but rules_apple 4.x requires rules_swift 2.x. These have different compatibility levels, causing bzlmod resolution to fail when both are in the same workspace. The solution: Move SparklePlugin (the only thing using rules_apple) to a separate Bazel workspace at `sparkle_workspace/`. This workspace has its own MODULE.bazel with only rules_apple and Sparkle dependencies, completely isolated from the grpc/flatbuffers dependency tree. Changes: - Create sparkle_workspace/ with isolated MODULE.bazel - Move SparklePlugin source files to sparkle_workspace/ - Update build_sparkle_plugin.sh to build from subworkspace - Remove rules_apple from main MODULE.bazel - Add single_version_override for rules_swift 3.1.2 (for grpc/flatbuffers) All 315 tests pass. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Add WORKSPACE.bazel to sparkle_workspace to prevent parent workspace detection Without this file, Bazel may walk up the directory tree and find the parent workspace's MODULE.bazel, causing dependency conflicts. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
36 lines
1.2 KiB
Bash
Executable File
36 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Build the SparklePlugin native library for Unity using Bazel
|
|
#
|
|
# The SparklePlugin is built in a separate Bazel workspace (sparkle_workspace/)
|
|
# to avoid rules_swift version conflicts between grpc and rules_apple.
|
|
#
|
|
# Usage: build_sparkle_plugin.sh [output_dir]
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
OUTPUT_DIR="${1:-$PROJECT_ROOT/src/main/csharp/net/eagle0/clients/unity/eagle0/Assets/Plugins/macOS}"
|
|
|
|
echo "=== Building SparklePlugin with Bazel (from sparkle_workspace) ==="
|
|
|
|
# Build in the separate sparkle_workspace to avoid dependency conflicts
|
|
cd "$PROJECT_ROOT/sparkle_workspace"
|
|
bazel build //:SparklePlugin
|
|
|
|
# Get the zip path from bazel
|
|
ZIP_PATH=$(bazel cquery --output=files //:SparklePlugin 2>/dev/null)
|
|
|
|
echo "=== Extracting SparklePlugin.bundle ==="
|
|
mkdir -p "$OUTPUT_DIR"
|
|
rm -rf "$OUTPUT_DIR/SparklePlugin.bundle"
|
|
unzip -o "$ZIP_PATH" -d "$OUTPUT_DIR/"
|
|
|
|
# Convert Info.plist from binary to XML format (Unity requires XML)
|
|
/usr/bin/plutil -convert xml1 "$OUTPUT_DIR/SparklePlugin.bundle/Contents/Info.plist"
|
|
|
|
echo "=== SparklePlugin built successfully ==="
|
|
ls -la "$OUTPUT_DIR/SparklePlugin.bundle/"
|