Skip to content

Commit a9ba8af

Browse files
committed
format and call merge_compile_kind inside collect_used_deps
1 parent 3aae437 commit a9ba8af

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

src/cargo/core/package.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ impl<'cfg> PackageSet<'cfg> {
494494
root_ids: &[PackageId],
495495
has_dev_units: HasDevUnits,
496496
requested_kinds: &[CompileKind],
497-
target_data: &RustcTargetData<'cfg>,
497+
target_data: &mut RustcTargetData<'cfg>,
498498
force_all_targets: ForceAllTargets,
499499
) -> CargoResult<()> {
500500
fn collect_used_deps(
@@ -503,7 +503,7 @@ impl<'cfg> PackageSet<'cfg> {
503503
pkg_id: PackageId,
504504
has_dev_units: HasDevUnits,
505505
requested_kinds: &[CompileKind],
506-
target_data: &RustcTargetData<'_>,
506+
target_data: &mut RustcTargetData<'_>,
507507
force_all_targets: ForceAllTargets,
508508
additional_kinds: Vec<CompileKind>,
509509
) -> CargoResult<()> {
@@ -515,11 +515,23 @@ impl<'cfg> PackageSet<'cfg> {
515515
resolve,
516516
has_dev_units,
517517
requested_kinds,
518-
target_data,
518+
&*target_data,
519519
force_all_targets,
520520
&additional_kinds,
521521
);
522-
for (pkg_id, _dep, additional_kinds) in filtered_deps {
522+
523+
let deps = filtered_deps
524+
.map(|(pkg_id, _dep, additional_kinds)| (pkg_id, additional_kinds))
525+
.collect::<Vec<_>>();
526+
527+
for (pkg_id, additional_kinds) in deps {
528+
// The dependency can specify additional targets through artifact dependencies.
529+
// We need to run `rustc` to query the target specific configuration before we look
530+
// at this dependency's dependencies.
531+
for kind in &additional_kinds {
532+
target_data.merge_compile_kind(*kind)?;
533+
}
534+
523535
collect_used_deps(
524536
used,
525537
resolve,

src/cargo/ops/resolve.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ pub fn resolve_ws_with_opts<'cfg>(
198198
&member_ids,
199199
has_dev_units,
200200
requested_targets,
201-
&*target_data,
201+
&mut *target_data,
202202
force_all_targets,
203203
)?;
204204

tests/testsuite/artifact_dep.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2905,9 +2905,10 @@ fn check_transitive_artifact_dependency_with_different_target() {
29052905
.masquerade_as_nightly_cargo(&["bindeps"])
29062906
.with_stderr_contains(
29072907
"error: failed to run `rustc` to learn about target-specific information",
2908-
).with_stderr_contains(
2908+
)
2909+
.with_stderr_contains(
29092910
"[..] error: Error loading target specification: Could not find specification for \
2910-
target \"custom-target\". [..]"
2911+
target \"custom-target\". [..]",
29112912
)
29122913
.with_status(101)
29132914
.run();

0 commit comments

Comments
 (0)