account for new dep:foo syntax when patching foreign dependencies
This commit is contained in:
parent
a0b4b78a01
commit
f8ea7144d8
1 changed files with 13 additions and 7 deletions
|
@ -218,7 +218,7 @@ def filter_out_features_re(dropped_features):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def drop_foreign_dependencies(lines):
|
def drop_foreign_dependencies(lines, features):
|
||||||
dropped_lines = 0
|
dropped_lines = 0
|
||||||
dropped_optional_deps = set()
|
dropped_optional_deps = set()
|
||||||
good_lines = []
|
good_lines = []
|
||||||
|
@ -243,12 +243,17 @@ def drop_foreign_dependencies(lines):
|
||||||
if not keep:
|
if not keep:
|
||||||
# dropped feature was optional:
|
# dropped feature was optional:
|
||||||
# remove occurrences from feature dependencies
|
# remove occurrences from feature dependencies
|
||||||
|
if feature in features:
|
||||||
dropped_optional_deps.add(feature)
|
dropped_optional_deps.add(feature)
|
||||||
|
else:
|
||||||
|
dropped_optional_deps.add(f"dep:{feature}")
|
||||||
else:
|
else:
|
||||||
# optional dependency occurs in multiple targets:
|
# optional dependency occurs in multiple targets:
|
||||||
# do not drop from feature dependencies
|
# do not drop from feature dependencies
|
||||||
if feature in dropped_optional_deps:
|
if feature in dropped_optional_deps:
|
||||||
dropped_optional_deps.remove(feature)
|
dropped_optional_deps.remove(feature)
|
||||||
|
if f"dep:{feature}" in dropped_optional_deps:
|
||||||
|
dropped_optional_deps.remove(f"dep:{feature}")
|
||||||
|
|
||||||
elif line.startswith("["):
|
elif line.startswith("["):
|
||||||
# previous section ended, let's keep printing lines again
|
# previous section ended, let's keep printing lines again
|
||||||
|
@ -287,7 +292,7 @@ def make_diff(path, lines1, mtime1, lines2, mtime2):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def make_patches(args, version, toml):
|
def make_patches(args, version, toml, features):
|
||||||
"""Returns up to two patches (automatic and manual).
|
"""Returns up to two patches (automatic and manual).
|
||||||
|
|
||||||
For the manual patch, an editor is spawned on toml and a diff is
|
For the manual patch, an editor is spawned on toml and a diff is
|
||||||
|
@ -311,7 +316,7 @@ def make_patches(args, version, toml):
|
||||||
# calculated metadata and generated spec file will not reflect the patches
|
# calculated metadata and generated spec file will not reflect the patches
|
||||||
# to Cargo.toml that were generated here.
|
# to Cargo.toml that were generated here.
|
||||||
|
|
||||||
if toml_after := args.patch_foreign and drop_foreign_dependencies(toml_before):
|
if toml_after := args.patch_foreign and drop_foreign_dependencies(toml_before, features):
|
||||||
# remove original Cargo.toml file
|
# remove original Cargo.toml file
|
||||||
os.remove(toml)
|
os.remove(toml)
|
||||||
|
|
||||||
|
@ -423,9 +428,9 @@ def make_diff_metadata(args, crate, version):
|
||||||
else:
|
else:
|
||||||
if args.store_crate:
|
if args.store_crate:
|
||||||
raise ValueError("--store-crate can only be used for a crate")
|
raise ValueError("--store-crate can only be used for a crate")
|
||||||
|
|
||||||
toml, crate, version, doc_files, license_files = local_toml(crate, version)
|
toml, crate, version, doc_files, license_files = local_toml(crate, version)
|
||||||
diffs = make_patches(args, version, toml)
|
metadata_orig = Metadata.from_file(toml)
|
||||||
|
diffs = make_patches(args, version, toml, metadata_orig[0].features)
|
||||||
metadata = Metadata.from_file(toml)
|
metadata = Metadata.from_file(toml)
|
||||||
if len(metadata) > 1:
|
if len(metadata) > 1:
|
||||||
log.warn(f"More than one set of metadata found for {toml}, using the first one.")
|
log.warn(f"More than one set of metadata found for {toml}, using the first one.")
|
||||||
|
@ -438,7 +443,8 @@ def make_diff_metadata(args, crate, version):
|
||||||
if not license_files:
|
if not license_files:
|
||||||
log.error(f"No license files detected in {crate!r}.")
|
log.error(f"No license files detected in {crate!r}.")
|
||||||
|
|
||||||
diffs = make_patches(args, version, toml)
|
metadata_orig = Metadata.from_file(toml)
|
||||||
|
diffs = make_patches(args, version, toml, metadata_orig[0].features)
|
||||||
metadata = Metadata.from_file(toml)
|
metadata = Metadata.from_file(toml)
|
||||||
if len(metadata) > 1:
|
if len(metadata) > 1:
|
||||||
log.warn(f"More than one set of metadata found for {toml}, using the first one.")
|
log.warn(f"More than one set of metadata found for {toml}, using the first one.")
|
||||||
|
|
Loading…
Reference in a new issue