mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 22:35:42 +00:00
* Replace dotnet proto build with Bazel-hermetic C# proto generation Use rules_proto_grpc_csharp to generate .cs source files via Bazel instead of requiring a locally-installed dotnet SDK to build protos.dll. This eliminates the dotnet dependency for CI runners and makes the proto build fully hermetic. - Add bazel_dep for rules_proto_grpc_csharp 5.8.0 - Bump grpc 1.74.0 -> 1.74.1 (required by rules_proto_grpc_csharp) - Add csharp_proto_compile/csharp_grpc_compile targets across 8 proto BUILD.bazel files (81 .cs files from 78 protos) - Rewrite build_protos.sh to use bazel build + copy instead of dotnet - Output goes to Assets/GeneratedProtos/ with package-based subdirs to avoid filename collisions (e.g. ActionResultView.cs in both shardok/api/ and eagle/views/) - Add Assets/GeneratedProtos/ to .gitignore Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Remove stale Eagle0Protos DLL references The old build_protos.sh generated protos.dll via dotnet; the new one generates .cs source files instead. Remove the tracked .meta and .deps.json files that reference the no-longer-generated DLL, and gitignore the directory to prevent re-adding. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
59 lines
2.0 KiB
Bash
Executable File
59 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euxo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
UNITY_ROOT="$REPO_ROOT/src/main/csharp/net/eagle0/clients/unity/eagle0"
|
|
OUTPUT_DIR="$UNITY_ROOT/Assets/GeneratedProtos"
|
|
|
|
# All C# protobuf generation targets
|
|
TARGETS=(
|
|
"//src/main/protobuf/net/eagle0/common:common_csharp_proto_srcs"
|
|
"//src/main/protobuf/net/eagle0/shardok/storage:storage_csharp_proto_srcs"
|
|
"//src/main/protobuf/net/eagle0/shardok/common:common_csharp_proto_srcs"
|
|
"//src/main/protobuf/net/eagle0/shardok/api:api_csharp_proto_srcs"
|
|
"//src/main/protobuf/net/eagle0/eagle/common:common_csharp_proto_srcs"
|
|
"//src/main/protobuf/net/eagle0/eagle/views:views_csharp_proto_srcs"
|
|
"//src/main/protobuf/net/eagle0/eagle/api:api_csharp_proto_srcs"
|
|
"//src/main/protobuf/net/eagle0/eagle/api:api_csharp_grpc_srcs"
|
|
"//src/main/protobuf/net/eagle0/eagle/api/command/util:util_csharp_proto_srcs"
|
|
)
|
|
|
|
# Subdirectory for each target (avoids filename collisions across packages)
|
|
SUBDIRS=(
|
|
"net/eagle0/common"
|
|
"net/eagle0/shardok/storage"
|
|
"net/eagle0/shardok/common"
|
|
"net/eagle0/shardok/api"
|
|
"net/eagle0/eagle/common"
|
|
"net/eagle0/eagle/views"
|
|
"net/eagle0/eagle/api"
|
|
"net/eagle0/eagle/api"
|
|
"net/eagle0/eagle/api/command/util"
|
|
)
|
|
|
|
/bin/echo "Building C# protobuf sources..."
|
|
bazel build "${TARGETS[@]}"
|
|
|
|
/bin/echo "Copying generated .cs files to $OUTPUT_DIR..."
|
|
rm -rf "$OUTPUT_DIR"
|
|
|
|
for i in "${!TARGETS[@]}"; do
|
|
target="${TARGETS[$i]}"
|
|
subdir="${SUBDIRS[$i]}"
|
|
|
|
# Convert target label to bazel-bin path
|
|
# //src/main/protobuf/net/eagle0/common:common_csharp_proto_srcs
|
|
# -> bazel-bin/src/main/protobuf/net/eagle0/common/common_csharp_proto_srcs
|
|
target_path="${target#//}"
|
|
pkg="${target_path%%:*}"
|
|
name="${target_path##*:}"
|
|
bin_dir="$REPO_ROOT/bazel-bin/$pkg/$name"
|
|
|
|
dest_dir="$OUTPUT_DIR/$subdir"
|
|
mkdir -p "$dest_dir"
|
|
find "$bin_dir" -name "*.cs" -exec cp {} "$dest_dir/" \;
|
|
done
|
|
|
|
/bin/echo "Done. Generated C# proto sources in $OUTPUT_DIR"
|