Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stricter need_dev_deps behaviour #5186

Merged
merged 6 commits into from
Mar 21, 2018

Conversation

infinity0
Copy link
Contributor

The previous PR (#5012) contained an unnecessary work-around for behaviour of --all-targets that was misunderstood. This PR removes that work-around and adds some tests and comments to clarify the behaviour for future contributors, which may help to make easier a future fix for #5177 and #5178.

- Also add a mode param to need_dev_deps to make clear the intent
- generate_{auto => default}_target since it matches on CompileFilter::Default
- CompileFilter::{matches => target_run} to make it clear it only affects `cargo run`
- Add a comment pointing to generate_target for other subcommands
@rust-highfive
Copy link

r? @alexcrichton

(rust_highfive has picked a reviewer for you, use r? to override)

Copy link
Member

@alexcrichton alexcrichton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good to me, thanks!

@@ -62,7 +62,12 @@ pub fn exec(config: &mut Config, args: &ArgMatches) -> CliResult {
}
};
let mut compile_opts = args.compile_options_for_single_package(config, mode)?;
compile_opts.target_rustc_args = Some(values(args, "args"));
let target_args = values(args, "args");
compile_opts.target_rustc_args = if target_args.is_empty() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this change needed for the correctness of the patch? I think it changes the behavior of cargo rustc by default (erroring today whereas after this patch it succeeds and builds multiple crates)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is needed for e.g. cargo rustc with no args to work in the first place.

Assuming "package" and "crate" are the same thing, the behaviour you're describing is tested for by fail_with_multiple_packages which still passes. There is also a fails_when_trying_to_build_main_and_lib_with_args test for failing when multiple targets are selected, and it is still passing as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is needed for e.g. cargo rustc with no args to work in the first place.

Sorry, this is not correct. The hunk here is needed for cargo rustc --all-targets with no further args to work, which is documented as part of its CLI. Furthermore it's also needed when passing cargo args like -v, as opposed to binary-target args that go after -- which is what fails_when_trying_to_build_main_and_lib_with_args tests for and this is still passing.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm I think the documentation is wrong then? The cargo rustc command was only ever intended to work with only one target

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok but my commit here doesn't affect this (i.e. it was broken before and it's broken afterwards), it only fixes the -- related behaviour that was broken by #5152. If you run cargo rustc using cargo 0.25.0 (the current stable) then it will still work with a multi-target crate, e.g.

$ cat Cargo.toml 
[package]
name = "foo"
version = "0.0.1"
authors = []

$ cat src/lib.rs 
pub fn myfunc() {}

$ cat src/main.rs 
fn main () {}

$ cargo --version
cargo 0.25.0

$ cargo rustc --verbose
   Compiling foo v0.0.1 (file://$PWD)
     Running `rustc --crate-name foo src/lib.rs --crate-type lib --emit=dep-info,link -C debuginfo=2 -C metadata=0fa9827c683f047b -C extra-filename=-0fa9827c683f047b --out-dir $PWD/target/debug/deps -L dependency=$PWD/target/debug/deps`
     Running `rustc --crate-name foo src/main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=a9125b8469059127 -C extra-filename=-a9125b8469059127 --out-dir $PWD/target/debug/deps -L dependency=$PWD/target/debug/deps --extern foo=$PWD/target/debug/deps/libfoo-0fa9827c683f047b.rlib`
    Finished dev [unoptimized + debuginfo] target(s) in 0.35 secs

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I see... odd! Well in any case it looks like nothing's changing so seems good to land!

[RUNNING] `rustc --crate-name foo src[/]main.rs --emit=dep-info,link \
-C debuginfo=2 --test [..]"),
);
assert_that(p.cargo("clean"), execs().with_status(0));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately we've had pretty bad luck with commands like this which delete the target directory (intermittent failures on windows due to presumed mspdbsrv.exe instances), in light of that could these tests be extracted to individual tests?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@alexcrichton
Copy link
Member

@bors: r+

@bors
Copy link
Contributor

bors commented Mar 21, 2018

📌 Commit ce26ddf has been approved by alexcrichton

@alexcrichton
Copy link
Member

@bors: r+

@bors
Copy link
Contributor

bors commented Mar 21, 2018

📌 Commit 0bc1155 has been approved by alexcrichton

bors added a commit that referenced this pull request Mar 21, 2018
Stricter need_dev_deps behaviour

The previous PR (#5012) contained an unnecessary work-around for behaviour of `--all-targets` that was misunderstood. This PR removes that work-around and adds some tests and comments to clarify the behaviour for future contributors, which may help to make easier a future fix for #5177 and #5178.
@bors
Copy link
Contributor

bors commented Mar 21, 2018

⌛ Testing commit 0bc1155 with merge b0a2252...

@bors
Copy link
Contributor

bors commented Mar 21, 2018

☀️ Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing b0a2252 to master...

@bors bors merged commit 0bc1155 into rust-lang:master Mar 21, 2018
raspbian-autopush pushed a commit to raspbian-packages/cargo that referenced this pull request Mar 28, 2018
Applied-Upstream: rust-lang/cargo#5012
Applied-Upstream: rust-lang/cargo#5186

Gbp-Pq: Name 1001_PR5012.patch
raspbian-autopush pushed a commit to raspbian-packages/cargo that referenced this pull request Jun 20, 2018
Applied-Upstream: rust-lang/cargo#5012
Applied-Upstream: rust-lang/cargo#5186

Gbp-Pq: Name 1001_PR5012.patch
raspbian-autopush pushed a commit to raspbian-packages/cargo that referenced this pull request Jun 20, 2018
Applied-Upstream: rust-lang/cargo#5012
Applied-Upstream: rust-lang/cargo#5186

Gbp-Pq: Name 1001_PR5012.patch
@ehuss ehuss added this to the 1.26.0 milestone Feb 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants