From 02e26c5004ae0ddab6dcc65879a89df773c317bc Mon Sep 17 00:00:00 2001 From: Josh Haberman Date: Tue, 2 Apr 2019 22:33:36 -0700 Subject: Replaced upb_proto_library() with a truly aspect-based rule. --- WORKSPACE | 1 - 1 file changed, 1 deletion(-) (limited to 'WORKSPACE') diff --git a/WORKSPACE b/WORKSPACE index 8d20852..58922bb 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -37,7 +37,6 @@ http_archive( urls = ["http://www.colm.net/files/ragel/ragel-6.10.tar.gz"], ) -# Used by protobuf. http_archive( name = "bazel_skylib", sha256 = "bbccf674aa441c266df9894182d80de104cabd19be98be002f6d478aaa31574d", -- cgit v1.2.3 From 239d4a90db56b4c4208cd0317a6daa43c48b4ded Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Tue, 23 Apr 2019 15:07:50 -0700 Subject: Fixed upb_proto_library() for macOS. --- WORKSPACE | 2 ++ build_defs.bzl | 65 +++++++++------------------------------------------------- 2 files changed, 12 insertions(+), 55 deletions(-) (limited to 'WORKSPACE') diff --git a/WORKSPACE b/WORKSPACE index 58922bb..d49b894 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -20,6 +20,7 @@ git_repository( commit = "25feb59620627b673df76813dfd66e3f565765e7", #sha256 = "d7a221b3d4fb4f05b7473795ccea9e05dab3b8721f6286a95fffbffc2d926f8b", remote = "https://github.com/haberman/protobuf.git", + shallow_since = "1541281400 -0700" #tag = "conformance-build-tag", ) @@ -27,6 +28,7 @@ git_repository( name = "absl", commit = "070f6e47b33a2909d039e620c873204f78809492", remote = "https://github.com/abseil/abseil-cpp.git", + shallow_since = "1541627663 -0500" ) http_archive( diff --git a/build_defs.bzl b/build_defs.bzl index 56e07c0..667db8a 100644 --- a/build_defs.bzl +++ b/build_defs.bzl @@ -337,67 +337,21 @@ def cc_library_func(ctx, hdrs, srcs, deps): hdrs = hdrs, compilation_contexts = compilation_contexts, ) - output_file = ctx.new_file(ctx.bin_dir, "lib" + ctx.rule.attr.name + ".a") - library_to_link = cc_common.create_library_to_link( - actions = ctx.actions, - feature_configuration = feature_configuration, - cc_toolchain = toolchain, - static_library = output_file, - ) - archiver_path = cc_common.get_tool_for_action( - feature_configuration = feature_configuration, - action_name = CPP_LINK_STATIC_LIBRARY_ACTION_NAME, - ) - archiver_variables = cc_common.create_link_variables( - feature_configuration = feature_configuration, - cc_toolchain = toolchain, - output_file = output_file.path, - is_using_linker = False, - ) - command_line = cc_common.get_memory_inefficient_command_line( - feature_configuration = feature_configuration, - action_name = CPP_LINK_STATIC_LIBRARY_ACTION_NAME, - variables = archiver_variables, - ) + # create link action + linking_contexts = [provider.linking_context for provider in cc_infos] - # Non-PIC objects only get emitted in opt builds. - use_pic = True - if ctx.var.get("COMPILATION_MODE") == "opt": - use_pic = False - - object_files = compilation_info.cc_compilation_outputs.object_files(use_pic = use_pic) - args = ctx.actions.args() - args.add_all(command_line) - args.add_all(object_files) - - env = cc_common.get_environment_variables( + linking_info = cc_common.link( + ctx = ctx, feature_configuration = feature_configuration, - action_name = CPP_LINK_STATIC_LIBRARY_ACTION_NAME, - variables = archiver_variables, + cc_toolchain = toolchain, + cc_compilation_outputs = compilation_info.cc_compilation_outputs, + linking_contexts = linking_contexts, ) - ctx.actions.run( - executable = archiver_path, - arguments = [args], - env = env, - inputs = depset( - direct = object_files, - transitive = [ - # TODO: Use CcToolchainInfo getters when available - # See https://github.com/bazelbuild/bazel/issues/7427. - ctx.attr._cc_toolchain.files, - ], - ), - outputs = [output_file], - ) - linking_context = cc_common.create_linking_context( - libraries_to_link = [library_to_link], - ) - info = CcInfo( + return CcInfo( compilation_context = compilation_info.compilation_context, - linking_context = linking_context, + linking_context = linking_info.linking_context, ) - return cc_common.merge_cc_infos(cc_infos = [info] + cc_infos) def _upb_proto_library_aspect_impl(target, ctx): proto_sources = target[ProtoInfo].direct_sources @@ -449,6 +403,7 @@ _upb_proto_library_aspect = aspect( }, implementation = _upb_proto_library_aspect_impl, attr_aspects = ["deps"], + fragments = ["cpp"], ) def _upb_proto_library_impl(ctx): -- cgit v1.2.3 From 20d849a5e03945a5c764f3ffa98a6525378274e9 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Tue, 7 May 2019 11:30:28 -0700 Subject: Fixes for Bazel 0.25. Disabled the conformance tests for now because I didn't push the necessary changes to the protobuf repo yet. --- BUILD | 78 +++++++++++++++++++++++++++++----------------------------- WORKSPACE | 15 +++++++---- build_defs.bzl | 16 ++++++------ 3 files changed, 58 insertions(+), 51 deletions(-) (limited to 'WORKSPACE') diff --git a/BUILD b/BUILD index 5b1dd33..629287c 100644 --- a/BUILD +++ b/BUILD @@ -350,45 +350,45 @@ cc_test( copts = CPPOPTS, ) -upb_proto_library( - name = "conformance_proto_upb", - deps = ["@com_google_protobuf//:conformance_proto"], -) - -upb_proto_library( - name = "test_messages_proto3_proto_upb", - deps = ["@com_google_protobuf//:test_messages_proto3_proto"], -) - -cc_binary( - name = "conformance_upb", - srcs = [ - "tests/conformance_upb.c", - ], - copts = COPTS + ["-Ibazel-out/k8-fastbuild/bin"], - deps = [ - ":conformance_proto_upb", - ":test_messages_proto3_proto_upb", - ":upb", - ], -) - -make_shell_script( - name = "gen_test_conformance_upb", - out = "test_conformance_upb.sh", - contents = "$(rlocation com_google_protobuf/conformance_test_runner) $(rlocation upb/conformance_upb)", -) - -sh_test( - name = "test_conformance_upb", - srcs = ["test_conformance_upb.sh"], - data = [ - "tests/conformance_upb_failures.txt", - ":conformance_upb", - "@bazel_tools//tools/bash/runfiles", - "@com_google_protobuf//:conformance_test_runner", - ], -) +#upb_proto_library( +# name = "conformance_proto_upb", +# deps = ["@com_google_protobuf//:conformance_proto"], +#) + +#upb_proto_library( +# name = "test_messages_proto3_proto_upb", +# deps = ["@com_google_protobuf//:test_messages_proto3_proto"], +#) + +#cc_binary( +# name = "conformance_upb", +# srcs = [ +# "tests/conformance_upb.c", +# ], +# copts = COPTS + ["-Ibazel-out/k8-fastbuild/bin"], +# deps = [ +# ":conformance_proto_upb", +# ":test_messages_proto3_proto_upb", +# ":upb", +# ], +#) +# +#make_shell_script( +# name = "gen_test_conformance_upb", +# out = "test_conformance_upb.sh", +# contents = "$(rlocation com_google_protobuf/conformance_test_runner) $(rlocation upb/conformance_upb)", +#) +# +#sh_test( +# name = "test_conformance_upb", +# srcs = ["test_conformance_upb.sh"], +# data = [ +# "tests/conformance_upb_failures.txt", +# ":conformance_upb", +# "@bazel_tools//tools/bash/runfiles", +# "@com_google_protobuf//:conformance_test_runner", +# ], +#) # Amalgamation ################################################################# diff --git a/WORKSPACE b/WORKSPACE index d49b894..ff89757 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -17,11 +17,16 @@ http_archive( git_repository( name = "com_google_protobuf", - commit = "25feb59620627b673df76813dfd66e3f565765e7", - #sha256 = "d7a221b3d4fb4f05b7473795ccea9e05dab3b8721f6286a95fffbffc2d926f8b", - remote = "https://github.com/haberman/protobuf.git", - shallow_since = "1541281400 -0700" - #tag = "conformance-build-tag", + commit = "ec1a70913e5793a7d0a7b5fbf7e0e4f75409dd41", + remote = "https://github.com/protocolbuffers/protobuf.git", +) + +http_archive( + name = "zlib", + build_file = "@com_google_protobuf//:third_party/zlib.BUILD", + sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", + strip_prefix = "zlib-1.2.11", + urls = ["https://zlib.net/zlib-1.2.11.tar.gz"], ) git_repository( diff --git a/build_defs.bzl b/build_defs.bzl index 9deb336..f24cff5 100644 --- a/build_defs.bzl +++ b/build_defs.bzl @@ -1,3 +1,7 @@ + +load("@bazel_skylib//lib:paths.bzl", "paths") +load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") + _shell_find_runfiles = """ # --- begin runfiles.bash initialization --- # Copy-pasted from Bazel's Bash runfiles library (tools/bash/runfiles/runfiles.bash). @@ -23,10 +27,6 @@ _shell_find_runfiles = """ # --- end runfiles.bash initialization --- """ -load("@bazel_skylib//lib:paths.bzl", "paths") -load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") -load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "CPP_LINK_STATIC_LIBRARY_ACTION_NAME") - def _librule(name): return name + "_lib" @@ -286,15 +286,17 @@ def cc_library_func(ctx, hdrs, srcs, deps): unsupported_features = ctx.disabled_features, ) compilation_info = cc_common.compile( - ctx = ctx, + actions = ctx.actions, feature_configuration = feature_configuration, cc_toolchain = toolchain, + name = "upb_lib", srcs = srcs, - hdrs = hdrs, + public_hdrs = hdrs, compilation_contexts = compilation_contexts, ) linking_info = cc_common.link( - ctx = ctx, + actions = ctx.actions, + name = "upb_lib", feature_configuration = feature_configuration, cc_toolchain = toolchain, cc_compilation_outputs = compilation_info.cc_compilation_outputs, -- cgit v1.2.3 From 6c1b78f09553ca14b20fcab070b1f730260838ed Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Tue, 7 May 2019 14:38:08 -0700 Subject: Update Skylib and update to newer Sandwich API. --- WORKSPACE | 7 +++---- build_defs.bzl | 10 +++++----- 2 files changed, 8 insertions(+), 9 deletions(-) (limited to 'WORKSPACE') diff --git a/WORKSPACE b/WORKSPACE index ff89757..254d113 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -45,8 +45,7 @@ http_archive( ) http_archive( - name = "bazel_skylib", - sha256 = "bbccf674aa441c266df9894182d80de104cabd19be98be002f6d478aaa31574d", - strip_prefix = "bazel-skylib-2169ae1c374aab4a09aa90e65efe1a3aad4e279b", - urls = ["https://github.com/bazelbuild/bazel-skylib/archive/2169ae1c374aab4a09aa90e65efe1a3aad4e279b.tar.gz"], + name = "bazel_skylib", + strip_prefix = "bazel-skylib-master", + urls = ["https://github.com/bazelbuild/bazel-skylib/archive/master.tar.gz"], ) diff --git a/build_defs.bzl b/build_defs.bzl index f24cff5..3e69680 100644 --- a/build_defs.bzl +++ b/build_defs.bzl @@ -285,7 +285,7 @@ def cc_library_func(ctx, hdrs, srcs, deps): requested_features = ctx.features, unsupported_features = ctx.disabled_features, ) - compilation_info = cc_common.compile( + (compilation_context, compilation_outputs) = cc_common.compile( actions = ctx.actions, feature_configuration = feature_configuration, cc_toolchain = toolchain, @@ -294,18 +294,18 @@ def cc_library_func(ctx, hdrs, srcs, deps): public_hdrs = hdrs, compilation_contexts = compilation_contexts, ) - linking_info = cc_common.link( + (linking_context, linking_outputs) = cc_common.create_linking_context_from_compilation_outputs( actions = ctx.actions, name = "upb_lib", feature_configuration = feature_configuration, cc_toolchain = toolchain, - cc_compilation_outputs = compilation_info.cc_compilation_outputs, + compilation_outputs = compilation_outputs, linking_contexts = linking_contexts, ) return CcInfo( - compilation_context = compilation_info.compilation_context, - linking_context = linking_info.linking_context, + compilation_context = compilation_context, + linking_context = linking_context, ) def _compile_upb_protos(ctx, proto_info, proto_sources, ext): -- cgit v1.2.3 From cbe051a09c19f868b7682477755011ec681ce6cb Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Mon, 13 May 2019 08:30:57 -0700 Subject: Re-enabled conformance tests. --- BUILD | 78 ++++++++++++++++++++++++------------------------ CMakeLists.txt | 1 + WORKSPACE | 7 +++-- tools/make_cmakelists.py | 4 +-- 4 files changed, 47 insertions(+), 43 deletions(-) (limited to 'WORKSPACE') diff --git a/BUILD b/BUILD index 2f03ae3..6ad365e 100644 --- a/BUILD +++ b/BUILD @@ -350,45 +350,45 @@ cc_test( copts = CPPOPTS, ) -#upb_proto_library( -# name = "conformance_proto_upb", -# deps = ["@com_google_protobuf//:conformance_proto"], -#) - -#upb_proto_library( -# name = "test_messages_proto3_proto_upb", -# deps = ["@com_google_protobuf//:test_messages_proto3_proto"], -#) - -#cc_binary( -# name = "conformance_upb", -# srcs = [ -# "tests/conformance_upb.c", -# ], -# copts = COPTS + ["-Ibazel-out/k8-fastbuild/bin"], -# deps = [ -# ":conformance_proto_upb", -# ":test_messages_proto3_proto_upb", -# ":upb", -# ], -#) -# -#make_shell_script( -# name = "gen_test_conformance_upb", -# out = "test_conformance_upb.sh", -# contents = "$(rlocation com_google_protobuf/conformance_test_runner) $(rlocation upb/conformance_upb)", -#) -# -#sh_test( -# name = "test_conformance_upb", -# srcs = ["test_conformance_upb.sh"], -# data = [ -# "tests/conformance_upb_failures.txt", -# ":conformance_upb", -# "@bazel_tools//tools/bash/runfiles", -# "@com_google_protobuf//:conformance_test_runner", -# ], -#) +upb_proto_library( + name = "conformance_proto_upb", + deps = ["@com_google_protobuf//:conformance_proto"], +) + +upb_proto_library( + name = "test_messages_proto3_proto_upb", + deps = ["@com_google_protobuf//:test_messages_proto3_proto"], +) + +cc_binary( + name = "conformance_upb", + srcs = [ + "tests/conformance_upb.c", + ], + copts = COPTS + ["-Ibazel-out/k8-fastbuild/bin"], + deps = [ + ":conformance_proto_upb", + ":test_messages_proto3_proto_upb", + ":upb", + ], +) + +make_shell_script( + name = "gen_test_conformance_upb", + out = "test_conformance_upb.sh", + contents = "$(rlocation com_google_protobuf/conformance_test_runner) $(rlocation upb/conformance_upb)", +) + +sh_test( + name = "test_conformance_upb", + srcs = ["test_conformance_upb.sh"], + data = [ + "tests/conformance_upb_failures.txt", + ":conformance_upb", + "@bazel_tools//tools/bash/runfiles", + "@com_google_protobuf//:conformance_test_runner", + ], +) # Amalgamation ################################################################# diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e08cd7..e6bc5b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,6 +115,7 @@ target_link_libraries(upb_pb table upb) add_library(upb_json + generated_for_cmake/upb/json/parser.c upb/json/printer.c upb/json/parser.h upb/json/printer.h) diff --git a/WORKSPACE b/WORKSPACE index 254d113..4239c71 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -17,8 +17,11 @@ http_archive( git_repository( name = "com_google_protobuf", - commit = "ec1a70913e5793a7d0a7b5fbf7e0e4f75409dd41", - remote = "https://github.com/protocolbuffers/protobuf.git", + # TODO(haberman): update to protobuf branch oncd this is merged: + # https://github.com/protocolbuffers/protobuf/pull/6126 + #remote = "https://github.com/protocolbuffers/protobuf.git", + commit = "2996da4d817dd006cd8599c74ad2364a897d6107", + remote = "https://github.com/haberman/protobuf.git", ) http_archive( diff --git a/tools/make_cmakelists.py b/tools/make_cmakelists.py index e320be4..36d5375 100755 --- a/tools/make_cmakelists.py +++ b/tools/make_cmakelists.py @@ -43,8 +43,8 @@ class BuildFileFunctions(object): for file in files: if os.path.isfile(file): found_files.append(file) - elif os.path.isfile("generated/" + file): - found_files.append("generated/" + file) + elif os.path.isfile("generated_for_cmake/" + file): + found_files.append("generated_for_cmake/" + file) else: print("Warning: no such file: " + file) -- cgit v1.2.3 From 0fea70b4d9e6c0fd95420893607f462c7308e490 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Mon, 13 May 2019 10:07:06 -0700 Subject: Works with Bazel 0.24.1 and Bazel 0.25.2! --- WORKSPACE | 5 +++++ build_defs.bzl | 43 +++++++++++++++++++++++++++++++++++-------- repository_defs.bzl | 16 ++++++++++++++++ tools/make_cmakelists.py | 3 +++ 4 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 repository_defs.bzl (limited to 'WORKSPACE') diff --git a/WORKSPACE b/WORKSPACE index 4239c71..780b3c4 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -3,6 +3,11 @@ workspace(name = "upb") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") +load(":repository_defs.bzl", "bazel_version_repository") + +bazel_version_repository( + name = "bazel_version" +) http_archive( name = "lua", diff --git a/build_defs.bzl b/build_defs.bzl index 6f956bf..38df359 100644 --- a/build_defs.bzl +++ b/build_defs.bzl @@ -1,6 +1,8 @@ load("@bazel_skylib//lib:paths.bzl", "paths") +load("@bazel_skylib//lib:versions.bzl", "versions") load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") +load("@bazel_version//:bazel_version.bzl", "bazel_version") _shell_find_runfiles = """ # --- begin runfiles.bash initialization --- @@ -272,19 +274,42 @@ def filter_none(elems): # upb_proto_library() rule -def cc_library_func(ctx, name, hdrs, srcs, deps): - compilation_contexts = [] - linking_contexts = [] - for dep in deps: - if CcInfo in dep: - linking_contexts.append(dep[CcInfo].linking_context) - compilation_contexts.append(dep[CcInfo].compilation_context) +def cc_library_func(ctx, name, hdrs, srcs, dep_ccinfos): + compilation_contexts = [info.compilation_context for info in dep_ccinfos] + linking_contexts = [info.linking_context for info in dep_ccinfos] toolchain = find_cpp_toolchain(ctx) feature_configuration = cc_common.configure_features( cc_toolchain = toolchain, requested_features = ctx.features, unsupported_features = ctx.disabled_features, ) + + if is_bazel: + if bazel_version == "0.24.1": + # Compatibility code until gRPC is on 0.25.2 or later. + compilation_info = cc_common.compile( + ctx = ctx, + feature_configuration = feature_configuration, + cc_toolchain = toolchain, + srcs = srcs, + hdrs = hdrs, + compilation_contexts = compilation_contexts, + ) + linking_info = cc_common.link( + ctx = ctx, + feature_configuration = feature_configuration, + cc_toolchain = toolchain, + cc_compilation_outputs = compilation_info.cc_compilation_outputs, + linking_contexts = linking_contexts, + ) + return CcInfo( + compilation_context = compilation_info.compilation_context, + linking_context = linking_info.linking_context, + ) + + if not versions.is_at_least("0.25.2", bazel_version): + fail("upb requires Bazel >=0.25.2 or 0.24.1") + (compilation_context, compilation_outputs) = cc_common.compile( actions = ctx.actions, feature_configuration = feature_configuration, @@ -354,12 +379,14 @@ def _upb_proto_rule_impl(ctx): def _upb_proto_aspect_impl(target, ctx): proto_info = target[ProtoInfo] files = _compile_upb_protos(ctx, proto_info, proto_info.direct_sources, ctx.attr._ext) + deps = ctx.rule.attr.deps + [ctx.attr._upb] + dep_ccinfos = [dep[CcInfo] for dep in deps if CcInfo in dep] cc_info = cc_library_func( ctx = ctx, name = ctx.rule.attr.name, hdrs = files.hdrs, srcs = files.srcs, - deps = ctx.rule.attr.deps + [ctx.attr._upb], + dep_ccinfos = dep_ccinfos, ) return [cc_info] diff --git a/repository_defs.bzl b/repository_defs.bzl new file mode 100644 index 0000000..5bbc9cb --- /dev/null +++ b/repository_defs.bzl @@ -0,0 +1,16 @@ + +# A hacky way to work around the fact that native.bazel_version is only +# available from WORKSPACE macros, not BUILD macros or rules. +# +# Hopefully we can remove this if/when this is fixed: +# https://github.com/bazelbuild/bazel/issues/8305 + +def _impl(repository_ctx): + s = "bazel_version = \"" + native.bazel_version + "\"" + repository_ctx.file("bazel_version.bzl", s) + repository_ctx.file("BUILD", "") + +bazel_version_repository = repository_rule( + implementation=_impl, + local=True, +) diff --git a/tools/make_cmakelists.py b/tools/make_cmakelists.py index 36d5375..44cd1b0 100755 --- a/tools/make_cmakelists.py +++ b/tools/make_cmakelists.py @@ -175,6 +175,9 @@ class WorkspaceFileFunctions(object): def git_repository(self, **kwargs): pass + def bazel_version_repository(self, **kwargs): + pass + class Converter(object): def __init__(self): -- cgit v1.2.3 From f0605283962ca61f35587d542c4cd684548168bd Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Mon, 13 May 2019 10:12:51 -0700 Subject: Updated protobuf to point to main repo. --- WORKSPACE | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'WORKSPACE') diff --git a/WORKSPACE b/WORKSPACE index 780b3c4..bcb00f0 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -22,11 +22,8 @@ http_archive( git_repository( name = "com_google_protobuf", - # TODO(haberman): update to protobuf branch oncd this is merged: - # https://github.com/protocolbuffers/protobuf/pull/6126 - #remote = "https://github.com/protocolbuffers/protobuf.git", - commit = "2996da4d817dd006cd8599c74ad2364a897d6107", - remote = "https://github.com/haberman/protobuf.git", + remote = "https://github.com/protocolbuffers/protobuf.git", + commit = "78ca77ac8799f67fda7b9a01cc691cd9fe526f25", ) http_archive( -- cgit v1.2.3 From 5e5e0cf24aa630d5ee1deb1ebf1032b7b788d9b8 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Tue, 14 May 2019 14:12:33 -0700 Subject: More Blaze fixes. --- BUILD | 14 ++++++++++++-- WORKSPACE | 6 ++++-- tests/conformance_upb.c | 28 +++++++++------------------- tests/test_cpp.cc | 5 ++--- 4 files changed, 27 insertions(+), 26 deletions(-) (limited to 'WORKSPACE') diff --git a/BUILD b/BUILD index 436b845..65eb95a 100644 --- a/BUILD +++ b/BUILD @@ -154,6 +154,7 @@ cc_library( deps = [ ":descriptor_upbproto", ":handlers", + ":reflection", ":table", ":upb", ], @@ -236,7 +237,10 @@ cc_library( "tests/upb_test.h", ], copts = CPPOPTS, - deps = [":handlers"], + deps = [ + ":handlers", + ":upb", + ], ) cc_test( @@ -270,7 +274,9 @@ cc_test( srcs = ["tests/pb/test_decoder.cc"], copts = CPPOPTS, deps = [ + ":handlers", ":test_decoder_upbproto", + ":upb", ":upb_pb", ":upb_test", ], @@ -288,6 +294,7 @@ cc_test( deps = [ ":descriptor_upbproto", ":descriptor_upbreflection", + ":upb", ":upb_cc_bindings", ":upb_pb", ":upb_test", @@ -311,6 +318,8 @@ cc_test( srcs = ["tests/test_cpp.cc"], copts = CPPOPTS, deps = [ + ":handlers", + ":reflection", ":test_cpp_upbproto", ":upb", ":upb_pb", @@ -323,6 +332,7 @@ cc_test( srcs = ["tests/test_table.cc"], copts = CPPOPTS, deps = [ + ":table", ":upb", ":upb_test", ], @@ -399,7 +409,7 @@ cc_binary( make_shell_script( name = "gen_test_conformance_upb", out = "test_conformance_upb.sh", - contents = "$(rlocation @com_google_protobuf/conformance_test_runner) $(rlocation upb/conformance_upb)", + contents = "external/com_google_protobuf/conformance_test_runner ./conformance_upb", ) sh_test( diff --git a/WORKSPACE b/WORKSPACE index bcb00f0..8a4ef8e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -22,8 +22,10 @@ http_archive( git_repository( name = "com_google_protobuf", - remote = "https://github.com/protocolbuffers/protobuf.git", - commit = "78ca77ac8799f67fda7b9a01cc691cd9fe526f25", + #remote = "https://github.com/protocolbuffers/protobuf.git", + #commit = "78ca77ac8799f67fda7b9a01cc691cd9fe526f25", + remote = "https://github.com/haberman/protobuf.git", + commit = "c659a4a4db2e27463e51c732df25730973956be2", ) http_archive( diff --git a/tests/conformance_upb.c b/tests/conformance_upb.c index 782346f..36e550e 100644 --- a/tests/conformance_upb.c +++ b/tests/conformance_upb.c @@ -75,21 +75,16 @@ void DoTest( break; } - case conformance_ConformanceRequest_payload_json_payload: { - static const char msg[] = "JSON support not yet implemented."; - conformance_ConformanceResponse_set_skipped( - response, upb_strview_make(msg, sizeof(msg))); - return; - } - case conformance_ConformanceRequest_payload_NOT_SET: fprintf(stderr, "conformance_upb: Request didn't have payload.\n"); return; - default: - fprintf(stderr, "conformance_upb: Unexpected case: %d\n", - conformance_ConformanceRequest_payload_case(request)); - exit(1); + default: { + static const char msg[] = "Unsupported input format."; + conformance_ConformanceResponse_set_skipped( + response, upb_strview_make(msg, sizeof(msg))); + return; + } } switch (conformance_ConformanceRequest_requested_output_format(request)) { @@ -113,17 +108,12 @@ void DoTest( break; } - case conformance_JSON: { - static const char msg[] = "JSON support not yet implemented."; + default: { + static const char msg[] = "Unsupported output format."; conformance_ConformanceResponse_set_skipped( response, upb_strview_make(msg, sizeof(msg))); - break; + return; } - - default: - fprintf(stderr, "conformance_upb: Unknown output format: %d\n", - conformance_ConformanceRequest_requested_output_format(request)); - exit(1); } return; diff --git a/tests/test_cpp.cc b/tests/test_cpp.cc index 8feb6e2..abbafda 100644 --- a/tests/test_cpp.cc +++ b/tests/test_cpp.cc @@ -12,14 +12,13 @@ #include #include "tests/test_cpp.upbdefs.h" +#include "tests/upb_test.h" #include "upb/def.h" #include "upb/handlers.h" #include "upb/pb/decoder.h" #include "upb/pb/textprinter.h" -#include "upb/upb.h" -#include "upb_test.h" - #include "upb/port_def.inc" +#include "upb/upb.h" template void AssertInsert(T* const container, const typename T::value_type& val) { -- cgit v1.2.3 From 1cf4af7b2c3ef7d4795aed2bda936e8e5c43fd02 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Tue, 14 May 2019 15:04:30 -0700 Subject: A (final?) round of Blaze fixes. --- BUILD | 38 +++++++++++++++++++------------------- WORKSPACE | 15 +++++++-------- build_defs.bzl | 6 +++--- repository_defs.bzl | 5 ++--- 4 files changed, 31 insertions(+), 33 deletions(-) (limited to 'WORKSPACE') diff --git a/BUILD b/BUILD index 65eb95a..96d7b7d 100644 --- a/BUILD +++ b/BUILD @@ -282,25 +282,6 @@ cc_test( ], ) -upb_proto_reflection_library( - name = "descriptor_upbreflection", - deps = ["@com_google_protobuf//:descriptor_proto"], -) - -cc_test( - name = "test_encoder", - srcs = ["tests/pb/test_encoder.cc"], - copts = CPPOPTS, - deps = [ - ":descriptor_upbproto", - ":descriptor_upbreflection", - ":upb", - ":upb_cc_bindings", - ":upb_pb", - ":upb_test", - ], -) - proto_library( name = "test_cpp_proto", srcs = [ @@ -339,6 +320,25 @@ cc_test( ) # copybara:strip_for_google3_begin +upb_proto_reflection_library( + name = "descriptor_upbreflection", + deps = ["@com_google_protobuf//:descriptor_proto"], +) + +cc_test( + name = "test_encoder", + srcs = ["tests/pb/test_encoder.cc"], + copts = CPPOPTS, + deps = [ + ":descriptor_upbproto", + ":descriptor_upbreflection", + ":upb", + ":upb_cc_bindings", + ":upb_pb", + ":upb_test", + ], +) + proto_library( name = "test_json_enum_from_separate", srcs = ["tests/json/enum_from_separate_file.proto"], diff --git a/WORKSPACE b/WORKSPACE index 8a4ef8e..a847b51 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,4 +1,3 @@ - workspace(name = "upb") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") @@ -6,7 +5,7 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") load(":repository_defs.bzl", "bazel_version_repository") bazel_version_repository( - name = "bazel_version" + name = "bazel_version", ) http_archive( @@ -22,10 +21,10 @@ http_archive( git_repository( name = "com_google_protobuf", + commit = "c659a4a4db2e27463e51c732df25730973956be2", #remote = "https://github.com/protocolbuffers/protobuf.git", #commit = "78ca77ac8799f67fda7b9a01cc691cd9fe526f25", remote = "https://github.com/haberman/protobuf.git", - commit = "c659a4a4db2e27463e51c732df25730973956be2", ) http_archive( @@ -40,19 +39,19 @@ git_repository( name = "absl", commit = "070f6e47b33a2909d039e620c873204f78809492", remote = "https://github.com/abseil/abseil-cpp.git", - shallow_since = "1541627663 -0500" + shallow_since = "1541627663 -0500", ) http_archive( name = "ragel", - sha256 = "5f156edb65d20b856d638dd9ee2dfb43285914d9aa2b6ec779dac0270cd56c3f", build_file = "//:ragel.BUILD", + sha256 = "5f156edb65d20b856d638dd9ee2dfb43285914d9aa2b6ec779dac0270cd56c3f", strip_prefix = "ragel-6.10", urls = ["http://www.colm.net/files/ragel/ragel-6.10.tar.gz"], ) http_archive( - name = "bazel_skylib", - strip_prefix = "bazel-skylib-master", - urls = ["https://github.com/bazelbuild/bazel-skylib/archive/master.tar.gz"], + name = "bazel_skylib", + strip_prefix = "bazel-skylib-master", + urls = ["https://github.com/bazelbuild/bazel-skylib/archive/master.tar.gz"], ) diff --git a/build_defs.bzl b/build_defs.bzl index fc2c0a4..f62f42f 100644 --- a/build_defs.bzl +++ b/build_defs.bzl @@ -1,4 +1,3 @@ - load("@bazel_skylib//lib:paths.bzl", "paths") load("@bazel_skylib//lib:versions.bzl", "versions") load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") @@ -278,6 +277,7 @@ def cc_library_func(ctx, name, hdrs, srcs, dep_ccinfos): if not versions.is_at_least("0.25.2", bazel_version): fail("upb requires Bazel >=0.25.2 or 0.24.1") + # copybara:strip_end blaze_only_args = {} @@ -327,7 +327,7 @@ def _compile_upb_protos(ctx, proto_info, proto_sources, ext): "--descriptor_set_in=" + ":".join([f.path for f in transitive_sets]), ] + [_get_real_short_path(file) for file in proto_sources], - progress_message = "Generating upb protos for :" + ctx.label.name, + progress_message = "Generating upb protos for :" + ctx.label.name, ) return SrcList(srcs = srcs, hdrs = hdrs) @@ -485,7 +485,7 @@ upb_proto_srcs = rule( default = "@com_google_protobuf//:protoc", ), "deps": attr.label_list(), - "ext": attr.string(default = ".upb") + "ext": attr.string(default = ".upb"), }, implementation = _upb_proto_srcs_impl, ) diff --git a/repository_defs.bzl b/repository_defs.bzl index 5bbc9cb..7b6e78e 100644 --- a/repository_defs.bzl +++ b/repository_defs.bzl @@ -1,4 +1,3 @@ - # A hacky way to work around the fact that native.bazel_version is only # available from WORKSPACE macros, not BUILD macros or rules. # @@ -11,6 +10,6 @@ def _impl(repository_ctx): repository_ctx.file("BUILD", "") bazel_version_repository = repository_rule( - implementation=_impl, - local=True, + implementation = _impl, + local = True, ) -- cgit v1.2.3 From 717db51700c0477397867d4ff5370cd194cd7991 Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Tue, 14 May 2019 15:07:05 -0700 Subject: Updated protobuf to the main branch again. --- CMakeLists.txt | 4 +++- WORKSPACE | 6 ++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'WORKSPACE') diff --git a/CMakeLists.txt b/CMakeLists.txt index 24e0b54..2573173 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,6 +114,7 @@ add_library(upb_pb target_link_libraries(upb_pb descriptor_upbproto handlers + reflection table upb) add_library(upb_json @@ -134,6 +135,7 @@ add_library(upb_test tests/test_util.h tests/upb_test.h) target_link_libraries(upb_test - handlers) + handlers + upb) diff --git a/WORKSPACE b/WORKSPACE index a847b51..74c41c5 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -21,10 +21,8 @@ http_archive( git_repository( name = "com_google_protobuf", - commit = "c659a4a4db2e27463e51c732df25730973956be2", - #remote = "https://github.com/protocolbuffers/protobuf.git", - #commit = "78ca77ac8799f67fda7b9a01cc691cd9fe526f25", - remote = "https://github.com/haberman/protobuf.git", + remote = "https://github.com/protocolbuffers/protobuf.git", + commit = "d41002663fd04325ead28439dfd5ce2822b0d6fb", ) http_archive( -- cgit v1.2.3 From f74cb51f113afcf579e60b74749cffffdf2a5f6a Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Thu, 16 May 2019 10:51:14 -0700 Subject: Refactored workspace deps into a separate file. --- WORKSPACE | 34 ++-------------------------------- examples/bazel/WORKSPACE | 34 ++-------------------------------- tools/make_cmakelists.py | 3 +++ workspace_deps.bzl | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 64 deletions(-) create mode 100644 workspace_deps.bzl (limited to 'WORKSPACE') diff --git a/WORKSPACE b/WORKSPACE index 74c41c5..63ccaab 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,12 +1,9 @@ workspace(name = "upb") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") -load(":repository_defs.bzl", "bazel_version_repository") +load("@upb//:workspace_deps.bzl", "upb_deps") -bazel_version_repository( - name = "bazel_version", -) +upb_deps() http_archive( name = "lua", @@ -19,27 +16,6 @@ http_archive( ], ) -git_repository( - name = "com_google_protobuf", - remote = "https://github.com/protocolbuffers/protobuf.git", - commit = "d41002663fd04325ead28439dfd5ce2822b0d6fb", -) - -http_archive( - name = "zlib", - build_file = "@com_google_protobuf//:third_party/zlib.BUILD", - sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", - strip_prefix = "zlib-1.2.11", - urls = ["https://zlib.net/zlib-1.2.11.tar.gz"], -) - -git_repository( - name = "absl", - commit = "070f6e47b33a2909d039e620c873204f78809492", - remote = "https://github.com/abseil/abseil-cpp.git", - shallow_since = "1541627663 -0500", -) - http_archive( name = "ragel", build_file = "//:ragel.BUILD", @@ -47,9 +23,3 @@ http_archive( strip_prefix = "ragel-6.10", urls = ["http://www.colm.net/files/ragel/ragel-6.10.tar.gz"], ) - -http_archive( - name = "bazel_skylib", - strip_prefix = "bazel-skylib-master", - urls = ["https://github.com/bazelbuild/bazel-skylib/archive/master.tar.gz"], -) diff --git a/examples/bazel/WORKSPACE b/examples/bazel/WORKSPACE index 01d3efd..ea03c0a 100644 --- a/examples/bazel/WORKSPACE +++ b/examples/bazel/WORKSPACE @@ -1,7 +1,6 @@ workspace(name = "upb_example") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( @@ -10,35 +9,6 @@ git_repository( commit = "d5af87d06bbe3abad66970ce9c7ae0a7de8bb3c6", ) -load("@upb//:repository_defs.bzl", "bazel_version_repository") +load("@upb//:workspace_deps.bzl", "upb_deps") -bazel_version_repository( - name = "bazel_version", -) - -git_repository( - name = "absl", - commit = "070f6e47b33a2909d039e620c873204f78809492", - remote = "https://github.com/abseil/abseil-cpp.git", - shallow_since = "1541627663 -0500", -) - -git_repository( - name = "com_google_protobuf", - remote = "https://github.com/protocolbuffers/protobuf.git", - commit = "d41002663fd04325ead28439dfd5ce2822b0d6fb", -) - -http_archive( - name = "bazel_skylib", - strip_prefix = "bazel-skylib-master", - urls = ["https://github.com/bazelbuild/bazel-skylib/archive/master.tar.gz"], -) - -http_archive( - name = "zlib", - build_file = "@com_google_protobuf//:third_party/zlib.BUILD", - sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", - strip_prefix = "zlib-1.2.11", - urls = ["https://zlib.net/zlib-1.2.11.tar.gz"], -) +upb_deps() diff --git a/tools/make_cmakelists.py b/tools/make_cmakelists.py index 44cd1b0..22f3757 100755 --- a/tools/make_cmakelists.py +++ b/tools/make_cmakelists.py @@ -178,6 +178,9 @@ class WorkspaceFileFunctions(object): def bazel_version_repository(self, **kwargs): pass + def upb_deps(self): + pass + class Converter(object): def __init__(self): diff --git a/workspace_deps.bzl b/workspace_deps.bzl new file mode 100644 index 0000000..a77d584 --- /dev/null +++ b/workspace_deps.bzl @@ -0,0 +1,36 @@ + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") +load("@upb//:repository_defs.bzl", "bazel_version_repository") + +def upb_deps(): + bazel_version_repository( + name = "bazel_version", + ) + + git_repository( + name = "absl", + commit = "070f6e47b33a2909d039e620c873204f78809492", + remote = "https://github.com/abseil/abseil-cpp.git", + shallow_since = "1541627663 -0500", + ) + + git_repository( + name = "com_google_protobuf", + remote = "https://github.com/protocolbuffers/protobuf.git", + commit = "d41002663fd04325ead28439dfd5ce2822b0d6fb", + ) + + http_archive( + name = "bazel_skylib", + strip_prefix = "bazel-skylib-master", + urls = ["https://github.com/bazelbuild/bazel-skylib/archive/master.tar.gz"], + ) + + http_archive( + name = "zlib", + build_file = "@com_google_protobuf//:third_party/zlib.BUILD", + sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", + strip_prefix = "zlib-1.2.11", + urls = ["https://zlib.net/zlib-1.2.11.tar.gz"], + ) -- cgit v1.2.3 From 5611ff267b7f11615516fd6efe8373b730999a0d Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Thu, 16 May 2019 11:35:00 -0700 Subject: Moved bazel files to bazel/ directory. --- BUILD | 4 +- WORKSPACE | 6 +- bazel/BUILD | 0 bazel/build_defs.bzl | 225 ++++++++++++++++++++++++++++++++++ bazel/lua.BUILD | 102 ++++++++++++++++ bazel/ragel.BUILD | 193 +++++++++++++++++++++++++++++ bazel/repository_defs.bzl | 15 +++ bazel/upb_proto_library.bzl | 291 ++++++++++++++++++++++++++++++++++++++++++++ bazel/workspace_deps.bzl | 36 ++++++ build_defs.bzl | 225 ---------------------------------- lua.BUILD | 102 ---------------- ragel.BUILD | 193 ----------------------------- repository_defs.bzl | 15 --- tools/copy_genfiles.sh.in | 22 ---- upb_proto_library.bzl | 291 -------------------------------------------- workspace_deps.bzl | 36 ------ 16 files changed, 867 insertions(+), 889 deletions(-) create mode 100644 bazel/BUILD create mode 100644 bazel/build_defs.bzl create mode 100644 bazel/lua.BUILD create mode 100644 bazel/ragel.BUILD create mode 100644 bazel/repository_defs.bzl create mode 100644 bazel/upb_proto_library.bzl create mode 100644 bazel/workspace_deps.bzl delete mode 100644 build_defs.bzl delete mode 100644 lua.BUILD delete mode 100644 ragel.BUILD delete mode 100644 repository_defs.bzl delete mode 100755 tools/copy_genfiles.sh.in delete mode 100644 upb_proto_library.bzl delete mode 100644 workspace_deps.bzl (limited to 'WORKSPACE') diff --git a/BUILD b/BUILD index 362417a..11156c8 100644 --- a/BUILD +++ b/BUILD @@ -1,5 +1,5 @@ load( - ":build_defs.bzl", + "//bazel:build_defs.bzl", "generated_file_staleness_test", "licenses", # copybara:strip_for_google3 "lua_binary", @@ -11,7 +11,7 @@ load( ) load( - ":upb_proto_library.bzl", + "//bazel:upb_proto_library.bzl", "upb_proto_library", "upb_proto_reflection_library", ) diff --git a/WORKSPACE b/WORKSPACE index 63ccaab..91d2150 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,13 +1,13 @@ workspace(name = "upb") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@upb//:workspace_deps.bzl", "upb_deps") +load("//bazel:workspace_deps.bzl", "upb_deps") upb_deps() http_archive( name = "lua", - build_file = "//:lua.BUILD", + build_file = "//bazel:lua.BUILD", sha256 = "b9e2e4aad6789b3b63a056d442f7b39f0ecfca3ae0f1fc0ae4e9614401b69f4b", strip_prefix = "lua-5.2.4", urls = [ @@ -18,7 +18,7 @@ http_archive( http_archive( name = "ragel", - build_file = "//:ragel.BUILD", + build_file = "//bazel:ragel.BUILD", sha256 = "5f156edb65d20b856d638dd9ee2dfb43285914d9aa2b6ec779dac0270cd56c3f", strip_prefix = "ragel-6.10", urls = ["http://www.colm.net/files/ragel/ragel-6.10.tar.gz"], diff --git a/bazel/BUILD b/bazel/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/bazel/build_defs.bzl b/bazel/build_defs.bzl new file mode 100644 index 0000000..44ef0a3 --- /dev/null +++ b/bazel/build_defs.bzl @@ -0,0 +1,225 @@ +"""Internal rules for building upb.""" + +load(":upb_proto_library.bzl", "GeneratedSrcs") + +def _librule(name): + return name + "_lib" + +def _get_real_short_path(file): + # For some reason, files from other archives have short paths that look like: + # ../com_google_protobuf/google/protobuf/descriptor.proto + short_path = file.short_path + if short_path.startswith("../"): + second_slash = short_path.index("/", 3) + short_path = short_path[second_slash + 1:] + return short_path + +def _get_real_root(file): + real_short_path = _get_real_short_path(file) + return file.path[:-len(real_short_path) - 1] + +def _get_real_roots(files): + roots = {} + for file in files: + real_root = _get_real_root(file) + if real_root: + roots[real_root] = True + return roots.keys() + +def lua_cclibrary(name, srcs, hdrs = [], deps = [], luadeps = []): + lib_rule = name + "_lib" + so_rule = "lib" + name + ".so" + so_file = _remove_prefix(name, "lua/") + ".so" + + native.cc_library( + name = _librule(name), + hdrs = hdrs, + srcs = srcs, + deps = deps + [_librule(dep) for dep in luadeps] + ["@lua//:liblua_headers"], + ) + + native.cc_binary( + name = so_rule, + linkshared = True, + deps = [_librule(name)], + linkopts = select({ + ":darwin": [ + "-undefined dynamic_lookup", + ], + "//conditions:default": [], + }), + ) + + native.genrule( + name = name + "_copy", + srcs = [":" + so_rule], + outs = [so_file], + cmd = "cp $< $@", + ) + + native.filegroup( + name = name, + data = [so_file], + ) + +def _remove_prefix(str, prefix): + if not str.startswith(prefix): + fail("%s doesn't start with %s" % (str, prefix)) + return str[len(prefix):] + +def _remove_suffix(str, suffix): + if not str.endswith(suffix): + fail("%s doesn't end with %s" % (str, suffix)) + return str[:-len(suffix)] + +def lua_library(name, srcs, strip_prefix, luadeps = []): + outs = [_remove_prefix(src, strip_prefix + "/") for src in srcs] + native.genrule( + name = name + "_copy", + srcs = srcs, + outs = outs, + cmd = "cp $(SRCS) $(@D)", + ) + + native.filegroup( + name = name, + data = outs + luadeps, + ) + +def make_shell_script(name, contents, out): + contents = contents.replace("$", "$$") + native.genrule( + name = "gen_" + name, + outs = [out], + cmd = "(cat <<'HEREDOC'\n%s\nHEREDOC\n) > $@" % contents, + ) + +def _lua_binary_or_test(name, luamain, luadeps, rule): + script = name + ".sh" + + make_shell_script( + name = "gen_" + name, + out = script, + contents = """ +BASE=$(dirname $(rlocation upb/upb_c.so)) +export LUA_CPATH="$BASE/?.so" +export LUA_PATH="$BASE/?.lua" +$(rlocation lua/lua) $(rlocation upb/tools/upbc.lua) "$@" +""", + ) + + rule( + name = name, + srcs = [script], + data = ["@lua//:lua", luamain] + luadeps, + ) + +def lua_binary(name, luamain, luadeps = []): + _lua_binary_or_test(name, luamain, luadeps, native.sh_binary) + +def lua_test(name, luamain, luadeps = []): + _lua_binary_or_test(name, luamain, luadeps, native.sh_test) + +def generated_file_staleness_test(name, outs, generated_pattern): + """Tests that checked-in file(s) match the contents of generated file(s). + + The resulting test will verify that all output files exist and have the + correct contents. If the test fails, it can be invoked with --fix to + bring the checked-in files up to date. + + Args: + name: Name of the rule. + outs: the checked-in files that are copied from generated files. + generated_pattern: the pattern for transforming each "out" file into a + generated file. For example, if generated_pattern="generated/%s" then + a file foo.txt will look for generated file generated/foo.txt. + """ + + script_name = name + ".py" + script_src = "//:tools/staleness_test.py" + + # Filter out non-existing rules so Blaze doesn't error out before we even + # run the test. + existing_outs = native.glob(include = outs) + + # The file list contains a few extra bits of information at the end. + # These get unpacked by the Config class in staleness_test_lib.py. + file_list = outs + [generated_pattern, native.package_name() or ".", name] + + native.genrule( + name = name + "_makescript", + outs = [script_name], + srcs = [script_src], + testonly = 1, + cmd = "cat $(location " + script_src + ") > $@; " + + "sed -i.bak -e 's|INSERT_FILE_LIST_HERE|" + "\\\n ".join(file_list) + "|' $@", + ) + + native.py_test( + name = name, + srcs = [script_name], + data = existing_outs + [generated_pattern % file for file in outs], + deps = [ + "//:staleness_test_lib", + ], + ) + +# upb_amalgamation() rule, with file_list aspect. + +SrcList = provider( + fields = { + "srcs": "list of srcs", + "hdrs": "list of hdrs", + }, +) + +def _file_list_aspect_impl(target, ctx): + if GeneratedSrcs in target: + srcs = target[GeneratedSrcs] + return [SrcList(srcs = srcs.srcs, hdrs = srcs.hdrs)] + + srcs = [] + hdrs = [] + for src in ctx.rule.attr.srcs: + srcs += src.files.to_list() + for hdr in ctx.rule.attr.hdrs: + hdrs += hdr.files.to_list() + for hdr in ctx.rule.attr.textual_hdrs: + hdrs += hdr.files.to_list() + return [SrcList(srcs = srcs, hdrs = hdrs)] + +_file_list_aspect = aspect( + implementation = _file_list_aspect_impl, +) + +def _upb_amalgamation(ctx): + inputs = [] + srcs = [] + for lib in ctx.attr.libs: + inputs += lib[SrcList].srcs + inputs += lib[SrcList].hdrs + srcs += [src for src in lib[SrcList].srcs if src.path.endswith("c")] + ctx.actions.run( + inputs = inputs, + outputs = ctx.outputs.outs, + arguments = [ctx.bin_dir.path + "/"] + [f.path for f in srcs] + ["-I" + root for root in _get_real_roots(inputs)], + progress_message = "Making amalgamation", + executable = ctx.executable.amalgamator, + ) + return [] + +upb_amalgamation = rule( + attrs = { + "amalgamator": attr.label( + executable = True, + cfg = "host", + ), + "libs": attr.label_list(aspects = [_file_list_aspect]), + "outs": attr.output_list(), + }, + implementation = _upb_amalgamation, +) + +def licenses(*args): + # No-op (for Google-internal usage). + pass diff --git a/bazel/lua.BUILD b/bazel/lua.BUILD new file mode 100644 index 0000000..7be0b59 --- /dev/null +++ b/bazel/lua.BUILD @@ -0,0 +1,102 @@ +package( + default_visibility = ["//visibility:public"], +) + +cc_library( + name = "liblua_headers", + defines = ["LUA_USE_LINUX"], + hdrs = [ + "src/lauxlib.h", + "src/lua.h", + "src/lua.hpp", + "src/luaconf.h", + "src/lualib.h", + ], + includes = ["src"], +) + +cc_library( + name = "liblua", + srcs = [ + "src/lapi.c", + "src/lapi.h", + "src/lauxlib.c", + "src/lauxlib.h", + "src/lbaselib.c", + "src/lbitlib.c", + "src/lcode.c", + "src/lcode.h", + "src/lcorolib.c", + "src/lctype.c", + "src/lctype.h", + "src/ldblib.c", + "src/ldebug.c", + "src/ldebug.h", + "src/ldo.c", + "src/ldo.h", + "src/ldump.c", + "src/lfunc.c", + "src/lfunc.h", + "src/lgc.c", + "src/lgc.h", + "src/linit.c", + "src/liolib.c", + "src/llex.c", + "src/llex.h", + "src/llimits.h", + "src/lmathlib.c", + "src/lmem.c", + "src/lmem.h", + "src/loadlib.c", + "src/lobject.c", + "src/lobject.h", + "src/lopcodes.c", + "src/lopcodes.h", + "src/loslib.c", + "src/lparser.c", + "src/lparser.h", + "src/lstate.c", + "src/lstate.h", + "src/lstring.c", + "src/lstring.h", + "src/lstrlib.c", + "src/ltable.c", + "src/ltable.h", + "src/ltablib.c", + "src/ltm.c", + "src/ltm.h", + "src/lundump.c", + "src/lundump.h", + "src/lvm.c", + "src/lvm.h", + "src/lzio.c", + "src/lzio.h", + ], + defines = ["LUA_USE_LINUX"], + hdrs = [ + "src/lauxlib.h", + "src/lua.h", + "src/lua.hpp", + "src/luaconf.h", + "src/lualib.h", + ], + includes = ["src"], + linkopts = [ + "-lm", + "-ldl", + ], +) + +cc_binary( + name = "lua", + srcs = [ + "src/lua.c", + ], + deps = [ + ":liblua", + ], + linkopts = [ + "-lreadline", + "-rdynamic", + ], +) diff --git a/bazel/ragel.BUILD b/bazel/ragel.BUILD new file mode 100644 index 0000000..5e3b249 --- /dev/null +++ b/bazel/ragel.BUILD @@ -0,0 +1,193 @@ + +package( + default_visibility = ["//visibility:public"], +) + +cc_binary( + name = "ragelc", + srcs = [ + "ragel/rubycodegen.cpp", + "ragel/goipgoto.h", + "ragel/cdtable.h", + "ragel/rubycodegen.h", + "ragel/gotable.h", + "ragel/gocodegen.cpp", + "ragel/rubyfflat.cpp", + "ragel/common.cpp", + "ragel/gofflat.cpp", + "ragel/cdtable.cpp", + "ragel/cdsplit.cpp", + "ragel/rlparse.cpp", + "ragel/csfgoto.cpp", + "ragel/javacodegen.cpp", + "ragel/gocodegen.h", + "ragel/mlgoto.cpp", + "ragel/fsmgraph.cpp", + "ragel/version.h", + "ragel/mlfflat.h", + "ragel/fsmgraph.h", + "ragel/fsmbase.cpp", + "ragel/fsmstate.cpp", + "ragel/gotablish.cpp", + "ragel/rubyflat.cpp", + "ragel/cdfgoto.h", + "ragel/cscodegen.h", + "ragel/mlflat.cpp", + "ragel/rubyflat.h", + "ragel/goftable.h", + "ragel/rbxgoto.cpp", + "ragel/csfflat.cpp", + "ragel/gofgoto.cpp", + "ragel/gofgoto.h", + "ragel/ragel.h", + "ragel/goftable.cpp", + "ragel/cdcodegen.cpp", + "ragel/rlparse.h", + "ragel/cdsplit.h", + "ragel/xmlcodegen.cpp", + "ragel/goipgoto.cpp", + "ragel/dotcodegen.h", + "ragel/gogoto.cpp", + "ragel/csflat.h", + "ragel/csfflat.h", + #"ragel/config.h.in", + "ragel/csipgoto.cpp", + "ragel/mltable.cpp", + "ragel/mlflat.h", + "ragel/csftable.cpp", + "ragel/cdgoto.h", + "ragel/goflat.cpp", + "ragel/rubyfflat.h", + "ragel/mlftable.h", + "ragel/rubyftable.h", + "ragel/fsmap.cpp", + "ragel/redfsm.cpp", + "ragel/goflat.h", + "ragel/parsetree.cpp", + "ragel/fsmmin.cpp", + "ragel/dotcodegen.cpp", + "ragel/redfsm.h", + "ragel/mlcodegen.cpp", + "ragel/cdfgoto.cpp", + "ragel/cssplit.cpp", + "ragel/cstable.cpp", + "ragel/javacodegen.h", + "ragel/parsedata.cpp", + "ragel/buffer.h", + "ragel/gogoto.h", + "ragel/csgoto.h", + "ragel/pcheck.h", + "ragel/rubyftable.cpp", + "ragel/csfgoto.h", + "ragel/common.h", + "ragel/cdftable.h", + "ragel/mlgoto.h", + "ragel/csgoto.cpp", + "ragel/cdflat.h", + "ragel/cdipgoto.h", + "ragel/cstable.h", + "ragel/gendata.h", + "ragel/cdfflat.cpp", + "ragel/gotable.cpp", + "ragel/cdcodegen.h", + "ragel/gendata.cpp", + "ragel/rubytable.h", + "ragel/csflat.cpp", + "ragel/inputdata.h", + "ragel/inputdata.cpp", + "ragel/rubytable.cpp", + "ragel/fsmattach.cpp", + "ragel/csipgoto.h", + "ragel/cscodegen.cpp", + "ragel/cdfflat.h", + "ragel/rbxgoto.h", + "ragel/xmlcodegen.h", + "ragel/gofflat.h", + "ragel/parsedata.h", + "ragel/mlfgoto.h", + "ragel/cdflat.cpp", + "ragel/config.h", + "ragel/rlscan.cpp", + "ragel/mlcodegen.h", + "ragel/mlfflat.cpp", + "ragel/mlftable.cpp", + "ragel/mltable.h", + "ragel/cdipgoto.cpp", + "ragel/cdftable.cpp", + "ragel/parsetree.h", + "ragel/rlscan.h", + "ragel/main.cpp", + "ragel/cssplit.h", + "ragel/mlfgoto.cpp", + "ragel/csftable.h", + "ragel/gotablish.h", + "ragel/cdgoto.cpp", + "aapl/avlmelkey.h", + "aapl/dlistmel.h", + "aapl/avliset.h", + "aapl/avlkeyless.h", + "aapl/sbstset.h", + "aapl/sbsttable.h", + "aapl/quicksort.h", + "aapl/avlitree.h", + "aapl/avlcommon.h", + "aapl/bstset.h", + "aapl/avlmel.h", + "aapl/insertsort.h", + "aapl/dlist.h", + "aapl/avlmap.h", + "aapl/mergesort.h", + "aapl/resize.h", + "aapl/bstcommon.h", + "aapl/bstmap.h", + "aapl/compare.h", + "aapl/svector.h", + "aapl/avlset.h", + "aapl/bsttable.h", + "aapl/avlikeyless.h", + "aapl/bubblesort.h", + "aapl/table.h", + "aapl/avlbasic.h", + "aapl/vector.h", + "aapl/avlimap.h", + "aapl/dlistval.h", + "aapl/dlcommon.h", + "aapl/avlibasic.h", + "aapl/sbstmap.h", + "aapl/avlimel.h", + "aapl/avlimelkey.h", + "aapl/avltree.h", + ], + includes = ["ragel", "aapl"], +) + +config_h_contents = """ +#define PACKAGE "ragel" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "ragel" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "ragel 6.10" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "ragel" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "6.10" + +/* Version number of package */ +#define VERSION "6.10" +""" + +genrule( + name = "gen_config_h", + outs = ["ragel/config.h"], + cmd = "(cat <<'HEREDOC'\n%s\nHEREDOC\n) > $@" % config_h_contents, +) diff --git a/bazel/repository_defs.bzl b/bazel/repository_defs.bzl new file mode 100644 index 0000000..7b6e78e --- /dev/null +++ b/bazel/repository_defs.bzl @@ -0,0 +1,15 @@ +# A hacky way to work around the fact that native.bazel_version is only +# available from WORKSPACE macros, not BUILD macros or rules. +# +# Hopefully we can remove this if/when this is fixed: +# https://github.com/bazelbuild/bazel/issues/8305 + +def _impl(repository_ctx): + s = "bazel_version = \"" + native.bazel_version + "\"" + repository_ctx.file("bazel_version.bzl", s) + repository_ctx.file("BUILD", "") + +bazel_version_repository = repository_rule( + implementation = _impl, + local = True, +) diff --git a/bazel/upb_proto_library.bzl b/bazel/upb_proto_library.bzl new file mode 100644 index 0000000..0dc8c6e --- /dev/null +++ b/bazel/upb_proto_library.bzl @@ -0,0 +1,291 @@ +"""Public rules for using upb protos: + - upb_proto_library() + - upb_proto_reflection_library() +""" + +load("@bazel_skylib//lib:paths.bzl", "paths") +load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") + +# copybara:strip_for_google3_begin +load("@bazel_skylib//lib:versions.bzl", "versions") +load("@bazel_version//:bazel_version.bzl", "bazel_version") +# copybara:strip_end + +# Generic support code ######################################################### + +_is_bazel = not hasattr(native, "genmpm") + +def _get_real_short_path(file): + # For some reason, files from other archives have short paths that look like: + # ../com_google_protobuf/google/protobuf/descriptor.proto + short_path = file.short_path + if short_path.startswith("../"): + second_slash = short_path.index("/", 3) + short_path = short_path[second_slash + 1:] + return short_path + +def _get_real_root(file): + real_short_path = _get_real_short_path(file) + return file.path[:-len(real_short_path) - 1] + +def _get_real_roots(files): + roots = {} + for file in files: + real_root = _get_real_root(file) + if real_root: + roots[real_root] = True + return roots.keys() + +def _generate_output_file(ctx, src, extension): + if _is_bazel: + real_short_path = _get_real_short_path(src) + else: + real_short_path = paths.relativize(src.short_path, ctx.label.package) + output_filename = paths.replace_extension(real_short_path, extension) + ret = ctx.new_file(ctx.genfiles_dir, output_filename) + return ret + +def _filter_none(elems): + out = [] + for elem in elems: + if elem: + out.append(elem) + return out + +def _cc_library_func(ctx, name, hdrs, srcs, dep_ccinfos): + """Like cc_library(), but callable from rules. + + Args: + ctx: Rule context. + name: Unique name used to generate output files. + hdrs: Public headers that can be #included from other rules. + srcs: C/C++ source files. + dep_ccinfos: CcInfo providers of dependencies we should build/link against. + + Returns: + CcInfo provider for this compilation. + """ + + compilation_contexts = [info.compilation_context for info in dep_ccinfos] + linking_contexts = [info.linking_context for info in dep_ccinfos] + toolchain = find_cpp_toolchain(ctx) + feature_configuration = cc_common.configure_features( + cc_toolchain = toolchain, + requested_features = ctx.features, + unsupported_features = ctx.disabled_features, + ) + + # copybara:strip_for_google3_begin + if bazel_version == "0.24.1": + # Compatibility code until gRPC is on 0.25.2 or later. + compilation_info = cc_common.compile( + ctx = ctx, + feature_configuration = feature_configuration, + cc_toolchain = toolchain, + srcs = srcs, + hdrs = hdrs, + compilation_contexts = compilation_contexts, + ) + linking_info = cc_common.link( + ctx = ctx, + feature_configuration = feature_configuration, + cc_toolchain = toolchain, + cc_compilation_outputs = compilation_info.cc_compilation_outputs, + linking_contexts = linking_contexts, + ) + return CcInfo( + compilation_context = compilation_info.compilation_context, + linking_context = linking_info.linking_context, + ) + + if not versions.is_at_least("0.25.2", bazel_version): + fail("upb requires Bazel >=0.25.2 or 0.24.1") + + # copybara:strip_end + + blaze_only_args = {} + + if not _is_bazel: + blaze_only_args["grep_includes"] = ctx.file._grep_includes + + (compilation_context, compilation_outputs) = cc_common.compile( + actions = ctx.actions, + feature_configuration = feature_configuration, + cc_toolchain = toolchain, + name = name, + srcs = srcs, + public_hdrs = hdrs, + compilation_contexts = compilation_contexts, + **blaze_only_args + ) + (linking_context, linking_outputs) = cc_common.create_linking_context_from_compilation_outputs( + actions = ctx.actions, + name = name, + feature_configuration = feature_configuration, + cc_toolchain = toolchain, + compilation_outputs = compilation_outputs, + linking_contexts = linking_contexts, + **blaze_only_args + ) + + return CcInfo( + compilation_context = compilation_context, + linking_context = linking_context, + ) + +# upb_proto_library / upb_proto_reflection_library shared code ################# + +GeneratedSrcs = provider( + fields = { + "srcs": "list of srcs", + "hdrs": "list of hdrs", + }, +) + +_WrappedCcInfo = provider(fields = ["cc_info"]) +_WrappedGeneratedSrcs = provider(fields = ["srcs"]) + +def _compile_upb_protos(ctx, proto_info, proto_sources, ext): + srcs = [_generate_output_file(ctx, name, ext + ".c") for name in proto_sources] + hdrs = [_generate_output_file(ctx, name, ext + ".h") for name in proto_sources] + transitive_sets = list(proto_info.transitive_descriptor_sets) + ctx.actions.run( + inputs = depset( + direct = [ctx.executable._upbc, proto_info.direct_descriptor_set], + transitive = [proto_info.transitive_descriptor_sets], + ), + outputs = srcs + hdrs, + executable = ctx.executable._protoc, + arguments = [ + "--upb_out=" + _get_real_root(srcs[0]), + "--plugin=protoc-gen-upb=" + ctx.executable._upbc.path, + "--descriptor_set_in=" + ":".join([f.path for f in transitive_sets]), + ] + + [_get_real_short_path(file) for file in proto_sources], + progress_message = "Generating upb protos for :" + ctx.label.name, + ) + return GeneratedSrcs(srcs = srcs, hdrs = hdrs) + +def _upb_proto_rule_impl(ctx): + if len(ctx.attr.deps) != 1: + fail("only one deps dependency allowed.") + dep = ctx.attr.deps[0] + if _WrappedCcInfo not in dep or _WrappedGeneratedSrcs not in dep: + fail("proto_library rule must generate _WrappedCcInfo and " + + "_WrappedGeneratedSrcs (aspect should have handled this).") + cc_info = dep[_WrappedCcInfo].cc_info + srcs = dep[_WrappedGeneratedSrcs].srcs + lib = cc_info.linking_context.libraries_to_link[0] + files = _filter_none([ + lib.static_library, + lib.pic_static_library, + lib.dynamic_library, + ]) + return [ + DefaultInfo(files = depset(files + srcs.hdrs + srcs.srcs)), + srcs, + cc_info, + ] + +def _upb_proto_aspect_impl(target, ctx): + proto_info = target[ProtoInfo] + files = _compile_upb_protos(ctx, proto_info, proto_info.direct_sources, ctx.attr._ext) + deps = ctx.rule.attr.deps + ctx.attr._upb + dep_ccinfos = [dep[CcInfo] for dep in deps if CcInfo in dep] + dep_ccinfos += [dep[_WrappedCcInfo].cc_info for dep in deps if _WrappedCcInfo in dep] + cc_info = _cc_library_func( + ctx = ctx, + name = ctx.rule.attr.name + ctx.attr._ext, + hdrs = files.hdrs, + srcs = files.srcs, + dep_ccinfos = dep_ccinfos, + ) + return [_WrappedCcInfo(cc_info = cc_info), _WrappedGeneratedSrcs(srcs = files)] + +def _maybe_add(d): + if not _is_bazel: + d["_grep_includes"] = attr.label( + allow_single_file = True, + cfg = "host", + default = "//tools/cpp:grep-includes", + ) + return d + +# upb_proto_library() ########################################################## + +_upb_proto_library_aspect = aspect( + attrs = _maybe_add({ + "_upbc": attr.label( + executable = True, + cfg = "host", + default = "//:protoc-gen-upb", + ), + "_protoc": attr.label( + executable = True, + cfg = "host", + default = "@com_google_protobuf//:protoc", + ), + "_cc_toolchain": attr.label( + default = "@bazel_tools//tools/cpp:current_cc_toolchain", + ), + "_upb": attr.label_list(default = ["//:upb"]), + "_ext": attr.string(default = ".upb"), + }), + implementation = _upb_proto_aspect_impl, + attr_aspects = ["deps"], + fragments = ["cpp"], +) + +upb_proto_library = rule( + output_to_genfiles = True, + implementation = _upb_proto_rule_impl, + attrs = { + "deps": attr.label_list( + aspects = [_upb_proto_library_aspect], + allow_rules = ["proto_library"], + providers = [ProtoInfo], + ), + }, +) + +# upb_proto_reflection_library() ############################################### + +_upb_proto_reflection_library_aspect = aspect( + attrs = _maybe_add({ + "_upbc": attr.label( + executable = True, + cfg = "host", + default = "//:protoc-gen-upb", + ), + "_protoc": attr.label( + executable = True, + cfg = "host", + default = "@com_google_protobuf//:protoc", + ), + "_cc_toolchain": attr.label( + default = "@bazel_tools//tools/cpp:current_cc_toolchain", + ), + "_upb": attr.label_list( + default = [ + "//:upb", + "//:reflection", + ], + ), + "_ext": attr.string(default = ".upbdefs"), + }), + implementation = _upb_proto_aspect_impl, + attr_aspects = ["deps"], + fragments = ["cpp"], +) + +upb_proto_reflection_library = rule( + output_to_genfiles = True, + implementation = _upb_proto_rule_impl, + attrs = { + "deps": attr.label_list( + aspects = [_upb_proto_reflection_library_aspect], + allow_rules = ["proto_library"], + providers = [ProtoInfo], + ), + }, +) diff --git a/bazel/workspace_deps.bzl b/bazel/workspace_deps.bzl new file mode 100644 index 0000000..39bf524 --- /dev/null +++ b/bazel/workspace_deps.bzl @@ -0,0 +1,36 @@ + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") +load("//bazel:repository_defs.bzl", "bazel_version_repository") + +def upb_deps(): + bazel_version_repository( + name = "bazel_version", + ) + + git_repository( + name = "absl", + commit = "070f6e47b33a2909d039e620c873204f78809492", + remote = "https://github.com/abseil/abseil-cpp.git", + shallow_since = "1541627663 -0500", + ) + + git_repository( + name = "com_google_protobuf", + remote = "https://github.com/protocolbuffers/protobuf.git", + commit = "d41002663fd04325ead28439dfd5ce2822b0d6fb", + ) + + http_archive( + name = "bazel_skylib", + strip_prefix = "bazel-skylib-master", + urls = ["https://github.com/bazelbuild/bazel-skylib/archive/master.tar.gz"], + ) + + http_archive( + name = "zlib", + build_file = "@com_google_protobuf//:third_party/zlib.BUILD", + sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", + strip_prefix = "zlib-1.2.11", + urls = ["https://zlib.net/zlib-1.2.11.tar.gz"], + ) diff --git a/build_defs.bzl b/build_defs.bzl deleted file mode 100644 index 44ef0a3..0000000 --- a/build_defs.bzl +++ /dev/null @@ -1,225 +0,0 @@ -"""Internal rules for building upb.""" - -load(":upb_proto_library.bzl", "GeneratedSrcs") - -def _librule(name): - return name + "_lib" - -def _get_real_short_path(file): - # For some reason, files from other archives have short paths that look like: - # ../com_google_protobuf/google/protobuf/descriptor.proto - short_path = file.short_path - if short_path.startswith("../"): - second_slash = short_path.index("/", 3) - short_path = short_path[second_slash + 1:] - return short_path - -def _get_real_root(file): - real_short_path = _get_real_short_path(file) - return file.path[:-len(real_short_path) - 1] - -def _get_real_roots(files): - roots = {} - for file in files: - real_root = _get_real_root(file) - if real_root: - roots[real_root] = True - return roots.keys() - -def lua_cclibrary(name, srcs, hdrs = [], deps = [], luadeps = []): - lib_rule = name + "_lib" - so_rule = "lib" + name + ".so" - so_file = _remove_prefix(name, "lua/") + ".so" - - native.cc_library( - name = _librule(name), - hdrs = hdrs, - srcs = srcs, - deps = deps + [_librule(dep) for dep in luadeps] + ["@lua//:liblua_headers"], - ) - - native.cc_binary( - name = so_rule, - linkshared = True, - deps = [_librule(name)], - linkopts = select({ - ":darwin": [ - "-undefined dynamic_lookup", - ], - "//conditions:default": [], - }), - ) - - native.genrule( - name = name + "_copy", - srcs = [":" + so_rule], - outs = [so_file], - cmd = "cp $< $@", - ) - - native.filegroup( - name = name, - data = [so_file], - ) - -def _remove_prefix(str, prefix): - if not str.startswith(prefix): - fail("%s doesn't start with %s" % (str, prefix)) - return str[len(prefix):] - -def _remove_suffix(str, suffix): - if not str.endswith(suffix): - fail("%s doesn't end with %s" % (str, suffix)) - return str[:-len(suffix)] - -def lua_library(name, srcs, strip_prefix, luadeps = []): - outs = [_remove_prefix(src, strip_prefix + "/") for src in srcs] - native.genrule( - name = name + "_copy", - srcs = srcs, - outs = outs, - cmd = "cp $(SRCS) $(@D)", - ) - - native.filegroup( - name = name, - data = outs + luadeps, - ) - -def make_shell_script(name, contents, out): - contents = contents.replace("$", "$$") - native.genrule( - name = "gen_" + name, - outs = [out], - cmd = "(cat <<'HEREDOC'\n%s\nHEREDOC\n) > $@" % contents, - ) - -def _lua_binary_or_test(name, luamain, luadeps, rule): - script = name + ".sh" - - make_shell_script( - name = "gen_" + name, - out = script, - contents = """ -BASE=$(dirname $(rlocation upb/upb_c.so)) -export LUA_CPATH="$BASE/?.so" -export LUA_PATH="$BASE/?.lua" -$(rlocation lua/lua) $(rlocation upb/tools/upbc.lua) "$@" -""", - ) - - rule( - name = name, - srcs = [script], - data = ["@lua//:lua", luamain] + luadeps, - ) - -def lua_binary(name, luamain, luadeps = []): - _lua_binary_or_test(name, luamain, luadeps, native.sh_binary) - -def lua_test(name, luamain, luadeps = []): - _lua_binary_or_test(name, luamain, luadeps, native.sh_test) - -def generated_file_staleness_test(name, outs, generated_pattern): - """Tests that checked-in file(s) match the contents of generated file(s). - - The resulting test will verify that all output files exist and have the - correct contents. If the test fails, it can be invoked with --fix to - bring the checked-in files up to date. - - Args: - name: Name of the rule. - outs: the checked-in files that are copied from generated files. - generated_pattern: the pattern for transforming each "out" file into a - generated file. For example, if generated_pattern="generated/%s" then - a file foo.txt will look for generated file generated/foo.txt. - """ - - script_name = name + ".py" - script_src = "//:tools/staleness_test.py" - - # Filter out non-existing rules so Blaze doesn't error out before we even - # run the test. - existing_outs = native.glob(include = outs) - - # The file list contains a few extra bits of information at the end. - # These get unpacked by the Config class in staleness_test_lib.py. - file_list = outs + [generated_pattern, native.package_name() or ".", name] - - native.genrule( - name = name + "_makescript", - outs = [script_name], - srcs = [script_src], - testonly = 1, - cmd = "cat $(location " + script_src + ") > $@; " + - "sed -i.bak -e 's|INSERT_FILE_LIST_HERE|" + "\\\n ".join(file_list) + "|' $@", - ) - - native.py_test( - name = name, - srcs = [script_name], - data = existing_outs + [generated_pattern % file for file in outs], - deps = [ - "//:staleness_test_lib", - ], - ) - -# upb_amalgamation() rule, with file_list aspect. - -SrcList = provider( - fields = { - "srcs": "list of srcs", - "hdrs": "list of hdrs", - }, -) - -def _file_list_aspect_impl(target, ctx): - if GeneratedSrcs in target: - srcs = target[GeneratedSrcs] - return [SrcList(srcs = srcs.srcs, hdrs = srcs.hdrs)] - - srcs = [] - hdrs = [] - for src in ctx.rule.attr.srcs: - srcs += src.files.to_list() - for hdr in ctx.rule.attr.hdrs: - hdrs += hdr.files.to_list() - for hdr in ctx.rule.attr.textual_hdrs: - hdrs += hdr.files.to_list() - return [SrcList(srcs = srcs, hdrs = hdrs)] - -_file_list_aspect = aspect( - implementation = _file_list_aspect_impl, -) - -def _upb_amalgamation(ctx): - inputs = [] - srcs = [] - for lib in ctx.attr.libs: - inputs += lib[SrcList].srcs - inputs += lib[SrcList].hdrs - srcs += [src for src in lib[SrcList].srcs if src.path.endswith("c")] - ctx.actions.run( - inputs = inputs, - outputs = ctx.outputs.outs, - arguments = [ctx.bin_dir.path + "/"] + [f.path for f in srcs] + ["-I" + root for root in _get_real_roots(inputs)], - progress_message = "Making amalgamation", - executable = ctx.executable.amalgamator, - ) - return [] - -upb_amalgamation = rule( - attrs = { - "amalgamator": attr.label( - executable = True, - cfg = "host", - ), - "libs": attr.label_list(aspects = [_file_list_aspect]), - "outs": attr.output_list(), - }, - implementation = _upb_amalgamation, -) - -def licenses(*args): - # No-op (for Google-internal usage). - pass diff --git a/lua.BUILD b/lua.BUILD deleted file mode 100644 index 7be0b59..0000000 --- a/lua.BUILD +++ /dev/null @@ -1,102 +0,0 @@ -package( - default_visibility = ["//visibility:public"], -) - -cc_library( - name = "liblua_headers", - defines = ["LUA_USE_LINUX"], - hdrs = [ - "src/lauxlib.h", - "src/lua.h", - "src/lua.hpp", - "src/luaconf.h", - "src/lualib.h", - ], - includes = ["src"], -) - -cc_library( - name = "liblua", - srcs = [ - "src/lapi.c", - "src/lapi.h", - "src/lauxlib.c", - "src/lauxlib.h", - "src/lbaselib.c", - "src/lbitlib.c", - "src/lcode.c", - "src/lcode.h", - "src/lcorolib.c", - "src/lctype.c", - "src/lctype.h", - "src/ldblib.c", - "src/ldebug.c", - "src/ldebug.h", - "src/ldo.c", - "src/ldo.h", - "src/ldump.c", - "src/lfunc.c", - "src/lfunc.h", - "src/lgc.c", - "src/lgc.h", - "src/linit.c", - "src/liolib.c", - "src/llex.c", - "src/llex.h", - "src/llimits.h", - "src/lmathlib.c", - "src/lmem.c", - "src/lmem.h", - "src/loadlib.c", - "src/lobject.c", - "src/lobject.h", - "src/lopcodes.c", - "src/lopcodes.h", - "src/loslib.c", - "src/lparser.c", - "src/lparser.h", - "src/lstate.c", - "src/lstate.h", - "src/lstring.c", - "src/lstring.h", - "src/lstrlib.c", - "src/ltable.c", - "src/ltable.h", - "src/ltablib.c", - "src/ltm.c", - "src/ltm.h", - "src/lundump.c", - "src/lundump.h", - "src/lvm.c", - "src/lvm.h", - "src/lzio.c", - "src/lzio.h", - ], - defines = ["LUA_USE_LINUX"], - hdrs = [ - "src/lauxlib.h", - "src/lua.h", - "src/lua.hpp", - "src/luaconf.h", - "src/lualib.h", - ], - includes = ["src"], - linkopts = [ - "-lm", - "-ldl", - ], -) - -cc_binary( - name = "lua", - srcs = [ - "src/lua.c", - ], - deps = [ - ":liblua", - ], - linkopts = [ - "-lreadline", - "-rdynamic", - ], -) diff --git a/ragel.BUILD b/ragel.BUILD deleted file mode 100644 index 5e3b249..0000000 --- a/ragel.BUILD +++ /dev/null @@ -1,193 +0,0 @@ - -package( - default_visibility = ["//visibility:public"], -) - -cc_binary( - name = "ragelc", - srcs = [ - "ragel/rubycodegen.cpp", - "ragel/goipgoto.h", - "ragel/cdtable.h", - "ragel/rubycodegen.h", - "ragel/gotable.h", - "ragel/gocodegen.cpp", - "ragel/rubyfflat.cpp", - "ragel/common.cpp", - "ragel/gofflat.cpp", - "ragel/cdtable.cpp", - "ragel/cdsplit.cpp", - "ragel/rlparse.cpp", - "ragel/csfgoto.cpp", - "ragel/javacodegen.cpp", - "ragel/gocodegen.h", - "ragel/mlgoto.cpp", - "ragel/fsmgraph.cpp", - "ragel/version.h", - "ragel/mlfflat.h", - "ragel/fsmgraph.h", - "ragel/fsmbase.cpp", - "ragel/fsmstate.cpp", - "ragel/gotablish.cpp", - "ragel/rubyflat.cpp", - "ragel/cdfgoto.h", - "ragel/cscodegen.h", - "ragel/mlflat.cpp", - "ragel/rubyflat.h", - "ragel/goftable.h", - "ragel/rbxgoto.cpp", - "ragel/csfflat.cpp", - "ragel/gofgoto.cpp", - "ragel/gofgoto.h", - "ragel/ragel.h", - "ragel/goftable.cpp", - "ragel/cdcodegen.cpp", - "ragel/rlparse.h", - "ragel/cdsplit.h", - "ragel/xmlcodegen.cpp", - "ragel/goipgoto.cpp", - "ragel/dotcodegen.h", - "ragel/gogoto.cpp", - "ragel/csflat.h", - "ragel/csfflat.h", - #"ragel/config.h.in", - "ragel/csipgoto.cpp", - "ragel/mltable.cpp", - "ragel/mlflat.h", - "ragel/csftable.cpp", - "ragel/cdgoto.h", - "ragel/goflat.cpp", - "ragel/rubyfflat.h", - "ragel/mlftable.h", - "ragel/rubyftable.h", - "ragel/fsmap.cpp", - "ragel/redfsm.cpp", - "ragel/goflat.h", - "ragel/parsetree.cpp", - "ragel/fsmmin.cpp", - "ragel/dotcodegen.cpp", - "ragel/redfsm.h", - "ragel/mlcodegen.cpp", - "ragel/cdfgoto.cpp", - "ragel/cssplit.cpp", - "ragel/cstable.cpp", - "ragel/javacodegen.h", - "ragel/parsedata.cpp", - "ragel/buffer.h", - "ragel/gogoto.h", - "ragel/csgoto.h", - "ragel/pcheck.h", - "ragel/rubyftable.cpp", - "ragel/csfgoto.h", - "ragel/common.h", - "ragel/cdftable.h", - "ragel/mlgoto.h", - "ragel/csgoto.cpp", - "ragel/cdflat.h", - "ragel/cdipgoto.h", - "ragel/cstable.h", - "ragel/gendata.h", - "ragel/cdfflat.cpp", - "ragel/gotable.cpp", - "ragel/cdcodegen.h", - "ragel/gendata.cpp", - "ragel/rubytable.h", - "ragel/csflat.cpp", - "ragel/inputdata.h", - "ragel/inputdata.cpp", - "ragel/rubytable.cpp", - "ragel/fsmattach.cpp", - "ragel/csipgoto.h", - "ragel/cscodegen.cpp", - "ragel/cdfflat.h", - "ragel/rbxgoto.h", - "ragel/xmlcodegen.h", - "ragel/gofflat.h", - "ragel/parsedata.h", - "ragel/mlfgoto.h", - "ragel/cdflat.cpp", - "ragel/config.h", - "ragel/rlscan.cpp", - "ragel/mlcodegen.h", - "ragel/mlfflat.cpp", - "ragel/mlftable.cpp", - "ragel/mltable.h", - "ragel/cdipgoto.cpp", - "ragel/cdftable.cpp", - "ragel/parsetree.h", - "ragel/rlscan.h", - "ragel/main.cpp", - "ragel/cssplit.h", - "ragel/mlfgoto.cpp", - "ragel/csftable.h", - "ragel/gotablish.h", - "ragel/cdgoto.cpp", - "aapl/avlmelkey.h", - "aapl/dlistmel.h", - "aapl/avliset.h", - "aapl/avlkeyless.h", - "aapl/sbstset.h", - "aapl/sbsttable.h", - "aapl/quicksort.h", - "aapl/avlitree.h", - "aapl/avlcommon.h", - "aapl/bstset.h", - "aapl/avlmel.h", - "aapl/insertsort.h", - "aapl/dlist.h", - "aapl/avlmap.h", - "aapl/mergesort.h", - "aapl/resize.h", - "aapl/bstcommon.h", - "aapl/bstmap.h", - "aapl/compare.h", - "aapl/svector.h", - "aapl/avlset.h", - "aapl/bsttable.h", - "aapl/avlikeyless.h", - "aapl/bubblesort.h", - "aapl/table.h", - "aapl/avlbasic.h", - "aapl/vector.h", - "aapl/avlimap.h", - "aapl/dlistval.h", - "aapl/dlcommon.h", - "aapl/avlibasic.h", - "aapl/sbstmap.h", - "aapl/avlimel.h", - "aapl/avlimelkey.h", - "aapl/avltree.h", - ], - includes = ["ragel", "aapl"], -) - -config_h_contents = """ -#define PACKAGE "ragel" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "ragel" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "ragel 6.10" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "ragel" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "6.10" - -/* Version number of package */ -#define VERSION "6.10" -""" - -genrule( - name = "gen_config_h", - outs = ["ragel/config.h"], - cmd = "(cat <<'HEREDOC'\n%s\nHEREDOC\n) > $@" % config_h_contents, -) diff --git a/repository_defs.bzl b/repository_defs.bzl deleted file mode 100644 index 7b6e78e..0000000 --- a/repository_defs.bzl +++ /dev/null @@ -1,15 +0,0 @@ -# A hacky way to work around the fact that native.bazel_version is only -# available from WORKSPACE macros, not BUILD macros or rules. -# -# Hopefully we can remove this if/when this is fixed: -# https://github.com/bazelbuild/bazel/issues/8305 - -def _impl(repository_ctx): - s = "bazel_version = \"" + native.bazel_version + "\"" - repository_ctx.file("bazel_version.bzl", s) - repository_ctx.file("BUILD", "") - -bazel_version_repository = repository_rule( - implementation = _impl, - local = True, -) diff --git a/tools/copy_genfiles.sh.in b/tools/copy_genfiles.sh.in deleted file mode 100755 index 5e22625..0000000 --- a/tools/copy_genfiles.sh.in +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -set -e - -BINDIR=`dirname "$0"`/.. -SRCDIR=${CMAKE_CURRENT_SOURCE_DIR} -EXIT=0 - -function try_copy() { - if [ ! -f $1 ]; then - echo "Can't find $1, skipping..." - EXIT=1 - else - cp $1 $2 - echo $1 - fi -} - -try_copy $BINDIR/google/protobuf/descriptor.upb.c $SRCDIR/google/protobuf -try_copy $BINDIR/google/protobuf/descriptor.upb.h $SRCDIR/google/protobuf -try_copy $BINDIR/upb/json/parser.c $SRCDIR/upb/json -try_copy $BINDIR/upb/pb/compile_decoder_x64.h $SRCDIR/upb/pb diff --git a/upb_proto_library.bzl b/upb_proto_library.bzl deleted file mode 100644 index 962facd..0000000 --- a/upb_proto_library.bzl +++ /dev/null @@ -1,291 +0,0 @@ -"""Public rules for using upb protos: - - upb_proto_library() - - upb_proto_reflection_library() -""" - -load("@bazel_skylib//lib:paths.bzl", "paths") -load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") - -# copybara:strip_for_google3_begin -load("@bazel_skylib//lib:versions.bzl", "versions") -load("@bazel_version//:bazel_version.bzl", "bazel_version") -# copybara:strip_end - -# Generic support code ######################################################### - -_is_bazel = not hasattr(native, "genmpm") - -def _get_real_short_path(file): - # For some reason, files from other archives have short paths that look like: - # ../com_google_protobuf/google/protobuf/descriptor.proto - short_path = file.short_path - if short_path.startswith("../"): - second_slash = short_path.index("/", 3) - short_path = short_path[second_slash + 1:] - return short_path - -def _get_real_root(file): - real_short_path = _get_real_short_path(file) - return file.path[:-len(real_short_path) - 1] - -def _get_real_roots(files): - roots = {} - for file in files: - real_root = _get_real_root(file) - if real_root: - roots[real_root] = True - return roots.keys() - -def _generate_output_file(ctx, src, extension): - if _is_bazel: - real_short_path = _get_real_short_path(src) - else: - real_short_path = paths.relativize(src.short_path, ctx.label.package) - output_filename = paths.replace_extension(real_short_path, extension) - ret = ctx.new_file(ctx.genfiles_dir, output_filename) - return ret - -def _filter_none(elems): - out = [] - for elem in elems: - if elem: - out.append(elem) - return out - -def _cc_library_func(ctx, name, hdrs, srcs, dep_ccinfos): - """Like cc_library(), but callable from rules. - - Args: - ctx: Rule context. - name: Unique name used to generate output files. - hdrs: Public headers that can be #included from other rules. - srcs: C/C++ source files. - dep_ccinfos: CcInfo providers of dependencies we should build/link against. - - Returns: - CcInfo provider for this compilation. - """ - - compilation_contexts = [info.compilation_context for info in dep_ccinfos] - linking_contexts = [info.linking_context for info in dep_ccinfos] - toolchain = find_cpp_toolchain(ctx) - feature_configuration = cc_common.configure_features( - cc_toolchain = toolchain, - requested_features = ctx.features, - unsupported_features = ctx.disabled_features, - ) - - # copybara:strip_for_google3_begin - if bazel_version == "0.24.1": - # Compatibility code until gRPC is on 0.25.2 or later. - compilation_info = cc_common.compile( - ctx = ctx, - feature_configuration = feature_configuration, - cc_toolchain = toolchain, - srcs = srcs, - hdrs = hdrs, - compilation_contexts = compilation_contexts, - ) - linking_info = cc_common.link( - ctx = ctx, - feature_configuration = feature_configuration, - cc_toolchain = toolchain, - cc_compilation_outputs = compilation_info.cc_compilation_outputs, - linking_contexts = linking_contexts, - ) - return CcInfo( - compilation_context = compilation_info.compilation_context, - linking_context = linking_info.linking_context, - ) - - if not versions.is_at_least("0.25.2", bazel_version): - fail("upb requires Bazel >=0.25.2 or 0.24.1") - - # copybara:strip_end - - blaze_only_args = {} - - if not _is_bazel: - blaze_only_args["grep_includes"] = ctx.file._grep_includes - - (compilation_context, compilation_outputs) = cc_common.compile( - actions = ctx.actions, - feature_configuration = feature_configuration, - cc_toolchain = toolchain, - name = name, - srcs = srcs, - public_hdrs = hdrs, - compilation_contexts = compilation_contexts, - **blaze_only_args - ) - (linking_context, linking_outputs) = cc_common.create_linking_context_from_compilation_outputs( - actions = ctx.actions, - name = name, - feature_configuration = feature_configuration, - cc_toolchain = toolchain, - compilation_outputs = compilation_outputs, - linking_contexts = linking_contexts, - **blaze_only_args - ) - - return CcInfo( - compilation_context = compilation_context, - linking_context = linking_context, - ) - -# upb_proto_library / upb_proto_reflection_library shared code ################# - -GeneratedSrcs = provider( - fields = { - "srcs": "list of srcs", - "hdrs": "list of hdrs", - }, -) - -_WrappedCcInfo = provider(fields = ["cc_info"]) -_WrappedGeneratedSrcs = provider(fields = ["srcs"]) - -def _compile_upb_protos(ctx, proto_info, proto_sources, ext): - srcs = [_generate_output_file(ctx, name, ext + ".c") for name in proto_sources] - hdrs = [_generate_output_file(ctx, name, ext + ".h") for name in proto_sources] - transitive_sets = list(proto_info.transitive_descriptor_sets) - ctx.actions.run( - inputs = depset( - direct = [ctx.executable._upbc, proto_info.direct_descriptor_set], - transitive = [proto_info.transitive_descriptor_sets], - ), - outputs = srcs + hdrs, - executable = ctx.executable._protoc, - arguments = [ - "--upb_out=" + _get_real_root(srcs[0]), - "--plugin=protoc-gen-upb=" + ctx.executable._upbc.path, - "--descriptor_set_in=" + ":".join([f.path for f in transitive_sets]), - ] + - [_get_real_short_path(file) for file in proto_sources], - progress_message = "Generating upb protos for :" + ctx.label.name, - ) - return GeneratedSrcs(srcs = srcs, hdrs = hdrs) - -def _upb_proto_rule_impl(ctx): - if len(ctx.attr.deps) != 1: - fail("only one deps dependency allowed.") - dep = ctx.attr.deps[0] - if _WrappedCcInfo not in dep or _WrappedGeneratedSrcs not in dep: - fail("proto_library rule must generate _WrappedCcInfo and " + - "_WrappedGeneratedSrcs (aspect should have handled this).") - cc_info = dep[_WrappedCcInfo].cc_info - srcs = dep[_WrappedGeneratedSrcs].srcs - lib = cc_info.linking_context.libraries_to_link[0] - files = _filter_none([ - lib.static_library, - lib.pic_static_library, - lib.dynamic_library, - ]) - return [ - DefaultInfo(files = depset(files + srcs.hdrs + srcs.srcs)), - srcs, - cc_info, - ] - -def _upb_proto_aspect_impl(target, ctx): - proto_info = target[ProtoInfo] - files = _compile_upb_protos(ctx, proto_info, proto_info.direct_sources, ctx.attr._ext) - deps = ctx.rule.attr.deps + ctx.attr._upb - dep_ccinfos = [dep[CcInfo] for dep in deps if CcInfo in dep] - dep_ccinfos += [dep[_WrappedCcInfo].cc_info for dep in deps if _WrappedCcInfo in dep] - cc_info = _cc_library_func( - ctx = ctx, - name = ctx.rule.attr.name + ctx.attr._ext, - hdrs = files.hdrs, - srcs = files.srcs, - dep_ccinfos = dep_ccinfos, - ) - return [_WrappedCcInfo(cc_info = cc_info), _WrappedGeneratedSrcs(srcs = files)] - -def _maybe_add(d): - if not _is_bazel: - d["_grep_includes"] = attr.label( - allow_single_file = True, - cfg = "host", - default = "//tools/cpp:grep-includes", - ) - return d - -# upb_proto_library() ########################################################## - -_upb_proto_library_aspect = aspect( - attrs = _maybe_add({ - "_upbc": attr.label( - executable = True, - cfg = "host", - default = ":protoc-gen-upb", - ), - "_protoc": attr.label( - executable = True, - cfg = "host", - default = "@com_google_protobuf//:protoc", - ), - "_cc_toolchain": attr.label( - default = "@bazel_tools//tools/cpp:current_cc_toolchain", - ), - "_upb": attr.label_list(default = [":upb"]), - "_ext": attr.string(default = ".upb"), - }), - implementation = _upb_proto_aspect_impl, - attr_aspects = ["deps"], - fragments = ["cpp"], -) - -upb_proto_library = rule( - output_to_genfiles = True, - implementation = _upb_proto_rule_impl, - attrs = { - "deps": attr.label_list( - aspects = [_upb_proto_library_aspect], - allow_rules = ["proto_library"], - providers = [ProtoInfo], - ), - }, -) - -# upb_proto_reflection_library() ############################################### - -_upb_proto_reflection_library_aspect = aspect( - attrs = _maybe_add({ - "_upbc": attr.label( - executable = True, - cfg = "host", - default = ":protoc-gen-upb", - ), - "_protoc": attr.label( - executable = True, - cfg = "host", - default = "@com_google_protobuf//:protoc", - ), - "_cc_toolchain": attr.label( - default = "@bazel_tools//tools/cpp:current_cc_toolchain", - ), - "_upb": attr.label_list( - default = [ - ":upb", - ":reflection", - ], - ), - "_ext": attr.string(default = ".upbdefs"), - }), - implementation = _upb_proto_aspect_impl, - attr_aspects = ["deps"], - fragments = ["cpp"], -) - -upb_proto_reflection_library = rule( - output_to_genfiles = True, - implementation = _upb_proto_rule_impl, - attrs = { - "deps": attr.label_list( - aspects = [_upb_proto_reflection_library_aspect], - allow_rules = ["proto_library"], - providers = [ProtoInfo], - ), - }, -) diff --git a/workspace_deps.bzl b/workspace_deps.bzl deleted file mode 100644 index a77d584..0000000 --- a/workspace_deps.bzl +++ /dev/null @@ -1,36 +0,0 @@ - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") -load("@upb//:repository_defs.bzl", "bazel_version_repository") - -def upb_deps(): - bazel_version_repository( - name = "bazel_version", - ) - - git_repository( - name = "absl", - commit = "070f6e47b33a2909d039e620c873204f78809492", - remote = "https://github.com/abseil/abseil-cpp.git", - shallow_since = "1541627663 -0500", - ) - - git_repository( - name = "com_google_protobuf", - remote = "https://github.com/protocolbuffers/protobuf.git", - commit = "d41002663fd04325ead28439dfd5ce2822b0d6fb", - ) - - http_archive( - name = "bazel_skylib", - strip_prefix = "bazel-skylib-master", - urls = ["https://github.com/bazelbuild/bazel-skylib/archive/master.tar.gz"], - ) - - http_archive( - name = "zlib", - build_file = "@com_google_protobuf//:third_party/zlib.BUILD", - sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1", - strip_prefix = "zlib-1.2.11", - urls = ["https://zlib.net/zlib-1.2.11.tar.gz"], - ) -- cgit v1.2.3