diff --git a/bazel/generate_cc.bzl b/bazel/generate_cc.bzl index 8f0f94f563f7277a98978e3a2d8f7e3a4abc6da6..d05509fc153280f2283c3d0437922b009e25188c 100644 --- a/bazel/generate_cc.bzl +++ b/bazel/generate_cc.bzl @@ -9,18 +9,18 @@ def generate_cc_impl(ctx): protos = [f for src in ctx.attr.srcs for f in src.proto.direct_sources] includes = [f for src in ctx.attr.srcs for f in src.proto.transitive_imports] outs = [] + # label_len is length of the path from WORKSPACE root to the location of this build file + label_len = len(ctx.label.package) + 1 if ctx.executable.plugin: - outs += [proto.basename[:-len(".proto")] + ".grpc.pb.h" for proto in protos] - outs += [proto.basename[:-len(".proto")] + ".grpc.pb.cc" for proto in protos] + outs += [proto.path[label_len:-len(".proto")] + ".grpc.pb.h" for proto in protos] + outs += [proto.path[label_len:-len(".proto")] + ".grpc.pb.cc" for proto in protos] if ctx.attr.generate_mock: - outs += [proto.basename[:-len(".proto")] + "_mock.grpc.pb.h" for proto in protos] + outs += [proto.path[label_len:-len(".proto")] + "_mock.grpc.pb.h" for proto in protos] else: - outs += [proto.basename[:-len(".proto")] + ".pb.h" for proto in protos] - outs += [proto.basename[:-len(".proto")] + ".pb.cc" for proto in protos] + outs += [proto.path[label_len:-len(".proto")] + ".pb.h" for proto in protos] + outs += [proto.path[label_len:-len(".proto")] + ".pb.cc" for proto in protos] out_files = [ctx.new_file(out) for out in outs] - # The following should be replaced with ctx.configuration.buildout - # whenever this is added to Skylark. - dir_out = out_files[0].dirname[:-len(protos[0].dirname)] + dir_out = str(ctx.genfiles_dir.path) arguments = [] if ctx.executable.plugin: diff --git a/examples/protos/BUILD b/examples/BUILD similarity index 79% rename from examples/protos/BUILD rename to examples/BUILD index 2ffdf64f9af540d48fbebd64581e11226af18421..382713e5e48e56a6ffccbffac51c1cac7104a259 100644 --- a/examples/protos/BUILD +++ b/examples/BUILD @@ -33,20 +33,34 @@ load("//bazel:grpc_build_system.bzl", "grpc_proto_library") grpc_proto_library( name = "auth_sample", - srcs = ["auth_sample.proto"], + srcs = ["protos/auth_sample.proto"], ) grpc_proto_library( name = "hellostreamingworld", - srcs = ["hellostreamingworld.proto"], + srcs = ["protos/hellostreamingworld.proto"], ) grpc_proto_library( name = "helloworld", - srcs = ["helloworld.proto"], + srcs = ["protos/helloworld.proto"], ) grpc_proto_library( name = "route_guide", - srcs = ["route_guide.proto"], + srcs = ["protos/route_guide.proto"], +) + +cc_binary( + name = "greeter_client", + srcs = ["cpp/helloworld/greeter_client.cc"], + deps = ["helloworld"], + defines = ["BAZEL_BUILD"], +) + +cc_binary( + name = "greeter_server", + srcs = ["cpp/helloworld/greeter_server.cc"], + deps = ["helloworld"], + defines = ["BAZEL_BUILD"], ) diff --git a/examples/cpp/helloworld/BUILD b/examples/cpp/helloworld/BUILD deleted file mode 100644 index b9c3f5dfbed91b87a6a2911ae689980e589efc2d..0000000000000000000000000000000000000000 --- a/examples/cpp/helloworld/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright 2017, Google Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -cc_binary( - name = "greeter_client", - srcs = ["greeter_client.cc"], - deps = ["//examples/protos:helloworld"], - defines = ["BAZEL_BUILD"], -) - -cc_binary( - name = "greeter_server", - srcs = ["greeter_server.cc"], - deps = ["//examples/protos:helloworld"], - defines = ["BAZEL_BUILD"], -) diff --git a/tools/jenkins/run_bazel_basic_in_docker.sh b/tools/jenkins/run_bazel_basic_in_docker.sh index b1d498a07d35ffa3623be7d15a95a50ff388bb20..5013f80b1df95f752eae759eb6c3be2ce48a648d 100755 --- a/tools/jenkins/run_bazel_basic_in_docker.sh +++ b/tools/jenkins/run_bazel_basic_in_docker.sh @@ -39,4 +39,4 @@ git clone /var/local/jenkins/grpc /var/local/git/grpc && git submodule update --init --reference /var/local/jenkins/grpc/${name} \ ${name}') cd /var/local/git/grpc -bazel build --spawn_strategy=standalone --genrule_strategy=standalone :all test/... examples/cpp/... +bazel build --spawn_strategy=standalone --genrule_strategy=standalone :all test/... examples/...