metadata: Support "renamed" dependencies
For example, ```toml [dependencies] open-ssl = { version="0.10", package = "openssl", optional = true } [features] openssl = ["actix-tls/openssl", "awc/openssl", "open-ssl"] ``` would end up previously with just +openssl subpackage with dependency on crate(openssl). Now we create +open-ssl subpackage with dependency on crate(openssl) and +openssl subpackage with dependencies on crate(actix-tls/openssl), crate(awc/openssl) and +open-ssl subpackage. Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
This commit is contained in:
parent
b2d348bd41
commit
509c9ca267
1 changed files with 5 additions and 2 deletions
|
@ -286,14 +286,17 @@ class Metadata:
|
||||||
for dep in md["dependencies"]:
|
for dep in md["dependencies"]:
|
||||||
if dep["kind"] == "dev":
|
if dep["kind"] == "dev":
|
||||||
continue
|
continue
|
||||||
deps_by_name[dep["name"]].append(Dependency.from_json(dep))
|
deps_by_name[dep["rename"] or dep["name"]].append(Dependency.from_json(dep))
|
||||||
|
|
||||||
deps_by_feature = {}
|
deps_by_feature = {}
|
||||||
|
local_features = set(md["features"]) | set(
|
||||||
|
d["rename"] for d in md["dependencies"] if d["rename"] is not None
|
||||||
|
)
|
||||||
for feature, f_deps in md["features"].items():
|
for feature, f_deps in md["features"].items():
|
||||||
features = {None}
|
features = {None}
|
||||||
deps = set()
|
deps = set()
|
||||||
for dep in f_deps:
|
for dep in f_deps:
|
||||||
if dep in md["features"]:
|
if dep in local_features:
|
||||||
features.add(dep)
|
features.add(dep)
|
||||||
else:
|
else:
|
||||||
pkg, _, f = dep.partition("/")
|
pkg, _, f = dep.partition("/")
|
||||||
|
|
Loading…
Reference in a new issue