ruby_memprofiler_pprof 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/ext/ruby_memprofiler_pprof/backtrace.c +429 -0
- data/ext/ruby_memprofiler_pprof/collector.c +1055 -0
- data/ext/ruby_memprofiler_pprof/compat.c +182 -0
- data/ext/ruby_memprofiler_pprof/extconf.rb +72 -0
- data/ext/ruby_memprofiler_pprof/pprof.upb.c +170 -0
- data/ext/ruby_memprofiler_pprof/pprof.upb.h +848 -0
- data/ext/ruby_memprofiler_pprof/pprof_out.c +285 -0
- data/ext/ruby_memprofiler_pprof/ruby_memprofiler_pprof.c +11 -0
- data/ext/ruby_memprofiler_pprof/ruby_memprofiler_pprof.h +301 -0
- data/ext/ruby_memprofiler_pprof/strtab.c +391 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/BUILD +719 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/CONTRIBUTING.md +37 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/DESIGN.md +201 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/LICENSE +26 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/README.md +78 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/WORKSPACE +58 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/BUILD +53 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/amalgamate.py +129 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/build_defs.bzl +160 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/lua.BUILD +127 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/protobuf.patch +54 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/py_proto_library.bzl +137 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/python_downloads.bzl +84 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/system_python.bzl +101 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/upb_proto_library.bzl +388 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/workspace_deps.bzl +89 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/BUILD +252 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/BUILD.googleapis +54 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/benchmark.cc +333 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/build_defs.bzl +88 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/compare.py +118 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/descriptor.proto +888 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/descriptor_sv.proto +890 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/empty.proto +6 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_protobuf_binary_cc.py +64 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_synthetic_protos.py +118 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_upb_binary_c.py +65 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/BUILD.bazel +102 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/README.md +23 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/build_defs.bzl +73 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/make_cmakelists.py +340 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/staleness_test.py +57 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/staleness_test_lib.py +186 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/docs/render.py +43 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/docs/style-guide.md +65 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/docs/vs-cpp-protos.md +255 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/docs/wrapping-upb.md +444 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/BUILD +216 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/convert.c +394 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/convert.h +63 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor.c +1694 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor.h +80 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_containers.c +704 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_containers.h +114 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_pool.c +650 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_pool.h +48 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/dist/BUILD.bazel +193 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/dist/dist.bzl +190 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/extension_dict.c +247 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/extension_dict.h +39 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/map.c +522 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/map.h +66 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/message.c +1909 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/message.h +101 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/minimal_test.py +183 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/BUILD +70 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/README.md +11 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_database_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_pool_test_wrapper.py +45 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_test_wrapper.py +46 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/generator_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/json_format_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/keywords_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/message_factory_test_wrapper.py +37 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/message_test_wrapper.py +52 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/proto_builder_test_wrapper.py +32 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/pyproto_test_wrapper.bzl +36 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/reflection_test_wrapper.py +45 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/service_reflection_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/symbol_database_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/text_encoding_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/text_format_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/unknown_fields_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/well_known_types_test_wrapper.py +36 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/wire_format_test_wrapper.py +30 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/protobuf.c +350 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/protobuf.h +230 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/py_extension.bzl +55 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/python_api.h +61 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/repeated.c +828 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/repeated.h +69 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/unknown_fields.c +404 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/unknown_fields.h +39 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/python/version_script.lds +6 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/LICENSE +32 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/README.google +9 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/console.lua +156 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/lunit.lua +725 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/BUILD +19 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/LICENSE +21 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/naive.c +92 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/range2-neon.c +157 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/range2-sse.c +170 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/utf8_range.h +9 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/BUILD.bazel +129 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/README.md +8 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/def.c +939 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/lua_proto_library.bzl +138 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/main.c +83 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/msg.c +1118 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/test.proto +69 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/test_upb.lua +846 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.c +258 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.h +132 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.lua +58 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upbc.cc +134 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/collections.c +192 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/collections.h +174 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/conformance_upb.c +346 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/conformance_upb_failures.txt +1 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode.c +1221 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode.h +94 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_fast.c +1055 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_fast.h +153 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_internal.h +211 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.c +3262 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.h +414 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.hpp +438 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/empty.proto +1 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/encode.c +604 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/encode.h +71 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/fuzz/BUILD +13 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/fuzz/file_descriptor_parsenew_fuzzer.cc +43 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_decode.c +1509 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_decode.h +47 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_encode.c +776 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_encode.h +62 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.c +1147 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.h +189 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.hpp +112 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors.c +363 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors.h +263 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors_internal.h +59 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors_test.cc +425 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_test.cc +230 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg.c +428 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg.h +114 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_internal.h +836 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_test.cc +491 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_test.proto +195 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/port_def.inc +261 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/port_undef.inc +62 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.c +323 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.h +109 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.hpp +37 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/table.c +926 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/table_internal.h +385 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test.proto +74 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_cpp.cc +186 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_cpp.proto +12 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_generated_code.cc +977 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_table.cc +580 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/text_encode.c +472 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/text_encode.h +64 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.c +362 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.h +378 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.hpp +115 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb_internal.h +68 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/BUILD +121 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/README.md +7 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare.c +300 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare.h +66 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare_test.cc +236 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto.c +572 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto.h +62 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_public_import_test.proto +32 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_regular_import_test.proto +36 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_test.cc +143 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_test.proto +119 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_weak_import_test.proto +28 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_wweak_import_test.proto +28 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields.c +311 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields.h +94 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields_test.cc +202 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields_test.proto +48 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/BUILD +78 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/common.cc +77 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/common.h +112 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/protoc-gen-upb.cc +1997 -0
- data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/protoc-gen-upbdefs.cc +193 -0
- data/lib/ruby_memprofiler_pprof/atfork.rb +77 -0
- data/lib/ruby_memprofiler_pprof/block_flusher.rb +61 -0
- data/lib/ruby_memprofiler_pprof/file_flusher.rb +45 -0
- data/lib/ruby_memprofiler_pprof/profile_app.rb +30 -0
- data/lib/ruby_memprofiler_pprof/profile_data.rb +18 -0
- data/lib/ruby_memprofiler_pprof/version.rb +5 -0
- data/lib/ruby_memprofiler_pprof.rb +8 -0
- data/libexec/ruby_memprofiler_pprof_profile +16 -0
- metadata +257 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/python3
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2009-2021, Google LLC
|
|
4
|
+
# All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# Redistribution and use in source and binary forms, with or without
|
|
7
|
+
# modification, are permitted provided that the following conditions are met:
|
|
8
|
+
# * Redistributions of source code must retain the above copyright
|
|
9
|
+
# notice, this list of conditions and the following disclaimer.
|
|
10
|
+
# * Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
# documentation and/or other materials provided with the distribution.
|
|
13
|
+
# * Neither the name of Google LLC nor the
|
|
14
|
+
# names of its contributors may be used to endorse or promote products
|
|
15
|
+
# derived from this software without specific prior written permission.
|
|
16
|
+
#
|
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
18
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
19
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
20
|
+
# DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
|
|
21
|
+
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
22
|
+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
23
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
24
|
+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
26
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
|
|
28
|
+
import sys
|
|
29
|
+
import re
|
|
30
|
+
|
|
31
|
+
include = sys.argv[1]
|
|
32
|
+
msg_basename = sys.argv[2]
|
|
33
|
+
count = 1
|
|
34
|
+
|
|
35
|
+
m = re.search(r'(.*\D)(\d+)$', sys.argv[2])
|
|
36
|
+
if m:
|
|
37
|
+
msg_basename = m.group(1)
|
|
38
|
+
count = int(m.group(2))
|
|
39
|
+
|
|
40
|
+
print('''
|
|
41
|
+
#include "{include}"
|
|
42
|
+
|
|
43
|
+
char buf[1];
|
|
44
|
+
|
|
45
|
+
int main() {{
|
|
46
|
+
'''.format(include=include))
|
|
47
|
+
|
|
48
|
+
def RefMessage(name):
|
|
49
|
+
print('''
|
|
50
|
+
{{
|
|
51
|
+
{name} proto;
|
|
52
|
+
proto.ParseFromArray(buf, 0);
|
|
53
|
+
proto.SerializePartialToArray(&buf[0], 0);
|
|
54
|
+
}}
|
|
55
|
+
'''.format(name=name))
|
|
56
|
+
|
|
57
|
+
RefMessage(msg_basename)
|
|
58
|
+
|
|
59
|
+
for i in range(2, count + 1):
|
|
60
|
+
RefMessage(msg_basename + str(i))
|
|
61
|
+
|
|
62
|
+
print('''
|
|
63
|
+
return 0;
|
|
64
|
+
}''')
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
#!/usr/bin/python3
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2009-2021, Google LLC
|
|
4
|
+
# All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# Redistribution and use in source and binary forms, with or without
|
|
7
|
+
# modification, are permitted provided that the following conditions are met:
|
|
8
|
+
# * Redistributions of source code must retain the above copyright
|
|
9
|
+
# notice, this list of conditions and the following disclaimer.
|
|
10
|
+
# * Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
# documentation and/or other materials provided with the distribution.
|
|
13
|
+
# * Neither the name of Google LLC nor the
|
|
14
|
+
# names of its contributors may be used to endorse or promote products
|
|
15
|
+
# derived from this software without specific prior written permission.
|
|
16
|
+
#
|
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
18
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
19
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
20
|
+
# DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
|
|
21
|
+
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
22
|
+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
23
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
24
|
+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
26
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
|
|
28
|
+
import sys
|
|
29
|
+
import random
|
|
30
|
+
|
|
31
|
+
base = sys.argv[1]
|
|
32
|
+
|
|
33
|
+
field_freqs = [
|
|
34
|
+
(('bool', 'optional'), 8.321),
|
|
35
|
+
(('bool', 'repeated'), 0.033),
|
|
36
|
+
(('bytes', 'optional'), 0.809),
|
|
37
|
+
(('bytes', 'repeated'), 0.065),
|
|
38
|
+
(('double', 'optional'), 2.845),
|
|
39
|
+
(('double', 'repeated'), 0.143),
|
|
40
|
+
(('fixed32', 'optional'), 0.084),
|
|
41
|
+
(('fixed32', 'repeated'), 0.012),
|
|
42
|
+
(('fixed64', 'optional'), 0.204),
|
|
43
|
+
(('fixed64', 'repeated'), 0.027),
|
|
44
|
+
(('float', 'optional'), 2.355),
|
|
45
|
+
(('float', 'repeated'), 0.132),
|
|
46
|
+
(('int32', 'optional'), 6.717),
|
|
47
|
+
(('int32', 'repeated'), 0.366),
|
|
48
|
+
(('int64', 'optional'), 9.678),
|
|
49
|
+
(('int64', 'repeated'), 0.425),
|
|
50
|
+
(('sfixed32', 'optional'), 0.018),
|
|
51
|
+
(('sfixed32', 'repeated'), 0.005),
|
|
52
|
+
(('sfixed64', 'optional'), 0.022),
|
|
53
|
+
(('sfixed64', 'repeated'), 0.005),
|
|
54
|
+
(('sint32', 'optional'), 0.026),
|
|
55
|
+
(('sint32', 'repeated'), 0.009),
|
|
56
|
+
(('sint64', 'optional'), 0.018),
|
|
57
|
+
(('sint64', 'repeated'), 0.006),
|
|
58
|
+
(('string', 'optional'), 25.461),
|
|
59
|
+
(('string', 'repeated'), 2.606),
|
|
60
|
+
(('Enum', 'optional'), 6.16),
|
|
61
|
+
(('Enum', 'repeated'), 0.576),
|
|
62
|
+
(('Message', 'optional'), 22.472),
|
|
63
|
+
(('Message', 'repeated'), 7.766),
|
|
64
|
+
(('uint32', 'optional'), 1.289),
|
|
65
|
+
(('uint32', 'repeated'), 0.051),
|
|
66
|
+
(('uint64', 'optional'), 1.044),
|
|
67
|
+
(('uint64', 'repeated'), 0.079),
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
population = [item[0] for item in field_freqs]
|
|
71
|
+
weights = [item[1] for item in field_freqs]
|
|
72
|
+
|
|
73
|
+
def choices(k):
|
|
74
|
+
if sys.version_info >= (3, 6):
|
|
75
|
+
return random.choices(population=population, weights=weights, k=k)
|
|
76
|
+
else:
|
|
77
|
+
print("WARNING: old Python version, field types are not properly weighted!")
|
|
78
|
+
return [random.choice(population) for _ in range(k)]
|
|
79
|
+
|
|
80
|
+
with open(base + "/100_msgs.proto", "w") as f:
|
|
81
|
+
f.write('syntax = "proto3";\n')
|
|
82
|
+
f.write('package upb_benchmark;\n')
|
|
83
|
+
f.write('message Message {}\n')
|
|
84
|
+
for i in range(2, 101):
|
|
85
|
+
f.write('message Message{i} {{}}\n'.format(i=i))
|
|
86
|
+
|
|
87
|
+
with open(base + "/200_msgs.proto", "w") as f:
|
|
88
|
+
f.write('syntax = "proto3";\n')
|
|
89
|
+
f.write('package upb_benchmark;\n')
|
|
90
|
+
f.write('message Message {}\n')
|
|
91
|
+
for i in range(2, 501):
|
|
92
|
+
f.write('message Message{i} {{}}\n'.format(i=i))
|
|
93
|
+
|
|
94
|
+
with open(base + "/100_fields.proto", "w") as f:
|
|
95
|
+
f.write('syntax = "proto2";\n')
|
|
96
|
+
f.write('package upb_benchmark;\n')
|
|
97
|
+
f.write('enum Enum { ZERO = 0; }\n')
|
|
98
|
+
f.write('message Message {\n')
|
|
99
|
+
i = 1
|
|
100
|
+
random.seed(a=0, version=2)
|
|
101
|
+
for field in choices(100):
|
|
102
|
+
field_type, label = field
|
|
103
|
+
f.write(' {label} {field_type} field{i} = {i};\n'.format(i=i, label=label, field_type=field_type))
|
|
104
|
+
i += 1
|
|
105
|
+
f.write('}\n')
|
|
106
|
+
|
|
107
|
+
with open(base + "/200_fields.proto", "w") as f:
|
|
108
|
+
f.write('syntax = "proto2";\n')
|
|
109
|
+
f.write('package upb_benchmark;\n')
|
|
110
|
+
f.write('enum Enum { ZERO = 0; }\n')
|
|
111
|
+
f.write('message Message {\n')
|
|
112
|
+
i = 1
|
|
113
|
+
random.seed(a=0, version=2)
|
|
114
|
+
for field in choices(200):
|
|
115
|
+
field_type, label = field
|
|
116
|
+
f.write(' {label} {field_type} field{i} = {i};\n'.format(i=i, label=label,field_type=field_type))
|
|
117
|
+
i += 1
|
|
118
|
+
f.write('}\n')
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/python3
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2009-2021, Google LLC
|
|
4
|
+
# All rights reserved.
|
|
5
|
+
#
|
|
6
|
+
# Redistribution and use in source and binary forms, with or without
|
|
7
|
+
# modification, are permitted provided that the following conditions are met:
|
|
8
|
+
# * Redistributions of source code must retain the above copyright
|
|
9
|
+
# notice, this list of conditions and the following disclaimer.
|
|
10
|
+
# * Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
# documentation and/or other materials provided with the distribution.
|
|
13
|
+
# * Neither the name of Google LLC nor the
|
|
14
|
+
# names of its contributors may be used to endorse or promote products
|
|
15
|
+
# derived from this software without specific prior written permission.
|
|
16
|
+
#
|
|
17
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
18
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
19
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
20
|
+
# DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
|
|
21
|
+
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
22
|
+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
23
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
24
|
+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
25
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
26
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
|
|
28
|
+
import sys
|
|
29
|
+
import re
|
|
30
|
+
|
|
31
|
+
include = sys.argv[1]
|
|
32
|
+
msg_basename = sys.argv[2]
|
|
33
|
+
count = 1
|
|
34
|
+
|
|
35
|
+
m = re.search(r'(.*\D)(\d+)$', sys.argv[2])
|
|
36
|
+
if m:
|
|
37
|
+
msg_basename = m.group(1)
|
|
38
|
+
count = int(m.group(2))
|
|
39
|
+
|
|
40
|
+
print('''
|
|
41
|
+
#include "{include}"
|
|
42
|
+
|
|
43
|
+
char buf[1];
|
|
44
|
+
|
|
45
|
+
int main() {{
|
|
46
|
+
upb_Arena *arena = upb_Arena_New();
|
|
47
|
+
size_t size;
|
|
48
|
+
'''.format(include=include))
|
|
49
|
+
|
|
50
|
+
def RefMessage(name):
|
|
51
|
+
print('''
|
|
52
|
+
{{
|
|
53
|
+
{name} *proto = {name}_parse(buf, 1, arena);
|
|
54
|
+
{name}_serialize(proto, arena, &size);
|
|
55
|
+
}}
|
|
56
|
+
'''.format(name=name))
|
|
57
|
+
|
|
58
|
+
RefMessage(msg_basename)
|
|
59
|
+
|
|
60
|
+
for i in range(2, count + 1):
|
|
61
|
+
RefMessage(msg_basename + str(i))
|
|
62
|
+
|
|
63
|
+
print('''
|
|
64
|
+
return 0;
|
|
65
|
+
}''')
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Copyright (c) 2009-2021, Google LLC
|
|
2
|
+
# All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Redistribution and use in source and binary forms, with or without
|
|
5
|
+
# modification, are permitted provided that the following conditions are met:
|
|
6
|
+
# * Redistributions of source code must retain the above copyright
|
|
7
|
+
# notice, this list of conditions and the following disclaimer.
|
|
8
|
+
# * Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
# documentation and/or other materials provided with the distribution.
|
|
11
|
+
# * Neither the name of Google LLC nor the
|
|
12
|
+
# names of its contributors may be used to endorse or promote products
|
|
13
|
+
# derived from this software without specific prior written permission.
|
|
14
|
+
#
|
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
16
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
17
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
|
|
19
|
+
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
20
|
+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
21
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
22
|
+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
23
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
24
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
25
|
+
|
|
26
|
+
load(
|
|
27
|
+
":build_defs.bzl",
|
|
28
|
+
"generated_file_staleness_test",
|
|
29
|
+
)
|
|
30
|
+
load(
|
|
31
|
+
"//bazel:build_defs.bzl",
|
|
32
|
+
"make_shell_script",
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
licenses(["notice"])
|
|
36
|
+
|
|
37
|
+
exports_files(["staleness_test.py"])
|
|
38
|
+
|
|
39
|
+
py_library(
|
|
40
|
+
name = "staleness_test_lib",
|
|
41
|
+
testonly = 1,
|
|
42
|
+
srcs = ["staleness_test_lib.py"],
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
py_binary(
|
|
46
|
+
name = "make_cmakelists",
|
|
47
|
+
srcs = ["make_cmakelists.py"],
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
genrule(
|
|
51
|
+
name = "gen_cmakelists",
|
|
52
|
+
srcs = [
|
|
53
|
+
"//:BUILD",
|
|
54
|
+
"//:WORKSPACE",
|
|
55
|
+
],
|
|
56
|
+
outs = ["generated-in/CMakeLists.txt"],
|
|
57
|
+
cmd = "$(location :make_cmakelists) $@",
|
|
58
|
+
tools = [":make_cmakelists"],
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
genrule(
|
|
62
|
+
name = "copy_protos",
|
|
63
|
+
srcs = ["//:descriptor_upb_proto"],
|
|
64
|
+
outs = [
|
|
65
|
+
"generated-in/google/protobuf/descriptor.upb.c",
|
|
66
|
+
"generated-in/google/protobuf/descriptor.upb.h",
|
|
67
|
+
],
|
|
68
|
+
cmd = "cp $(SRCS) $(@D)/generated-in/google/protobuf",
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
generated_file_staleness_test(
|
|
72
|
+
name = "test_generated_files",
|
|
73
|
+
outs = [
|
|
74
|
+
"CMakeLists.txt",
|
|
75
|
+
"google/protobuf/descriptor.upb.c",
|
|
76
|
+
"google/protobuf/descriptor.upb.h",
|
|
77
|
+
],
|
|
78
|
+
generated_pattern = "generated-in/%s",
|
|
79
|
+
tags = ["manual"],
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
# Test the CMake build #########################################################
|
|
83
|
+
|
|
84
|
+
make_shell_script(
|
|
85
|
+
name = "gen_run_cmake_build",
|
|
86
|
+
out = "run_cmake_build.sh",
|
|
87
|
+
contents = "set -ex\n" +
|
|
88
|
+
"(cd cmake/generated-in && rsync -avR . ..)\n" +
|
|
89
|
+
"mkdir build && cd build && cmake ../cmake && make -j8 && make test",
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
sh_test(
|
|
93
|
+
name = "cmake_build",
|
|
94
|
+
srcs = ["run_cmake_build.sh"],
|
|
95
|
+
data = [
|
|
96
|
+
":copy_protos",
|
|
97
|
+
":gen_cmakelists",
|
|
98
|
+
"//:cmake_files",
|
|
99
|
+
"//third_party/utf8_range:cmake_files",
|
|
100
|
+
],
|
|
101
|
+
deps = ["@bazel_tools//tools/bash/runfiles"],
|
|
102
|
+
)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
# upb CMake build (EXPERIMENTAL)
|
|
3
|
+
|
|
4
|
+
upb's CMake support is experimental. The core library builds successfully
|
|
5
|
+
under CMake, and this is verified by the Bazel tests in this directory.
|
|
6
|
+
However there is no support for building the upb compiler or for generating
|
|
7
|
+
.upb.c/upb.h files. This means upb's CMake support is incomplete at best,
|
|
8
|
+
unless your application is intended to be purely reflective.
|
|
9
|
+
|
|
10
|
+
If you find this CMake setup useful in its current state, please consider
|
|
11
|
+
filing an issue so we know. If you have suggestions for how it could be
|
|
12
|
+
more useful (and particularly if you can contribute some code for it)
|
|
13
|
+
please feel free to file an issue for that too. Do keep in mind that upb
|
|
14
|
+
does not currently provide any ABI stability, so we want to avoid providing
|
|
15
|
+
a shared library.
|
|
16
|
+
|
|
17
|
+
The CMakeLists.txt is generated from the Bazel BUILD files using the Python
|
|
18
|
+
scripts in this directory. We want to avoid having two separate sources of
|
|
19
|
+
truth that both need to be updated when a file is added or removed.
|
|
20
|
+
|
|
21
|
+
This directory also contains some generated files that would be created
|
|
22
|
+
on the fly during a Bazel build. These are automaticaly kept in sync by
|
|
23
|
+
the Bazel test `//cmake:test_generated_files`.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Copyright (c) 2009-2021, Google LLC
|
|
2
|
+
# All rights reserved.
|
|
3
|
+
#
|
|
4
|
+
# Redistribution and use in source and binary forms, with or without
|
|
5
|
+
# modification, are permitted provided that the following conditions are met:
|
|
6
|
+
# * Redistributions of source code must retain the above copyright
|
|
7
|
+
# notice, this list of conditions and the following disclaimer.
|
|
8
|
+
# * Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
# notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
# documentation and/or other materials provided with the distribution.
|
|
11
|
+
# * Neither the name of Google LLC nor the
|
|
12
|
+
# names of its contributors may be used to endorse or promote products
|
|
13
|
+
# derived from this software without specific prior written permission.
|
|
14
|
+
#
|
|
15
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
16
|
+
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
17
|
+
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
18
|
+
# DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY
|
|
19
|
+
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
20
|
+
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
21
|
+
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
22
|
+
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
23
|
+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
24
|
+
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
25
|
+
|
|
26
|
+
"""Bazel support functions related to CMake support."""
|
|
27
|
+
|
|
28
|
+
def generated_file_staleness_test(name, outs, generated_pattern, **kwargs):
|
|
29
|
+
"""Tests that checked-in file(s) match the contents of generated file(s).
|
|
30
|
+
|
|
31
|
+
The resulting test will verify that all output files exist and have the
|
|
32
|
+
correct contents. If the test fails, it can be invoked with --fix to
|
|
33
|
+
bring the checked-in files up to date.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
name: Name of the rule.
|
|
37
|
+
outs: the checked-in files that are copied from generated files.
|
|
38
|
+
generated_pattern: the pattern for transforming each "out" file into a
|
|
39
|
+
generated file. For example, if generated_pattern="generated/%s" then
|
|
40
|
+
a file foo.txt will look for generated file generated/foo.txt.
|
|
41
|
+
**kwargs: Additional keyword arguments to pass through to py_test().
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
script_name = name + ".py"
|
|
45
|
+
script_src = ":staleness_test.py"
|
|
46
|
+
|
|
47
|
+
# Filter out non-existing rules so Blaze doesn't error out before we even
|
|
48
|
+
# run the test.
|
|
49
|
+
existing_outs = native.glob(include = outs)
|
|
50
|
+
|
|
51
|
+
# The file list contains a few extra bits of information at the end.
|
|
52
|
+
# These get unpacked by the Config class in staleness_test_lib.py.
|
|
53
|
+
file_list = outs + [generated_pattern, native.package_name() or ".", name]
|
|
54
|
+
|
|
55
|
+
native.genrule(
|
|
56
|
+
name = name + "_makescript",
|
|
57
|
+
outs = [script_name],
|
|
58
|
+
srcs = [script_src],
|
|
59
|
+
testonly = 1,
|
|
60
|
+
cmd = "cat $(location " + script_src + ") > $@; " +
|
|
61
|
+
"sed -i.bak -e 's|INSERT_FILE_LIST_HERE|" + "\\\n ".join(file_list) + "|' $@",
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
native.py_test(
|
|
65
|
+
name = name,
|
|
66
|
+
srcs = [script_name],
|
|
67
|
+
data = existing_outs + [generated_pattern % file for file in outs],
|
|
68
|
+
python_version = "PY3",
|
|
69
|
+
deps = [
|
|
70
|
+
":staleness_test_lib",
|
|
71
|
+
],
|
|
72
|
+
**kwargs
|
|
73
|
+
)
|