Skip to content

Commit

Permalink
x
Browse files Browse the repository at this point in the history
  • Loading branch information
ctiller committed Feb 6, 2025
1 parent f3f5501 commit d60cbf0
Show file tree
Hide file tree
Showing 2 changed files with 156 additions and 4 deletions.
104 changes: 104 additions & 0 deletions config.m4

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

56 changes: 52 additions & 4 deletions tools/artifact_gen/metadata_for_wrapped_languages.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -55,8 +56,6 @@ void AddPhpConfig(nlohmann::json& config) {
const nlohmann::json* lib = it->second;
std::vector<std::string> src = (*lib)["src"];
srcs.insert(src.begin(), src.end());
} else {
LOG(INFO) << "php not found " << dep;
}
}
config["php_config_m4"]["srcs"] = srcs;
Expand Down Expand Up @@ -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++"},
Expand Down Expand Up @@ -186,11 +184,61 @@ void AddAbseilMetadata(nlohmann::json& config) {
config["libs"].push_back(build);
}
}

class TransitiveDepsCalculator {
public:
void DeclareDeps(std::string name, std::set<std::string> deps) {
auto& dst = deps_[name];
for (const auto& dep : deps) dst.insert(dep);
}

std::set<std::string> Calculate(std::string which) {
std::set<std::string> deps;
Fill(which, &deps);
return deps;
}

private:
void Fill(std::string which, std::set<std::string>* 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<std::string, std::set<std::string>> 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);
}

0 comments on commit d60cbf0

Please sign in to comment.