Skip to content

Commit 8a99fa6

Browse files
committed
fix: update resolve_all_features() to filter pkg deps
1 parent ea459ea commit 8a99fa6

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

src/cargo/core/compiler/unit_dependencies.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ use crate::core::compiler::{
2828
};
2929
use crate::core::dependency::{Artifact, ArtifactKind, ArtifactTarget, DepKind};
3030
use crate::core::profiles::{Profile, Profiles, UnitFor};
31-
use crate::core::resolver::Resolve;
3231
use crate::core::resolver::features::{FeaturesFor, ResolvedFeatures};
32+
use crate::core::resolver::{ForceAllTargets, HasDevUnits, Resolve};
3333
use crate::core::{
3434
Dependency, Feature, Package, PackageId, PackageSet, Target, TargetKind, Workspace,
3535
};
@@ -399,6 +399,10 @@ fn compute_deps(
399399
state.features(),
400400
state.package_set,
401401
id,
402+
HasDevUnits::No, // FIXME: see if anywhere specifies this
403+
&[unit.kind],
404+
state.target_data,
405+
ForceAllTargets::No, // FIXME: see if anywhere specifies this
402406
);
403407
rf.iter().all(|f| features.contains(f))
404408
}

src/cargo/core/package.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ impl<'gctx> PackageSet<'gctx> {
629629
Ok(())
630630
}
631631

632-
fn filter_deps<'a>(
632+
pub fn filter_deps<'a>(
633633
pkg_id: PackageId,
634634
resolve: &'a Resolve,
635635
has_dev_units: HasDevUnits,

src/cargo/ops/cargo_compile/mod.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ use crate::core::compiler::{CrateType, TargetInfo, apply_env_config, standard_li
4848
use crate::core::compiler::{DefaultExecutor, Executor, UnitInterner};
4949
use crate::core::profiles::Profiles;
5050
use crate::core::resolver::features::{self, CliFeatures, FeaturesFor};
51-
use crate::core::resolver::{HasDevUnits, Resolve};
51+
use crate::core::resolver::{ForceAllTargets, HasDevUnits, Resolve};
5252
use crate::core::{PackageId, PackageSet, SourceId, TargetKind, Workspace};
5353
use crate::drop_println;
5454
use crate::ops;
@@ -278,7 +278,7 @@ pub fn create_bcx<'a, 'gctx>(
278278
cli_features,
279279
&specs,
280280
has_dev_units,
281-
crate::core::resolver::features::ForceAllTargets::No,
281+
ForceAllTargets::No,
282282
dry_run,
283283
)?;
284284
let WorkspaceResolve {
@@ -974,6 +974,10 @@ pub fn resolve_all_features(
974974
resolved_features: &features::ResolvedFeatures,
975975
package_set: &PackageSet<'_>,
976976
package_id: PackageId,
977+
has_dev_units: HasDevUnits,
978+
requested_kinds: &[CompileKind],
979+
target_data: &RustcTargetData<'_>,
980+
force_all_targets: ForceAllTargets,
977981
) -> HashSet<String> {
978982
let mut features: HashSet<String> = resolved_features
979983
.activated_features(package_id, FeaturesFor::NormalOrDev)
@@ -983,7 +987,15 @@ pub fn resolve_all_features(
983987

984988
// Include features enabled for use by dependencies so targets can also use them with the
985989
// required-features field when deciding whether to be built or skipped.
986-
for (dep_id, deps) in resolve_with_overrides.deps(package_id) {
990+
let filtered_deps = PackageSet::filter_deps(
991+
package_id,
992+
resolve_with_overrides,
993+
has_dev_units,
994+
requested_kinds,
995+
target_data,
996+
force_all_targets,
997+
);
998+
for (dep_id, deps) in filtered_deps {
987999
let is_proc_macro = package_set
9881000
.get_one(dep_id)
9891001
.expect("packages downloaded")

src/cargo/ops/cargo_compile/unit_generator.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::core::compiler::{RustcTargetData, UnitInterner};
1111
use crate::core::dependency::DepKind;
1212
use crate::core::profiles::{Profiles, UnitFor};
1313
use crate::core::resolver::features::{self, FeaturesFor};
14-
use crate::core::resolver::{HasDevUnits, Resolve};
14+
use crate::core::resolver::{ForceAllTargets, HasDevUnits, Resolve};
1515
use crate::core::{FeatureValue, Package, PackageSet, Summary, Target};
1616
use crate::util::restricted_names::is_glob_pattern;
1717
use crate::util::{CargoResult, closest_msg};
@@ -716,6 +716,10 @@ Rustdoc did not scrape the following examples because they require dev-dependenc
716716
self.resolved_features,
717717
self.package_set,
718718
pkg.package_id(),
719+
self.has_dev_units,
720+
self.requested_kinds,
721+
self.target_data,
722+
ForceAllTargets::No,
719723
)
720724
});
721725
rf.iter().filter(|f| !features.contains(*f)).collect()

0 commit comments

Comments
 (0)