Skip to content

Commit 76196c3

Browse files
committed
prepare: stop removing path dependencies from Cargo.toml
The prepare step that removes path dependencies from Cargo.toml was present since the start of the Crater project, but it's actually not needed. Path dependencies are automatically removed from crates.io packages, and path dependencies in git repositories are supposed to work (stripping them actually breaks some packages).
1 parent 828d13c commit 76196c3

File tree

2 files changed

+5
-61
lines changed

2 files changed

+5
-61
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
55

66
## Unreleased
77

8+
### Changed
9+
10+
- Path dependencies are no longer removed from `Cargo.toml` during the prepare
11+
step.
12+
813
## [0.11.1] - 2021-01-25
914

1015
### Changed

src/prepare.rs

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,6 @@ impl<'a> TomlTweaker<'a> {
197197
self.remove_missing_items("test");
198198
self.remove_parent_workspaces();
199199
self.remove_unwanted_cargo_features();
200-
self.remove_dependencies();
201200
self.apply_patches();
202201

203202
info!("finished tweaking {}", self.krate);
@@ -284,21 +283,6 @@ impl<'a> TomlTweaker<'a> {
284283
}
285284
}
286285

287-
fn remove_dependencies(&mut self) {
288-
let krate = self.krate.to_string();
289-
290-
Self::remove_dependencies_from_table(&mut self.table, &krate);
291-
292-
// Tweak target-specific dependencies
293-
if let Some(&mut Value::Table(ref mut targets)) = self.table.get_mut("target") {
294-
for (_, target) in targets.iter_mut() {
295-
if let Value::Table(ref mut target_table) = *target {
296-
Self::remove_dependencies_from_table(target_table, &krate);
297-
}
298-
}
299-
}
300-
}
301-
302286
fn apply_patches(&mut self) {
303287
if !self.patches.is_empty() {
304288
let mut patch_table = self.table.get_mut("patch");
@@ -335,24 +319,6 @@ impl<'a> TomlTweaker<'a> {
335319
}
336320
}
337321

338-
// This is not a method to avoid borrow checker problems
339-
fn remove_dependencies_from_table(table: &mut Table, krate: &str) {
340-
// Convert path dependencies to registry dependencies
341-
for section in &["dependencies", "dev-dependencies", "build-dependencies"] {
342-
if let Some(&mut Value::Table(ref mut deps)) = table.get_mut(*section) {
343-
// Iterate through the "name = { ... }", removing any "path"
344-
// keys in the dependency definition
345-
for (dep_name, v) in deps.iter_mut() {
346-
if let Value::Table(ref mut dep_props) = *v {
347-
if dep_props.remove("path").is_some() {
348-
info!("removed path dependency {} from {}", dep_name, krate);
349-
}
350-
}
351-
}
352-
}
353-
}
354-
}
355-
356322
pub fn save(self, output_file: &Path) -> Result<(), Error> {
357323
let crate_name = self.krate.to_string();
358324
::std::fs::write(output_file, Value::Table(self.table).to_string().as_bytes())?;
@@ -400,15 +366,6 @@ mod tests {
400366
[package]
401367
name = "foo"
402368
version = "1.0"
403-
404-
[dependencies]
405-
bar = "1.0"
406-
407-
[dev-dependencies]
408-
baz = "1.0"
409-
410-
[target."cfg(unix)".dependencies]
411-
quux = "1.0"
412369
};
413370

414371
let result = toml.clone();
@@ -434,15 +391,6 @@ mod tests {
434391
publish-lockfile = true
435392
default-run = "foo"
436393

437-
[dependencies]
438-
bar = { version = "1.0", path = "../bar" }
439-
440-
[dev-dependencies]
441-
baz = { version = "1.0", path = "../baz" }
442-
443-
[target."cfg(unix)".dependencies]
444-
quux = { version = "1.0", path = "../quux" }
445-
446394
[workspace]
447395
members = []
448396
};
@@ -454,15 +402,6 @@ mod tests {
454402
name = "foo"
455403
version = "1.0"
456404

457-
[dependencies]
458-
bar = { version = "1.0" }
459-
460-
[dev-dependencies]
461-
baz = { version = "1.0" }
462-
463-
[target."cfg(unix)".dependencies]
464-
quux = { version = "1.0" }
465-
466405
[workspace]
467406
members = []
468407
};

0 commit comments

Comments
 (0)