Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
5.2 KiB
208 lines
5.2 KiB
# Protobuf Ruby runtime |
|
# |
|
# See also code generation logic under /src/google/protobuf/compiler/ruby. |
|
|
|
load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") |
|
load("@upb//cmake:build_defs.bzl", "staleness_test") |
|
load("//build_defs:internal_shell.bzl", "inline_sh_test") |
|
load("//conformance:defs.bzl", "conformance_test") |
|
load("//:protobuf.bzl", "internal_ruby_proto_library") |
|
load(":internal.bzl", "internal_ruby_extension") |
|
|
|
################################################################################ |
|
# Ruby Runtime |
|
################################################################################ |
|
|
|
config_setting( |
|
name = "java_ruby", |
|
values = {"define": "ruby_platform=java"}, |
|
) |
|
|
|
config_setting( |
|
name = "c_ruby", |
|
values = {"define": "ruby_platform=c"}, |
|
) |
|
|
|
filegroup( |
|
name = "srcs", |
|
srcs = glob([ |
|
"lib/**/*.rb", |
|
"src/**/*.proto", |
|
]) + [ |
|
"Gemfile", |
|
"Rakefile", |
|
"google-protobuf.gemspec", |
|
"pom.xml", |
|
], |
|
) |
|
|
|
internal_ruby_extension( |
|
name = "protobuf_c_mac", |
|
extension = "lib/google/protobuf_c.bundle", |
|
deps = glob(["ext/google/protobuf_c/*"]), |
|
target_compatible_with = select({ |
|
":java_ruby": ["@platforms//:incompatible"], |
|
"//conditions:default": ["@platforms//os:osx"], |
|
}), |
|
) |
|
|
|
internal_ruby_extension( |
|
name = "protobuf_c", |
|
extension = "lib/google/protobuf_c.so", |
|
deps = glob(["ext/google/protobuf_c/*"]), |
|
target_compatible_with = select({ |
|
":java_ruby": ["@platforms//:incompatible"], |
|
"@platforms//os:osx": ["@platforms//:incompatible"], |
|
"//conditions:default": [], |
|
}), |
|
) |
|
|
|
internal_ruby_extension( |
|
name = "protobuf_java", |
|
extension = "lib/google/protobuf_java.jar", |
|
deps = glob(["src/**/*.java"]), |
|
target_compatible_with = select({ |
|
":java_ruby": [], |
|
"//conditions:default": ["@platforms//:incompatible"], |
|
}), |
|
) |
|
|
|
filegroup( |
|
name = "protobuf", |
|
srcs = [ |
|
":srcs", |
|
"@utf8_range//:utf8_range_srcs", |
|
] + select({ |
|
":java_ruby": [":protobuf_java"], |
|
"@bazel_tools//src/conditions:darwin": [":protobuf_c_mac"], |
|
"//conditions:default": [":protobuf_c"], |
|
}), |
|
visibility = [ |
|
"//conformance:__subpackages__", |
|
"//ruby:__subpackages__", |
|
], |
|
) |
|
|
|
################################################################################ |
|
# Tests |
|
################################################################################ |
|
|
|
filegroup( |
|
name = "tests", |
|
srcs = glob(["tests/*.rb"]), |
|
) |
|
|
|
filegroup( |
|
name = "test_protos", |
|
srcs = glob(["tests/*.proto"]), |
|
) |
|
|
|
internal_ruby_proto_library( |
|
name = "test_ruby_protos", |
|
srcs = [":test_protos"], |
|
proto_deps = ["//:well_known_protos"], |
|
includes = [".", "src", "ruby/tests"], |
|
) |
|
|
|
inline_sh_test( |
|
name = "test", |
|
srcs = [ |
|
"Rakefile", |
|
], |
|
deps = [ |
|
":protobuf", |
|
":test_ruby_protos", |
|
":tests", |
|
"//:well_known_ruby_protos", |
|
], |
|
cmd = """ |
|
pushd `dirname $(location Rakefile)` |
|
RUBYLIB=../src:tests:. BAZEL=true rake test |
|
popd |
|
""", |
|
) |
|
|
|
inline_sh_test( |
|
name = "gc_test", |
|
srcs = [ |
|
"Rakefile", |
|
], |
|
deps = [ |
|
":protobuf", |
|
":test_ruby_protos", |
|
":tests", |
|
"//:well_known_ruby_protos", |
|
], |
|
cmd = """ |
|
pushd `dirname $(location Rakefile)` |
|
RUBYLIB=../src:tests:. BAZEL=true rake gc_test |
|
popd |
|
""", |
|
) |
|
|
|
conformance_test( |
|
name = "conformance_test", |
|
failure_list = "//conformance:failure_list_ruby.txt", |
|
testee = "//conformance:conformance_ruby", |
|
text_format_failure_list = "//conformance:text_format_failure_list_ruby.txt", |
|
target_compatible_with = select({ |
|
":java_ruby": ["@platforms//:incompatible"], |
|
"//conditions:default": [], |
|
}), |
|
) |
|
|
|
conformance_test( |
|
name = "conformance_test_jruby", |
|
failure_list = "//conformance:failure_list_jruby.txt", |
|
testee = "//conformance:conformance_ruby", |
|
text_format_failure_list = "//conformance:text_format_failure_list_jruby.txt", |
|
target_compatible_with = select({ |
|
":java_ruby": [], |
|
"//conditions:default": ["@platforms//:incompatible"], |
|
}), |
|
) |
|
|
|
genrule( |
|
name = "copy_ruby_amalgamation_h", |
|
srcs = ["@upb//:ruby-upb.h"], |
|
outs = ["generated-in/ext/google/protobuf_c/ruby-upb.h"], |
|
cmd = "cp $< $@", |
|
) |
|
|
|
genrule( |
|
name = "copy_ruby_amalgamation_c", |
|
srcs = ["@upb//:ruby-upb.c"], |
|
outs = ["generated-in/ext/google/protobuf_c/ruby-upb.c"], |
|
cmd = "cp $< $@", |
|
) |
|
|
|
staleness_test( |
|
name = "test_amalgamation_staleness", |
|
outs = [ |
|
"ext/google/protobuf_c/ruby-upb.h", |
|
"ext/google/protobuf_c/ruby-upb.c", |
|
], |
|
generated_pattern = "generated-in/%s", |
|
) |
|
|
|
################################################################################ |
|
# Distribution files |
|
################################################################################ |
|
|
|
pkg_files( |
|
name = "dist_files", |
|
srcs = glob([ |
|
"tests/*.proto", |
|
"tests/*.rb", |
|
]) + [ |
|
":srcs", |
|
".gitignore", |
|
"BUILD.bazel", |
|
"internal.bzl", |
|
"Gemfile", |
|
"README.md", |
|
"travis-test.sh", |
|
], |
|
strip_prefix = strip_prefix.from_root(""), |
|
visibility = ["//pkg:__pkg__"], |
|
)
|
|
|