bors [Mon, 19 Mar 2018 21:42:05 +0000 (21:42 +0000)]
Auto merge of #5207 - matklad:clap-test, r=matklad
Regression tests for #5201
Better safe than sorry!
Aleksey Kladov [Mon, 19 Mar 2018 20:13:04 +0000 (23:13 +0300)]
Regression tests for #5201
Better safe than sorry!
bors [Sat, 17 Mar 2018 17:49:24 +0000 (17:49 +0000)]
Auto merge of #5187 - Eh2406:faster_resolver, r=alexcrichton
Faster resolver: clean code and the `backtrack_stack`
This is a small extension to #5168 and is inspired by https://github.com/rust-lang/cargo/pull/4834#issuecomment-
363518370
After #5168 these work (and don't on cargo from nightly.):
- `safe_core = "=0.22.4"`
- `safe_vault = "=0.13.2"`
But these don't work (and do on cargo from this PR.)
- `crust = "=0.24.0"`
- `elastic = "=0.3.0"`
- `elastic = "=0.4.0"`
- `elastic = "=0.5.0"`
- `safe_vault = "=0.14.0"`
It took some work to figure out why they are not working, and make a test case.
This PR remove use of `conflicting_activations` before it is extended with the conflicting from next.
https://github.com/rust-lang/cargo/pull/5187#issuecomment-
373830919
However the `find_candidate(` is still needed so it now gets the conflicting from next before being called.
It often happens that the candidate whose child will fail leading to it's failure, will have older siblings that have already set up `backtrack_frame`s. The candidate knows that it's failure can not be saved by its siblings, but sometimes we activate the child anyway for the error messages. Unfortunately the child does not know that is uncles can't save it, so it backtracks to one of them. Leading to a combinatorial loop.
The solution is to clear the `backtrack_stack` if we are activating just for the error messages.
Edit original end of this message, no longer accurate.
#5168 means that when we find a permanent problem we will never **activate** its parent again. In practise there afften is a lot of work and `backtrack_frame`s between the problem and reactivating its parent. This PR removes `backtrack_frame`s where its parent and the problem are present. This means that when we find a permanent problem we will never **backtrack** into it again.
An alternative is to scan all cashed problems while backtracking, but this seemed more efficient.
Eh2406 [Sat, 17 Mar 2018 14:07:13 +0000 (10:07 -0400)]
When activating for the better error messages don't waste time on the other backtrack frames
Eh2406 [Sat, 17 Mar 2018 01:40:13 +0000 (21:40 -0400)]
When test backtracking include conflicts in `remaining_candidates`
bors [Fri, 16 Mar 2018 21:13:21 +0000 (21:13 +0000)]
Auto merge of #5197 - matklad:neater-tests, r=alexcrichton
Slightly improve ergonomics of writing Cargo tests
As discussed in https://github.com/rust-lang/cargo/pull/5196#discussion_r175110557
I've also employed this to some of the longer command-lines in our test suite :)
Aleksey Kladov [Fri, 16 Mar 2018 17:03:27 +0000 (20:03 +0300)]
Slightly improve ergonomics of writing Cargo tests
Eh2406 [Fri, 16 Mar 2018 19:10:58 +0000 (15:10 -0400)]
Revert "Clean the `backtrack_stack` so we don't backtrack to a place with cashed bad activations"
Eh2406 [Fri, 16 Mar 2018 16:31:30 +0000 (12:31 -0400)]
remove duplicated adding to the cache
bors [Fri, 16 Mar 2018 16:06:28 +0000 (16:06 +0000)]
Auto merge of #5192 - matklad:hash-set-all-the-way-down, r=alexcrichton
Avoid intermediate vector
Just a microoptimization to avoid intermediate `Vec`
Aleksey Kladov [Fri, 16 Mar 2018 09:29:54 +0000 (12:29 +0300)]
Avoid intermediate vector
bors [Fri, 16 Mar 2018 15:08:24 +0000 (15:08 +0000)]
Auto merge of #5196 - matklad:clapclapclap, r=alexcrichton
Fix a regression with parsing multivalue options
By default, clap interprets
```
cargo run --bin foo bar baz
```
as
```
cargo run --bin foo --bin bar --bin baz
```
This behavior is different from docopt and does not play nicely with
positional arguments at all. Luckily, clap has a flag to get the
behavior we want, it just not the default! It will become the default in
the next version of clap, but, until that time, we should be careful
when using the combination of `.long`, `.value_name` and
`.multiple(true)`, and don't forget to specify `.number_of_values(1)` as
well.
@alexcrichton I'd love to merge this fix before updating cargo at rust-lang/rust :)
Aleksey Kladov [Fri, 16 Mar 2018 14:35:13 +0000 (17:35 +0300)]
Fix a regression with parsing multivalue options
By default, clap interprets
```
cargo run --bin foo bar baz
```
as
```
cargo run --bin foo --bin bar --bin baz
```
This behavior is different from docopt and does not play nicely with
positional arguments at all. Luckily, clap has a flag to get the
behavior we want, it just not the default! It will become the default in
the next version of clap, but, until that time, we should be careful
when using the combination of `.long`, `.value_name` and
`.multiple(true)`, and don't forget to specify `.number_of_values(1)` as
well.
bors [Fri, 16 Mar 2018 14:28:53 +0000 (14:28 +0000)]
Auto merge of #5193 - matklad:deny-warnings, r=alexcrichton
Deny warnings in tests
Aleksey Kladov [Fri, 16 Mar 2018 09:32:31 +0000 (12:32 +0300)]
Deny warnings in tests
Eh2406 [Fri, 16 Mar 2018 03:06:19 +0000 (23:06 -0400)]
suggestions
bors [Thu, 15 Mar 2018 22:35:24 +0000 (22:35 +0000)]
Auto merge of #5190 - mbrubeck:doc, r=alexcrichton
Remove old note about pre-1.21 versions
None
Matt Brubeck [Thu, 15 Mar 2018 22:24:09 +0000 (15:24 -0700)]
Remove old note about pre-1.21 versions
bors [Thu, 15 Mar 2018 20:17:46 +0000 (20:17 +0000)]
Auto merge of #5188 - alexcrichton:urgh-again, r=matklad
Add a synthetic dependency on num-traits
Right now the rust-lang/rust integration is compiling Cargo twice on dist
builds, once for Cargo and once for the RLS. This is due to a dependency of
Cargo being recompiled with different features when used from the RLS or not.
For now paper over this problem with a synthetic dependency to prevent Cargo
from being compiled twice.
Eh2406 [Thu, 15 Mar 2018 19:02:40 +0000 (15:02 -0400)]
cargo +stable fmt
Alex Crichton [Thu, 15 Mar 2018 18:00:32 +0000 (11:00 -0700)]
Add a synthetic dependency on num-traits
Right now the rust-lang/rust integration is compiling Cargo twice on dist
builds, once for Cargo and once for the RLS. This is due to a dependency of
Cargo being recompiled with different features when used from the RLS or not.
For now paper over this problem with a synthetic dependency to prevent Cargo
from being compiled twice.
Eh2406 [Thu, 15 Mar 2018 17:30:42 +0000 (13:30 -0400)]
add a test
bors [Thu, 15 Mar 2018 15:22:32 +0000 (15:22 +0000)]
Auto merge of #5180 - alexcrichton:transitive-update, r=matklad
Don't abort resolution on transitive updates
This commit is directed at fixing #4127, allowing the resolver to automatically
perform transitive updates when required. A few use casese and tagged links are
hanging off #4127 itself, but the crux of the issue happens when you either add
a dependency or update a version requirement in `Cargo.toml` which conflicts
with something listed in your `Cargo.lock`. In this case Cargo would previously
provide an obscure "cannot resolve" error whereas this commit updates Cargo to
automatically perform a conservative re-resolution of the dependency graph.
It's hoped that this commit will help reduce the number of "unresolvable"
dependency graphs we've seen in the wild and otherwise make Cargo a little more
ergonomic to use as well. More details can be found in the source's comments!
Closes #4127
Eh2406 [Thu, 15 Mar 2018 00:02:06 +0000 (20:02 -0400)]
Clean the `backtrack_stack` so we don't backtrack to a place with cashed bad activations
Alex Crichton [Tue, 6 Mar 2018 05:21:47 +0000 (21:21 -0800)]
Don't abort resolution on transitive updates
This commit is directed at fixing #4127, allowing the resolver to automatically
perform transitive updates when required. A few use casese and tagged links are
hanging off #4127 itself, but the crux of the issue happens when you either add
a dependency or update a version requirement in `Cargo.toml` which conflicts
with something listed in your `Cargo.lock`. In this case Cargo would previously
provide an obscure "cannot resolve" error whereas this commit updates Cargo to
automatically perform a conservative re-resolution of the dependency graph.
It's hoped that this commit will help reduce the number of "unresolvable"
dependency graphs we've seen in the wild and otherwise make Cargo a little more
ergonomic to use as well. More details can be found in the source's comments!
Closes #4127
Closes #5182
Alex Crichton [Tue, 6 Mar 2018 02:24:36 +0000 (18:24 -0800)]
Remove `Source::for_path`
This commit removes the `Source::for_path` constructor in favor of
`Workspace::load`. This prevents re-parsing manifests multiple times as Cargo
loads up as this can sometimes be an expensive operation. Instead the
`Workspace` now retains a cache of packages that can be updated as it goes
along. Finally, this should mean that we're only parsing path dependencies at
most once rather than multiple times.
bors [Thu, 15 Mar 2018 14:14:51 +0000 (14:14 +0000)]
Auto merge of #5185 - matklad:printf-debugging-for-life, r=alexcrichton
Add a helper method to show stdout/err in tests
So, all this time debugging Cargo was rather annoying to me, because added `println!`s tend not to show up in the test output, because they happen in the child process. So, let's add a method which just streams the subordinate process output?
@alexcrichton I wonder how you usually debug Cargo tests? Or ... are you just not making bugs to begin with? :)
bors [Thu, 15 Mar 2018 11:39:41 +0000 (11:39 +0000)]
Auto merge of #5184 - matklad:delegate-debug, r=Eh2406
Delegate debug implementation for InternedString
Let's make `InternedString` debug implementation the same as for `String` / `str`? It's more concise, which helps when you debug printing other stuff, like `eprintln!("id = {:?}", a_package_id)`.
Aleksey Kladov [Thu, 15 Mar 2018 07:40:26 +0000 (10:40 +0300)]
Add a helper method to show stdout/err in tests
Aleksey Kladov [Thu, 15 Mar 2018 07:23:20 +0000 (10:23 +0300)]
Delegate debug implementation for InternedString
bors [Thu, 15 Mar 2018 04:46:42 +0000 (04:46 +0000)]
Auto merge of #5176 - alexcrichton:rustfmt, r=alexcrichton
Add `cargo fmt` to CI and delete `rustfmt.toml`
This commit adds CI to run `cargo fmt` over Cargo itself as well as the internal
`crates-io` crate. This should switch Cargo to the "default style" (aka whatever
rustfmt spits out) and ensure that we keep it that way via CI. Hopefully this
won't be too much of a bother to keep up and running in CI as it should just be
a `cargo fmt` away!
Alex Crichton [Thu, 15 Mar 2018 01:37:52 +0000 (18:37 -0700)]
Pin to an older nightly temporarily
Needs a workaround until rust-lang/rust#49033 is fixed
Aleksey Kladov [Wed, 14 Mar 2018 15:43:41 +0000 (18:43 +0300)]
Prettify rustfmted single-line strings
Alex Crichton [Wed, 14 Mar 2018 15:17:44 +0000 (08:17 -0700)]
cargo fmt
Alex Crichton [Wed, 14 Mar 2018 15:14:56 +0000 (08:14 -0700)]
Add `cargo fmt` to CI and delete `rustfmt.toml`
This commit adds CI to run `cargo fmt` over Cargo itself as well as the internal
`crates-io` crate. This should switch Cargo to the "default style" (aka whatever
rustfmt spits out) and ensure that we keep it that way via CI. Hopefully this
won't be too much of a bother to keep up and running in CI as it should just be
a `cargo fmt` away!
bors [Wed, 14 Mar 2018 22:17:18 +0000 (22:17 +0000)]
Auto merge of #5181 - alexcrichton:selectively-write-dep-info, r=matklad
Don't rewrite dep-info files if they don't change
Similar to how we treat lock files, read the contents, compare, and if they're
the same don't actually write the file.
Closes #5172
bors [Wed, 14 Mar 2018 21:49:10 +0000 (21:49 +0000)]
Auto merge of #5179 - matklad:uplink-pdb, r=alexcrichton
Copy `.pdb` files to `target` directory
`.pdb` files are for windows debug info (unlike on linux, debug info is
in a separate file). Windows executable actually hard-code paths to
`.pdb` files, so debugging mvsc rust programs works even without this
patch. However, if you want to distribute the executable to other
machines, you'd better distribute both `foo.exe` and `foo.pdb`, because
absolute paths won't work on another machine. Having same-named .pdb
file alongside the binary would work though.
closes #4960
Aleksey Kladov [Wed, 14 Mar 2018 21:37:00 +0000 (00:37 +0300)]
Don't check for filenames in message-format tests
Depending on the OS, there might be an additional artifacts for
debuginfo (dSYM folder for macs, .pbd file for windows). Given that we
can't disable `.pdb` for windows[1], let's just ignore all filenames!
[1]: https://github.com/rust-lang/rust/pull/28505)
Alex Crichton [Wed, 14 Mar 2018 20:27:54 +0000 (13:27 -0700)]
Don't rewrite dep-info files if they don't change
Similar to how we treat lock files, read the contents, compare, and if they're
the same don't actually write the file.
Closes #5172
Aleksey Kladov [Wed, 14 Mar 2018 19:21:02 +0000 (22:21 +0300)]
Copy `.pdb` files to `target` directory
`.pdb` files are for windows debug info (unlike on linux, debug info is
in a separate file). Windows executable actually hard-code paths to
`.pdb` files, so debugging mvsc rust programs works even without this
patch. However, if you want to distribute the executable to other
machines, you'd better distribute both `foo.exe` and `foo.pdb`, because
absolute paths won't work on another machine. Having same-named .pdb
file alongside the binary would work though.
closes #4960
bors [Wed, 14 Mar 2018 18:00:32 +0000 (18:00 +0000)]
Auto merge of #5175 - matklad:conv, r=alexcrichton
Use conventions to specify the integration tests
bors [Wed, 14 Mar 2018 17:12:26 +0000 (17:12 +0000)]
Auto merge of #5171 - rtsuk:gn-compatible-depfiles, r=alexcrichton
Gn compatible depfiles
Fixes https://github.com/rust-lang/cargo/issues/5162.
bors [Wed, 14 Mar 2018 16:19:30 +0000 (16:19 +0000)]
Auto merge of #5168 - Eh2406:faster_resolver, r=alexcrichton
Faster resolver: Cache past conflicting_activations, prevent doing the same work repeatedly.
This work is inspired by @alexcrichton's [comment](https://github.com/rust-lang/cargo/issues/4066#issuecomment-
303912744) that a slow resolver can be caused by all versions of a dependency being yanked. Witch stuck in my brain as I did not understand why it would happen. If a dependency has no candidates then it will be the most constrained and will trigger backtracking in the next tick. Eventually I found a reproducible test case. If the bad dependency is deep in the tree of dependencies then we activate and backtrack `O(versions^depth)` times. Even tho it is fast to identify the problem that is a lot of work.
**The set up:**
1. Every time we backtrack cache the (dep, `conflicting_activations`).
2. Build on the work in #5000, Fail to activate if any of its dependencies will just backtrack to this frame. I.E. for each dependency check if any of its cached `conflicting_activations` are already all activated. If so we can just skip to the next candidate. We also add that bad `conflicting_activations` to our set of `conflicting_activations`, so that we can...
**The pay off:**
If we fail to find any candidates that we can activate in lite of 2, then we cannot be activated in this context, add our (dep, `conflicting_activations`) to the cache so that next time our parent will not bother trying us.
I hear you saying "but the error messages, what about the error messages?" So if we are at the end `!has_another` then we disable this optimization. After we mark our dep as being not activatable then we activate anyway. It won't resolve but it will have the same error message as before this PR. If we have been activated for the error messages then skip straight to the last candidate, as that is the only backtrack that will end with the user.
I added a test in the vain of #4834. With the old code the time to run was `O(BRANCHING_FACTOR ^ DEPTH)` and took ~3min with DEPTH = 10; BRANCHING_FACTOR = 5; with the new code it runs almost instantly with 200 and 100.
Rob Tsuk [Wed, 14 Mar 2018 15:11:41 +0000 (08:11 -0700)]
Use get_path() instead of get_string()
Aleksey Kladov [Wed, 14 Mar 2018 11:55:19 +0000 (14:55 +0300)]
Use conventions to specify the integration tests
Eh2406 [Wed, 14 Mar 2018 02:44:38 +0000 (22:44 -0400)]
more comments
Rob Tsuk [Tue, 13 Mar 2018 23:08:44 +0000 (16:08 -0700)]
Add documentation
Rob Tsuk [Tue, 13 Mar 2018 23:05:08 +0000 (16:05 -0700)]
Put this config in the build section
Rob Tsuk [Tue, 13 Mar 2018 23:03:30 +0000 (16:03 -0700)]
Return errors instead of ignoring them
Rob Tsuk [Tue, 13 Mar 2018 18:13:36 +0000 (11:13 -0700)]
More idiomatic
Eh2406 [Tue, 13 Mar 2018 15:54:21 +0000 (11:54 -0400)]
Only activate for the better error messages if we will bactrack to the user
Eh2406 [Tue, 13 Mar 2018 15:16:10 +0000 (11:16 -0400)]
test that cashing works with constraints correctly
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.
Rob Tsuk [Mon, 12 Mar 2018 22:34:56 +0000 (15:34 -0700)]
Optionally write dependencies targets relative
If dep-info-basedir is present in the config, write out dependency
targets as relative to that directory.
Eh2406 [Mon, 12 Mar 2018 21:36:02 +0000 (17:36 -0400)]
make sure cashing works whether there is an answer or not
Eh2406 [Mon, 12 Mar 2018 21:09:01 +0000 (17:09 -0400)]
only jump to the end if our frame was made for the error message
Aleksey Kladov [Mon, 12 Mar 2018 21:06:04 +0000 (00:06 +0300)]
File per command
Eh2406 [Mon, 12 Mar 2018 20:45:00 +0000 (16:45 -0400)]
if a frame will fail make it top priority
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
Eh2406 [Fri, 9 Mar 2018 19:34:45 +0000 (14:34 -0500)]
if we are just here_for the error_messages then only try the last candidate
Eh2406 [Fri, 2 Mar 2018 01:47:53 +0000 (20:47 -0500)]
cache past conflicting_activations use them to prevent doing the same work repeatedly
Eh2406 [Tue, 27 Feb 2018 23:09:29 +0000 (18:09 -0500)]
reduce the mut args to find_candidate
Eh2406 [Thu, 22 Feb 2018 17:55:17 +0000 (12:55 -0500)]
this test is slow because it runs the same searches repeatedly
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