|
|
|
# Protobuf C# runtime
|
|
|
|
#
|
|
|
|
# See also code generation logic under /src/google/protobuf/compiler/csharp.
|
|
|
|
|
|
|
|
load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
|
|
|
|
load("//build_defs:internal_shell.bzl", "inline_sh_test")
|
|
|
|
load("//conformance:defs.bzl", "conformance_test")
|
|
|
|
load("//editions:defaults.bzl", "compile_edition_defaults", "embed_edition_defaults")
|
|
|
|
load("//upb/cmake:build_defs.bzl", "staleness_test")
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Tests
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
conformance_test(
|
|
|
|
name = "conformance_test",
|
|
|
|
failure_list = "//conformance:failure_list_csharp.txt",
|
|
|
|
maximum_edition = "2023",
|
|
|
|
testee = "//conformance:conformance_csharp",
|
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# CSharp Runtime
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
filegroup(
|
|
|
|
name = "srcs",
|
|
|
|
srcs = glob(
|
|
|
|
[
|
|
|
|
"keys/*",
|
|
|
|
"protos/*",
|
|
|
|
"src/**/*.cs*", # .cs and .csproj
|
|
|
|
],
|
|
|
|
exclude = [
|
|
|
|
# Exclude generated files.
|
|
|
|
"src/*/obj/**/*",
|
|
|
|
],
|
|
|
|
) + [
|
|
|
|
"src/Directory.Build.props",
|
|
|
|
"src/Google.Protobuf.Test/testprotos.pb",
|
|
|
|
"src/Google.Protobuf.sln",
|
|
|
|
],
|
|
|
|
visibility = [
|
|
|
|
"//conformance:__subpackages__",
|
|
|
|
"//csharp:__subpackages__",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
filegroup(
|
|
|
|
name = "wkt_cs_srcs",
|
|
|
|
srcs = [
|
|
|
|
"src/Google.Protobuf/Reflection/Descriptor.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/Any.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/Api.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/Duration.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/Empty.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/FieldMask.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/SourceContext.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/Struct.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/Timestamp.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/Type.pb.cs",
|
|
|
|
"src/Google.Protobuf/WellKnownTypes/Wrappers.pb.cs",
|
|
|
|
],
|
|
|
|
visibility = ["//src/google/protobuf/compiler/csharp:__pkg__"],
|
|
|
|
)
|
|
|
|
|
|
|
|
inline_sh_test(
|
|
|
|
name = "tests",
|
|
|
|
srcs = [
|
|
|
|
"src/Google.Protobuf.sln",
|
|
|
|
":srcs",
|
|
|
|
"//conformance:conformance_csharp_proto",
|
|
|
|
"//csharp/src/Google.Protobuf.Conformance:srcs",
|
|
|
|
],
|
|
|
|
cmd = """
|
|
|
|
cp $(rootpath //conformance:conformance_csharp_proto) `dirname $(location src/Google.Protobuf.sln)`/Google.Protobuf.Conformance/
|
|
|
|
pushd `dirname $(location src/Google.Protobuf.sln)`/..
|
|
|
|
dotnet restore src/Google.Protobuf.sln
|
|
|
|
dotnet build -c Release src/Google.Protobuf.sln
|
|
|
|
dotnet test -c Release -f net6.0 src/Google.Protobuf.Test/Google.Protobuf.Test.csproj
|
|
|
|
popd
|
|
|
|
""",
|
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Distribution files
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
pkg_files(
|
|
|
|
name = "dist_files",
|
|
|
|
srcs = [
|
|
|
|
".editorconfig",
|
|
|
|
".gitignore",
|
|
|
|
"BUILD.bazel",
|
|
|
|
"CHANGES.txt",
|
|
|
|
"Google.Protobuf.Tools.nuspec",
|
|
|
|
"Google.Protobuf.Tools.targets",
|
|
|
|
"NuGet.Config",
|
|
|
|
"README.md",
|
|
|
|
"build_packages.bat",
|
|
|
|
"build_release.sh",
|
|
|
|
"build_tools.sh",
|
|
|
|
"buildall.bat",
|
|
|
|
"buildall.sh",
|
|
|
|
"generate_protos.sh",
|
|
|
|
"install_dotnet_sdk.ps1",
|
|
|
|
":srcs",
|
|
|
|
"//csharp/src/Google.Protobuf.Conformance:dist_files",
|
|
|
|
],
|
|
|
|
strip_prefix = strip_prefix.from_root(""),
|
|
|
|
visibility = ["//pkg:__pkg__"],
|
|
|
|
)
|
|
|
|
|
|
|
|
sh_binary(
|
|
|
|
name = "release",
|
|
|
|
srcs = ["build_release.sh"],
|
|
|
|
args = ["$(location build_release.sh)"],
|
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Generated edition defaults (and staleness test)
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
compile_edition_defaults(
|
|
|
|
name = "csharp_edition_defaults",
|
|
|
|
srcs = [
|
|
|
|
"//:descriptor_proto",
|
|
|
|
],
|
|
|
|
maximum_edition = "2023",
|
|
|
|
minimum_edition = "PROTO2",
|
|
|
|
)
|
|
|
|
|
|
|
|
# TODO Make bazel tests use this output instead of the checked-in one
|
|
|
|
embed_edition_defaults(
|
|
|
|
name = "embedded_csharp_edition_defaults_generate",
|
|
|
|
defaults = "csharp_edition_defaults",
|
|
|
|
encoding = "base64",
|
|
|
|
output = "generated/src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs",
|
|
|
|
placeholder = "DEFAULTS_VALUE",
|
|
|
|
template = "src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs.template",
|
|
|
|
)
|
|
|
|
|
|
|
|
staleness_test(
|
|
|
|
name = "generated_csharp_defaults_staleness_test",
|
|
|
|
outs = ["src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs"],
|
|
|
|
generated_pattern = "generated/%s",
|
|
|
|
tags = ["manual"],
|
|
|
|
target_files = ["src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs"],
|
|
|
|
)
|