Skip to content

Commit 65c0264

Browse files
committed
Rename HasDevUnits to HasTransitiveUnits as it now also control doc deps
1 parent 6f4f383 commit 65c0264

12 files changed

+72
-58
lines changed

src/cargo/core/compiler/standard_lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::core::compiler::UnitInterner;
55
use crate::core::compiler::{CompileKind, CompileMode, RustcTargetData, Unit};
66
use crate::core::profiles::{Profiles, UnitFor};
77
use crate::core::resolver::features::{CliFeatures, FeaturesFor, ResolvedFeatures};
8-
use crate::core::resolver::HasDevUnits;
8+
use crate::core::resolver::HasTransitiveUnits;
99
use crate::core::{Dependency, PackageId, PackageSet, Resolve, SourceId, Workspace};
1010
use crate::ops::{self, Packages};
1111
use crate::util::errors::CargoResult;
@@ -116,7 +116,7 @@ pub fn resolve_std<'cfg>(
116116
requested_targets,
117117
&cli_features,
118118
&specs,
119-
HasDevUnits::No,
119+
HasTransitiveUnits::No,
120120
crate::core::resolver::features::ForceAllTargets::No,
121121
)?;
122122
Ok((

src/cargo/core/package.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use toml_edit::easy as toml;
2121
use crate::core::compiler::{CompileKind, RustcTargetData};
2222
use crate::core::dependency::DepKind;
2323
use crate::core::resolver::features::ForceAllTargets;
24-
use crate::core::resolver::{HasDevUnits, Resolve};
24+
use crate::core::resolver::{HasTransitiveUnits, Resolve};
2525
use crate::core::source::MaybePackage;
2626
use crate::core::{Dependency, Manifest, PackageId, SourceId, Target};
2727
use crate::core::{SourceMap, Summary, Workspace};
@@ -494,7 +494,7 @@ impl<'cfg> PackageSet<'cfg> {
494494
&self,
495495
resolve: &Resolve,
496496
root_ids: &[PackageId],
497-
has_dev_units: HasDevUnits,
497+
has_transitive_units: HasTransitiveUnits,
498498
requested_kinds: &[CompileKind],
499499
target_data: &RustcTargetData<'cfg>,
500500
force_all_targets: ForceAllTargets,
@@ -503,7 +503,7 @@ impl<'cfg> PackageSet<'cfg> {
503503
used: &mut BTreeSet<PackageId>,
504504
resolve: &Resolve,
505505
pkg_id: PackageId,
506-
has_dev_units: HasDevUnits,
506+
has_transitive_units: HasTransitiveUnits,
507507
requested_kinds: &[CompileKind],
508508
target_data: &RustcTargetData<'_>,
509509
force_all_targets: ForceAllTargets,
@@ -514,7 +514,7 @@ impl<'cfg> PackageSet<'cfg> {
514514
let filtered_deps = PackageSet::filter_deps(
515515
pkg_id,
516516
resolve,
517-
has_dev_units,
517+
has_transitive_units,
518518
requested_kinds,
519519
target_data,
520520
force_all_targets,
@@ -524,7 +524,7 @@ impl<'cfg> PackageSet<'cfg> {
524524
used,
525525
resolve,
526526
pkg_id,
527-
has_dev_units,
527+
has_transitive_units,
528528
requested_kinds,
529529
target_data,
530530
force_all_targets,
@@ -543,7 +543,7 @@ impl<'cfg> PackageSet<'cfg> {
543543
&mut to_download,
544544
resolve,
545545
*id,
546-
has_dev_units,
546+
has_transitive_units,
547547
requested_kinds,
548548
target_data,
549549
force_all_targets,
@@ -560,7 +560,7 @@ impl<'cfg> PackageSet<'cfg> {
560560
ws: &Workspace<'cfg>,
561561
resolve: &Resolve,
562562
root_ids: &[PackageId],
563-
has_dev_units: HasDevUnits,
563+
has_transitive_units: HasTransitiveUnits,
564564
requested_kinds: &[CompileKind],
565565
target_data: &RustcTargetData<'_>,
566566
force_all_targets: ForceAllTargets,
@@ -571,7 +571,7 @@ impl<'cfg> PackageSet<'cfg> {
571571
let dep_pkgs_to_deps: Vec<_> = PackageSet::filter_deps(
572572
root_id,
573573
resolve,
574-
has_dev_units,
574+
has_transitive_units,
575575
requested_kinds,
576576
target_data,
577577
force_all_targets,
@@ -612,7 +612,7 @@ impl<'cfg> PackageSet<'cfg> {
612612
fn filter_deps<'a>(
613613
pkg_id: PackageId,
614614
resolve: &'a Resolve,
615-
has_dev_units: HasDevUnits,
615+
has_transitive_units: HasTransitiveUnits,
616616
requested_kinds: &'a [CompileKind],
617617
target_data: &'a RustcTargetData<'_>,
618618
force_all_targets: ForceAllTargets,
@@ -621,7 +621,9 @@ impl<'cfg> PackageSet<'cfg> {
621621
.deps(pkg_id)
622622
.filter(move |&(_id, deps)| {
623623
deps.iter().any(|dep| {
624-
if dep.kind() == DepKind::Development && has_dev_units == HasDevUnits::No {
624+
if (dep.kind() == DepKind::Development || dep.kind() == DepKind::Documentation)
625+
&& has_transitive_units == HasTransitiveUnits::No
626+
{
625627
return false;
626628
}
627629
if force_all_targets == ForceAllTargets::No {

src/cargo/core/resolver/dep_cache.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,9 @@ pub fn resolve_features<'b>(
249249
) -> ActivateResult<(HashSet<InternedString>, Vec<(Dependency, FeaturesSet)>)> {
250250
// First, filter by dev-dependencies or doc-dependencies.
251251
let deps = s.dependencies();
252-
let deps = deps.iter().filter(|d| d.is_transitive() || opts.dev_deps);
252+
let deps = deps
253+
.iter()
254+
.filter(|d| d.is_transitive() || opts.transitive_deps);
253255

254256
let reqs = build_requirements(parent, s, opts)?;
255257
let mut ret = Vec::new();

src/cargo/core/resolver/features.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ pub struct FeatureOpts {
8686
/// `cargo test` because the lib may need to be built 3 times instead of
8787
/// twice.
8888
#[derive(Copy, Clone, PartialEq)]
89-
pub enum HasDevUnits {
89+
pub enum HasTransitiveUnits {
9090
Yes,
9191
No,
9292
}
@@ -163,7 +163,7 @@ impl FeaturesFor {
163163
impl FeatureOpts {
164164
pub fn new(
165165
ws: &Workspace<'_>,
166-
has_dev_units: HasDevUnits,
166+
has_dev_units: HasTransitiveUnits,
167167
force_all_targets: ForceAllTargets,
168168
) -> CargoResult<FeatureOpts> {
169169
let mut opts = FeatureOpts::default();
@@ -195,7 +195,7 @@ impl FeatureOpts {
195195
enable(&vec!["all".to_string()]).unwrap();
196196
}
197197
}
198-
if let HasDevUnits::Yes = has_dev_units {
198+
if let HasTransitiveUnits::Yes = has_dev_units {
199199
// Dev deps cannot be decoupled when they are in use.
200200
opts.decouple_dev_deps = false;
201201
}
@@ -206,12 +206,15 @@ impl FeatureOpts {
206206
}
207207

208208
/// Creates a new FeatureOpts for the given behavior.
209-
pub fn new_behavior(behavior: ResolveBehavior, has_dev_units: HasDevUnits) -> FeatureOpts {
209+
pub fn new_behavior(
210+
behavior: ResolveBehavior,
211+
has_dev_units: HasTransitiveUnits,
212+
) -> FeatureOpts {
210213
match behavior {
211214
ResolveBehavior::V1 => FeatureOpts::default(),
212215
ResolveBehavior::V2 => FeatureOpts {
213216
decouple_host_deps: true,
214-
decouple_dev_deps: has_dev_units == HasDevUnits::No,
217+
decouple_dev_deps: has_dev_units == HasTransitiveUnits::No,
215218
ignore_inactive_targets: true,
216219
compare: false,
217220
},

src/cargo/core/resolver/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ use self::types::{FeaturesSet, RcVecIter, RemainingDeps, ResolverProgress};
6969
pub use self::encode::Metadata;
7070
pub use self::encode::{EncodableDependency, EncodablePackageId, EncodableResolve};
7171
pub use self::errors::{ActivateError, ActivateResult, ResolveError};
72-
pub use self::features::{CliFeatures, ForceAllTargets, HasDevUnits};
72+
pub use self::features::{CliFeatures, ForceAllTargets, HasTransitiveUnits};
7373
pub use self::resolve::{Resolve, ResolveVersion};
7474
pub use self::types::{ResolveBehavior, ResolveOpts};
7575
pub use self::version_prefs::{VersionOrdering, VersionPreferences};
@@ -378,7 +378,7 @@ fn activate_deps_loop(
378378

379379
let pid = candidate.package_id();
380380
let opts = ResolveOpts {
381-
dev_deps: false,
381+
transitive_deps: false,
382382
features: RequestedFeatures::DepFeatures {
383383
features: Rc::clone(&features),
384384
uses_default_features: dep.uses_default_features(),

src/cargo/core/resolver/types.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,11 @@ impl ResolveBehavior {
130130
/// Options for how the resolve should work.
131131
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
132132
pub struct ResolveOpts {
133-
/// Whether or not dev-dependencies should be included.
133+
/// Whether or not {doc,dev}-dependencies should be included.
134134
///
135135
/// This may be set to `false` by things like `cargo install` or `-Z avoid-dev-deps`.
136136
/// It also gets set to `false` when activating dependencies in the resolver.
137-
pub dev_deps: bool,
137+
pub transitive_deps: bool,
138138
/// Set of features requested on the command-line.
139139
pub features: RequestedFeatures,
140140
}
@@ -143,13 +143,16 @@ impl ResolveOpts {
143143
/// Creates a ResolveOpts that resolves everything.
144144
pub fn everything() -> ResolveOpts {
145145
ResolveOpts {
146-
dev_deps: true,
146+
transitive_deps: true,
147147
features: RequestedFeatures::CliFeatures(CliFeatures::new_all(true)),
148148
}
149149
}
150150

151-
pub fn new(dev_deps: bool, features: RequestedFeatures) -> ResolveOpts {
152-
ResolveOpts { dev_deps, features }
151+
pub fn new(transitive_deps: bool, features: RequestedFeatures) -> ResolveOpts {
152+
ResolveOpts {
153+
transitive_deps,
154+
features,
155+
}
153156
}
154157
}
155158

src/cargo/ops/cargo_compile.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ use crate::core::compiler::{CompileKind, CompileMode, CompileTarget, RustcTarget
3434
use crate::core::compiler::{DefaultExecutor, Executor, UnitInterner};
3535
use crate::core::profiles::{Profiles, UnitFor};
3636
use crate::core::resolver::features::{self, CliFeatures, FeaturesFor};
37-
use crate::core::resolver::{HasDevUnits, Resolve};
37+
use crate::core::resolver::{HasTransitiveUnits, Resolve};
3838
use crate::core::{FeatureValue, Package, PackageSet, Shell, Summary, Target};
3939
use crate::core::{PackageId, PackageIdSpec, SourceId, TargetKind, Workspace};
4040
use crate::drop_println;
@@ -377,18 +377,19 @@ pub fn create_bcx<'a, 'cfg>(
377377
};
378378

379379
let resolve_specs = full_specs.to_package_id_specs(ws)?;
380-
let has_dev_units = if filter.need_dev_deps(build_config.mode) || need_reverse_dependencies {
381-
HasDevUnits::Yes
382-
} else {
383-
HasDevUnits::No
384-
};
380+
let has_transitive_units =
381+
if filter.need_dev_deps(build_config.mode) || need_reverse_dependencies {
382+
HasTransitiveUnits::Yes
383+
} else {
384+
HasTransitiveUnits::No
385+
};
385386
let resolve = ops::resolve_ws_with_opts(
386387
ws,
387388
&target_data,
388389
&build_config.requested_kinds,
389390
cli_features,
390391
&resolve_specs,
391-
has_dev_units,
392+
has_transitive_units,
392393
crate::core::resolver::features::ForceAllTargets::No,
393394
)?;
394395
let WorkspaceResolve {

src/cargo/ops/cargo_generate_lockfile.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::core::registry::PackageRegistry;
2-
use crate::core::resolver::features::{CliFeatures, HasDevUnits};
2+
use crate::core::resolver::features::{CliFeatures, HasTransitiveUnits};
33
use crate::core::{PackageId, PackageIdSpec};
44
use crate::core::{Resolve, SourceId, Workspace};
55
use crate::ops;
@@ -25,7 +25,7 @@ pub fn generate_lockfile(ws: &Workspace<'_>) -> CargoResult<()> {
2525
&mut registry,
2626
ws,
2727
&CliFeatures::new_all(true),
28-
HasDevUnits::Yes,
28+
HasTransitiveUnits::Yes,
2929
None,
3030
None,
3131
&[],
@@ -62,7 +62,7 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
6262
&mut registry,
6363
ws,
6464
&CliFeatures::new_all(true),
65-
HasDevUnits::Yes,
65+
HasTransitiveUnits::Yes,
6666
None,
6767
None,
6868
&[],
@@ -120,7 +120,7 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
120120
&mut registry,
121121
ws,
122122
&CliFeatures::new_all(true),
123-
HasDevUnits::Yes,
123+
HasTransitiveUnits::Yes,
124124
Some(&previous_resolve),
125125
Some(&to_avoid),
126126
&[],

src/cargo/ops/cargo_output_metadata.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::core::compiler::{CompileKind, RustcTargetData};
22
use crate::core::dependency::DepKind;
33
use crate::core::package::SerializedPackage;
4-
use crate::core::resolver::{features::CliFeatures, HasDevUnits, Resolve};
4+
use crate::core::resolver::{features::CliFeatures, HasTransitiveUnits, Resolve};
55
use crate::core::{Dependency, Package, PackageId, Workspace};
66
use crate::ops::{self, Packages};
77
use crate::util::interning::InternedString;
@@ -127,7 +127,7 @@ fn build_resolve_graph(
127127
&requested_kinds,
128128
&metadata_opts.cli_features,
129129
&specs,
130-
HasDevUnits::Yes,
130+
HasTransitiveUnits::Yes,
131131
force_all,
132132
)?;
133133

src/cargo/ops/fix.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ use semver::Version;
5454

5555
use crate::core::compiler::RustcTargetData;
5656
use crate::core::resolver::features::{DiffMap, FeatureOpts, FeatureResolver, FeaturesFor};
57-
use crate::core::resolver::{HasDevUnits, Resolve, ResolveBehavior};
57+
use crate::core::resolver::{HasTransitiveUnits, Resolve, ResolveBehavior};
5858
use crate::core::{Edition, MaybePackage, PackageId, Workspace};
5959
use crate::ops::resolve::WorkspaceResolve;
6060
use crate::ops::{self, CompileOptions};
@@ -257,14 +257,14 @@ fn check_resolver_change(ws: &Workspace<'_>, opts: &FixOptions) -> CargoResult<(
257257
let diffs = v2_features.compare_legacy(&ws_resolve.resolved_features);
258258
Ok((ws_resolve, diffs))
259259
};
260-
let (_, without_dev_diffs) = resolve_differences(HasDevUnits::No)?;
261-
let (ws_resolve, mut with_dev_diffs) = resolve_differences(HasDevUnits::Yes)?;
262-
if without_dev_diffs.is_empty() && with_dev_diffs.is_empty() {
260+
let (_, without_transitive_diffs) = resolve_differences(HasTransitiveUnits::No)?;
261+
let (ws_resolve, mut with_transitive_diffs) = resolve_differences(HasTransitiveUnits::Yes)?;
262+
if without_transitive_diffs.is_empty() && with_transitive_diffs.is_empty() {
263263
// Nothing is different, nothing to report.
264264
return Ok(());
265265
}
266266
// Only display unique changes with dev-dependencies.
267-
with_dev_diffs.retain(|k, vals| without_dev_diffs.get(k) != Some(vals));
267+
with_transitive_diffs.retain(|k, vals| without_transitive_diffs.get(k) != Some(vals));
268268
let config = ws.config();
269269
config.shell().note(
270270
"Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.",
@@ -295,16 +295,16 @@ fn check_resolver_change(ws: &Workspace<'_>, opts: &FixOptions) -> CargoResult<(
295295
}
296296
drop_eprint!(config, "\n");
297297
};
298-
if !without_dev_diffs.is_empty() {
299-
show_diffs(without_dev_diffs);
298+
if !without_transitive_diffs.is_empty() {
299+
show_diffs(without_transitive_diffs);
300300
}
301-
if !with_dev_diffs.is_empty() {
301+
if !with_transitive_diffs.is_empty() {
302302
// FIXME: Include doc-dependencies when stable
303303
drop_eprintln!(
304304
config,
305-
"The following differences only apply when building with dev-dependencies:\n"
305+
"The following differences only apply when building with dev-dependencies or doc-dependencies:\n"
306306
);
307-
show_diffs(with_dev_diffs);
307+
show_diffs(with_transitive_diffs);
308308
}
309309
report_maybe_diesel(config, &ws_resolve.targeted_resolve)?;
310310
Ok(())

0 commit comments

Comments
 (0)