bors [Fri, 4 Nov 2016 18:35:23 +0000 (11:35 -0700)]
Auto merge of #3253 - nipunn1313:exe, r=alexcrichton
Add an [EXE] hamcrest substitution for file extension
This should make the testing a bit more precise as to whether
we expect targets of the form foo.exe vs foo-abc123.exe. I
was also considering adding a [/] substitution for the fwd
slash vs backslash [..], but thought I would leave that to another PR
if we thought that was a good idea.
Add an [EXE] hamcrest substitution for file extension
This should make the testing a bit more precise as to whether
we expect targets of the form foo.exe vs foo-abc123.exe. I
was also considering adding a [/] substitution for the fwd
slash vs backslash [..], but thought I would leave that to another PR
if we thought that was a good idea.
This will in turn be used to communicate features like `-C
target-feature=+crt-static` which can be used to compile objects for statically
linking against the msvcrt on MSVC.
bors [Thu, 3 Nov 2016 02:12:37 +0000 (19:12 -0700)]
Auto merge of #3220 - alexcrichton:bad, r=brson
Load [replace] sections from lock files
This commit fixes a bug in Cargo where path-based [replace] dependencies were
accidentally not loaded from lock files. This meant that even with a lock
file some compilations could accidentally become nondeterministic. The fix here
is to just look at all path dependencies, even those specified through [replace]
bors [Thu, 3 Nov 2016 00:21:23 +0000 (17:21 -0700)]
Auto merge of #3175 - alexcrichton:bench-abort, r=brson
Ignore `panic` configuration for test/bench profiles
Both of these profiles link to libtest, so it's invalid to configure them with
`panic="abort"`. To prevent confusing errors just ignore the configuration for
now.
This will in turn be used to communicate features like `-C
target-feature=+crt-static` which can be used to compile objects for statically
linking against the msvcrt on MSVC.
Alex Crichton [Thu, 6 Oct 2016 22:32:15 +0000 (15:32 -0700)]
Ignore `panic` configuration for test/bench profiles
Both of these profiles link to libtest, so it's invalid to configure them with
`panic="abort"`. To prevent confusing errors just ignore the configuration for
now.
bors [Tue, 1 Nov 2016 23:06:35 +0000 (16:06 -0700)]
Auto merge of #3242 - jhbabon:cfgs-flags-per-package, r=alexcrichton
FIX: Call rustdoc test with the correct cfg flags of a package.
There was a situation in which if you you had a lib that depends on a package with features, whenever you ran the tests for the package the `rustdoc test` call was failing because it was called with the root `cfg` flags, not the package `cfg` flags.
This fix solves the issue by keeping track of the `cfg` flags per package, so the `rustdoc` command will be generated with the correct `cfg` flags.
Juan Hernández [Tue, 1 Nov 2016 17:14:41 +0000 (18:14 +0100)]
Relax conditions in rustdoc test cfg flags tests.
In Windows the rustdoc test output sets more double quotes, so
the test doesn't pass. We need to relax the test so it pass in
*NIX and Windows environments.
Juan Hernández [Mon, 31 Oct 2016 18:15:03 +0000 (19:15 +0100)]
FIX: Call rustdoc test with the correct cfg flags of a package.
There was a situation in which if you you had a lib that depends
on a package with features, whenever you ran the tests for the
package the `rustdoc test` call was failing because rustdoc
was called with the root cfg flags, not the package cfg flags.
This fix solves the issue by keeping track of the cfg flags
per package, so the rustdoc command will be generated with
the correct cfg flags.
bors [Mon, 31 Oct 2016 04:15:00 +0000 (21:15 -0700)]
Auto merge of #3213 - matklad:simler-locks, r=alexcrichton
Append only git checkouts
Ok, so this should fix #3209 by using a full git revision as the name of the checkout path.
I don't fully understand the code here, and I haven't thought about backwards/forwards compatibility hard, but the approach should be viable, and maybe even the implementation here is OK?
bors [Wed, 26 Oct 2016 15:45:29 +0000 (08:45 -0700)]
Auto merge of #3179 - alexcrichton:fix-features-mulitple, r=matklad
Parse --features in `cargo metadata` the same
This accidentally didn't accept space-separated features passed through
`--features` as the logic for doing the splitting wasn't shared. Let's share it!
bors [Wed, 26 Oct 2016 00:00:14 +0000 (17:00 -0700)]
Auto merge of #3217 - alexcrichton:fix-regression, r=brson
Ignore summaries in downloaded crates
Unfortunately historical Cargo bugs have made it such that the index sometimes
differs from the actual crate we download. Let's respect the index, however,
which should be our source of truth.
Alex Crichton [Thu, 20 Oct 2016 22:07:18 +0000 (15:07 -0700)]
Ignore summaries in downloaded crates
Unfortunately historical Cargo bugs have made it such that the index sometimes
differs from the actual crate we download. Let's respect the index, however,
which should be our source of truth.
Alex Crichton [Fri, 21 Oct 2016 02:02:38 +0000 (19:02 -0700)]
Load [replace] sections from lock files
This commit fixes a bug in Cargo where path-based [replace] dependencies were
accidentally not loaded from lock files. This meant that even with a lock
file some compilations could accidentally become nondeterministic. The fix here
is to just look at all path dependencies, even those specified through [replace]
bors [Thu, 20 Oct 2016 17:58:29 +0000 (10:58 -0700)]
Auto merge of #2818 - robinst:use-exec-for-cargo-run, r=alexcrichton
Use CommandExt::exec for `cargo run` on Unix (#2343)
Before, we would spawn a child process for the program. One of the
problems with that is when killing the cargo process, the program
continues running.
With this change, the cargo process is replaced by the program, and
killing it works.
Alex Crichton [Fri, 7 Oct 2016 16:50:29 +0000 (09:50 -0700)]
Parse --features in `cargo metadata` the same
This accidentally didn't accept space-separated features passed through
`--features` as the logic for doing the splitting wasn't shared. Let's share it!
Robin Stocker [Fri, 1 Jul 2016 04:31:36 +0000 (14:31 +1000)]
Use CommandExt::exec for `cargo run` on Unix (#2343)
Before, we would spawn a child process for the program. One of the
problems with that is when killing the cargo process, the program
continues running.
With this change, the cargo process is replaced by the program, and
killing it works.
bors [Tue, 18 Oct 2016 16:07:50 +0000 (09:07 -0700)]
Auto merge of #3149 - cardoe:fix-pkgid-cmd, r=alexcrichton
pkgid cmd: fix help msg with multiple packages
When there are multiple versions of a package that match a given spec
the command tells you to re-run it with the `-p` argument which does not
exist. The command appears to work without it properly.
Doug Goldstein [Tue, 18 Oct 2016 05:24:53 +0000 (00:24 -0500)]
pkgid: add the -p flag as the output suggests
When you use this command and there are multiple packages that match
this spec, the help instructions tell you to rerun it with the -p
argument which was previously not present. Since the code paths are
shared with 'cargo build' and 'cargo update', this adds the -p argument
to 'cargo pkgid' to make things more consistent.
bors [Mon, 17 Oct 2016 15:47:36 +0000 (08:47 -0700)]
Auto merge of #3205 - matklad:fix-rustdoc-ld-path, r=alexcrichton
Pass target environment for rustdoc
This should fix #3200, but I am not sure that this is a correct fix, and I need some input to figure this out.
`rustdoc` is invoked in two places, in `cargo_test.rs` and in `cargo_rustc/mod.rs`. Before the refactoring PR, these invocations used different LD_LIBRARY paths. [The one in cargo_rustc](https://github.com/rust-lang/cargo/pull/3198/files#diff-59acd1a3101aebbb591ac7ab51c19d9eR427) used "host" version, while [the one in cargo_test](https://github.com/rust-lang/cargo/blob/a8baa5b8f36e88170c8c56523b6eb72efc2cc55e/src/cargo/ops/cargo_test.rs#L131) used "target" version.
The original PR changed both to "host", this PR switches both to "target". Is this correct, or should we stick with different environments for building documentation and doctests?
bors [Thu, 13 Oct 2016 18:22:15 +0000 (11:22 -0700)]
Auto merge of #3198 - matklad:kill-command-type, r=alexcrichton
Remove CommandType struct
This removes `CommandType` struct as well as `cargo_rustc::process` function. So now all process creation goes thorough methods of `Compilation`.
This does change search path order from `util::dylib_path(), host_dylib_path()` to `host_dylib_path(), util::dylib_path()`, but I hope this is not a problem.
This also uncovers the fact that `rustdoc` is run sometimes with and sometimes without `host_dylib_path`. Is this intentional?
bors [Wed, 12 Oct 2016 14:24:47 +0000 (07:24 -0700)]
Auto merge of #3193 - matklad:kill-command-proto, r=alexcrichton
Remove command prototype
A followup of #3177 . I am not sure, but perhaps we can remove/refactor `CommandType` as well: for each command variant, `Compilation` as a public dedicated method, but it also has a generic one (`process`) (haha: https://github.com/rust-lang/cargo/pull/1107/files#r22429844).
bors [Tue, 11 Oct 2016 20:40:36 +0000 (13:40 -0700)]
Auto merge of #3187 - edunham:appveyor-gnu, r=alexcrichton
Add GNU triples for #3186
Resources used to take an educated guess at this:
* Servo's appveyor.yml
* Rust's Buildbot config
* Alex
* Some random appveyor config that Alex had sitting around
bors [Sun, 9 Oct 2016 17:12:36 +0000 (10:12 -0700)]
Auto merge of #3183 - rjgoldsborough:broken-docs-links, r=alexcrichton
removing return false causing links to break
Gah! Sorry about that.
fixes #3182
I added a `return false` to the function above to prevent it from toggling itself back off but for some reason put one here as well which stopped the event before the link could fire.
bors [Fri, 7 Oct 2016 20:09:27 +0000 (13:09 -0700)]
Auto merge of #3154 - steveklabnik:gh3124, r=alexcrichton
upgrade semver
This is a spike at fixing #3124.
@alexcrichton I'm not sure how to actually emit the error message here. In the TOML example you linked me: https://github.com/rust-lang/cargo/blob/5593045ddef2744c1042dee0c0037c2ebcc1834e/src/cargo/util/toml.rs#L166
That takes a Config as an argument. This function does not. What's the right approach here?
Also, this code is messy. I am 99% sure I can write it nicer with combinators. This is just to get the discussion going.
bors [Fri, 7 Oct 2016 18:41:31 +0000 (11:41 -0700)]
Auto merge of #3177 - matklad:kill-exec-engine, r=alexcrichton
Remove ExecEngine abstraction
Hi! Not sure what was the idea behind exec engine (perhaps to allow swapping it out during tests?), but looks like it does absolutely nothing at the moment, and can be removed.
bors [Thu, 6 Oct 2016 21:03:22 +0000 (14:03 -0700)]
Auto merge of #3000 - matklad:error-format, r=alexcrichton
Add --message-format flag.
Closes #2982
This adds a `--message-format` flag with values `human` or `json-v1` to commands that may trigger compilation.
After the discussion in the issue I am no longer sure that this is a way to go:
* Looks like it buys nothing compared to `RUST_FLAGS` approach: a flag is more useful on the command line, but from the tool point of view there should be no significant differences between a flag and an environmental variable.
* Looks like we really want to wrap compiler's messages into our own json to tie them to particular compilation.
bors [Thu, 6 Oct 2016 03:48:12 +0000 (20:48 -0700)]
Auto merge of #3137 - alexcrichton:bump-curl, r=brson
Update curl to track more error info
This hopefully will help out with https://github.com/rust-lang/cargo/issues/2464#issuecomment-250583778 by including https://github.com/alexcrichton/curl-rust/commit/07323ab5e868babb7a5437e8d2604761b913dab3 which should give us more information from libcurl
bors [Thu, 6 Oct 2016 02:26:10 +0000 (19:26 -0700)]
Auto merge of #3145 - alexcrichton:rustdoc-cross-test, r=brson
Test requested --target from source of truth
We skip doc tests for any cross compiles (as they don't work) but to detect a
cross compile we checked `--target` but forgot to check other locations like
`CARGO_BUILD_TARGET` or `[build.target]`. This alters the check to ensure that
it verifies from the source of truth whether a cross compilation happened or
not.
bors [Thu, 6 Oct 2016 00:40:11 +0000 (17:40 -0700)]
Auto merge of #3136 - alexcrichton:warn-bad-override, r=brson
Warn about path overrides that won't work
Cargo has a long-standing [bug] in path overrides where they will cause spurious
rebuilds of crates in the crate graph. This can be very difficult to diagnose
and be incredibly frustrating as well. Unfortunately, though, it's behavior that
fundamentally can't be fixed in Cargo.
The crux of the problem happens when a `path` replacement changes something
about the list of dependencies of the crate that it's replacing. This alteration
to the list of dependencies *cannot be tracked by Cargo* as the lock file was
previously emitted. In the best case this ends up causing random recompiles. In
the worst case it cause infinite registry updates that always result in
recompiles.
A solution to this intention, changing the dependency graph of an overridden
dependency, was [implemented] with the `[replace]` feature in Cargo awhile back.
With that in mind, this commit implements a *warning* whenever a bad dependency
replacement is detected. The message here is pretty wordy, but it's intended to
convey that you should switch to using `[replace]` for a more robust
impelmentation, and it can also give security to anyone using `path` overrides
that if they get past this warning everything should work as intended.
bors [Wed, 5 Oct 2016 23:22:25 +0000 (16:22 -0700)]
Auto merge of #3144 - alexcrichton:less-update-registry, r=brson
Avoid updating registry when adding existing deps
Cargo previously erroneously updated the registry whenever a new dependency was
added on a crate which already exists in the DAG. This commit fixes this
behavior by ensuring that if the new dependency matches a previously locked
version it uses that instead.
This commit involved a bit of refactoring around this logic to be a bit more
clear how the locking and "falling back to the registry" is happening.