mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 22:55:41 +00:00
* Add native Sparkle plugin to enable Mac auto-updates The Sparkle framework was being injected into the app bundle, but nothing was initializing it. This adds: - Native Objective-C plugin (SparklePlugin.m) that initializes SPUStandardUpdaterController at runtime - C# wrapper (SparkleUpdater.cs) for Unity to call the native plugin - SparkleInitializer.cs uses RuntimeInitializeOnLoadMethod to automatically initialize Sparkle at app startup - Build script to compile the plugin as a universal binary The plugin is weak-linked against Sparkle.framework, which is injected separately by inject_sparkle.sh during the build process. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Convert Sparkle plugin build from clang to Bazel - Add Sparkle framework as http_archive dependency in MODULE.bazel - Add BUILD.sparkle to import the framework - Add BUILD.bazel for SparklePlugin using macos_bundle rule - Update build_sparkle_plugin.sh to use Bazel instead of direct clang - Register Apple CC toolchain extension 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Fix symbol exports for SparklePlugin native library The C functions need to be exported with visibility("default") and explicit linker flags for Unity P/Invoke to find them. Without this, the bundle binary had no exported symbols. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Re-enable Sparkle auto-update integration for Mac builds Restores Sparkle integration that was temporarily removed in #5317: - Restore inject_sparkle.sh script - Add Sparkle injection step to mac_build.yml - Re-enable Sparkle signing and appcast updates in deploy step Combined with native SparklePlugin that initializes Sparkle at runtime. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Build SparklePlugin.bundle before Unity build The SparklePlugin.bundle.meta file tells Unity to include the plugin, but the actual bundle needs to be built by Bazel first. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Convert SparklePlugin Info.plist to XML format Unity's build system requires Info.plist files in XML format, but Bazel outputs them in binary plist format. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
31 lines
1.0 KiB
Bash
Executable File
31 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Build the SparklePlugin native library for Unity using Bazel
|
|
#
|
|
# 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 ==="
|
|
|
|
bazel build --config=mactools //src/main/objc/net/eagle0/sparkle:SparklePlugin
|
|
|
|
# Get the zip path from bazel
|
|
ZIP_PATH=$(bazel cquery --config=mactools --output=files //src/main/objc/net/eagle0/sparkle: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/"
|