Aleksey Kladov [Wed, 14 Mar 2018 11:55:19 +0000 (14:55 +0300)]
Use conventions to specify the integration tests
bors [Tue, 13 Mar 2018 14:46:45 +0000 (14:46 +0000)]
Auto merge of #5152 - matklad:clap, r=alexcrichton
Clap
Reopening of #5129
So, looks like all tests are :green_apple: on my machine!
I definitely want to refactor it some more, and also manually checked that we haven't regressed any help messages, but all the major parts are in place already.
Aleksey Kladov [Mon, 12 Mar 2018 21:06:04 +0000 (00:06 +0300)]
File per command
Aleksey Kladov [Mon, 12 Mar 2018 20:20:12 +0000 (23:20 +0300)]
Use `avoid_dev_deps` for all commands
Aleksey Kladov [Mon, 12 Mar 2018 20:08:49 +0000 (23:08 +0300)]
Fix spelling of quiet
bors [Mon, 12 Mar 2018 07:51:14 +0000 (07:51 +0000)]
Auto merge of #5167 - xftroxgpx:nosubmodules, r=matklad
Closes #5165
#5165
xftroxgpx [Sun, 11 Mar 2018 22:09:57 +0000 (23:09 +0100)]
Closes #5165
bors [Sun, 11 Mar 2018 17:54:09 +0000 (17:54 +0000)]
Auto merge of #5164 - matthiaskrgr:redundant_dep, r=alexcrichton
remove "filetime 0.1" dependency from dev profile, filetime is already a regular dep
Matthias Krüger [Sun, 11 Mar 2018 14:08:12 +0000 (15:08 +0100)]
remove "filetime 0.1" dependency from dev profile, filetime is already a regular dependency.
Aleksey Kladov [Sun, 11 Mar 2018 06:38:59 +0000 (09:38 +0300)]
Cleanups
Aleksey Kladov [Sat, 10 Mar 2018 15:30:24 +0000 (18:30 +0300)]
Relax tests for windows
On windows, clap prints `cargo.exe` rather than just `cargo`.
Aleksey Kladov [Sat, 10 Mar 2018 14:42:08 +0000 (17:42 +0300)]
Validate the limit argument
Aleksey Kladov [Sat, 10 Mar 2018 14:35:18 +0000 (17:35 +0300)]
Tweak the help message
Aleksey Kladov [Sat, 10 Mar 2018 14:08:39 +0000 (17:08 +0300)]
Move `index` & `registry` to `ArgMatchesExt`
Aleksey Kladov [Sat, 10 Mar 2018 14:04:06 +0000 (17:04 +0300)]
Move `new_options` to `ArgMatchesExt`
Aleksey Kladov [Sat, 10 Mar 2018 13:53:56 +0000 (16:53 +0300)]
Move `compile_options` to `ArgMatchesExt`
Aleksey Kladov [Sat, 10 Mar 2018 13:44:43 +0000 (16:44 +0300)]
Make `target` option owned in various configs
Aleksey Kladov [Sat, 10 Mar 2018 13:39:39 +0000 (16:39 +0300)]
Move some arg parsing to ArgMatchesExt
Aleksey Kladov [Sat, 10 Mar 2018 13:34:28 +0000 (16:34 +0300)]
Introduce ArgMatchesExt trait
Aleksey Kladov [Sat, 10 Mar 2018 13:25:42 +0000 (16:25 +0300)]
Inline `config_from_args`
Aleksey Kladov [Sat, 10 Mar 2018 13:23:30 +0000 (16:23 +0300)]
Rename CommonArgs -> AppExt
Aleksey Kladov [Sat, 10 Mar 2018 13:23:05 +0000 (16:23 +0300)]
Reorganize subcommands as a separate submodule
Aleksey Kladov [Sat, 10 Mar 2018 13:16:00 +0000 (16:16 +0300)]
Move command_prelude to a separate file
Aleksey Kladov [Sat, 10 Mar 2018 13:13:51 +0000 (16:13 +0300)]
Introduce command_prelude module
bors [Sat, 10 Mar 2018 06:32:57 +0000 (06:32 +0000)]
Auto merge of #5160 - ishitatsuyuki:patch-1, r=matklad
Remove unused import
Tatsuyuki Ishi [Sat, 10 Mar 2018 06:21:25 +0000 (15:21 +0900)]
Remove unused import
bors [Sat, 10 Mar 2018 02:18:39 +0000 (02:18 +0000)]
Auto merge of #5159 - ishitatsuyuki:patch-1, r=Mark-Simulacrum
Remove redundant recursion_limit
Now that we have migrate from error-chain to failure, we no longer need to extend it.
Tatsuyuki Ishi [Sat, 10 Mar 2018 02:06:06 +0000 (11:06 +0900)]
Remove redundant recursion_limit
Now that we have migrate from error-chain to failure, we no longer need to extend it.
bors [Fri, 9 Mar 2018 19:40:03 +0000 (19:40 +0000)]
Auto merge of #5126 - gilescope:cycle-error-message, r=alexcrichton
Error message for package "depends on itself" lists the packages in the cycle.
I got a cycle while trying to build someone else's code and cargo's error message didn't point me in the right direction, just mentioned there was a cycle. I thought we could be a bit more helpful.
Don't know what you think of {:#?} as the display but it seemed minimal code so I thought I'd start with that. I could compress the output to one package per line if preferred.
Giles Cope [Fri, 9 Mar 2018 18:32:28 +0000 (18:32 +0000)]
Clippy complains about unused in derived code.
bors [Fri, 9 Mar 2018 17:56:35 +0000 (17:56 +0000)]
Auto merge of #5157 - Eh2406:more_interning, r=alexcrichton
More interning
This is a forward approach to interning. Specifically `Dependency` and `PackageId` store their names as `InternedString`s and leave that value interned as long as possible. The alternative is to make a new `interned_name` function. The advantage of this approach is that a number of places in the code are doing `deb.name() == pid.name()` and are now using the fast pointer compare instead of the string compare, without the code needing to change. The disadvantage is that lots of places need to call `deref` with `&*` to convert to an `&str` and sum need to use `.to_inner()` to get a `&'static str`.
In a test on https://github.com/rust-lang/cargo/issues/4810#issuecomment-
357553286
Before we got to
10000000 ticks in ~48 sec
After we got to
10000000 ticks in ~44 sec
Eh2406 [Fri, 9 Mar 2018 16:47:10 +0000 (11:47 -0500)]
delay calls to `to_inner`
Eh2406 [Fri, 9 Mar 2018 15:07:59 +0000 (10:07 -0500)]
Dependency.name to InternedString
Aleksey Kladov [Fri, 9 Mar 2018 10:18:32 +0000 (13:18 +0300)]
Make command-line arguments owned
Aleksey Kladov [Fri, 9 Mar 2018 08:03:36 +0000 (11:03 +0300)]
Validate that `jobs` argument is a number
Aleksey Kladov [Fri, 9 Mar 2018 07:43:00 +0000 (10:43 +0300)]
Unwind stack for cli errors
Eh2406 [Thu, 8 Mar 2018 21:24:27 +0000 (16:24 -0500)]
PackageId.name to InternedString
Aleksey Kladov [Thu, 8 Mar 2018 20:41:26 +0000 (23:41 +0300)]
Remove dead code
Aleksey Kladov [Thu, 8 Mar 2018 20:37:39 +0000 (23:37 +0300)]
Remove docopt dependency
Aleksey Kladov [Thu, 8 Mar 2018 20:33:52 +0000 (23:33 +0300)]
Fix after rebase
Aleksey Kladov [Thu, 8 Mar 2018 20:29:38 +0000 (23:29 +0300)]
Fix typo
Aleksey Kladov [Thu, 8 Mar 2018 20:26:52 +0000 (23:26 +0300)]
Remove dead code
Aleksey Kladov [Thu, 8 Mar 2018 20:24:27 +0000 (23:24 +0300)]
Fix `--explain`
Aleksey Kladov [Thu, 8 Mar 2018 20:19:27 +0000 (23:19 +0300)]
Support list subcommand
All tests are green :tada:
Aleksey Kladov [Thu, 8 Mar 2018 20:06:29 +0000 (23:06 +0300)]
Support aliases
Aleksey Kladov [Thu, 8 Mar 2018 19:40:28 +0000 (22:40 +0300)]
Fix more tests by updating error messages
Aleksey Kladov [Thu, 8 Mar 2018 19:36:27 +0000 (22:36 +0300)]
Unignore test which now passes
Aleksey Kladov [Thu, 8 Mar 2018 19:35:42 +0000 (22:35 +0300)]
Disable `cargo help -h`
Aleksey Kladov [Thu, 8 Mar 2018 19:33:10 +0000 (22:33 +0300)]
Fix verify-project command
Aleksey Kladov [Thu, 8 Mar 2018 19:28:58 +0000 (22:28 +0300)]
Support built-in aliases
Aleksey Kladov [Thu, 8 Mar 2018 19:24:16 +0000 (22:24 +0300)]
Support external subcommands
Aleksey Kladov [Thu, 8 Mar 2018 19:15:07 +0000 (22:15 +0300)]
Cleanup
Aleksey Kladov [Thu, 8 Mar 2018 19:06:02 +0000 (22:06 +0300)]
Restore global initialization
Aleksey Kladov [Thu, 8 Mar 2018 18:55:12 +0000 (21:55 +0300)]
Use exit code 1 for command line parsing errors
Note that while we use 101 in majority of cases, sometimes we use 1 as
well.
Aleksey Kladov [Thu, 8 Mar 2018 18:48:38 +0000 (21:48 +0300)]
Fix some trivially fixable tests
Aleksey Kladov [Thu, 8 Mar 2018 18:27:51 +0000 (21:27 +0300)]
Drop old commands
Aleksey Kladov [Thu, 8 Mar 2018 18:21:04 +0000 (21:21 +0300)]
Move the rest of the commands to clap
Aleksey Kladov [Thu, 8 Mar 2018 14:10:28 +0000 (17:10 +0300)]
Move uninstall to clap
Aleksey Kladov [Thu, 8 Mar 2018 13:56:36 +0000 (16:56 +0300)]
Move test to clap
Aleksey Kladov [Thu, 8 Mar 2018 11:12:00 +0000 (14:12 +0300)]
Move search to clap
Aleksey Kladov [Thu, 8 Mar 2018 10:31:21 +0000 (13:31 +0300)]
Don't copy-paste index argument
Aleksey Kladov [Thu, 8 Mar 2018 10:26:01 +0000 (13:26 +0300)]
Don't copy-paste package argument
Aleksey Kladov [Thu, 8 Mar 2018 10:16:17 +0000 (13:16 +0300)]
Move rustdoc to clap
Aleksey Kladov [Thu, 8 Mar 2018 10:05:49 +0000 (13:05 +0300)]
Move rustc to clap
Aleksey Kladov [Thu, 8 Mar 2018 09:36:31 +0000 (12:36 +0300)]
Move run to clap
Aleksey Kladov [Thu, 8 Mar 2018 09:05:42 +0000 (12:05 +0300)]
Move read-manifest to clap
Aleksey Kladov [Thu, 8 Mar 2018 08:49:31 +0000 (11:49 +0300)]
Move publish to clap
Aleksey Kladov [Wed, 7 Mar 2018 15:02:36 +0000 (18:02 +0300)]
Move pkgid to clap
Aleksey Kladov [Wed, 7 Mar 2018 14:54:10 +0000 (17:54 +0300)]
Move package to clap
Aleksey Kladov [Wed, 7 Mar 2018 14:40:33 +0000 (17:40 +0300)]
Move owner to clap
Aleksey Kladov [Wed, 7 Mar 2018 13:59:16 +0000 (16:59 +0300)]
Move new to clap
Aleksey Kladov [Wed, 7 Mar 2018 13:39:25 +0000 (16:39 +0300)]
Move metadata to clap
Aleksey Kladov [Wed, 7 Mar 2018 13:17:10 +0000 (16:17 +0300)]
Move login to clap
Aleksey Kladov [Wed, 7 Mar 2018 11:42:39 +0000 (14:42 +0300)]
Move locate-project to clap
Aleksey Kladov [Wed, 7 Mar 2018 11:31:39 +0000 (14:31 +0300)]
Move install to clap
Aleksey Kladov [Wed, 7 Mar 2018 10:02:35 +0000 (13:02 +0300)]
Specify frozen & locked for all commands simultaneously
Aleksey Kladov [Wed, 7 Mar 2018 09:53:59 +0000 (12:53 +0300)]
Move init to clap
Aleksey Kladov [Wed, 7 Mar 2018 08:50:05 +0000 (11:50 +0300)]
Move git-checkout to clap
Aleksey Kladov [Wed, 7 Mar 2018 08:35:17 +0000 (11:35 +0300)]
Move generate-lockfile to clap
Aleksey Kladov [Wed, 7 Mar 2018 08:32:10 +0000 (11:32 +0300)]
Move fetch to clap
Aleksey Kladov [Wed, 7 Mar 2018 08:22:46 +0000 (11:22 +0300)]
Move doc to clap
Aleksey Kladov [Wed, 7 Mar 2018 07:57:51 +0000 (10:57 +0300)]
Move clean to clap
Aleksey Kladov [Wed, 7 Mar 2018 07:10:45 +0000 (10:10 +0300)]
Move check to clap
Aleksey Kladov [Wed, 7 Mar 2018 06:46:16 +0000 (09:46 +0300)]
Temporarly ignore some tests
Aleksey Kladov [Tue, 6 Mar 2018 21:01:03 +0000 (00:01 +0300)]
Port bench and build to clap
Giles Cope [Thu, 8 Mar 2018 18:37:30 +0000 (18:37 +0000)]
Switch to exhaustive matches in tests.
bors [Thu, 8 Mar 2018 15:21:26 +0000 (15:21 +0000)]
Auto merge of #5150 - Eh2406:more_interning, r=alexcrichton
More interning
This is a small part of the unsuccessful last commit of #5121, this part removes `InternedString::new` from the innerest of loops.
This is mostly a resubmission of #5147, that I accidentally deleted while bors was testing. This one has new commits, so github will take the resubition.
Eh2406 [Thu, 8 Mar 2018 04:20:17 +0000 (23:20 -0500)]
intern links attribute
bors [Thu, 8 Mar 2018 04:02:02 +0000 (04:02 +0000)]
Auto merge of #5147 - Eh2406:restucture, r=alexcrichton
restructure `Activations` for better clone
This builds on the work in #5121 When we last met we had:
5000000 ticks in ~48 sec, 0r 104k ticks/sec
This small change brings us to:
5000000 ticks in ~21 sec, 0r 238k ticks/sec
Edit: sorry for the large diff only the last commit is new. The rest are from #5121
Eh2406 [Wed, 7 Mar 2018 17:57:48 +0000 (12:57 -0500)]
restructure `Activations` for better clone
Giles Cope [Wed, 7 Mar 2018 22:56:47 +0000 (22:56 +0000)]
As pointed out by Jacob, we can display the ordered cycle in the error message.
bors [Wed, 7 Mar 2018 22:54:54 +0000 (22:54 +0000)]
Auto merge of #5121 - Eh2406:string_interning, r=alexcrichton
String interning
This builds on the work from #5118. This interns the strings in the part of resolver that gets cloned a lot.
In a test on https://github.com/rust-lang/cargo/issues/4810#issuecomment-
357553286
Before we got to
1700000 ticks in ~(63 to 67) sec from #5118
After we got to
1700000 ticks in ~(42 to 45) sec
The interning code itself would be much better with a `leak` function that converts a `String` to a `&'static str`. Something like:
```rust
pub fn leek(s: String) -> &'static str {
let ptr = s.as_ptr();
let len = s.len();
mem::forget(s);
unsafe {
let slice = slice::from_raw_parts(ptr, len);
str::from_utf8(slice).unwrap()
}
}
```
but "there is no unsafe in Cargo", and I am not the best at unsafe. So I just `to_string` and lived with the extra copy. Is there a better way to hand out references?
I assumed that `InternedString::new` world start appearing in profile result, and that we would want `PackageId`, and `Summary`, Et Al. to store the `InternedString`. That is why I put the interner in a shared folder. So far it is just used in the resolver. It may make sense for a lot more of the Strings to be interned, but with the extra copy... I have not explored it yet.
Eh2406 [Wed, 7 Mar 2018 22:19:53 +0000 (17:19 -0500)]
use `Deref` instead of an explicit function
Eh2406 [Wed, 7 Mar 2018 22:10:55 +0000 (17:10 -0500)]
use `into_boxed_str` to shrink before we leek
bors [Wed, 7 Mar 2018 15:39:24 +0000 (15:39 +0000)]
Auto merge of #5012 - infinity0:pr4988, r=alexcrichton
Don't require dev-dependencies when not needed in certain cases
Specifically, when running `cargo install` and add a flag for this behaviour in `cargo build`.
This closes #4988.
Ximin Luo [Wed, 7 Mar 2018 13:46:43 +0000 (14:46 +0100)]
Work around #5134 for now
bors [Wed, 7 Mar 2018 00:02:33 +0000 (00:02 +0000)]
Auto merge of #5138 - alexcrichton:small-opt, r=matklad
Some small optimizations
Found an easy hot spot or two when profiling `./x.py build` in rust-lang/rust, although certainly still lots remaining.
Alex Crichton [Tue, 6 Mar 2018 23:09:53 +0000 (15:09 -0800)]
Retain a vector instead of reallocating
No need to create a new version!
Eh2406 [Tue, 6 Mar 2018 22:44:31 +0000 (17:44 -0500)]
add unsafe
bors [Tue, 6 Mar 2018 22:34:32 +0000 (22:34 +0000)]
Auto merge of #5135 - matklad:drop-ignored-tests, r=alexcrichton
Drop ignored tests
r? @alexcrichton
These tests are ignored, so its better to remove them. `run` does not supports `--bins` argument, so I've left a single test that checks specifically for this.
cc https://github.com/rust-lang/cargo/pull/3901