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.
Files changed (200) hide show
  1. checksums.yaml +7 -0
  2. data/ext/ruby_memprofiler_pprof/backtrace.c +429 -0
  3. data/ext/ruby_memprofiler_pprof/collector.c +1055 -0
  4. data/ext/ruby_memprofiler_pprof/compat.c +182 -0
  5. data/ext/ruby_memprofiler_pprof/extconf.rb +72 -0
  6. data/ext/ruby_memprofiler_pprof/pprof.upb.c +170 -0
  7. data/ext/ruby_memprofiler_pprof/pprof.upb.h +848 -0
  8. data/ext/ruby_memprofiler_pprof/pprof_out.c +285 -0
  9. data/ext/ruby_memprofiler_pprof/ruby_memprofiler_pprof.c +11 -0
  10. data/ext/ruby_memprofiler_pprof/ruby_memprofiler_pprof.h +301 -0
  11. data/ext/ruby_memprofiler_pprof/strtab.c +391 -0
  12. data/ext/ruby_memprofiler_pprof/vendor/upb/BUILD +719 -0
  13. data/ext/ruby_memprofiler_pprof/vendor/upb/CONTRIBUTING.md +37 -0
  14. data/ext/ruby_memprofiler_pprof/vendor/upb/DESIGN.md +201 -0
  15. data/ext/ruby_memprofiler_pprof/vendor/upb/LICENSE +26 -0
  16. data/ext/ruby_memprofiler_pprof/vendor/upb/README.md +78 -0
  17. data/ext/ruby_memprofiler_pprof/vendor/upb/WORKSPACE +58 -0
  18. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/BUILD +53 -0
  19. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/amalgamate.py +129 -0
  20. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/build_defs.bzl +160 -0
  21. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/lua.BUILD +127 -0
  22. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/protobuf.patch +54 -0
  23. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/py_proto_library.bzl +137 -0
  24. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/python_downloads.bzl +84 -0
  25. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/system_python.bzl +101 -0
  26. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/upb_proto_library.bzl +388 -0
  27. data/ext/ruby_memprofiler_pprof/vendor/upb/bazel/workspace_deps.bzl +89 -0
  28. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/BUILD +252 -0
  29. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/BUILD.googleapis +54 -0
  30. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/benchmark.cc +333 -0
  31. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/build_defs.bzl +88 -0
  32. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/compare.py +118 -0
  33. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/descriptor.proto +888 -0
  34. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/descriptor_sv.proto +890 -0
  35. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/empty.proto +6 -0
  36. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_protobuf_binary_cc.py +64 -0
  37. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_synthetic_protos.py +118 -0
  38. data/ext/ruby_memprofiler_pprof/vendor/upb/benchmarks/gen_upb_binary_c.py +65 -0
  39. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/BUILD.bazel +102 -0
  40. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/README.md +23 -0
  41. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/build_defs.bzl +73 -0
  42. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/make_cmakelists.py +340 -0
  43. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/staleness_test.py +57 -0
  44. data/ext/ruby_memprofiler_pprof/vendor/upb/cmake/staleness_test_lib.py +186 -0
  45. data/ext/ruby_memprofiler_pprof/vendor/upb/docs/render.py +43 -0
  46. data/ext/ruby_memprofiler_pprof/vendor/upb/docs/style-guide.md +65 -0
  47. data/ext/ruby_memprofiler_pprof/vendor/upb/docs/vs-cpp-protos.md +255 -0
  48. data/ext/ruby_memprofiler_pprof/vendor/upb/docs/wrapping-upb.md +444 -0
  49. data/ext/ruby_memprofiler_pprof/vendor/upb/python/BUILD +216 -0
  50. data/ext/ruby_memprofiler_pprof/vendor/upb/python/convert.c +394 -0
  51. data/ext/ruby_memprofiler_pprof/vendor/upb/python/convert.h +63 -0
  52. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor.c +1694 -0
  53. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor.h +80 -0
  54. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_containers.c +704 -0
  55. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_containers.h +114 -0
  56. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_pool.c +650 -0
  57. data/ext/ruby_memprofiler_pprof/vendor/upb/python/descriptor_pool.h +48 -0
  58. data/ext/ruby_memprofiler_pprof/vendor/upb/python/dist/BUILD.bazel +193 -0
  59. data/ext/ruby_memprofiler_pprof/vendor/upb/python/dist/dist.bzl +190 -0
  60. data/ext/ruby_memprofiler_pprof/vendor/upb/python/extension_dict.c +247 -0
  61. data/ext/ruby_memprofiler_pprof/vendor/upb/python/extension_dict.h +39 -0
  62. data/ext/ruby_memprofiler_pprof/vendor/upb/python/map.c +522 -0
  63. data/ext/ruby_memprofiler_pprof/vendor/upb/python/map.h +66 -0
  64. data/ext/ruby_memprofiler_pprof/vendor/upb/python/message.c +1909 -0
  65. data/ext/ruby_memprofiler_pprof/vendor/upb/python/message.h +101 -0
  66. data/ext/ruby_memprofiler_pprof/vendor/upb/python/minimal_test.py +183 -0
  67. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/BUILD +70 -0
  68. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/README.md +11 -0
  69. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_database_test_wrapper.py +30 -0
  70. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_pool_test_wrapper.py +45 -0
  71. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/descriptor_test_wrapper.py +46 -0
  72. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/generator_test_wrapper.py +30 -0
  73. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/json_format_test_wrapper.py +30 -0
  74. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/keywords_test_wrapper.py +30 -0
  75. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/message_factory_test_wrapper.py +37 -0
  76. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/message_test_wrapper.py +52 -0
  77. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/proto_builder_test_wrapper.py +32 -0
  78. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/pyproto_test_wrapper.bzl +36 -0
  79. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/reflection_test_wrapper.py +45 -0
  80. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/service_reflection_test_wrapper.py +30 -0
  81. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/symbol_database_test_wrapper.py +30 -0
  82. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/text_encoding_test_wrapper.py +30 -0
  83. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/text_format_test_wrapper.py +30 -0
  84. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/unknown_fields_test_wrapper.py +30 -0
  85. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/well_known_types_test_wrapper.py +36 -0
  86. data/ext/ruby_memprofiler_pprof/vendor/upb/python/pb_unit_tests/wire_format_test_wrapper.py +30 -0
  87. data/ext/ruby_memprofiler_pprof/vendor/upb/python/protobuf.c +350 -0
  88. data/ext/ruby_memprofiler_pprof/vendor/upb/python/protobuf.h +230 -0
  89. data/ext/ruby_memprofiler_pprof/vendor/upb/python/py_extension.bzl +55 -0
  90. data/ext/ruby_memprofiler_pprof/vendor/upb/python/python_api.h +61 -0
  91. data/ext/ruby_memprofiler_pprof/vendor/upb/python/repeated.c +828 -0
  92. data/ext/ruby_memprofiler_pprof/vendor/upb/python/repeated.h +69 -0
  93. data/ext/ruby_memprofiler_pprof/vendor/upb/python/unknown_fields.c +404 -0
  94. data/ext/ruby_memprofiler_pprof/vendor/upb/python/unknown_fields.h +39 -0
  95. data/ext/ruby_memprofiler_pprof/vendor/upb/python/version_script.lds +6 -0
  96. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/LICENSE +32 -0
  97. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/README.google +9 -0
  98. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/console.lua +156 -0
  99. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/lunit/lunit.lua +725 -0
  100. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/BUILD +19 -0
  101. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/LICENSE +21 -0
  102. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/naive.c +92 -0
  103. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/range2-neon.c +157 -0
  104. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/range2-sse.c +170 -0
  105. data/ext/ruby_memprofiler_pprof/vendor/upb/third_party/utf8_range/utf8_range.h +9 -0
  106. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/BUILD.bazel +129 -0
  107. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/README.md +8 -0
  108. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/def.c +939 -0
  109. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/lua_proto_library.bzl +138 -0
  110. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/main.c +83 -0
  111. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/msg.c +1118 -0
  112. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/test.proto +69 -0
  113. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/test_upb.lua +846 -0
  114. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.c +258 -0
  115. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.h +132 -0
  116. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upb.lua +58 -0
  117. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/bindings/lua/upbc.cc +134 -0
  118. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/collections.c +192 -0
  119. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/collections.h +174 -0
  120. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/conformance_upb.c +346 -0
  121. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/conformance_upb_failures.txt +1 -0
  122. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode.c +1221 -0
  123. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode.h +94 -0
  124. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_fast.c +1055 -0
  125. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_fast.h +153 -0
  126. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/decode_internal.h +211 -0
  127. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.c +3262 -0
  128. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.h +414 -0
  129. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/def.hpp +438 -0
  130. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/empty.proto +1 -0
  131. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/encode.c +604 -0
  132. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/encode.h +71 -0
  133. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/fuzz/BUILD +13 -0
  134. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/fuzz/file_descriptor_parsenew_fuzzer.cc +43 -0
  135. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_decode.c +1509 -0
  136. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_decode.h +47 -0
  137. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_encode.c +776 -0
  138. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/json_encode.h +62 -0
  139. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.c +1147 -0
  140. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.h +189 -0
  141. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table.hpp +112 -0
  142. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors.c +363 -0
  143. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors.h +263 -0
  144. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors_internal.h +59 -0
  145. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_accessors_test.cc +425 -0
  146. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/mini_table_test.cc +230 -0
  147. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg.c +428 -0
  148. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg.h +114 -0
  149. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_internal.h +836 -0
  150. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_test.cc +491 -0
  151. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/msg_test.proto +195 -0
  152. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/port_def.inc +261 -0
  153. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/port_undef.inc +62 -0
  154. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.c +323 -0
  155. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.h +109 -0
  156. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/reflection.hpp +37 -0
  157. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/table.c +926 -0
  158. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/table_internal.h +385 -0
  159. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test.proto +74 -0
  160. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_cpp.cc +186 -0
  161. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_cpp.proto +12 -0
  162. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_generated_code.cc +977 -0
  163. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/test_table.cc +580 -0
  164. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/text_encode.c +472 -0
  165. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/text_encode.h +64 -0
  166. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.c +362 -0
  167. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.h +378 -0
  168. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb.hpp +115 -0
  169. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/upb_internal.h +68 -0
  170. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/BUILD +121 -0
  171. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/README.md +7 -0
  172. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare.c +300 -0
  173. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare.h +66 -0
  174. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/compare_test.cc +236 -0
  175. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto.c +572 -0
  176. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto.h +62 -0
  177. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_public_import_test.proto +32 -0
  178. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_regular_import_test.proto +36 -0
  179. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_test.cc +143 -0
  180. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_test.proto +119 -0
  181. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_weak_import_test.proto +28 -0
  182. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/def_to_proto_wweak_import_test.proto +28 -0
  183. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields.c +311 -0
  184. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields.h +94 -0
  185. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields_test.cc +202 -0
  186. data/ext/ruby_memprofiler_pprof/vendor/upb/upb/util/required_fields_test.proto +48 -0
  187. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/BUILD +78 -0
  188. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/common.cc +77 -0
  189. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/common.h +112 -0
  190. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/protoc-gen-upb.cc +1997 -0
  191. data/ext/ruby_memprofiler_pprof/vendor/upb/upbc/protoc-gen-upbdefs.cc +193 -0
  192. data/lib/ruby_memprofiler_pprof/atfork.rb +77 -0
  193. data/lib/ruby_memprofiler_pprof/block_flusher.rb +61 -0
  194. data/lib/ruby_memprofiler_pprof/file_flusher.rb +45 -0
  195. data/lib/ruby_memprofiler_pprof/profile_app.rb +30 -0
  196. data/lib/ruby_memprofiler_pprof/profile_data.rb +18 -0
  197. data/lib/ruby_memprofiler_pprof/version.rb +5 -0
  198. data/lib/ruby_memprofiler_pprof.rb +8 -0
  199. data/libexec/ruby_memprofiler_pprof_profile +16 -0
  200. metadata +257 -0
@@ -0,0 +1,388 @@
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
+ """Public rules for using upb protos:
27
+ - upb_proto_library()
28
+ - upb_proto_reflection_library()
29
+ """
30
+
31
+ load("@bazel_skylib//lib:paths.bzl", "paths")
32
+ load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
33
+
34
+ # Generic support code #########################################################
35
+
36
+ # begin:github_only
37
+ _is_google3 = False
38
+ # end:github_only
39
+
40
+ # begin:google_only
41
+ # _is_google3 = True
42
+ # end:google_only
43
+
44
+ def _get_real_short_path(file):
45
+ # For some reason, files from other archives have short paths that look like:
46
+ # ../com_google_protobuf/google/protobuf/descriptor.proto
47
+ short_path = file.short_path
48
+ if short_path.startswith("../"):
49
+ second_slash = short_path.index("/", 3)
50
+ short_path = short_path[second_slash + 1:]
51
+
52
+ # Sometimes it has another few prefixes like:
53
+ # _virtual_imports/any_proto/google/protobuf/any.proto
54
+ # benchmarks/_virtual_imports/100_msgs_proto/benchmarks/100_msgs.proto
55
+ # We want just google/protobuf/any.proto.
56
+ virtual_imports = "_virtual_imports/"
57
+ if virtual_imports in short_path:
58
+ short_path = short_path.split(virtual_imports)[1].split("/", 1)[1]
59
+ return short_path
60
+
61
+ def _get_real_root(file):
62
+ real_short_path = _get_real_short_path(file)
63
+ return file.path[:-len(real_short_path) - 1]
64
+
65
+ def _generate_output_file(ctx, src, extension):
66
+ real_short_path = _get_real_short_path(src)
67
+ real_short_path = paths.relativize(real_short_path, ctx.label.package)
68
+ output_filename = paths.replace_extension(real_short_path, extension)
69
+ ret = ctx.actions.declare_file(output_filename)
70
+ return ret
71
+
72
+ def _filter_none(elems):
73
+ out = []
74
+ for elem in elems:
75
+ if elem:
76
+ out.append(elem)
77
+ return out
78
+
79
+ def _cc_library_func(ctx, name, hdrs, srcs, copts, dep_ccinfos):
80
+ """Like cc_library(), but callable from rules.
81
+
82
+ Args:
83
+ ctx: Rule context.
84
+ name: Unique name used to generate output files.
85
+ hdrs: Public headers that can be #included from other rules.
86
+ srcs: C/C++ source files.
87
+ dep_ccinfos: CcInfo providers of dependencies we should build/link against.
88
+
89
+ Returns:
90
+ CcInfo provider for this compilation.
91
+ """
92
+
93
+ compilation_contexts = [info.compilation_context for info in dep_ccinfos]
94
+ linking_contexts = [info.linking_context for info in dep_ccinfos]
95
+ toolchain = find_cpp_toolchain(ctx)
96
+ feature_configuration = cc_common.configure_features(
97
+ ctx = ctx,
98
+ cc_toolchain = toolchain,
99
+ requested_features = ctx.features,
100
+ unsupported_features = ctx.disabled_features,
101
+ )
102
+
103
+ blaze_only_args = {}
104
+
105
+ if _is_google3:
106
+ blaze_only_args["grep_includes"] = ctx.file._grep_includes
107
+
108
+ (compilation_context, compilation_outputs) = cc_common.compile(
109
+ actions = ctx.actions,
110
+ feature_configuration = feature_configuration,
111
+ cc_toolchain = toolchain,
112
+ name = name,
113
+ srcs = srcs,
114
+ public_hdrs = hdrs,
115
+ user_compile_flags = copts,
116
+ compilation_contexts = compilation_contexts,
117
+ **blaze_only_args
118
+ )
119
+ (linking_context, linking_outputs) = cc_common.create_linking_context_from_compilation_outputs(
120
+ actions = ctx.actions,
121
+ name = name,
122
+ feature_configuration = feature_configuration,
123
+ cc_toolchain = toolchain,
124
+ compilation_outputs = compilation_outputs,
125
+ linking_contexts = linking_contexts,
126
+ **blaze_only_args
127
+ )
128
+
129
+ return CcInfo(
130
+ compilation_context = compilation_context,
131
+ linking_context = linking_context,
132
+ )
133
+
134
+ # Build setting for whether fasttable code generation is enabled ###############
135
+
136
+ _FastTableEnabled = provider(
137
+ fields = {
138
+ "enabled": "whether fasttable is enabled",
139
+ },
140
+ )
141
+
142
+ def fasttable_enabled_impl(ctx):
143
+ raw_setting = ctx.build_setting_value
144
+
145
+ if raw_setting:
146
+ # TODO(haberman): check that the target CPU supports fasttable.
147
+ pass
148
+
149
+ return _FastTableEnabled(enabled = raw_setting)
150
+
151
+ upb_fasttable_enabled = rule(
152
+ implementation = fasttable_enabled_impl,
153
+ build_setting = config.bool(flag = True),
154
+ )
155
+
156
+ # Dummy rule to expose select() copts to aspects ##############################
157
+
158
+ _UpbProtoLibraryCopts = provider(
159
+ fields = {
160
+ "copts": "copts for upb_proto_library()",
161
+ },
162
+ )
163
+
164
+ def upb_proto_library_copts_impl(ctx):
165
+ return _UpbProtoLibraryCopts(copts = ctx.attr.copts)
166
+
167
+ upb_proto_library_copts = rule(
168
+ implementation = upb_proto_library_copts_impl,
169
+ attrs = {"copts": attr.string_list(default = [])},
170
+ )
171
+
172
+ # upb_proto_library / upb_proto_reflection_library shared code #################
173
+
174
+ GeneratedSrcsInfo = provider(
175
+ fields = {
176
+ "srcs": "list of srcs",
177
+ "hdrs": "list of hdrs",
178
+ },
179
+ )
180
+
181
+ _UpbWrappedCcInfo = provider(fields = ["cc_info"])
182
+ _UpbDefsWrappedCcInfo = provider(fields = ["cc_info"])
183
+ _WrappedGeneratedSrcsInfo = provider(fields = ["srcs"])
184
+ _WrappedDefsGeneratedSrcsInfo = provider(fields = ["srcs"])
185
+
186
+ def _compile_upb_protos(ctx, generator, proto_info, proto_sources):
187
+ if len(proto_sources) == 0:
188
+ return GeneratedSrcsInfo(srcs = [], hdrs = [])
189
+
190
+ ext = "." + generator
191
+ tool = getattr(ctx.executable, "_gen_" + generator)
192
+ srcs = [_generate_output_file(ctx, name, ext + ".c") for name in proto_sources]
193
+ hdrs = [_generate_output_file(ctx, name, ext + ".h") for name in proto_sources]
194
+ transitive_sets = proto_info.transitive_descriptor_sets.to_list()
195
+ fasttable_enabled = (hasattr(ctx.attr, "_fasttable_enabled") and
196
+ ctx.attr._fasttable_enabled[_FastTableEnabled].enabled)
197
+ codegen_params = "fasttable:" if fasttable_enabled else ""
198
+ ctx.actions.run(
199
+ inputs = depset(
200
+ direct = [proto_info.direct_descriptor_set],
201
+ transitive = [proto_info.transitive_descriptor_sets],
202
+ ),
203
+ tools = [tool],
204
+ outputs = srcs + hdrs,
205
+ executable = ctx.executable._protoc,
206
+ arguments = [
207
+ "--" + generator + "_out=" + codegen_params + _get_real_root(srcs[0]),
208
+ "--plugin=protoc-gen-" + generator + "=" + tool.path,
209
+ "--descriptor_set_in=" + ctx.configuration.host_path_separator.join([f.path for f in transitive_sets]),
210
+ ] +
211
+ [_get_real_short_path(file) for file in proto_sources],
212
+ progress_message = "Generating upb protos for :" + ctx.label.name,
213
+ mnemonic = "GenUpbProtos",
214
+ )
215
+ return GeneratedSrcsInfo(srcs = srcs, hdrs = hdrs)
216
+
217
+ def _upb_proto_rule_impl(ctx):
218
+ if len(ctx.attr.deps) != 1:
219
+ fail("only one deps dependency allowed.")
220
+ dep = ctx.attr.deps[0]
221
+
222
+ if _WrappedDefsGeneratedSrcsInfo in dep:
223
+ srcs = dep[_WrappedDefsGeneratedSrcsInfo].srcs
224
+ elif _WrappedGeneratedSrcsInfo in dep:
225
+ srcs = dep[_WrappedGeneratedSrcsInfo].srcs
226
+ else:
227
+ fail("proto_library rule must generate _WrappedGeneratedSrcsInfo or " +
228
+ "_WrappedDefsGeneratedSrcsInfo (aspect should have handled this).")
229
+
230
+ if _UpbDefsWrappedCcInfo in dep:
231
+ cc_info = dep[_UpbDefsWrappedCcInfo].cc_info
232
+ elif _UpbWrappedCcInfo in dep:
233
+ cc_info = dep[_UpbWrappedCcInfo].cc_info
234
+ else:
235
+ fail("proto_library rule must generate _UpbWrappedCcInfo or " +
236
+ "_UpbDefsWrappedCcInfo (aspect should have handled this).")
237
+
238
+ lib = cc_info.linking_context.linker_inputs.to_list()[0].libraries[0]
239
+ files = _filter_none([
240
+ lib.static_library,
241
+ lib.pic_static_library,
242
+ lib.dynamic_library,
243
+ ])
244
+ return [
245
+ DefaultInfo(files = depset(files + srcs.hdrs + srcs.srcs)),
246
+ srcs,
247
+ cc_info,
248
+ ]
249
+
250
+ def _upb_proto_aspect_impl(target, ctx, generator, cc_provider, file_provider):
251
+ proto_info = target[ProtoInfo]
252
+ files = _compile_upb_protos(ctx, generator, proto_info, proto_info.direct_sources)
253
+ deps = ctx.rule.attr.deps + getattr(ctx.attr, "_" + generator)
254
+ dep_ccinfos = [dep[CcInfo] for dep in deps if CcInfo in dep]
255
+ dep_ccinfos += [dep[_UpbWrappedCcInfo].cc_info for dep in deps if _UpbWrappedCcInfo in dep]
256
+ dep_ccinfos += [dep[_UpbDefsWrappedCcInfo].cc_info for dep in deps if _UpbDefsWrappedCcInfo in dep]
257
+ if generator == "upbdefs":
258
+ if _UpbWrappedCcInfo not in target:
259
+ fail("Target should have _UpbWrappedCcInfo provider")
260
+ dep_ccinfos += [target[_UpbWrappedCcInfo].cc_info]
261
+ cc_info = _cc_library_func(
262
+ ctx = ctx,
263
+ name = ctx.rule.attr.name + "." + generator,
264
+ hdrs = files.hdrs,
265
+ srcs = files.srcs,
266
+ copts = ctx.attr._copts[_UpbProtoLibraryCopts].copts,
267
+ dep_ccinfos = dep_ccinfos,
268
+ )
269
+ return [cc_provider(cc_info = cc_info), file_provider(srcs = files)]
270
+
271
+ def _upb_proto_library_aspect_impl(target, ctx):
272
+ return _upb_proto_aspect_impl(target, ctx, "upb", _UpbWrappedCcInfo, _WrappedGeneratedSrcsInfo)
273
+
274
+ def _upb_proto_reflection_library_aspect_impl(target, ctx):
275
+ return _upb_proto_aspect_impl(target, ctx, "upbdefs", _UpbDefsWrappedCcInfo, _WrappedDefsGeneratedSrcsInfo)
276
+
277
+ def _maybe_add(d):
278
+ if _is_google3:
279
+ d["_grep_includes"] = attr.label(
280
+ allow_single_file = True,
281
+ cfg = "exec",
282
+ default = "@bazel_tools//tools/cpp:grep-includes",
283
+ )
284
+ return d
285
+
286
+ # upb_proto_library() ##########################################################
287
+
288
+ _upb_proto_library_aspect = aspect(
289
+ attrs = _maybe_add({
290
+ "_copts": attr.label(
291
+ default = "//:upb_proto_library_copts__for_generated_code_only_do_not_use",
292
+ ),
293
+ "_gen_upb": attr.label(
294
+ executable = True,
295
+ cfg = "exec",
296
+ default = "//upbc:protoc-gen-upb",
297
+ ),
298
+ "_protoc": attr.label(
299
+ executable = True,
300
+ cfg = "exec",
301
+ default = "@com_google_protobuf//:protoc",
302
+ ),
303
+ "_cc_toolchain": attr.label(
304
+ default = "@bazel_tools//tools/cpp:current_cc_toolchain",
305
+ ),
306
+ "_upb": attr.label_list(default = [
307
+ "//:generated_code_support__only_for_generated_code_do_not_use__i_give_permission_to_break_me",
308
+ ]),
309
+ "_fasttable_enabled": attr.label(default = "//:fasttable_enabled"),
310
+ }),
311
+ implementation = _upb_proto_library_aspect_impl,
312
+ provides = [
313
+ _UpbWrappedCcInfo,
314
+ _WrappedGeneratedSrcsInfo,
315
+ ],
316
+ attr_aspects = ["deps"],
317
+ fragments = ["cpp"],
318
+ toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
319
+ incompatible_use_toolchain_transition = True,
320
+ )
321
+
322
+ upb_proto_library = rule(
323
+ output_to_genfiles = True,
324
+ implementation = _upb_proto_rule_impl,
325
+ attrs = {
326
+ "deps": attr.label_list(
327
+ aspects = [_upb_proto_library_aspect],
328
+ allow_rules = ["proto_library"],
329
+ providers = [ProtoInfo],
330
+ ),
331
+ },
332
+ )
333
+
334
+ # upb_proto_reflection_library() ###############################################
335
+
336
+ _upb_proto_reflection_library_aspect = aspect(
337
+ attrs = _maybe_add({
338
+ "_copts": attr.label(
339
+ default = "//:upb_proto_library_copts__for_generated_code_only_do_not_use",
340
+ ),
341
+ "_gen_upbdefs": attr.label(
342
+ executable = True,
343
+ cfg = "exec",
344
+ default = "//upbc:protoc-gen-upbdefs",
345
+ ),
346
+ "_protoc": attr.label(
347
+ executable = True,
348
+ cfg = "exec",
349
+ default = "@com_google_protobuf//:protoc",
350
+ ),
351
+ "_cc_toolchain": attr.label(
352
+ default = "@bazel_tools//tools/cpp:current_cc_toolchain",
353
+ ),
354
+ "_upbdefs": attr.label_list(
355
+ default = [
356
+ "//:generated_reflection_support__only_for_generated_code_do_not_use__i_give_permission_to_break_me",
357
+ ],
358
+ ),
359
+ }),
360
+ implementation = _upb_proto_reflection_library_aspect_impl,
361
+ provides = [
362
+ _UpbDefsWrappedCcInfo,
363
+ _WrappedDefsGeneratedSrcsInfo,
364
+ ],
365
+ required_aspect_providers = [
366
+ _UpbWrappedCcInfo,
367
+ _WrappedGeneratedSrcsInfo,
368
+ ],
369
+ attr_aspects = ["deps"],
370
+ fragments = ["cpp"],
371
+ toolchains = ["@bazel_tools//tools/cpp:toolchain_type"],
372
+ incompatible_use_toolchain_transition = True,
373
+ )
374
+
375
+ upb_proto_reflection_library = rule(
376
+ output_to_genfiles = True,
377
+ implementation = _upb_proto_rule_impl,
378
+ attrs = {
379
+ "deps": attr.label_list(
380
+ aspects = [
381
+ _upb_proto_library_aspect,
382
+ _upb_proto_reflection_library_aspect,
383
+ ],
384
+ allow_rules = ["proto_library"],
385
+ providers = [ProtoInfo],
386
+ ),
387
+ },
388
+ )
@@ -0,0 +1,89 @@
1
+ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
2
+ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
3
+ load("//bazel:python_downloads.bzl", "python_nuget_package", "python_source_archive")
4
+ load("//bazel:system_python.bzl", "system_python")
5
+
6
+ def _github_archive(repo, commit, **kwargs):
7
+ repo_name = repo.split("/")[-1]
8
+ http_archive(
9
+ urls = [repo + "/archive/" + commit + ".zip"],
10
+ strip_prefix = repo_name + "-" + commit,
11
+ **kwargs
12
+ )
13
+
14
+ def upb_deps():
15
+ maybe(
16
+ http_archive,
17
+ name = "com_google_absl",
18
+ url = "https://github.com/abseil/abseil-cpp/archive/b9b925341f9e90f5e7aa0cf23f036c29c7e454eb.zip",
19
+ strip_prefix = "abseil-cpp-b9b925341f9e90f5e7aa0cf23f036c29c7e454eb",
20
+ sha256 = "bb2a0b57c92b6666e8acb00f4cbbfce6ddb87e83625fb851b0e78db581340617",
21
+ )
22
+
23
+ maybe(
24
+ _github_archive,
25
+ name = "com_google_protobuf",
26
+ repo = "https://github.com/protocolbuffers/protobuf",
27
+ commit = "b180b2809f7e77fdf7dd075d26a7421085bac58f",
28
+ patches = ["//bazel:protobuf.patch"],
29
+ )
30
+
31
+ rules_python_version = "740825b7f74930c62f44af95c9a4c1bd428d2c53" # Latest @ 2021-06-23
32
+
33
+ maybe(
34
+ http_archive,
35
+ name = "rules_python",
36
+ strip_prefix = "rules_python-{}".format(rules_python_version),
37
+ url = "https://github.com/bazelbuild/rules_python/archive/{}.zip".format(rules_python_version),
38
+ sha256 = "09a3c4791c61b62c2cbc5b2cbea4ccc32487b38c7a2cc8f87a794d7a659cc742",
39
+ )
40
+
41
+ maybe(
42
+ http_archive,
43
+ name = "bazel_skylib",
44
+ strip_prefix = "bazel-skylib-main",
45
+ urls = ["https://github.com/bazelbuild/bazel-skylib/archive/main.tar.gz"],
46
+ )
47
+
48
+ system_python(
49
+ name = "system_python",
50
+ )
51
+
52
+ #Python Downloads
53
+
54
+ python_source_archive(
55
+ name = "python-3.7.0",
56
+ sha256 = "85bb9feb6863e04fb1700b018d9d42d1caac178559ffa453d7e6a436e259fd0d",
57
+ )
58
+ python_nuget_package(
59
+ name = "nuget_python_i686_3.7.0",
60
+ sha256 = "a8bb49fa1ca62ad55430fcafaca1b58015e22943e66b1a87d5e7cef2556c6a54",
61
+ )
62
+ python_nuget_package(
63
+ name = "nuget_python_x86-64_3.7.0",
64
+ sha256 = "66eb796a5bdb1e6787b8f655a1237a6b6964af2115b7627cf4f0032cf068b4b2",
65
+ )
66
+ python_nuget_package(
67
+ name = "nuget_python_i686_3.8.0",
68
+ sha256 = "87a6481f5eef30b42ac12c93f06f73bd0b8692f26313b76a6615d1641c4e7bca",
69
+ )
70
+ python_nuget_package(
71
+ name = "nuget_python_x86-64_3.8.0",
72
+ sha256 = "96c61321ce90dd053c8a04f305a5f6cc6d91350b862db34440e4a4f069b708a0",
73
+ )
74
+ python_nuget_package(
75
+ name = "nuget_python_i686_3.9.0",
76
+ sha256 = "229abecbe49dc08fe5709e0b31e70edfb3b88f23335ebfc2904c44f940fd59b6",
77
+ )
78
+ python_nuget_package(
79
+ name = "nuget_python_x86-64_3.9.0",
80
+ sha256 = "6af58a733e7dfbfcdd50d55788134393d6ffe7ab8270effbf724bdb786558832",
81
+ )
82
+ python_nuget_package(
83
+ name = "nuget_python_i686_3.10.0",
84
+ sha256 = "e115e102eb90ce160ab0ef7506b750a8d7ecc385bde0a496f02a54337a8bc333",
85
+ )
86
+ python_nuget_package(
87
+ name = "nuget_python_x86-64_3.10.0",
88
+ sha256 = "4474c83c25625d93e772e926f95f4cd398a0abbb52793625fa30f39af3d2cc00",
89
+ )