diff --git a/Makefile.am b/Makefile.am index f4ef2e990faa1..1aae94c41a5ef 100644 --- a/Makefile.am +++ b/Makefile.am @@ -35,10 +35,6 @@ clean-local: echo "Making clean in googletest"; \ cd third_party/googletest && $(MAKE) $(AM_MAKEFLAGS) clean; \ fi; \ - if test -e benchmarks/Makefile; then \ - echo "Making clean in benchmarks"; \ - cd benchmarks && $(MAKE) $(AM_MAKEFLAGS) clean; \ - fi; \ if test -e objectivec/DevTools; then \ echo "Cleaning any ObjC pyc files"; \ rm -f objectivec/DevTools/*.pyc; \ diff --git a/benchmarks/BUILD.bazel b/benchmarks/BUILD.bazel index cd80ca69e1aa2..93097c3d89402 100644 --- a/benchmarks/BUILD.bazel +++ b/benchmarks/BUILD.bazel @@ -2,6 +2,11 @@ load("@rules_cc//cc:defs.bzl", "cc_proto_library") load("@rules_java//java:defs.bzl", "java_proto_library") load("@rules_pkg//:mappings.bzl", "pkg_filegroup", "pkg_files", "strip_prefix") load("@rules_proto//proto:defs.bzl", "proto_library") +load("//:protobuf.bzl", "py_proto_library", "php_proto_library") + +################################################################################ +# Benchmark Protos +################################################################################ proto_library( name = "benchmarks_proto", @@ -34,6 +39,26 @@ java_proto_library( ], ) +php_proto_library( + name = "benchmarks_php_proto", + srcs = ["benchmarks.proto"], + outs = [ + "Benchmarks/BenchmarkDataset.php", + "GPBMetadata/Benchmarks.php", + ], + visibility = [ + "//benchmarks:__subpackages__", + ], +) + +py_proto_library( + name = "benchmarks_py_proto", + srcs = ["benchmarks.proto"], + visibility = [ + "//benchmarks:__subpackages__", + ], +) + proto_library( name = "google_size_proto", srcs = [ @@ -65,19 +90,13 @@ java_proto_library( ], ) +################################################################################ +# Distribution files +################################################################################ + pkg_files( name = "dist_files", - srcs = glob( - [ - "*", - "python/*.cc", - "util/*.cc", - ], - exclude = [ - "__init__.py", # not in autotools dist - "go/*", - ], - ), + srcs = glob(["*"]), strip_prefix = strip_prefix.from_root(""), ) @@ -93,6 +112,10 @@ pkg_filegroup( "//benchmarks/datasets/google_message2:dist_files", "//benchmarks/datasets/google_message3:dist_files", "//benchmarks/datasets/google_message4:dist_files", + "//benchmarks/java:dist_files", + "//benchmarks/php:dist_files", + "//benchmarks/python:dist_files", + "//benchmarks/util:dist_files", ], visibility = ["//pkg:__pkg__"], ) diff --git a/benchmarks/Makefile.am b/benchmarks/Makefile.am deleted file mode 100644 index 0595fb4cd31e3..0000000000000 --- a/benchmarks/Makefile.am +++ /dev/null @@ -1,337 +0,0 @@ -benchmarks_protoc_inputs_benchmark_wrapper = \ - benchmarks.proto - -benchmarks_protoc_inputs = \ - datasets/google_message1/proto3/benchmark_message1_proto3.proto - -benchmarks_protoc_inputs_proto2 = \ - datasets/google_message1/proto2/benchmark_message1_proto2.proto \ - datasets/google_message2/benchmark_message2.proto \ - datasets/google_message3/benchmark_message3.proto \ - datasets/google_message3/benchmark_message3_1.proto \ - datasets/google_message3/benchmark_message3_2.proto \ - datasets/google_message3/benchmark_message3_3.proto \ - datasets/google_message3/benchmark_message3_4.proto \ - datasets/google_message3/benchmark_message3_5.proto \ - datasets/google_message3/benchmark_message3_6.proto \ - datasets/google_message3/benchmark_message3_7.proto \ - datasets/google_message3/benchmark_message3_8.proto \ - datasets/google_message4/benchmark_message4.proto \ - datasets/google_message4/benchmark_message4_1.proto \ - datasets/google_message4/benchmark_message4_2.proto \ - datasets/google_message4/benchmark_message4_3.proto - -make_tmp_dir: - mkdir -p 'tmp/java/src/main/java' - touch make_tmp_dir - - -# We have to cd to $(srcdir) before executing protoc because $(protoc_inputs) is -# relative to srcdir, which may not be the same as the current directory when -# building out-of-tree. -protoc_middleman: make_tmp_dir $(top_srcdir)/src/protoc$(EXEEXT) $(benchmarks_protoc_inputs) $(well_known_type_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd/cpp --java_out=$$oldpwd/tmp/java/src/main/java --python_out=$$oldpwd/tmp $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) ) - touch protoc_middleman - -protoc_middleman2: make_tmp_dir $(top_srcdir)/src/protoc$(EXEEXT) $(benchmarks_protoc_inputs_proto2) $(well_known_type_protoc_inputs) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd/cpp --java_out=$$oldpwd/tmp/java/src/main/java --python_out=$$oldpwd/tmp $(benchmarks_protoc_inputs_proto2) ) - touch protoc_middleman2 - -all_data = $$(find $$(cd $(srcdir) && pwd) -type f -name "dataset.*.pb" -not -path "$$(cd $(srcdir) && pwd)/tmp/*") - -############# CPP RULES ############## - -benchmarks_protoc_outputs = \ - cpp/benchmarks.pb.cc \ - cpp/datasets/google_message1/proto3/benchmark_message1_proto3.pb.cc - -benchmarks_protoc_outputs_header = \ - cpp/benchmarks.pb.h \ - cpp/datasets/google_message1/proto3/benchmark_message1_proto3.pb.h - -benchmarks_protoc_outputs_proto2_header = \ - cpp/datasets/google_message1/proto2/benchmark_message1_proto2.pb.h \ - cpp/datasets/google_message2/benchmark_message2.pb.h \ - cpp/datasets/google_message3/benchmark_message3.pb.h \ - cpp/datasets/google_message3/benchmark_message3_1.pb.h \ - cpp/datasets/google_message3/benchmark_message3_2.pb.h \ - cpp/datasets/google_message3/benchmark_message3_3.pb.h \ - cpp/datasets/google_message3/benchmark_message3_4.pb.h \ - cpp/datasets/google_message3/benchmark_message3_5.pb.h \ - cpp/datasets/google_message3/benchmark_message3_6.pb.h \ - cpp/datasets/google_message3/benchmark_message3_7.pb.h \ - cpp/datasets/google_message3/benchmark_message3_8.pb.h \ - cpp/datasets/google_message4/benchmark_message4.pb.h \ - cpp/datasets/google_message4/benchmark_message4_1.pb.h \ - cpp/datasets/google_message4/benchmark_message4_2.pb.h \ - cpp/datasets/google_message4/benchmark_message4_3.pb.h - -benchmarks_protoc_outputs_proto2 = \ - cpp/datasets/google_message1/proto2/benchmark_message1_proto2.pb.cc \ - cpp/datasets/google_message2/benchmark_message2.pb.cc \ - cpp/datasets/google_message3/benchmark_message3.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_1.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_2.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_3.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_4.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_5.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_6.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_7.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_8.pb.cc \ - cpp/datasets/google_message4/benchmark_message4.pb.cc \ - cpp/datasets/google_message4/benchmark_message4_1.pb.cc \ - cpp/datasets/google_message4/benchmark_message4_2.pb.cc \ - cpp/datasets/google_message4/benchmark_message4_3.pb.cc - - -$(benchmarks_protoc_outputs): protoc_middleman -$(benchmarks_protoc_outputs_header): protoc_middleman -$(benchmarks_protoc_outputs_proto2): protoc_middleman2 -$(benchmarks_protoc_outputs_proto2_header): protoc_middleman2 - -initialize_submodule: - oldpwd=`pwd` - cd $(top_srcdir) && git submodule update --init -r third_party/benchmark && \ - cd third_party/benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make - cd $$oldpwd - touch initialize_submodule - -$(top_srcdir)/third_party/benchmark/src/libbenchmark.a: initialize_submodule - -AM_CXXFLAGS = $(NO_OPT_CXXFLAGS) $(PROTOBUF_OPT_FLAG) -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare - -bin_PROGRAMS = cpp-benchmark - -cpp_benchmark_LDADD = $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/third_party/benchmark/src/libbenchmark.a -cpp_benchmark_SOURCES = cpp/cpp_benchmark.cc -cpp_benchmark_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp -I$(top_srcdir)/third_party/benchmark/include -# Explicit deps because BUILT_SOURCES are only done before a "make all/check" -# so a direct "make test_cpp" could fail if parallel enough. -# See: https://www.gnu.org/software/automake/manual/html_node/Built-Sources-Example.html#Recording-Dependencies-manually -cpp/cpp_benchmark-cpp_benchmark.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/third_party/benchmark/src/libbenchmark.a -cpp/benchmark-cpp_benchmark.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/third_party/benchmark/src/libbenchmark.a -nodist_cpp_benchmark_SOURCES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - $(benchmarks_protoc_outputs_header) - -cpp: protoc_middleman protoc_middleman2 cpp-benchmark initialize_submodule - ./cpp-benchmark $(all_data) - -############ CPP RULES END ############ - -############# JAVA RULES ############## - -java_benchmark_testing_files = \ - java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java - -javac_middleman: $(java_benchmark_testing_files) protoc_middleman protoc_middleman2 - cp -r $(srcdir)/java tmp - mkdir -p tmp/java/lib - cp $(top_srcdir)/java/core/target/*.jar tmp/java/lib/protobuf-java.jar - cd tmp/java && mvn clean compile assembly:single -Dprotobuf.version=$(PACKAGE_VERSION) && cd ../.. - @touch javac_middleman - -java-benchmark: javac_middleman - @echo "Writing shortcut script java-benchmark..." - @echo '#! /bin/bash' > java-benchmark - @echo 'all_data=""' >> java-benchmark - @echo 'conf=()' >> java-benchmark - @echo 'data_files=""' >> java-benchmark - @echo 'for arg in $$@; do if [[ $${arg:0:1} == "-" ]]; then conf+=($$arg); else data_files+="$$arg,"; fi; done' >> java-benchmark - @echo 'java -cp '\"tmp/java/target/*:$(top_srcdir)/java/core/target/*:$(top_srcdir)/java/util/target/*\"" \\" >>java-benchmark - @echo ' com.google.caliper.runner.CaliperMain com.google.protobuf.ProtoCaliperBenchmark -i runtime '"\\" >> java-benchmark - @echo ' -b serializeToByteArray,serializeToMemoryStream,deserializeFromByteArray,deserializeFromMemoryStream '"\\" >> java-benchmark - @echo ' -DdataFile=$${data_files:0:-1} $${conf[*]}' >> java-benchmark - @chmod +x java-benchmark - -java: protoc_middleman protoc_middleman2 java-benchmark - ./java-benchmark $(all_data) - -############# JAVA RULES END ############## - - -############# PYTHON RULES ############## - -python_add_init: protoc_middleman protoc_middleman2 - all_file=`find tmp -type f -regex '.*\.py'` && \ - for file in $${all_file[@]}; do \ - path="$${file%/*}"; \ - while true; do \ - touch "$$path/__init__.py" && chmod +x "$$path/__init__.py"; \ - if [[ $$path != *"/"* ]]; then break; fi; \ - path=$${path%/*}; \ - done \ - done - -python_cpp_pkg_flags = `pkg-config --cflags --libs python3` - -lib_LTLIBRARIES = libbenchmark_messages.la -libbenchmark_messages_la_SOURCES = python/python_benchmark_messages.cc -libbenchmark_messages_la_LIBADD = $(top_srcdir)/src/.libs/libprotobuf.la -libbenchmark_messages_la_LDFLAGS = -version-info 1:0:0 -export-dynamic -libbenchmark_messages_la_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp $(python_cpp_pkg_flags) -libbenchmark_messages_la-python_benchmark_messages.$(OBJEXT): $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) -nodist_libbenchmark_messages_la_SOURCES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - $(benchmarks_protoc_outputs_header) - -python-pure-python-benchmark: python_add_init - @echo "Writing shortcut script python-pure-python-benchmark..." - @echo '#! /bin/bash' > python-pure-python-benchmark - @echo export LD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-pure-python-benchmark - @echo export DYLD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-pure-python-benchmark - @echo export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=\'python\' >> python-pure-python-benchmark - @echo cp $(srcdir)/python/py_benchmark.py tmp >> python-pure-python-benchmark - @echo python3 tmp/py_benchmark.py '$$@' >> python-pure-python-benchmark - @chmod +x python-pure-python-benchmark - -python-cpp-reflection-benchmark: python_add_init - @echo "Writing shortcut script python-cpp-reflection-benchmark..." - @echo '#! /bin/bash' > python-cpp-reflection-benchmark - @echo export LD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-cpp-reflection-benchmark - @echo export DYLD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-cpp-reflection-benchmark - @echo export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=\'cpp\' >> python-cpp-reflection-benchmark - @echo cp $(srcdir)/python/py_benchmark.py tmp >> python-cpp-reflection-benchmark - @echo python3 tmp/py_benchmark.py '$$@' >> python-cpp-reflection-benchmark - @chmod +x python-cpp-reflection-benchmark - -python-cpp-generated-code-benchmark: python_add_init libbenchmark_messages.la - @echo "Writing shortcut script python-cpp-generated-code-benchmark..." - @echo '#! /bin/bash' > python-cpp-generated-code-benchmark - @echo export LD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-cpp-generated-code-benchmark - @echo export DYLD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-cpp-generated-code-benchmark - @echo export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=\'cpp\' >> python-cpp-generated-code-benchmark - @echo cp $(srcdir)/python/py_benchmark.py tmp >> python-cpp-generated-code-benchmark - @echo python3 tmp/py_benchmark.py --cpp_generated '$$@' >> python-cpp-generated-code-benchmark - @chmod +x python-cpp-generated-code-benchmark - -python-pure-python: python-pure-python-benchmark - ./python-pure-python-benchmark $(all_data) - -python-cpp-reflection: python-cpp-reflection-benchmark - ./python-cpp-reflection-benchmark $(all_data) - -python-cpp-generated-code: python-cpp-generated-code-benchmark - ./python-cpp-generated-code-benchmark $(all_data) - -############# PYTHON RULES END ############## - -############ UTIL RULES BEGIN ############ - -bin_PROGRAMS += protoc-gen-proto2_to_proto3 proto3-data-stripper - -protoc_gen_proto2_to_proto3_LDADD = $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/src/libprotoc.la -protoc_gen_proto2_to_proto3_SOURCES = util/protoc-gen-proto2_to_proto3.cc -protoc_gen_proto2_to_proto3_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp -I$(srcdir)/util - -proto3_data_stripper_LDADD = $(top_srcdir)/src/libprotobuf.la -proto3_data_stripper_SOURCES = util/proto3_data_stripper.cc -proto3_data_stripper_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp -I$(srcdir)/util -util/proto3_data_stripper-proto3_data_stripper.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) -nodist_proto3_data_stripper_SOURCES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - $(benchmarks_protoc_outputs_header) - - -############ UTIL RULES END ############ - -############ PROTO3 PREPARATION BEGIN ############# - -proto3_proto_middleman: protoc-gen-proto2_to_proto3 - mkdir -p "tmp/proto3_proto" - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I$(srcdir) -I$(top_srcdir) --plugin=protoc-gen-proto2_to_proto3 --proto2_to_proto3_out=$$oldpwd/tmp/proto3_proto $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) $(benchmarks_protoc_inputs_proto2) ) - touch proto3_proto_middleman - -full_srcdir = $$(cd $(srcdir) && pwd) -proto3_data = $$(for data in $(all_data); do echo $(full_srcdir)"/tmp/proto3_data$${data\#$(full_srcdir)}"; done | xargs) - -generate_proto3_data: protoc_middleman protoc_middleman2 proto3-data-stripper - mkdir -p `dirname $(proto3_data)` - ./proto3-data-stripper $(all_data) $(proto3_data) - touch generate_proto3_data - -############ PROTO3 PREPARATION END ############# - -############ PHP RULES BEGIN ################# - -proto3_middleman_php: proto3_proto_middleman - mkdir -p "tmp/php" - oldpwd=`pwd` && ( cd tmp/proto3_proto && $$oldpwd/../src/protoc$(EXEEXT) -I$(srcdir) -I$(top_srcdir) --php_out=$$oldpwd/tmp/php $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) $(benchmarks_protoc_inputs_proto2) ) - touch proto3_middleman_php - -php-benchmark: proto3_middleman_php generate_proto3_data - mkdir -p "tmp/php/Google/Protobuf/Benchmark" && cp php/PhpBenchmark.php "tmp/php/Google/Protobuf/Benchmark" - cp php/autoload.php "tmp/php" - @echo "Writing shortcut script php-benchmark..." - @echo '#! /bin/bash' > php-benchmark - @echo 'export PROTOBUF_PHP_SRCDIR="$$(cd $(top_srcdir) && pwd)/php/src"' >> php-benchmark - @echo 'cd tmp/php' >> php-benchmark - @echo 'export CURRENT_DIR=$$(pwd)' >> php-benchmark - @echo 'php -d auto_prepend_file="autoload.php" -d include_path="$$(pwd)" Google/Protobuf/Benchmark/PhpBenchmark.php $$@' >> php-benchmark - @echo 'cd ../..' >> php-benchmark - @chmod +x php-benchmark - -php: php-benchmark proto3_middleman_php - ./php-benchmark --behavior_prefix="php" $(proto3_data) - -php_c_extension: - cd $(top_srcdir)/php/ext/google/protobuf && phpize && ./configure CFLAGS='-O3' && make -j8 - -php-c-benchmark: proto3_middleman_php generate_proto3_data php_c_extension php_c_extension - mkdir -p "tmp/php/Google/Protobuf/Benchmark" && cp php/PhpBenchmark.php "tmp/php/Google/Protobuf/Benchmark" - cp php/autoload.php "tmp/php" - @echo "Writing shortcut script php-c-benchmark..." - @echo '#! /bin/bash' > php-c-benchmark - @echo 'export PROTOBUF_PHP_SRCDIR="$$(cd $(top_srcdir) && pwd)/php/src"' >> php-c-benchmark - @echo 'export PROTOBUF_PHP_EXTDIR="$$PROTOBUF_PHP_SRCDIR/../ext/google/protobuf/modules"' >> php-c-benchmark - @echo 'cd tmp/php' >> php-c-benchmark - @echo 'export CURRENT_DIR=$$(pwd)' >> php-c-benchmark - @echo 'php -d auto_prepend_file="autoload.php" -d include_path="$$(pwd)" -d extension="$$PROTOBUF_PHP_EXTDIR/protobuf.so" Google/Protobuf/Benchmark/PhpBenchmark.php $$@' >> php-c-benchmark - @echo 'cd ../..' >> php-c-benchmark - @chmod +x php-c-benchmark - -php_c: php-c-benchmark proto3_middleman_php - ./php-c-benchmark --behavior_prefix="php_c" $(proto3_data) - - -############ PHP RULES END ################# - -EXTRA_DIST = \ - $(benchmarks_protoc_inputs_benchmark_wrapper) \ - $(benchmarks_protoc_inputs) \ - $(benchmarks_protoc_inputs_proto2) \ - google_size.proto - -MAINTAINERCLEANFILES = \ - Makefile.in - -CLEANFILES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_header) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - initialize_submodule \ - make_tmp_dir \ - protoc_middleman \ - protoc_middleman2 \ - javac_middleman \ - java-benchmark \ - python_cpp_proto_library \ - python-pure-python-benchmark \ - python-cpp-reflection-benchmark \ - python-cpp-generated-code-benchmark \ - proto3_proto_middleman \ - generate_proto3_data \ - php-benchmark \ - php-c-benchmark \ - proto3_middleman_php - -clean-local: - -rm -rf tmp/* - diff --git a/benchmarks/cpp/BUILD.bazel b/benchmarks/cpp/BUILD.bazel index 7a3d3ba63e2a7..4d59782657bfc 100644 --- a/benchmarks/cpp/BUILD.bazel +++ b/benchmarks/cpp/BUILD.bazel @@ -1,8 +1,9 @@ load("@rules_cc//cc:defs.bzl", "cc_binary") load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") +load("//benchmarks:defs.bzl", "benchmark_test") cc_binary( - name = "cpp", + name = "cpp_benchmark", srcs = [ "cpp_benchmark.cc", ], @@ -15,6 +16,14 @@ cc_binary( ], ) +benchmark_test( + name = "cpp", + binary = ":cpp_benchmark", + datasets = [ + "//benchmarks/datasets", + ], +) + pkg_files( name = "dist_files", srcs = [ diff --git a/benchmarks/datasets/BUILD.bazel b/benchmarks/datasets/BUILD.bazel index 98e6b38381cdc..daf6ce3d19191 100644 --- a/benchmarks/datasets/BUILD.bazel +++ b/benchmarks/datasets/BUILD.bazel @@ -18,6 +18,19 @@ filegroup( ], ) +filegroup( + name = "proto3_datasets", + srcs = [ + "//benchmarks/datasets/google_message1/proto2:proto3_datasets", + "//benchmarks/datasets/google_message1/proto3:datasets", + "//benchmarks/datasets/google_message2:proto3_datasets", + ], + visibility = [ + "//benchmarks:__subpackages__", + "//conformance:__subpackages__", + ], +) + proto_library( name = "protos", visibility = [ @@ -60,6 +73,46 @@ java_library( ], ) +py_library( + name = "py_protos", + visibility = [ + "//benchmarks:__subpackages__", + ], + deps = [ + "//benchmarks/datasets/google_message1/proto2:benchmark_message1_proto2_py_proto", + "//benchmarks/datasets/google_message1/proto3:benchmark_message1_proto3_py_proto", + "//benchmarks/datasets/google_message2:benchmark_message2_py_proto", + "//benchmarks/datasets/google_message3:benchmark_message3_py_proto", + "//benchmarks/datasets/google_message4:benchmark_message4_py_proto", + ], +) + +filegroup( + name = "php_protos", + visibility = [ + "//benchmarks:__subpackages__", + ], + srcs = [ + "//benchmarks/datasets/google_message1/proto2:benchmark_message1_proto2_php_proto", + "//benchmarks/datasets/google_message1/proto3:benchmark_message1_proto3_php_proto", + "//benchmarks/datasets/google_message2:benchmark_message2_php_proto", + ], +) + +filegroup( + name = "csharp_protos", + visibility = [ + "//benchmarks:__subpackages__", + ], + srcs = [ + "//benchmarks/datasets/google_message1/proto2:benchmark_message1_proto2_csharp_proto", + "//benchmarks/datasets/google_message1/proto3:benchmark_message1_proto3_csharp_proto", + "//benchmarks/datasets/google_message2:benchmark_message2_csharp_proto", + "//benchmarks/datasets/google_message3:benchmark_message3_csharp_proto", + "//benchmarks/datasets/google_message4:benchmark_message4_csharp_proto", + ], +) + pkg_files( name = "dist_files", srcs = ["BUILD.bazel"], diff --git a/benchmarks/datasets/google_message1/proto2/BUILD.bazel b/benchmarks/datasets/google_message1/proto2/BUILD.bazel index 30caed574e9a7..bbed8f519ee66 100644 --- a/benchmarks/datasets/google_message1/proto2/BUILD.bazel +++ b/benchmarks/datasets/google_message1/proto2/BUILD.bazel @@ -2,6 +2,8 @@ load("@rules_cc//cc:defs.bzl", "cc_proto_library") load("@rules_java//java:defs.bzl", "java_proto_library") load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") load("@rules_proto//proto:defs.bzl", "proto_library") +load("//:protobuf.bzl", "py_proto_library", "csharp_proto_library") +load("//benchmarks/util:compatibility.bzl", "proto3_data", "php_proto3_library") filegroup( name = "datasets", @@ -13,12 +15,21 @@ filegroup( ], ) +proto3_data( + name = "proto3_datasets", + srcs = [ + "dataset.google_message1_proto2.pb", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + proto_library( name = "benchmark_message1_proto2_proto", srcs = [ "benchmark_message1_proto2.proto", ], - strip_import_prefix = "/benchmarks", visibility = [ "//benchmarks/datasets:__pkg__", ], @@ -34,6 +45,14 @@ cc_proto_library( ], ) +csharp_proto_library( + name = "benchmark_message1_proto2_csharp_proto", + srcs = ["benchmark_message1_proto2.proto"], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + java_proto_library( name = "benchmark_message1_proto2_java_proto", visibility = [ @@ -44,6 +63,27 @@ java_proto_library( ], ) +php_proto3_library( + name = "benchmark_message1_proto2_php_proto", + src = "benchmark_message1_proto2.proto", + outs = [ + "Benchmarks/Proto2/GoogleMessage1.php", + "Benchmarks/Proto2/GoogleMessage1SubMessage.php", + "GPBMetadata/BenchmarkMessage1Proto2.php", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + +py_proto_library( + name = "benchmark_message1_proto2_py_proto", + srcs = ["benchmark_message1_proto2.proto"], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + pkg_files( name = "dist_files", srcs = glob(["*"]), diff --git a/benchmarks/datasets/google_message1/proto3/BUILD.bazel b/benchmarks/datasets/google_message1/proto3/BUILD.bazel index 0dc59d14452e3..c75ec38c37f3e 100644 --- a/benchmarks/datasets/google_message1/proto3/BUILD.bazel +++ b/benchmarks/datasets/google_message1/proto3/BUILD.bazel @@ -2,6 +2,7 @@ load("@rules_cc//cc:defs.bzl", "cc_proto_library") load("@rules_java//java:defs.bzl", "java_proto_library") load("@rules_proto//proto:defs.bzl", "proto_library") load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") +load("//:protobuf.bzl", "py_proto_library", "php_proto_library", "csharp_proto_library") filegroup( name = "datasets", @@ -18,7 +19,6 @@ proto_library( srcs = [ "benchmark_message1_proto3.proto", ], - strip_import_prefix = "/benchmarks", visibility = [ "//benchmarks/datasets:__pkg__", ], @@ -34,6 +34,14 @@ cc_proto_library( ], ) +csharp_proto_library( + name = "benchmark_message1_proto3_csharp_proto", + srcs = ["benchmark_message1_proto3.proto"], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + java_proto_library( name = "benchmark_message1_proto3_java_proto", visibility = [ @@ -44,6 +52,27 @@ java_proto_library( ], ) +php_proto_library( + name = "benchmark_message1_proto3_php_proto", + srcs = ["benchmark_message1_proto3.proto"], + outs = [ + "Benchmarks/Proto3/GoogleMessage1.php", + "Benchmarks/Proto3/GoogleMessage1SubMessage.php", + "GPBMetadata/BenchmarkMessage1Proto3.php", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + +py_proto_library( + name = "benchmark_message1_proto3_py_proto", + srcs = ["benchmark_message1_proto3.proto"], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + pkg_files( name = "dist_files", srcs = glob(["*"]), diff --git a/benchmarks/datasets/google_message2/BUILD.bazel b/benchmarks/datasets/google_message2/BUILD.bazel index f3d66a25c0dde..4114d0c831efc 100644 --- a/benchmarks/datasets/google_message2/BUILD.bazel +++ b/benchmarks/datasets/google_message2/BUILD.bazel @@ -2,6 +2,8 @@ load("@rules_cc//cc:defs.bzl", "cc_proto_library") load("@rules_java//java:defs.bzl", "java_proto_library") load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") load("@rules_proto//proto:defs.bzl", "proto_library") +load("//:protobuf.bzl", "py_proto_library", "csharp_proto_library") +load("//benchmarks/util:compatibility.bzl", "proto3_data", "php_proto3_library") filegroup( name = "datasets", @@ -13,12 +15,21 @@ filegroup( ], ) +proto3_data( + name = "proto3_datasets", + srcs = [ + "dataset.google_message2.pb", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + proto_library( name = "benchmark_message2_proto", srcs = [ "benchmark_message2.proto", ], - strip_import_prefix = "/benchmarks", visibility = [ "//benchmarks/datasets:__pkg__", ], @@ -34,6 +45,14 @@ cc_proto_library( ], ) +csharp_proto_library( + name = "benchmark_message2_csharp_proto", + srcs = ["benchmark_message2.proto"], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + java_proto_library( name = "benchmark_message2_java_proto", visibility = [ @@ -44,6 +63,27 @@ java_proto_library( ], ) +php_proto3_library( + name = "benchmark_message2_php_proto", + src = "benchmark_message2.proto", + outs = [ + "Benchmarks/Proto2/GoogleMessage2.php", + "Benchmarks/Proto2/GoogleMessage2GroupedMessage.php", + "GPBMetadata/BenchmarkMessage2.php", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + +py_proto_library( + name = "benchmark_message2_py_proto", + srcs = ["benchmark_message2.proto"], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + pkg_files( name = "dist_files", srcs = glob(["*"]), diff --git a/benchmarks/datasets/google_message3/BUILD.bazel b/benchmarks/datasets/google_message3/BUILD.bazel index a729e50fbc435..55be72c8acc35 100644 --- a/benchmarks/datasets/google_message3/BUILD.bazel +++ b/benchmarks/datasets/google_message3/BUILD.bazel @@ -2,6 +2,7 @@ load("@rules_cc//cc:defs.bzl", "cc_proto_library") load("@rules_java//java:defs.bzl", "java_proto_library") load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") load("@rules_proto//proto:defs.bzl", "proto_library") +load("//:protobuf.bzl", "py_proto_library", "csharp_proto_library") filegroup( name = "datasets", @@ -24,7 +25,6 @@ proto_library( "benchmark_message3_7.proto", "benchmark_message3_8.proto", ], - strip_import_prefix = "/benchmarks", visibility = [ "//benchmarks/datasets:__pkg__", ], @@ -40,6 +40,24 @@ cc_proto_library( ], ) +csharp_proto_library( + name = "benchmark_message3_csharp_proto", + srcs = [ + "benchmark_message3.proto", + "benchmark_message3_1.proto", + "benchmark_message3_2.proto", + "benchmark_message3_3.proto", + "benchmark_message3_4.proto", + "benchmark_message3_5.proto", + "benchmark_message3_6.proto", + "benchmark_message3_7.proto", + "benchmark_message3_8.proto", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + java_proto_library( name = "benchmark_message3_java_proto", visibility = [ @@ -50,6 +68,24 @@ java_proto_library( ], ) +py_proto_library( + name = "benchmark_message3_py_proto", + srcs = [ + "benchmark_message3.proto", + "benchmark_message3_1.proto", + "benchmark_message3_2.proto", + "benchmark_message3_3.proto", + "benchmark_message3_4.proto", + "benchmark_message3_5.proto", + "benchmark_message3_6.proto", + "benchmark_message3_7.proto", + "benchmark_message3_8.proto", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + pkg_files( name = "dist_files", srcs = glob(["*"]), diff --git a/benchmarks/datasets/google_message3/benchmark_message3.proto b/benchmarks/datasets/google_message3/benchmark_message3.proto index 82422f924ea4a..947060dc3505f 100644 --- a/benchmarks/datasets/google_message3/benchmark_message3.proto +++ b/benchmarks/datasets/google_message3/benchmark_message3.proto @@ -34,13 +34,13 @@ syntax = "proto2"; package benchmarks.google_message3; -import "datasets/google_message3/benchmark_message3_1.proto"; -import "datasets/google_message3/benchmark_message3_2.proto"; -import "datasets/google_message3/benchmark_message3_3.proto"; -import "datasets/google_message3/benchmark_message3_4.proto"; -import "datasets/google_message3/benchmark_message3_5.proto"; -import "datasets/google_message3/benchmark_message3_7.proto"; -import "datasets/google_message3/benchmark_message3_8.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_1.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_2.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_3.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_4.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_5.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_7.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_8.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message3/benchmark_message3_1.proto b/benchmarks/datasets/google_message3/benchmark_message3_1.proto index 1ee5c9eca624e..f5c1f78fd4de0 100644 --- a/benchmarks/datasets/google_message3/benchmark_message3_1.proto +++ b/benchmarks/datasets/google_message3/benchmark_message3_1.proto @@ -34,11 +34,11 @@ syntax = "proto2"; package benchmarks.google_message3; -import "datasets/google_message3/benchmark_message3_2.proto"; -import "datasets/google_message3/benchmark_message3_3.proto"; -import "datasets/google_message3/benchmark_message3_5.proto"; -import "datasets/google_message3/benchmark_message3_7.proto"; -import "datasets/google_message3/benchmark_message3_8.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_2.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_3.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_5.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_7.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_8.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message3/benchmark_message3_2.proto b/benchmarks/datasets/google_message3/benchmark_message3_2.proto index d123a7204caaf..0bf5995774a0c 100644 --- a/benchmarks/datasets/google_message3/benchmark_message3_2.proto +++ b/benchmarks/datasets/google_message3/benchmark_message3_2.proto @@ -34,11 +34,11 @@ syntax = "proto2"; package benchmarks.google_message3; -import "datasets/google_message3/benchmark_message3_3.proto"; -import "datasets/google_message3/benchmark_message3_4.proto"; -import "datasets/google_message3/benchmark_message3_5.proto"; -import "datasets/google_message3/benchmark_message3_7.proto"; -import "datasets/google_message3/benchmark_message3_8.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_3.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_4.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_5.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_7.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_8.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message3/benchmark_message3_3.proto b/benchmarks/datasets/google_message3/benchmark_message3_3.proto index 2e534a67d6c50..5965ebd4fe229 100644 --- a/benchmarks/datasets/google_message3/benchmark_message3_3.proto +++ b/benchmarks/datasets/google_message3/benchmark_message3_3.proto @@ -34,10 +34,10 @@ syntax = "proto2"; package benchmarks.google_message3; -import "datasets/google_message3/benchmark_message3_4.proto"; -import "datasets/google_message3/benchmark_message3_5.proto"; -import "datasets/google_message3/benchmark_message3_7.proto"; -import "datasets/google_message3/benchmark_message3_8.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_4.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_5.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_7.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_8.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message3/benchmark_message3_4.proto b/benchmarks/datasets/google_message3/benchmark_message3_4.proto index b304148198151..768e1f4ed0cfe 100644 --- a/benchmarks/datasets/google_message3/benchmark_message3_4.proto +++ b/benchmarks/datasets/google_message3/benchmark_message3_4.proto @@ -34,10 +34,10 @@ syntax = "proto2"; package benchmarks.google_message3; -import "datasets/google_message3/benchmark_message3_5.proto"; -import "datasets/google_message3/benchmark_message3_6.proto"; -import "datasets/google_message3/benchmark_message3_7.proto"; -import "datasets/google_message3/benchmark_message3_8.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_5.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_6.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_7.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_8.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message3/benchmark_message3_5.proto b/benchmarks/datasets/google_message3/benchmark_message3_5.proto index e72d7ee85af42..8031c99069370 100644 --- a/benchmarks/datasets/google_message3/benchmark_message3_5.proto +++ b/benchmarks/datasets/google_message3/benchmark_message3_5.proto @@ -34,9 +34,9 @@ syntax = "proto2"; package benchmarks.google_message3; -import "datasets/google_message3/benchmark_message3_6.proto"; -import "datasets/google_message3/benchmark_message3_7.proto"; -import "datasets/google_message3/benchmark_message3_8.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_6.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_7.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_8.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message3/benchmark_message3_6.proto b/benchmarks/datasets/google_message3/benchmark_message3_6.proto index c766f7c2efb08..5941ad73f0017 100644 --- a/benchmarks/datasets/google_message3/benchmark_message3_6.proto +++ b/benchmarks/datasets/google_message3/benchmark_message3_6.proto @@ -34,8 +34,8 @@ syntax = "proto2"; package benchmarks.google_message3; -import "datasets/google_message3/benchmark_message3_7.proto"; -import "datasets/google_message3/benchmark_message3_8.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_7.proto"; +import "benchmarks/datasets/google_message3/benchmark_message3_8.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message4/BUILD.bazel b/benchmarks/datasets/google_message4/BUILD.bazel index 33de093788a6b..a6a7c869404c5 100644 --- a/benchmarks/datasets/google_message4/BUILD.bazel +++ b/benchmarks/datasets/google_message4/BUILD.bazel @@ -2,6 +2,7 @@ load("@rules_cc//cc:defs.bzl", "cc_proto_library") load("@rules_java//java:defs.bzl", "java_proto_library") load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") load("@rules_proto//proto:defs.bzl", "proto_library") +load("//:protobuf.bzl", "py_proto_library", "csharp_proto_library") filegroup( name = "datasets", @@ -19,7 +20,6 @@ proto_library( "benchmark_message4_2.proto", "benchmark_message4_3.proto", ], - strip_import_prefix = "/benchmarks", visibility = [ "//benchmarks/datasets:__pkg__", ], @@ -35,6 +35,19 @@ cc_proto_library( ], ) +csharp_proto_library( + name = "benchmark_message4_csharp_proto", + srcs = [ + "benchmark_message4.proto", + "benchmark_message4_1.proto", + "benchmark_message4_2.proto", + "benchmark_message4_3.proto", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + java_proto_library( name = "benchmark_message4_java_proto", visibility = [ @@ -45,6 +58,19 @@ java_proto_library( ], ) +py_proto_library( + name = "benchmark_message4_py_proto", + srcs = [ + "benchmark_message4.proto", + "benchmark_message4_1.proto", + "benchmark_message4_2.proto", + "benchmark_message4_3.proto", + ], + visibility = [ + "//benchmarks/datasets:__pkg__", + ], +) + pkg_files( name = "dist_files", srcs = glob(["*"]), diff --git a/benchmarks/datasets/google_message4/benchmark_message4.proto b/benchmarks/datasets/google_message4/benchmark_message4.proto index 424ed10811691..156e188ac0bcd 100644 --- a/benchmarks/datasets/google_message4/benchmark_message4.proto +++ b/benchmarks/datasets/google_message4/benchmark_message4.proto @@ -34,9 +34,9 @@ syntax = "proto2"; package benchmarks.google_message4; -import "datasets/google_message4/benchmark_message4_1.proto"; -import "datasets/google_message4/benchmark_message4_2.proto"; -import "datasets/google_message4/benchmark_message4_3.proto"; +import "benchmarks/datasets/google_message4/benchmark_message4_1.proto"; +import "benchmarks/datasets/google_message4/benchmark_message4_2.proto"; +import "benchmarks/datasets/google_message4/benchmark_message4_3.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message4/benchmark_message4_1.proto b/benchmarks/datasets/google_message4/benchmark_message4_1.proto index c5deecd0df841..6e5256f8df3e5 100644 --- a/benchmarks/datasets/google_message4/benchmark_message4_1.proto +++ b/benchmarks/datasets/google_message4/benchmark_message4_1.proto @@ -34,8 +34,8 @@ syntax = "proto2"; package benchmarks.google_message4; -import "datasets/google_message4/benchmark_message4_2.proto"; -import "datasets/google_message4/benchmark_message4_3.proto"; +import "benchmarks/datasets/google_message4/benchmark_message4_2.proto"; +import "benchmarks/datasets/google_message4/benchmark_message4_3.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/datasets/google_message4/benchmark_message4_2.proto b/benchmarks/datasets/google_message4/benchmark_message4_2.proto index 0c4cdfd853a1d..dbd43e4289f0f 100644 --- a/benchmarks/datasets/google_message4/benchmark_message4_2.proto +++ b/benchmarks/datasets/google_message4/benchmark_message4_2.proto @@ -32,7 +32,7 @@ syntax = "proto2"; package benchmarks.google_message4; -import "datasets/google_message4/benchmark_message4_3.proto"; +import "benchmarks/datasets/google_message4/benchmark_message4_3.proto"; option cc_enable_arenas = true; option java_package = "com.google.protobuf.benchmarks"; diff --git a/benchmarks/defs.bzl b/benchmarks/defs.bzl new file mode 100644 index 0000000000000..25953e8c87b47 --- /dev/null +++ b/benchmarks/defs.bzl @@ -0,0 +1,36 @@ +"""Starlark definitions for Protobuf benchmark tests. + +PLEASE DO NOT DEPEND ON THE CONTENTS OF THIS FILE, IT IS UNSTABLE. +""" +load("//build_defs:internal_shell.bzl", "inline_sh_binary") + +def benchmark_test( + name, + binary, + datasets, + args = [], + env_vars = []): + """Benchmark test runner. + + Args: + name: the name for the test. + binary: a benchmark test binary. + datasets: a set of datasets to benchmark. + args: optional arguments to pass the binary. + env_vars: environment variables to set in the test. + """ + + dataset_labels = [] + for dataset in datasets: + dataset_labels.append("$(rootpaths %s)" % dataset) + inline_sh_binary( + name = name, + srcs = datasets, + tools = [binary], + cmd = "%s $(rootpath %s) %s %s" % ( + " ".join(env_vars), + binary, + " ".join(args), + " ".join(dataset_labels)), + testonly = 1, + ) diff --git a/benchmarks/java/BUILD.bazel b/benchmarks/java/BUILD.bazel new file mode 100644 index 0000000000000..ae6f150fcca31 --- /dev/null +++ b/benchmarks/java/BUILD.bazel @@ -0,0 +1,50 @@ +load("@rules_java//java:defs.bzl", "java_library", "java_binary") +load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") +load("//build_defs:internal_shell.bzl", "inline_sh_binary") +load("//benchmarks:defs.bzl", "benchmark_test") + +java_binary( + name = "java_benchmark", + srcs = [ + "src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java", + ], + main_class = "com.google.caliper.runner.CaliperMain", + tags = ["benchmark"], + deps = [ + "//:protobuf_java", + "//benchmarks:benchmarks_java_proto", + "//benchmarks/datasets:java_protos", + "@maven//:com_google_caliper_caliper", + "@maven//:com_google_caliper_caliper_api", + ], +) + +inline_sh_binary( + name = "java_benchmark_wrapper", + srcs = ["//benchmarks/datasets"], + tools = [":java_benchmark"], + cmd = """ + data_files="" + for arg in "$${@:1}"; do + data_files+="$$arg," + done + $(rootpath :java_benchmark) com.google.protobuf.ProtoCaliperBenchmark \ + -i runtime -DdataFile=$${data_files:0:-1} + """ +) + +benchmark_test( + name = "java", + binary = ":java_benchmark_wrapper", + datasets = ["//benchmarks/datasets"], +) + +pkg_files( + name = "dist_files", + srcs = [ + "BUILD.bazel", + "pom.xml", + ] + glob(["**/*.java"]), + strip_prefix = strip_prefix.from_root(""), + visibility = ["//benchmarks:__pkg__"], +) diff --git a/benchmarks/php/BUILD.bazel b/benchmarks/php/BUILD.bazel new file mode 100644 index 0000000000000..afa89b167823a --- /dev/null +++ b/benchmarks/php/BUILD.bazel @@ -0,0 +1,65 @@ +load("//benchmarks:defs.bzl", "benchmark_test") +load("//build_defs:internal_shell.bzl", "inline_sh_binary") +load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") + +inline_sh_binary( + name = "php_benchmark", + srcs = [ + "PhpBenchmark.php", + "autoload.php", + ], + deps = [ + "//benchmarks:benchmarks_php_proto", + "//benchmarks/datasets:php_protos", + "//php:source_files", + ], + cmd = """ + php -d include_path=benchmarks:php/src \\ + -d auto_prepend_file=$(rootpath autoload.php) \\ + $(rootpath PhpBenchmark.php) $$@ + """, + testonly = 1, +) + +benchmark_test( + name = "php", + binary = ":php_benchmark", + datasets = ["//benchmarks/datasets:proto3_datasets"], + env_vars = ["PROTOBUF_PHP_SRCDIR=php/src"], + args = ["--behavior_prefix='php'"], +) + +inline_sh_binary( + name = "php_c_benchmark", + srcs = [ + "PhpBenchmark.php", + "//php:extension", + ], + deps = [ + "//benchmarks:benchmarks_php_proto", + "//benchmarks/datasets:php_protos", + ], + cmd = """ + php -d include_path=benchmarks:php/src \\ + -dextension=$(rootpath //php:extension) \\ + $(rootpath PhpBenchmark.php) $$@ + """, + testonly = 1, +) + +benchmark_test( + name = "php_c", + binary = ":php_c_benchmark", + datasets = ["//benchmarks/datasets:proto3_datasets"], + env_vars = ["PROTOBUF_PHP_SRCDIR=php/src"], + args = ["--behavior_prefix='php_c'"], +) + +pkg_files( + name = "dist_files", + srcs = glob(["*.php"]) + [ + "BUILD.bazel", + ], + strip_prefix = strip_prefix.from_root(""), + visibility = ["//benchmarks:__pkg__"], +) diff --git a/benchmarks/python/BUILD.bazel b/benchmarks/python/BUILD.bazel new file mode 100644 index 0000000000000..0a0bae529a904 --- /dev/null +++ b/benchmarks/python/BUILD.bazel @@ -0,0 +1,76 @@ +load("@rules_cc//cc:defs.bzl", "cc_binary") +load("@rules_python//python:defs.bzl", "py_library", "py_binary") +load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") +load("//:protobuf.bzl", "py_proto_library") +load("//benchmarks:defs.bzl", "benchmark_test") + +py_binary( + name = "python_benchmark", + srcs = ["py_benchmark.py"], + main = "py_benchmark.py", + tags = ["benchmark"], + deps = [ + "//:protobuf_python", + "//benchmarks:benchmarks_py_proto", + "//benchmarks/datasets:py_protos", + ], +) + +benchmark_test( + name = "python", + binary = ":python_benchmark", + datasets = ["//benchmarks/datasets"], + env_vars = ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python"], +) + +# Note: this requires --define=use_fast_cpp_protos=true +benchmark_test( + name = "cpp_reflection", + binary = ":python_benchmark", + datasets = ["//benchmarks/datasets"], + env_vars = ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp"], +) + +cc_binary( + name = "libbenchmark_messages.so", + srcs = ["python_benchmark_messages.cc"], + deps = [ + "@local_config_python//:python_headers", + "//external:python_headers", + "//benchmarks:benchmarks_cc_proto", + "//benchmarks/datasets:cc_protos", + ], + linkshared = True, + linkstatic = True, + visibility = ["//visibility:private"], +) + +py_binary( + name = "cpp_generated_code_benchmark", + srcs = ["py_benchmark.py"], + main = "py_benchmark.py", + tags = ["benchmark"], + data = ["libbenchmark_messages.so"], + deps = [ + "//:protobuf_python", + "//benchmarks:benchmarks_py_proto", + "//benchmarks/datasets:py_protos", + ], +) + +benchmark_test( + name = "cpp_generated_code", + binary = ":cpp_generated_code_benchmark", + datasets = ["//benchmarks/datasets"], + args = ["--cpp_generated"], +) + +pkg_files( + name = "dist_files", + srcs = glob(["*.py"]) + [ + "BUILD.bazel", + "python_benchmark_messages.cc", + ], + strip_prefix = strip_prefix.from_root(""), + visibility = ["//benchmarks:__pkg__"], +) diff --git a/benchmarks/python/py_benchmark.py b/benchmarks/python/py_benchmark.py index 60e377e4b8cc4..053c78cc31b4a 100644 --- a/benchmarks/python/py_benchmark.py +++ b/benchmarks/python/py_benchmark.py @@ -27,17 +27,17 @@ # for the descriptor can be found in the pool if args.cpp_generated != "no": sys.path.append( os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) ) + "/.libs" ) - import libbenchmark_messages + from benchmarks.python import libbenchmark_messages sys.path.append( os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) ) + "/tmp" ) # END CPP GENERATED MESSAGE -import datasets.google_message1.proto2.benchmark_message1_proto2_pb2 as benchmark_message1_proto2_pb2 -import datasets.google_message1.proto3.benchmark_message1_proto3_pb2 as benchmark_message1_proto3_pb2 -import datasets.google_message2.benchmark_message2_pb2 as benchmark_message2_pb2 -import datasets.google_message3.benchmark_message3_pb2 as benchmark_message3_pb2 -import datasets.google_message4.benchmark_message4_pb2 as benchmark_message4_pb2 -import benchmarks_pb2 as benchmarks_pb2 +import benchmarks.datasets.google_message1.proto2.benchmark_message1_proto2_pb2 as benchmark_message1_proto2_pb2 +import benchmarks.datasets.google_message1.proto3.benchmark_message1_proto3_pb2 as benchmark_message1_proto3_pb2 +import benchmarks.datasets.google_message2.benchmark_message2_pb2 as benchmark_message2_pb2 +import benchmarks.datasets.google_message3.benchmark_message3_pb2 as benchmark_message3_pb2 +import benchmarks.datasets.google_message4.benchmark_message4_pb2 as benchmark_message4_pb2 +import benchmarks.benchmarks_pb2 as benchmarks_pb2 def run_one_test(filename): diff --git a/benchmarks/python/python_benchmark_messages.cc b/benchmarks/python/python_benchmark_messages.cc index f6ddcf318554b..8a65125b3be13 100644 --- a/benchmarks/python/python_benchmark_messages.cc +++ b/benchmarks/python/python_benchmark_messages.cc @@ -1,11 +1,11 @@ #include #include "benchmarks.pb.h" -#include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" -#include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" -#include "datasets/google_message2/benchmark_message2.pb.h" -#include "datasets/google_message3/benchmark_message3.pb.h" -#include "datasets/google_message4/benchmark_message4.pb.h" +#include "benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" +#include "benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" +#include "benchmarks/datasets/google_message2/benchmark_message2.pb.h" +#include "benchmarks/datasets/google_message3/benchmark_message3.pb.h" +#include "benchmarks/datasets/google_message4/benchmark_message4.pb.h" static struct PyModuleDef _module = {PyModuleDef_HEAD_INIT, "libbenchmark_messages", diff --git a/benchmarks/util/BUILD.bazel b/benchmarks/util/BUILD.bazel new file mode 100644 index 0000000000000..32e2afdab61bd --- /dev/null +++ b/benchmarks/util/BUILD.bazel @@ -0,0 +1,40 @@ +load("@rules_cc//cc:defs.bzl", "cc_binary") + +package(default_visibility = ["//benchmarks:__subpackages__"]) + +cc_binary( + name = "protoc-gen-proto2_to_proto3", + srcs = [ + "schema_proto2_to_proto3_util.h", + "protoc-gen-proto2_to_proto3.cc", + ], + deps = [ + "//:protobuf", + "//src/google/protobuf/compiler:code_generator", + "//benchmarks:benchmarks_cc_proto", + ], + visibility = ["//benchmarks:__subpackages__"], +) + +cc_binary( + name = "proto3_data_stripper", + srcs = [ + "data_proto2_to_proto3_util.h", + "proto3_data_stripper.cc", + ], + deps = [ + "//:protobuf", + "//benchmarks/datasets:cc_protos", + "//benchmarks:benchmarks_cc_proto", + ], +) + +################################################################################ +# Distribution files +################################################################################ + +pkg_files( + name = "dist_files", + srcs = glob(["*"]), + strip_prefix = strip_prefix.from_root(""), +) diff --git a/benchmarks/util/compatibility.bzl b/benchmarks/util/compatibility.bzl new file mode 100644 index 0000000000000..44f661101fcf2 --- /dev/null +++ b/benchmarks/util/compatibility.bzl @@ -0,0 +1,103 @@ +"""Starlark definitions for converting proto2 to proto3. + +PLEASE DO NOT DEPEND ON THE CONTENTS OF THIS FILE, IT IS UNSTABLE. +""" + +load("//:protobuf.bzl", "php_proto_library") + +def proto3_data( + name, + srcs, + **kwargs): + """Transforms proto2 binary data into a proto3-compatible format, + + Args: + name: the name of the target representing the generated proto files. + srcs: the source proto2 data files. + **kwargs: standard arguments to forward on + """ + outs = [] + out_files = [] + src_files = [] + for src in srcs: + outs.append("proto3/" + src) + out_files.append("$(RULEDIR)/proto3/" + src) + src_files.append("$(rootpath %s)" % src); + + native.genrule( + name = name + "_genrule", + srcs = srcs, + exec_tools = [ + "//benchmarks/util:proto3_data_stripper", + ], + outs = outs, + cmd = "$(execpath //benchmarks/util:proto3_data_stripper) %s %s" % ( + " ".join(src_files), " ".join(out_files)), + ) + + native.filegroup( + name = name, + srcs = outs, + **kwargs, + ) + +def proto3_library( + name, + srcs, + **kwargs): + """Create a proto3 library from a proto2 source. + + Args: + name: the name of the target representing the generated proto files. + srcs: the source proto2 files. Note: these must be raw sources. + **kwargs: standard arguments to forward on + """ + outs = [] + src_files = [] + for src in srcs: + outs.append(src + "3") + src_files.append("$(rootpath %s)" % src); + + native.genrule( + name = name, + srcs = srcs, + exec_tools = [ + "//:protoc", + "//benchmarks/util:protoc-gen-proto2_to_proto3", + ], + outs = outs, + cmd = """ + $(execpath //:protoc) \ + --plugin=$(execpath //benchmarks/util:protoc-gen-proto2_to_proto3) \ + --proto_path=. \ + --proto_path=$(GENDIR) \ + --proto2_to_proto3_out=$(GENDIR) \ + %s + """ % (" ".join(src_files)), + **kwargs, + ) + +def php_proto3_library( + name, + src, + outs = [], + **kwargs): + """Create a proto3 php library from a proto2 source. + + Args: + name: the name of the target representing the generated proto files. + src: the source proto2 file. + outs: the expected php outputs. + **kwargs: standard arguments to forward on + """ + proto3_library( + name = name + "_genrule", + srcs = [src], + ) + + php_proto_library( + name = name, + srcs = [name + "_genrule"], + outs = outs, + **kwargs, + ) diff --git a/benchmarks/util/proto3_data_stripper.cc b/benchmarks/util/proto3_data_stripper.cc index 3096c4c115dcc..68f49054d4e0e 100644 --- a/benchmarks/util/proto3_data_stripper.cc +++ b/benchmarks/util/proto3_data_stripper.cc @@ -1,9 +1,9 @@ #include "benchmarks.pb.h" -#include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" -#include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" -#include "datasets/google_message2/benchmark_message2.pb.h" -#include "datasets/google_message3/benchmark_message3.pb.h" -#include "datasets/google_message4/benchmark_message4.pb.h" +#include "benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" +#include "benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" +#include "benchmarks/datasets/google_message2/benchmark_message2.pb.h" +#include "benchmarks/datasets/google_message3/benchmark_message3.pb.h" +#include "benchmarks/datasets/google_message4/benchmark_message4.pb.h" #include "data_proto2_to_proto3_util.h" #include diff --git a/benchmarks/util/protoc-gen-proto2_to_proto3.cc b/benchmarks/util/protoc-gen-proto2_to_proto3.cc index d0a8902347517..3073e0f02f449 100644 --- a/benchmarks/util/protoc-gen-proto2_to_proto3.cc +++ b/benchmarks/util/protoc-gen-proto2_to_proto3.cc @@ -15,6 +15,7 @@ using google::protobuf::util::SchemaGroupStripper; using google::protobuf::util::EnumScrubber; using google::protobuf::util::ExtensionStripper; using google::protobuf::util::FieldScrubber; +using google::protobuf::util::ImportScrubber; namespace google { namespace protobuf { @@ -22,7 +23,7 @@ namespace compiler { namespace { -string StripProto(string filename) { +std::string StripProtoExt(const std::string& filename) { return filename.substr(0, filename.rfind(".proto")); } @@ -36,9 +37,9 @@ DescriptorPool* GetPool() { class Proto2ToProto3Generator final : public CodeGenerator { public: bool GenerateAll(const std::vector& files, - const string& parameter, + const std::string& parameter, GeneratorContext* context, - string* error) const { + std::string* error) const { for (int i = 0; i < files.size(); i++) { for (auto file : files) { if (CanGenerate(file)) { @@ -52,28 +53,30 @@ class Proto2ToProto3Generator final : public CodeGenerator { } bool Generate(const FileDescriptor* file, - const string& parameter, + const std::string& parameter, GeneratorContext* context, - string* error) const { + std::string* error) const { FileDescriptorProto new_file; file->CopyTo(&new_file); + new_file.set_name(ImportScrubber::ScrubFilename(file->name())); SchemaGroupStripper::StripFile(file, &new_file); EnumScrubber enum_scrubber; enum_scrubber.ScrubFile(&new_file); ExtensionStripper::StripFile(&new_file); FieldScrubber::ScrubFile(&new_file); + ImportScrubber::ScrubFile(&new_file); new_file.set_syntax("proto3"); - string filename = file->name(); - string basename = StripProto(filename); + std::string filename = file->name(); + std::string basename = StripProtoExt(filename); - std::vector> option_pairs; + std::vector> option_pairs; ParseGeneratorParameter(parameter, &option_pairs); std::unique_ptr output( - context->Open(basename + ".proto")); - string content = GetPool()->BuildFile(new_file)->DebugString(); + context->Open(basename + ".proto3")); + std::string content = GetPool()->BuildFile(new_file)->DebugString(); Printer printer(output.get(), '$'); printer.WriteRaw(content.c_str(), content.size()); @@ -81,11 +84,12 @@ class Proto2ToProto3Generator final : public CodeGenerator { } private: bool CanGenerate(const FileDescriptor* file) const { - if (GetPool()->FindFileByName(file->name()) != nullptr) { + if (GetPool()->FindFileByName(ImportScrubber::ScrubFilename(file->name())) != nullptr) { return false; } for (int j = 0; j < file->dependency_count(); j++) { - if (GetPool()->FindFileByName(file->dependency(j)->name()) == nullptr) { + if (GetPool()->FindFileByName(ImportScrubber::ScrubFilename( + file->dependency(j)->name())) == nullptr) { return false; } } diff --git a/benchmarks/util/schema_proto2_to_proto3_util.h b/benchmarks/util/schema_proto2_to_proto3_util.h index 0079f6f1452e8..ea7b796560445 100644 --- a/benchmarks/util/schema_proto2_to_proto3_util.h +++ b/benchmarks/util/schema_proto2_to_proto3_util.h @@ -187,6 +187,18 @@ class FieldScrubber { } }; +class ImportScrubber { + public: + static std::string ScrubFilename(const std::string& filename) { + return filename + "3"; + } + static void ScrubFile(FileDescriptorProto *file) { + for(std::string& import: *file->mutable_dependency()) { + import += "3"; + } + } +}; + } // namespace util } // namespace protobuf } // namespace google diff --git a/build_defs/internal_shell.bzl b/build_defs/internal_shell.bzl index 5a7930aa31cec..4b6465b878cbc 100644 --- a/build_defs/internal_shell.bzl +++ b/build_defs/internal_shell.bzl @@ -1,6 +1,7 @@ def inline_sh_binary( name, srcs = [], + tools = [], deps = [], cmd = "", testonly = None, @@ -14,8 +15,9 @@ def inline_sh_binary( Args: name: the name of the inline_sh_binary. - srcs: the files used directly by the script. Any target used with - rootpath/execpath/location must be declared here. + srcs: the files used directly by the script. + tools: the executable tools used directly by the script. Any target used + with rootpath/execpath/location must be declared here or in `srcs`. deps: a list of dependency labels that are required to run this binary. **kargs: other keyword arguments that are passed to sh_binary. testonly: common rule attribute (see: @@ -26,6 +28,7 @@ def inline_sh_binary( native.genrule( name = name + "_genrule", srcs = srcs, + exec_tools = tools, outs = [name + ".sh"], cmd = "cat <<'EOF' >$(OUTS)\n#!/bin/bash -eu\n%s\nEOF\n" % cmd, testonly = testonly, @@ -35,7 +38,7 @@ def inline_sh_binary( native.sh_binary( name = name, srcs = [name + "_genrule"], - data = srcs + deps, + data = srcs + tools + deps, testonly = testonly, **kwargs ) diff --git a/configure.ac b/configure.ac index 0fe38581ed5cf..181f962bd01c2 100644 --- a/configure.ac +++ b/configure.ac @@ -243,5 +243,5 @@ export CFLAGS export CXXFLAGS AC_CONFIG_SUBDIRS([third_party/googletest]) -AC_CONFIG_FILES([Makefile src/Makefile benchmarks/Makefile protobuf.pc protobuf-lite.pc]) +AC_CONFIG_FILES([Makefile src/Makefile protobuf.pc protobuf-lite.pc]) AC_OUTPUT diff --git a/conformance/BUILD.bazel b/conformance/BUILD.bazel index 13a736465056f..05c6d951202f3 100644 --- a/conformance/BUILD.bazel +++ b/conformance/BUILD.bazel @@ -271,7 +271,6 @@ inline_sh_binary( ], deps = [ ":conformance_php_proto", - "//php:source_files", "//:test_messages_proto3_php_proto", ], cmd = """ diff --git a/maven_install.json b/maven_install.json index 9c5860a94824a..1a938afc22143 100644 --- a/maven_install.json +++ b/maven_install.json @@ -1,24 +1,251 @@ { "dependency_tree": { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": -228414992, - "__RESOLVED_ARTIFACTS_HASH": -722345565, + "__INPUT_ARTIFACTS_HASH": 579287445, + "__RESOLVED_ARTIFACTS_HASH": -1248440885, "conflict_resolution": { - "com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.11.0", - "junit:junit:4.12": "junit:junit:4.13.2" + "com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.11.0" }, "dependencies": [ { - "coord": "com.google.auto.value:auto-value-annotations:1.7.4", + "coord": "com.google.auto.value:auto-value-annotations:1.8.1", "dependencies": [], "directDependencies": [], - "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar", + "file": "v1/https/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.8.1/auto-value-annotations-1.8.1.jar", "mirror_urls": [ - "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar", - "https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar" + "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.8.1/auto-value-annotations-1.8.1.jar", + "https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.8.1/auto-value-annotations-1.8.1.jar" ], - "sha256": "fedd59b0b4986c342f6ab2d182f2a4ee9fceb2c7e2d5bdc4dc764c92394a23d3", - "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.7.4/auto-value-annotations-1.7.4.jar" + "sha256": "37ec09b47d7ed35a99d13927db5c86fc9071f620f943ead5d757144698310852", + "url": "https://repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.8.1/auto-value-annotations-1.8.1.jar" + }, + { + "coord": "com.google.caliper:caliper-api:1.0-beta-3", + "dependencies": [ + "com.google.guava:guava:31.1-jre", + "joda-time:joda-time:2.10.10" + ], + "directDependencies": [ + "com.google.guava:guava:31.1-jre", + "joda-time:joda-time:2.10.10" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/caliper/caliper-api/1.0-beta-3/caliper-api-1.0-beta-3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/caliper/caliper-api/1.0-beta-3/caliper-api-1.0-beta-3.jar", + "https://repo.maven.apache.org/maven2/com/google/caliper/caliper-api/1.0-beta-3/caliper-api-1.0-beta-3.jar" + ], + "sha256": "374f0c6c0c1f8784cb69d885e1dcbb7498c34ca20369e0597264568530642928", + "url": "https://repo1.maven.org/maven2/com/google/caliper/caliper-api/1.0-beta-3/caliper-api-1.0-beta-3.jar" + }, + { + "coord": "com.google.caliper:caliper-core:1.0-beta-3", + "dependencies": [ + "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.caliper:caliper-api:1.0-beta-3", + "com.google.caliper:caliper-util:1.0-beta-3", + "com.google.code.gson:gson:2.8.9", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:1.6.0", + "javax.inject:javax.inject:1", + "joda-time:joda-time:2.10.10" + ], + "directDependencies": [ + "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.caliper:caliper-api:1.0-beta-3", + "com.google.caliper:caliper-util:1.0-beta-3", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.squareup.okhttp:okhttp:2.7.5", + "joda-time:joda-time:2.10.10" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/caliper/caliper-core/1.0-beta-3/caliper-core-1.0-beta-3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/caliper/caliper-core/1.0-beta-3/caliper-core-1.0-beta-3.jar", + "https://repo.maven.apache.org/maven2/com/google/caliper/caliper-core/1.0-beta-3/caliper-core-1.0-beta-3.jar" + ], + "sha256": "514deac8f8b09dd4262733e0a4406a333208c899dc7ea726b03600b9bb94f192", + "url": "https://repo1.maven.org/maven2/com/google/caliper/caliper-core/1.0-beta-3/caliper-core-1.0-beta-3.jar" + }, + { + "coord": "com.google.caliper:caliper-runner:1.0-beta-3", + "dependencies": [ + "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.caliper:caliper-api:1.0-beta-3", + "com.google.caliper:caliper-core:1.0-beta-3", + "com.google.caliper:caliper-util:1.0-beta-3", + "com.google.code.gson:gson:2.8.9", + "com.google.dagger:dagger-producers:2.22.1", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:1.6.0", + "javax.inject:javax.inject:1", + "joda-time:joda-time:2.10.10", + "org.checkerframework:checker-compat-qual:2.5.3" + ], + "directDependencies": [ + "com.google.caliper:caliper-api:1.0-beta-3", + "com.google.caliper:caliper-core:1.0-beta-3", + "com.google.caliper:caliper-util:1.0-beta-3", + "com.google.dagger:dagger-producers:2.22.1", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.squareup.okhttp:okhttp:2.7.5", + "joda-time:joda-time:2.10.10" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/caliper/caliper-runner/1.0-beta-3/caliper-runner-1.0-beta-3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/caliper/caliper-runner/1.0-beta-3/caliper-runner-1.0-beta-3.jar", + "https://repo.maven.apache.org/maven2/com/google/caliper/caliper-runner/1.0-beta-3/caliper-runner-1.0-beta-3.jar" + ], + "sha256": "3ab58890aa01343361adedf859500d280f67813df0cedfcd165b169533b9b1fa", + "url": "https://repo1.maven.org/maven2/com/google/caliper/caliper-runner/1.0-beta-3/caliper-runner-1.0-beta-3.jar" + }, + { + "coord": "com.google.caliper:caliper-util:1.0-beta-3", + "dependencies": [ + "com.google.code.gson:gson:2.8.9", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "javax.inject:javax.inject:1", + "joda-time:joda-time:2.10.10" + ], + "directDependencies": [ + "com.google.code.gson:gson:2.8.9", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "joda-time:joda-time:2.10.10" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/caliper/caliper-util/1.0-beta-3/caliper-util-1.0-beta-3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/caliper/caliper-util/1.0-beta-3/caliper-util-1.0-beta-3.jar", + "https://repo.maven.apache.org/maven2/com/google/caliper/caliper-util/1.0-beta-3/caliper-util-1.0-beta-3.jar" + ], + "sha256": "6e9af500c7020450dfdb5003d09501d512d395f431c54c7ee8f79e712463fe66", + "url": "https://repo1.maven.org/maven2/com/google/caliper/caliper-util/1.0-beta-3/caliper-util-1.0-beta-3.jar" + }, + { + "coord": "com.google.caliper:caliper-worker-jvm:1.0-beta-3", + "dependencies": [ + "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.caliper:caliper-api:1.0-beta-3", + "com.google.caliper:caliper-core:1.0-beta-3", + "com.google.caliper:caliper-util:1.0-beta-3", + "com.google.caliper:caliper-worker:1.0-beta-3", + "com.google.code.gson:gson:2.8.9", + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:1.6.0", + "com.sun.jersey:jersey-client:1.19.4", + "com.sun.jersey:jersey-core:1.19.4", + "javax.annotation:javax.annotation-api:1.3.2", + "javax.inject:javax.inject:1", + "javax.ws.rs:jsr311-api:1.1.1", + "joda-time:joda-time:2.10.10", + "org.ow2.asm:asm-analysis:7.2", + "org.ow2.asm:asm-commons:7.2", + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm-util:7.2", + "org.ow2.asm:asm:9.0" + ], + "directDependencies": [ + "com.google.caliper:caliper-core:1.0-beta-3", + "com.google.caliper:caliper-worker:1.0-beta-3", + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.sun.jersey:jersey-client:1.19.4" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/caliper/caliper-worker-jvm/1.0-beta-3/caliper-worker-jvm-1.0-beta-3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/caliper/caliper-worker-jvm/1.0-beta-3/caliper-worker-jvm-1.0-beta-3.jar", + "https://repo.maven.apache.org/maven2/com/google/caliper/caliper-worker-jvm/1.0-beta-3/caliper-worker-jvm-1.0-beta-3.jar" + ], + "sha256": "e14e1ecfdf939c82abdb902105be41ff3f83c18cb968116232015f2662d065a4", + "url": "https://repo1.maven.org/maven2/com/google/caliper/caliper-worker-jvm/1.0-beta-3/caliper-worker-jvm-1.0-beta-3.jar" + }, + { + "coord": "com.google.caliper:caliper-worker:1.0-beta-3", + "dependencies": [ + "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.caliper:caliper-api:1.0-beta-3", + "com.google.caliper:caliper-core:1.0-beta-3", + "com.google.caliper:caliper-util:1.0-beta-3", + "com.google.code.gson:gson:2.8.9", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:1.6.0", + "javax.inject:javax.inject:1", + "joda-time:joda-time:2.10.10" + ], + "directDependencies": [ + "com.google.caliper:caliper-api:1.0-beta-3", + "com.google.caliper:caliper-core:1.0-beta-3", + "com.google.caliper:caliper-util:1.0-beta-3", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.squareup.okhttp:okhttp:2.7.5", + "joda-time:joda-time:2.10.10" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/caliper/caliper-worker/1.0-beta-3/caliper-worker-1.0-beta-3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/caliper/caliper-worker/1.0-beta-3/caliper-worker-1.0-beta-3.jar", + "https://repo.maven.apache.org/maven2/com/google/caliper/caliper-worker/1.0-beta-3/caliper-worker-1.0-beta-3.jar" + ], + "sha256": "315d8e51df1f60551645a0e3bf2c504d2c79762f688e6f728eb9d1d9cd9a491b", + "url": "https://repo1.maven.org/maven2/com/google/caliper/caliper-worker/1.0-beta-3/caliper-worker-1.0-beta-3.jar" + }, + { + "coord": "com.google.caliper:caliper:1.0-beta-3", + "dependencies": [ + "com.google.auto.value:auto-value-annotations:1.8.1", + "com.google.caliper:caliper-api:1.0-beta-3", + "com.google.caliper:caliper-core:1.0-beta-3", + "com.google.caliper:caliper-runner:1.0-beta-3", + "com.google.caliper:caliper-util:1.0-beta-3", + "com.google.caliper:caliper-worker-jvm:1.0-beta-3", + "com.google.caliper:caliper-worker:1.0-beta-3", + "com.google.code.gson:gson:2.8.9", + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0", + "com.google.dagger:dagger-producers:2.22.1", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.squareup.okhttp:okhttp:2.7.5", + "com.squareup.okio:okio:1.6.0", + "com.sun.jersey:jersey-client:1.19.4", + "com.sun.jersey:jersey-core:1.19.4", + "javax.annotation:javax.annotation-api:1.3.2", + "javax.inject:javax.inject:1", + "javax.ws.rs:jsr311-api:1.1.1", + "joda-time:joda-time:2.10.10", + "org.checkerframework:checker-compat-qual:2.5.3", + "org.ow2.asm:asm-analysis:7.2", + "org.ow2.asm:asm-commons:7.2", + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm-util:7.2", + "org.ow2.asm:asm:9.0" + ], + "directDependencies": [ + "com.google.caliper:caliper-core:1.0-beta-3", + "com.google.caliper:caliper-runner:1.0-beta-3", + "com.google.caliper:caliper-worker-jvm:1.0-beta-3", + "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0", + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "com.sun.jersey:jersey-client:1.19.4" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/caliper/caliper/1.0-beta-3/caliper-1.0-beta-3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/caliper/caliper/1.0-beta-3/caliper-1.0-beta-3.jar", + "https://repo.maven.apache.org/maven2/com/google/caliper/caliper/1.0-beta-3/caliper-1.0-beta-3.jar" + ], + "sha256": "d54e1bfdbe9359a79e175c217b8d472555cf20da9c5c0a18bdb1ea7db979ed8e", + "url": "https://repo1.maven.org/maven2/com/google/caliper/caliper/1.0-beta-3/caliper-1.0-beta-3.jar" }, { "coord": "com.google.code.findbugs:jsr305:3.0.2", @@ -44,6 +271,72 @@ "sha256": "d3999291855de495c94c743761b8ab5176cfeabe281a5ab0d8e8d45326fd703e", "url": "https://repo1.maven.org/maven2/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar" }, + { + "coord": "com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0", + "dependencies": [ + "com.google.guava:guava:31.1-jre", + "javax.annotation:javax.annotation-api:1.3.2", + "org.ow2.asm:asm-analysis:7.2", + "org.ow2.asm:asm-commons:7.2", + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm-util:7.2", + "org.ow2.asm:asm:9.0" + ], + "directDependencies": [ + "com.google.guava:guava:31.1-jre", + "javax.annotation:javax.annotation-api:1.3.2", + "org.ow2.asm:asm-analysis:7.2", + "org.ow2.asm:asm-commons:7.2", + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm-util:7.2", + "org.ow2.asm:asm:9.0" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/code/java-allocation-instrumenter/java-allocation-instrumenter/3.3.0/java-allocation-instrumenter-3.3.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/code/java-allocation-instrumenter/java-allocation-instrumenter/3.3.0/java-allocation-instrumenter-3.3.0.jar", + "https://repo.maven.apache.org/maven2/com/google/code/java-allocation-instrumenter/java-allocation-instrumenter/3.3.0/java-allocation-instrumenter-3.3.0.jar" + ], + "sha256": "1ef5535a8bd41cf3072469f381b9ee6ab28275311a7499f53d6e52adf976fef0", + "url": "https://repo1.maven.org/maven2/com/google/code/java-allocation-instrumenter/java-allocation-instrumenter/3.3.0/java-allocation-instrumenter-3.3.0.jar" + }, + { + "coord": "com.google.dagger:dagger-producers:2.22.1", + "dependencies": [ + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "javax.inject:javax.inject:1", + "org.checkerframework:checker-compat-qual:2.5.3" + ], + "directDependencies": [ + "com.google.dagger:dagger:2.22.1", + "com.google.guava:guava:31.1-jre", + "javax.inject:javax.inject:1", + "org.checkerframework:checker-compat-qual:2.5.3" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/dagger/dagger-producers/2.22.1/dagger-producers-2.22.1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/dagger/dagger-producers/2.22.1/dagger-producers-2.22.1.jar", + "https://repo.maven.apache.org/maven2/com/google/dagger/dagger-producers/2.22.1/dagger-producers-2.22.1.jar" + ], + "sha256": "f834a0082014213a68ff06a0f048d750178d02196c58b0b15beb367d32b97e35", + "url": "https://repo1.maven.org/maven2/com/google/dagger/dagger-producers/2.22.1/dagger-producers-2.22.1.jar" + }, + { + "coord": "com.google.dagger:dagger:2.22.1", + "dependencies": [ + "javax.inject:javax.inject:1" + ], + "directDependencies": [ + "javax.inject:javax.inject:1" + ], + "file": "v1/https/repo1.maven.org/maven2/com/google/dagger/dagger/2.22.1/dagger-2.22.1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/google/dagger/dagger/2.22.1/dagger-2.22.1.jar", + "https://repo.maven.apache.org/maven2/com/google/dagger/dagger/2.22.1/dagger-2.22.1.jar" + ], + "sha256": "329d4340f24c4f5717af016c097e90668bfea2a5376e6aa9964b01cef3fd241a", + "url": "https://repo1.maven.org/maven2/com/google/dagger/dagger/2.22.1/dagger-2.22.1.jar" + }, { "coord": "com.google.errorprone:error_prone_annotations:2.11.0", "dependencies": [], @@ -150,7 +443,7 @@ { "coord": "com.google.truth:truth:1.1.2", "dependencies": [ - "com.google.auto.value:auto-value-annotations:1.7.4", + "com.google.auto.value:auto-value-annotations:1.8.1", "com.google.errorprone:error_prone_annotations:2.11.0", "com.google.guava:guava:31.1-jre", "junit:junit:4.13.2", @@ -158,7 +451,7 @@ "org.ow2.asm:asm:9.0" ], "directDependencies": [ - "com.google.auto.value:auto-value-annotations:1.7.4", + "com.google.auto.value:auto-value-annotations:1.8.1", "com.google.errorprone:error_prone_annotations:2.11.0", "com.google.guava:guava:31.1-jre", "junit:junit:4.13.2", @@ -173,6 +466,115 @@ "sha256": "a85e03b8b6ae8780f060cfded9500a3d1b5f52808f99a2ea6da9c683313c7518", "url": "https://repo1.maven.org/maven2/com/google/truth/truth/1.1.2/truth-1.1.2.jar" }, + { + "coord": "com.squareup.okhttp:okhttp:2.7.5", + "dependencies": [ + "com.squareup.okio:okio:1.6.0" + ], + "directDependencies": [ + "com.squareup.okio:okio:1.6.0" + ], + "file": "v1/https/repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar", + "https://repo.maven.apache.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar" + ], + "sha256": "88ac9fd1bb51f82bcc664cc1eb9c225c90dc4389d660231b4cc737bebfe7d0aa", + "url": "https://repo1.maven.org/maven2/com/squareup/okhttp/okhttp/2.7.5/okhttp-2.7.5.jar" + }, + { + "coord": "com.squareup.okio:okio:1.6.0", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/com/squareup/okio/okio/1.6.0/okio-1.6.0.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/squareup/okio/okio/1.6.0/okio-1.6.0.jar", + "https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.6.0/okio-1.6.0.jar" + ], + "sha256": "114bdc1f47338a68bcbc95abf2f5cdc72beeec91812f2fcd7b521c1937876266", + "url": "https://repo1.maven.org/maven2/com/squareup/okio/okio/1.6.0/okio-1.6.0.jar" + }, + { + "coord": "com.sun.jersey:jersey-client:1.19.4", + "dependencies": [ + "com.sun.jersey:jersey-core:1.19.4", + "javax.ws.rs:jsr311-api:1.1.1" + ], + "directDependencies": [ + "com.sun.jersey:jersey-core:1.19.4" + ], + "file": "v1/https/repo1.maven.org/maven2/com/sun/jersey/jersey-client/1.19.4/jersey-client-1.19.4.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/sun/jersey/jersey-client/1.19.4/jersey-client-1.19.4.jar", + "https://repo.maven.apache.org/maven2/com/sun/jersey/jersey-client/1.19.4/jersey-client-1.19.4.jar" + ], + "sha256": "639c825c5db580f8115bf49ffc893093526d2ed1079fbc929b6a5fbd0b2eda40", + "url": "https://repo1.maven.org/maven2/com/sun/jersey/jersey-client/1.19.4/jersey-client-1.19.4.jar" + }, + { + "coord": "com.sun.jersey:jersey-core:1.19.4", + "dependencies": [ + "javax.ws.rs:jsr311-api:1.1.1" + ], + "directDependencies": [ + "javax.ws.rs:jsr311-api:1.1.1" + ], + "file": "v1/https/repo1.maven.org/maven2/com/sun/jersey/jersey-core/1.19.4/jersey-core-1.19.4.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/com/sun/jersey/jersey-core/1.19.4/jersey-core-1.19.4.jar", + "https://repo.maven.apache.org/maven2/com/sun/jersey/jersey-core/1.19.4/jersey-core-1.19.4.jar" + ], + "sha256": "64b03198e0264849d0fc341857ebcc9c882b1909a2dc35a0972fe7d901b826e5", + "url": "https://repo1.maven.org/maven2/com/sun/jersey/jersey-core/1.19.4/jersey-core-1.19.4.jar" + }, + { + "coord": "javax.annotation:javax.annotation-api:1.3.2", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar", + "https://repo.maven.apache.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar" + ], + "sha256": "e04ba5195bcd555dc95650f7cc614d151e4bcd52d29a10b8aa2197f3ab89ab9b", + "url": "https://repo1.maven.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.jar" + }, + { + "coord": "javax.inject:javax.inject:1", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar", + "https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar" + ], + "sha256": "91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff", + "url": "https://repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar" + }, + { + "coord": "javax.ws.rs:jsr311-api:1.1.1", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar", + "https://repo.maven.apache.org/maven2/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar" + ], + "sha256": "ab1534b73b5fa055808e6598a5e73b599ccda28c3159c3c0908977809422ee4a", + "url": "https://repo1.maven.org/maven2/javax/ws/rs/jsr311-api/1.1.1/jsr311-api-1.1.1.jar" + }, + { + "coord": "joda-time:joda-time:2.10.10", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/joda-time/joda-time/2.10.10/joda-time-2.10.10.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/joda-time/joda-time/2.10.10/joda-time-2.10.10.jar", + "https://repo.maven.apache.org/maven2/joda-time/joda-time/2.10.10/joda-time-2.10.10.jar" + ], + "sha256": "dd8e7c92185a678d1b7b933f31209b6203c8ffa91e9880475a1be0346b9617e3", + "url": "https://repo1.maven.org/maven2/joda-time/joda-time/2.10.10/joda-time-2.10.10.jar" + }, { "coord": "junit:junit:4.13.2", "dependencies": [ @@ -213,6 +615,18 @@ "sha256": "d2e46555699e70361b5471a7e142f9c67855bba6907a285177ebd8ad973775d8", "url": "https://repo1.maven.org/maven2/net/bytebuddy/byte-buddy/1.12.7/byte-buddy-1.12.7.jar" }, + { + "coord": "org.checkerframework:checker-compat-qual:2.5.3", + "dependencies": [], + "directDependencies": [], + "file": "v1/https/repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar", + "https://repo.maven.apache.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar" + ], + "sha256": "d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d", + "url": "https://repo1.maven.org/maven2/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar" + }, { "coord": "org.checkerframework:checker-qual:3.12.0", "dependencies": [], @@ -269,6 +683,79 @@ "sha256": "03d960bd5aef03c653eb000413ada15eb77cdd2b8e4448886edf5692805e35f3", "url": "https://repo1.maven.org/maven2/org/objenesis/objenesis/3.2/objenesis-3.2.jar" }, + { + "coord": "org.ow2.asm:asm-analysis:7.2", + "dependencies": [ + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm:9.0" + ], + "directDependencies": [ + "org.ow2.asm:asm-tree:7.2" + ], + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.jar", + "https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.jar" + ], + "sha256": "be922aae60ff1ff1768e8e6544a38a7f92bd0a6d6b0b9791f94955d1bd453de2", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.jar" + }, + { + "coord": "org.ow2.asm:asm-commons:7.2", + "dependencies": [ + "org.ow2.asm:asm-analysis:7.2", + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm:9.0" + ], + "directDependencies": [ + "org.ow2.asm:asm-analysis:7.2", + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm:9.0" + ], + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.jar", + "https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.jar" + ], + "sha256": "0e86b8b179c5fb223d1a880a0ff4960b6978223984b94e62e71135f2d8ea3558", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.jar" + }, + { + "coord": "org.ow2.asm:asm-tree:7.2", + "dependencies": [ + "org.ow2.asm:asm:9.0" + ], + "directDependencies": [ + "org.ow2.asm:asm:9.0" + ], + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.jar", + "https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.jar" + ], + "sha256": "c063f5a67fa03cdc9bd79fd1c2ea6816cc4a19473ecdfbd9e9153b408c6f2656", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.jar" + }, + { + "coord": "org.ow2.asm:asm-util:7.2", + "dependencies": [ + "org.ow2.asm:asm-analysis:7.2", + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm:9.0" + ], + "directDependencies": [ + "org.ow2.asm:asm-analysis:7.2", + "org.ow2.asm:asm-tree:7.2", + "org.ow2.asm:asm:9.0" + ], + "file": "v1/https/repo1.maven.org/maven2/org/ow2/asm/asm-util/7.2/asm-util-7.2.jar", + "mirror_urls": [ + "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/7.2/asm-util-7.2.jar", + "https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.2/asm-util-7.2.jar" + ], + "sha256": "6e24913b021ffacfe8e7e053d6e0ccc731941148cfa078d4f1ed3d96904530f8", + "url": "https://repo1.maven.org/maven2/org/ow2/asm/asm-util/7.2/asm-util-7.2.jar" + }, { "coord": "org.ow2.asm:asm:9.0", "dependencies": [], diff --git a/php/BUILD.bazel b/php/BUILD.bazel index 2096ea477f3f3..e3a02a14bde2a 100644 --- a/php/BUILD.bazel +++ b/php/BUILD.bazel @@ -9,6 +9,7 @@ load("//conformance:defs.bzl", "conformance_test") filegroup( name = "source_files", visibility = [ + "//benchmarks/php:__pkg__", "//conformance:__pkg__", "//php:__pkg__", ], @@ -35,7 +36,6 @@ inline_sh_binary( make popd """, - visibility = ["//ruby:__subpackages__"], ) genrule( diff --git a/protobuf.bzl b/protobuf.bzl index 4d6f41e3cb23b..c8cf55f4e02ee 100644 --- a/protobuf.bzl +++ b/protobuf.bzl @@ -692,7 +692,7 @@ def source_proto_library( lang: the language to (optionally) generate code for. outs: a list of expected output files. This is only required for languages where we can't predict the outputs. - include: a string indicating the include path of the .proto files. + includes: strings indicating the include path of the .proto files. protoc: the label of the protocol compiler to generate the sources. testonly: common rule attribute (see: https://bazel.build/reference/be/common-definitions#common-attributes) diff --git a/protobuf_deps.bzl b/protobuf_deps.bzl index 7b53b77707add..e14be6c236f7c 100644 --- a/protobuf_deps.bzl +++ b/protobuf_deps.bzl @@ -3,6 +3,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") PROTOBUF_MAVEN_ARTIFACTS = [ + "com.google.caliper:caliper:1.0-beta-3", "com.google.code.findbugs:jsr305:3.0.2", "com.google.code.gson:gson:2.8.9", "com.google.errorprone:error_prone_annotations:2.3.2", diff --git a/python/BUILD.bazel b/python/BUILD.bazel index 86bba9bd1844a..2077c1e24d887 100644 --- a/python/BUILD.bazel +++ b/python/BUILD.bazel @@ -365,7 +365,7 @@ py_test( cc_library( name = "proto_api", - hdrs = ["python/google/protobuf/proto_api.h"], + hdrs = ["google/protobuf/proto_api.h"], visibility = ["//visibility:public"], deps = [ "//external:python_headers",