rules-proto-grpc / rules_proto_grpc

Bazel rules for building Protobuf and gRPC code and libraries from proto_library targets
https://rules-proto-grpc.com
Apache License 2.0
249 stars 156 forks source link

C# `base_namespace` option does not work #286

Open sguerout-stripe opened 10 months ago

sguerout-stripe commented 10 months ago

Issue Description

When using extra_protoc_args = ["--csharp_opt=base_namespace="],, the build fails.

I think that because the plugin expects the .cs file to be generated at the root of the staging folder, but base_namespace puts it into a folder hierarchy.

Log Output

BUILD.bazel:23:21: output '_rpg_premerge_csharp_proto/Test.cs' was not created
BUILD.bazel:23:21: Compiling protoc outputs for csharp_plugin plugin on target @//:csharp_proto failed: not all outputs were created or valid

rules_proto_grpc Version

4.4.0

Bazel Version

6.3.2

OS

Mac OS

Link to Demo Repo

No response

WORKSPACE Content

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

########################################
### rules_proto
########################################
http_archive(
    name = "rules_proto",
    sha256 = "dc3fb206a2cb3441b485eb1e423165b231235a1ea9b031b4433cf7bc1fa460dd",
    strip_prefix = "rules_proto-5.3.0-21.7",
    urls = [
        "https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz",
    ],
)
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
rules_proto_dependencies()
rules_proto_toolchains()

########################################
### rules_proto_grpc
########################################

http_archive(
    name = "rules_proto_grpc",
    sha256 = "928e4205f701b7798ce32f3d2171c1918b363e9a600390a25c876f075f1efc0a",
    strip_prefix = "rules_proto_grpc-4.4.0",
    urls = ["https://github.com/rules-proto-grpc/rules_proto_grpc/releases/download/4.4.0/rules_proto_grpc-4.4.0.tar.gz"],
)

load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_toolchains", "rules_proto_grpc_repos")
rules_proto_grpc_toolchains()
rules_proto_grpc_repos()

load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
rules_proto_dependencies()
rules_proto_toolchains()

########################################
### rules_proto_grpc/csharp
########################################
load("@rules_proto_grpc//csharp:repositories.bzl", rules_proto_grpc_csharp_repos = "csharp_repos")

rules_proto_grpc_csharp_repos()

load("@io_bazel_rules_dotnet//dotnet:deps.bzl", "dotnet_repositories")
load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps")

grpc_deps()

dotnet_repositories()

load(
    "@io_bazel_rules_dotnet//dotnet:defs.bzl",
    "dotnet_register_toolchains",
    "dotnet_repositories_nugets",
)

dotnet_register_toolchains()

dotnet_repositories_nugets()

load("@rules_proto_grpc//csharp/nuget:nuget.bzl", "nuget_rules_proto_grpc_packages")

nuget_rules_proto_grpc_packages()

BUILD Content

load(
    "@rules_proto//proto:defs.bzl", 
    "proto_library",
)

load(
    "@rules_proto_grpc//csharp:defs.bzl", 
    "csharp_proto_compile",
)

proto_library(
    name = "protos",
    visibility = ["//visibility:public"],
    srcs = [":test.proto"],
)

csharp_proto_compile(
    name = "csharp_proto",
    visibility = ["//visibility:public"],
    extra_protoc_args = ["--csharp_opt=base_namespace="],
    protos = [
        ":protos",
    ],
)

Proto Content

syntax = "proto3";

package com.saiimons;

message Test {
  optional string foo = 1;
  optional bool bar = 2;
}

service TestApi {
  rpc echo (Test) returns (Test);
}

Any Other Content

No response