diff --git a/config.m4 b/config.m4 index 59402cb4169bc..d615d7c3d65f1 100644 --- a/config.m4 +++ b/config.m4 @@ -912,16 +912,74 @@ if test "$PHP_GRPC" != "no"; then src/php/ext/grpc/server_credentials.c \ src/php/ext/grpc/timeval.c \ third_party/abseil-cpp/absl/base/internal/cycleclock.cc \ + third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc \ + third_party/abseil-cpp/absl/base/internal/raw_logging.cc \ third_party/abseil-cpp/absl/base/internal/spinlock.cc \ + third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc \ + third_party/abseil-cpp/absl/base/internal/strerror.cc \ third_party/abseil-cpp/absl/base/internal/sysinfo.cc \ third_party/abseil-cpp/absl/base/internal/thread_identity.cc \ + third_party/abseil-cpp/absl/base/internal/throw_delegate.cc \ third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc \ third_party/abseil-cpp/absl/base/log_severity.cc \ + third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc \ + third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc \ + third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc \ + third_party/abseil-cpp/absl/crc/crc32c.cc \ + third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc \ + third_party/abseil-cpp/absl/crc/internal/crc.cc \ + third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc \ + third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc \ + third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc \ + third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc \ + third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc \ + third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc \ + third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc \ + third_party/abseil-cpp/absl/debugging/internal/demangle.cc \ + third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc \ + third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc \ + third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc \ + third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc \ + third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc \ + third_party/abseil-cpp/absl/debugging/stacktrace.cc \ + third_party/abseil-cpp/absl/debugging/symbolize.cc \ + third_party/abseil-cpp/absl/flags/commandlineflag.cc \ + third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc \ + third_party/abseil-cpp/absl/flags/internal/flag.cc \ + third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc \ + third_party/abseil-cpp/absl/flags/internal/program_name.cc \ third_party/abseil-cpp/absl/flags/marshalling.cc \ + third_party/abseil-cpp/absl/flags/reflection.cc \ + third_party/abseil-cpp/absl/flags/usage_config.cc \ + third_party/abseil-cpp/absl/hash/internal/city.cc \ third_party/abseil-cpp/absl/hash/internal/hash.cc \ + third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc \ third_party/abseil-cpp/absl/log/globals.cc \ + third_party/abseil-cpp/absl/log/internal/check_op.cc \ + third_party/abseil-cpp/absl/log/internal/conditions.cc \ + third_party/abseil-cpp/absl/log/internal/fnmatch.cc \ + third_party/abseil-cpp/absl/log/internal/globals.cc \ + third_party/abseil-cpp/absl/log/internal/log_format.cc \ + third_party/abseil-cpp/absl/log/internal/log_message.cc \ + third_party/abseil-cpp/absl/log/internal/log_sink_set.cc \ + third_party/abseil-cpp/absl/log/internal/nullguard.cc \ + third_party/abseil-cpp/absl/log/internal/proto.cc \ + third_party/abseil-cpp/absl/log/internal/vlog_config.cc \ + third_party/abseil-cpp/absl/log/log_entry.cc \ + third_party/abseil-cpp/absl/log/log_sink.cc \ + third_party/abseil-cpp/absl/numeric/int128.cc \ + third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc \ third_party/abseil-cpp/absl/random/discrete_distribution.cc \ third_party/abseil-cpp/absl/random/gaussian_distribution.cc \ + third_party/abseil-cpp/absl/random/internal/pool_urbg.cc \ + third_party/abseil-cpp/absl/random/internal/randen.cc \ + third_party/abseil-cpp/absl/random/internal/randen_detect.cc \ + third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc \ + third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc \ + third_party/abseil-cpp/absl/random/internal/randen_slow.cc \ + third_party/abseil-cpp/absl/random/internal/seed_material.cc \ + third_party/abseil-cpp/absl/random/seed_gen_exception.cc \ + third_party/abseil-cpp/absl/random/seed_sequences.cc \ third_party/abseil-cpp/absl/status/internal/status_internal.cc \ third_party/abseil-cpp/absl/status/status.cc \ third_party/abseil-cpp/absl/status/status_payload_printer.cc \ @@ -934,19 +992,40 @@ if test "$PHP_GRPC" != "no"; then third_party/abseil-cpp/absl/strings/escaping.cc \ third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc \ third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc \ + third_party/abseil-cpp/absl/strings/internal/cord_internal.cc \ + third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc \ + third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc \ + third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc \ + third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc \ + third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc \ + third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc \ + third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc \ + third_party/abseil-cpp/absl/strings/internal/cordz_info.cc \ third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc \ + third_party/abseil-cpp/absl/strings/internal/escaping.cc \ third_party/abseil-cpp/absl/strings/internal/memutil.cc \ + third_party/abseil-cpp/absl/strings/internal/ostringstream.cc \ + third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc \ + third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc \ + third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc \ + third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc \ + third_party/abseil-cpp/absl/strings/internal/str_format/output.cc \ + third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc \ third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc \ + third_party/abseil-cpp/absl/strings/internal/utf8.cc \ third_party/abseil-cpp/absl/strings/match.cc \ third_party/abseil-cpp/absl/strings/numbers.cc \ third_party/abseil-cpp/absl/strings/str_cat.cc \ third_party/abseil-cpp/absl/strings/str_replace.cc \ third_party/abseil-cpp/absl/strings/str_split.cc \ + third_party/abseil-cpp/absl/strings/string_view.cc \ third_party/abseil-cpp/absl/strings/substitute.cc \ third_party/abseil-cpp/absl/synchronization/barrier.cc \ third_party/abseil-cpp/absl/synchronization/blocking_counter.cc \ third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc \ third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc \ + third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc \ + third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc \ third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc \ third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc \ third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc \ @@ -959,7 +1038,19 @@ if test "$PHP_GRPC" != "no"; then third_party/abseil-cpp/absl/time/clock.cc \ third_party/abseil-cpp/absl/time/duration.cc \ third_party/abseil-cpp/absl/time/format.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc \ + third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc \ third_party/abseil-cpp/absl/time/time.cc \ + third_party/abseil-cpp/absl/types/bad_optional_access.cc \ + third_party/abseil-cpp/absl/types/bad_variant_access.cc \ third_party/address_sorting/address_sorting.c \ third_party/address_sorting/address_sorting_posix.c \ third_party/address_sorting/address_sorting_windows.c \ @@ -1559,17 +1650,30 @@ if test "$PHP_GRPC" != "no"; then PHP_ADD_BUILD_DIR($ext_builddir/src/php/ext/grpc) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/base) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/base/internal) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/container/internal) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/crc) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/crc/internal) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/debugging) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/debugging/internal) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/flags) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/flags/internal) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/hash/internal) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/log) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/log/internal) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/numeric) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/profiling/internal) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/random) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/random/internal) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/status) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/status/internal) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/strings) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/strings/internal) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/strings/internal/str_format) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/synchronization) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/synchronization/internal) PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/time) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/time/internal/cctz/src) + PHP_ADD_BUILD_DIR($ext_builddir/third_party/abseil-cpp/absl/types) PHP_ADD_BUILD_DIR($ext_builddir/third_party/address_sorting) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto) PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl-with-bazel/src/crypto/asn1) diff --git a/tools/artifact_gen/metadata_for_wrapped_languages.cc b/tools/artifact_gen/metadata_for_wrapped_languages.cc index f02ed9a88d5ae..0376e099ea7c0 100644 --- a/tools/artifact_gen/metadata_for_wrapped_languages.cc +++ b/tools/artifact_gen/metadata_for_wrapped_languages.cc @@ -24,6 +24,7 @@ #include "absl/strings/numbers.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_split.h" +#include "absl/strings/str_join.h" #include "utils.h" namespace { @@ -55,8 +56,6 @@ void AddPhpConfig(nlohmann::json& config) { const nlohmann::json* lib = it->second; std::vector src = (*lib)["src"]; srcs.insert(src.begin(), src.end()); - } else { - LOG(INFO) << "php not found " << dep; } } config["php_config_m4"]["srcs"] = srcs; @@ -141,8 +140,7 @@ void AddBoringSslMetadata(nlohmann::json& metadata) { file_list({"ssl_headers", "ssl_internal_headers", "crypto_headers", "crypto_internal_headers", "fips_fragments"})}, {"boringssl", true}, - {"defaults", "boringssl"}, - {"transitive_deps", nlohmann::json::array()}}); + {"defaults", "boringssl"}}); metadata["libs"].push_back({{"name", "boringssl_test_util"}, {"build", "private"}, {"language", "c++"}, @@ -186,11 +184,61 @@ void AddAbseilMetadata(nlohmann::json& config) { config["libs"].push_back(build); } } + +class TransitiveDepsCalculator { +public: + void DeclareDeps(std::string name, std::set deps) { + auto& dst = deps_[name]; + for (const auto& dep : deps) dst.insert(dep); + } + + std::set Calculate(std::string which) { + std::set deps; + Fill(which, &deps); + return deps; + } + +private: + void Fill(std::string which, std::set* out) { + auto it = deps_.find(which); + if (it == deps_.end()) return; + for (const auto& dep : it->second) { + if (out->emplace(dep).second) { + Fill(dep, out); + } + } + } + + std::map> deps_; +}; + +void ExpandTransitiveDeps(nlohmann::json& config) { + TransitiveDepsCalculator calc; + for (auto& lib : config["libs"]) { + calc.DeclareDeps(lib["name"], {}); + auto grab = [&lib, &calc](std::string tag) { + auto value = lib[tag]; + if (!value.is_array()) { + if (!value.is_null()) { + LOG(INFO) << lib["name"] << " " << tag << " " << value; + } + return; + } + calc.DeclareDeps(lib["name"], value); + }; + grab("transitive_deps"); + grab("deps"); + } + for (auto& lib : config["libs"]) { + lib["transitive_deps"] = calc.Calculate(lib["name"]); + } +} } // namespace void AddMetadataForWrappedLanguages(nlohmann::json& config) { AddBoringSslMetadata(config); AddAbseilMetadata(config); + ExpandTransitiveDeps(config); AddPhpConfig(config); ExpandVersion(config); }