load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix") load("//build_defs:internal_shell.bzl", "inline_sh_binary") inline_sh_binary( name = "build_conformance_test", srcs = ["Google.Protobuf.Conformance.csproj"], cmd = "dotnet build -c Release $(SRCS)", visibility = ["//visibility:private"], ) CONFORMANCE_DEPS = [ "Google.Protobuf.dll", "Google.Protobuf.Conformance.deps.json", "Google.Protobuf.Conformance.pdb", "Google.Protobuf.Conformance.runtimeconfig.json", "Google.Protobuf.Test.dll", "Google.Protobuf.Test.TestProtos.dll", "Microsoft.TestPlatform.CommunicationUtilities.dll", "Microsoft.TestPlatform.CoreUtilities.dll", "Microsoft.TestPlatform.CrossPlatEngine.dll", "Microsoft.TestPlatform.PlatformAbstractions.dll", "Microsoft.TestPlatform.Utilities.dll", "Microsoft.VisualStudio.CodeCoverage.Shim.dll", "Microsoft.VisualStudio.TestPlatform.Common.dll", "Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", "NUnit3.TestAdapter.dll", "Newtonsoft.Json.dll", "NuGet.Frameworks.dll", "nunit.engine.api.dll", "nunit.engine.core.dll", "nunit.engine.dll", "nunit.framework.dll", "testcentric.engine.metadata.dll", "testhost.dll", ] filegroup( name = "srcs", srcs = [ "Google.Protobuf.Conformance.csproj", "Program.cs", ], visibility = [ "//csharp:__subpackages__", ], ) genrule( name = "package_conformance_test", srcs = [ "Program.cs", "Google.Protobuf.Conformance.csproj", "//conformance:conformance_csharp_proto", "//csharp:srcs", ], outs = CONFORMANCE_DEPS + ["Google.Protobuf.Conformance.dll"], cmd = """ SRCDIR=$$(dirname $(location :Program.cs)) cp $(location //conformance:conformance_csharp_proto) $$SRCDIR DOTNET_CLI_HOME=/tmp ./$(location :build_conformance_test) cp -r $$SRCDIR/bin/Release/net6.0/* $(RULEDIR) """, tools = [":build_conformance_test"], visibility = ["//visibility:private"], ) filegroup( name = "conformance_dll", srcs = ["Google.Protobuf.Conformance.dll"], data = [":package_conformance_test"], visibility = ["//conformance:__subpackages__"], ) filegroup( name = "conformance_runfiles", srcs = CONFORMANCE_DEPS, data = [":package_conformance_test"], visibility = ["//conformance:__subpackages__"], ) ################################################################################ # Distribution files ################################################################################ pkg_files( name = "dist_files", srcs = [ "BUILD.bazel", "Google.Protobuf.Conformance.csproj", "Program.cs", ], strip_prefix = strip_prefix.from_root(""), visibility = ["//csharp:__pkg__"], )