]> git.proxmox.com Git - cargo.git/log
cargo.git
3 years agoChange env section parsing
Martin Donlon [Sat, 20 Feb 2021 21:49:08 +0000 (13:49 -0800)]
Change env section parsing

`untagged` enum variants are not recognised by serde if the variant contains a `Value<T>` type.
This change uses an transparent "inner" enum `Value<T>` member, which is handled correctly by serde.

3 years agoAdd `-Z configurable-env` to gate [env] usage
Martin Donlon [Tue, 16 Feb 2021 04:21:22 +0000 (20:21 -0800)]
Add `-Z configurable-env` to gate [env] usage

Added the `-Z configurable-env` option which controls whether the data from the [env] section is used. Updated the tests to pass the flag and to masquerade as the nightly cargo.

3 years agoRun `cargo fmt --all`
Martin Donlon [Mon, 15 Feb 2021 23:29:08 +0000 (15:29 -0800)]
Run `cargo fmt --all`

Fix formatting errors

3 years agoAdd support for [env] section in .cargo/config.toml
Martin Donlon [Mon, 15 Feb 2021 23:17:00 +0000 (15:17 -0800)]
Add support for [env] section in .cargo/config.toml

This adds support for an `[env]` section in the config.toml files. Environment variables set in this section will be applied to the environment of any processes executed by cargo.

```
[env]
FOOBAR = "Apple"
PATH_TO_SOME_TOOL = { value = "bin/tool", relative = true }
USERNAME = { value = "test_user", force = true }
```

3 years agoAuto merge of #9169 - Liberatys:emit-warning-on-env-variable-case-mismatch, r=ehuss
bors [Sun, 14 Feb 2021 19:35:20 +0000 (19:35 +0000)]
Auto merge of #9169 - Liberatys:emit-warning-on-env-variable-case-mismatch, r=ehuss

Emit warning on env variable case mismatch

When running a command like `cargo --target TRIPPLE` cargo expects to find the environment variable CARGO_TARGET_[TRIPPLE]_* with uppercase and underscores. This check emits a warning if the checked environment variable has a mismatching case and/or contains dashes rather than underscores. The warning contains the given env variable as well as an explanation for the cause of the warning.

The check is skipped on windows as environment variables are treated as case insensitive on the platform.

Fixes #8285

3 years agoCombine target env tests.
Eric Huss [Sun, 14 Feb 2021 19:32:18 +0000 (11:32 -0800)]
Combine target env tests.

3 years agoRe-add backticks
Nick Flueckiger [Sun, 14 Feb 2021 12:15:35 +0000 (13:15 +0100)]
Re-add backticks

3 years agoUpdate wording and use if let
Nick Flueckiger [Sun, 14 Feb 2021 12:00:20 +0000 (13:00 +0100)]
Update wording and use if let

3 years agoFix windows test case
Nick Flueckiger [Sat, 13 Feb 2021 23:20:21 +0000 (00:20 +0100)]
Fix windows test case

3 years agoUpdate windows check
Nick Flueckiger [Sat, 13 Feb 2021 22:20:43 +0000 (23:20 +0100)]
Update windows check

3 years agoAuto merge of #8640 - CPerezz:doc_versioning, r=ehuss
bors [Sat, 13 Feb 2021 21:57:02 +0000 (21:57 +0000)]
Auto merge of #8640 - CPerezz:doc_versioning, r=ehuss

Implement Rustdoc versioning checks

Before compiling, we need to make sure that if there were any previous docs already compiled, they were compiled with the same Rustc version that we're currently using. Otherways we must remove the `doc/` folder and compile again.

This is important because as stated in #8461 the .js/.html&.css files that are generated by Rustc don't have any versioning. Therefore, we can fall in weird bugs and behaviours if we mix different compiler versions of these js/.html&.css files.

Closes #8461

3 years agoUpdate src/cargo/core/compiler/build_context/target_info.rs
Carlos Pérez [Sat, 13 Feb 2021 20:40:09 +0000 (21:40 +0100)]
Update src/cargo/core/compiler/build_context/target_info.rs

Co-authored-by: Eric Huss <eric@huss.org>
3 years agoAdapt implementation with reviewer suggestions and requested changes
Nick Flueckiger [Sat, 13 Feb 2021 20:17:18 +0000 (21:17 +0100)]
Adapt implementation with reviewer suggestions and requested changes

3 years agoCorrect target
Nick Flueckiger [Sat, 13 Feb 2021 11:19:00 +0000 (12:19 +0100)]
Correct target

3 years agoLint
Nick Flueckiger [Sat, 13 Feb 2021 11:14:24 +0000 (12:14 +0100)]
Lint

3 years agoExclude test on windows
Nick Flueckiger [Sat, 13 Feb 2021 10:59:38 +0000 (11:59 +0100)]
Exclude test on windows

3 years agoImplement uppercase env map for key case mismatch
Nick Flueckiger [Sat, 13 Feb 2021 10:46:13 +0000 (11:46 +0100)]
Implement uppercase env map for key case mismatch

3 years agoAuto merge of #9168 - ehuss:version-bump, r=Eh2406
bors [Fri, 12 Feb 2021 21:12:02 +0000 (21:12 +0000)]
Auto merge of #9168 - ehuss:version-bump, r=Eh2406

Bump to 0.53.0, update changelog

3 years agoUpdate changelog for 1.51
Eric Huss [Fri, 12 Feb 2021 19:48:56 +0000 (11:48 -0800)]
Update changelog for 1.51

3 years agoBump to 0.53.0
Eric Huss [Fri, 12 Feb 2021 18:58:38 +0000 (10:58 -0800)]
Bump to 0.53.0

3 years agoAuto merge of #9164 - ehuss:config-search-stop, r=Eh2406
bors [Thu, 11 Feb 2021 14:48:46 +0000 (14:48 +0000)]
Auto merge of #9164 - ehuss:config-search-stop, r=Eh2406

Prevent testsuite from loading config out of sandbox.

This adds a limit to prevent config loading from walking outside of the test sandbox root. There was an environment variable for this, but that doesn't work too well for tests that were loading the config directly.

Fixes #9107

3 years agoPrevent testsuite from loading config out of sandbox.
Eric Huss [Thu, 11 Feb 2021 01:39:38 +0000 (17:39 -0800)]
Prevent testsuite from loading config out of sandbox.

3 years agoAuto merge of #9153 - calavera:strip_options, r=ehuss
bors [Wed, 10 Feb 2021 00:19:10 +0000 (00:19 +0000)]
Auto merge of #9153 - calavera:strip_options, r=ehuss

Allow `true` and `false` as options for `strip` option

This follows the convention of `lto` and `debug` that allow `true` for
the highest level, and `false` for disabled.

Signed-off-by: David Calavera <david.calavera@gmail.com>
3 years agoAllow `true` and `false` as options for `strip` option
bors [Wed, 10 Feb 2021 00:19:10 +0000 (00:19 +0000)]
Allow `true` and `false` as options for `strip` option

This follows the convention of `lto` and `debug` that allow `true` for
the highest level, and `false` for disabled.

Signed-off-by: David Calavera <david.calavera@gmail.com>
3 years agoAuto merge of #9133 - alexcrichton:git-default-branch, r=ehuss
bors [Tue, 9 Feb 2021 23:42:27 +0000 (23:42 +0000)]
Auto merge of #9133 - alexcrichton:git-default-branch, r=ehuss

Change git dependencies to use `HEAD` by default

This commit follows through with work started in #8522 to change the
default behavior of `git` dependencies where if not branch/tag/etc is
listed then `HEAD` is used instead of the `master` branch. This involves
also changing the default lock file format, now including a `version`
marker at the top of the file notably as well as changing the encoding
of `branch=master` directives in `Cargo.toml`.

If we did all our work correctly then this will be a seamless change.
First released on stable in 1.47.0 (2020-10-08) Cargo has been emitting
warnings about situations which may break in the future. This means that
if you don't specify `branch = 'master'` but your HEAD branch isn't
`master`, you've been getting a warning. Similarly if your dependency
graph used both `branch = 'master'` as well as specifying nothing, you
were receiving warnings as well. These two situations are broken by this
commit, but it's hoped that by giving enough times with warnings we
don't actually break anyone in practice.

3 years agoSquash warnings on the nightly channel
Alex Crichton [Tue, 9 Feb 2021 15:30:08 +0000 (07:30 -0800)]
Squash warnings on the nightly channel

3 years agoAdd back in deleted tests
Alex Crichton [Tue, 9 Feb 2021 15:29:01 +0000 (07:29 -0800)]
Add back in deleted tests

3 years agoAuto merge of #9152 - dzmitry-lahoda:patch-1, r=Eh2406
bors [Mon, 8 Feb 2021 16:20:08 +0000 (16:20 +0000)]
Auto merge of #9152 - dzmitry-lahoda:patch-1, r=Eh2406

appendix auth gcm link to new repo (which is xplat)

3 years agogcm link to new repo (which is xplat)
Dzmitry Lahoda [Mon, 8 Feb 2021 16:13:07 +0000 (19:13 +0300)]
gcm link to new repo (which is xplat)

3 years agoAuto merge of #9148 - bjorn3:fix_ci, r=ehuss
bors [Sat, 6 Feb 2021 19:12:01 +0000 (19:12 +0000)]
Auto merge of #9148 - bjorn3:fix_ci, r=ehuss

Fix warnings of the new non_fmt_panic lint

This fixes the CI failure since the latest nightly. See https://github.com/rust-lang/rust/pull/81645

3 years agoFix warnings of the new non_fmt_panic lint
bjorn3 [Sat, 6 Feb 2021 17:40:42 +0000 (18:40 +0100)]
Fix warnings of the new non_fmt_panic lint

3 years agoAuto merge of #9142 - ehuss:fix-doc-orphan, r=Eh2406
bors [Fri, 5 Feb 2021 18:11:29 +0000 (18:11 +0000)]
Auto merge of #9142 - ehuss:fix-doc-orphan, r=Eh2406

Fix panic with doc collision orphan.

As I feared, the collision removal added in #9077 caused problems due to orphans left in the unit graph. Ironically, it was the collision warning detection code which failed, as it iterates over all the keys of the graph.

The solution is to remove all orphans from the graph after collisions have been removed.

Fixes #9136

3 years agoFix panic with doc collision orphan.
Eric Huss [Fri, 5 Feb 2021 18:02:34 +0000 (10:02 -0800)]
Fix panic with doc collision orphan.

3 years agoFix a bug loading v2 lockfiles
Alex Crichton [Thu, 4 Feb 2021 18:37:26 +0000 (10:37 -0800)]
Fix a bug loading v2 lockfiles

This commit fixes a bug in Cargo where after `DefaultBranch` and
`Branch("master")` are considered distinct no v2 lockfile would by
default match a dependency specification with the `branch = 'master'`
annotation. A feature of the v2 lockfile, however, is that no mention of
a branch is equivalent to the `master` branch.

The bug here is fixed by updating the code which registers a previous
lock file with our `PackageRegistry`. This code registers nodes, only
with v2 lock files, for both default and `master` branch git
dependencies. This way requests for either one will get matched now that
they're considered distinct.

3 years agoChange git dependencies to use `HEAD` by default
Alex Crichton [Thu, 4 Feb 2021 16:33:33 +0000 (08:33 -0800)]
Change git dependencies to use `HEAD` by default

This commit follows through with work started in #8522 to change the
default behavior of `git` dependencies where if not branch/tag/etc is
listed then `HEAD` is used instead of the `master` branch. This involves
also changing the default lock file format, now including a `version`
marker at the top of the file notably as well as changing the encoding
of `branch=master` directives in `Cargo.toml`.

If we did all our work correctly then this will be a seamless change.
First released on stable in 1.47.0 (2020-10-08) Cargo has been emitting
warnings about situations which may break in the future. This means that
if you don't specify `branch = 'master'` but your HEAD branch isn't
`master`, you've been getting a warning. Similarly if your dependency
graph used both `branch = 'master'` as well as specifying nothing, you
were receiving warnings as well. These two situations are broken by this
commit, but it's hoped that by giving enough times with warnings we
don't actually break anyone in practice.

3 years agoAuto merge of #9131 - ehuss:fix-vendor-permissions, r=alexcrichton
bors [Thu, 4 Feb 2021 15:52:52 +0000 (15:52 +0000)]
Auto merge of #9131 - ehuss:fix-vendor-permissions, r=alexcrichton

Fix permission issue with `cargo vendor`.

I think there was an unintended regression in #8937 where the vendored output does not retain the original permissions.

Fixes #9127.

3 years agoFix permission issue with `cargo vendor`.
Eric Huss [Thu, 4 Feb 2021 00:55:05 +0000 (16:55 -0800)]
Fix permission issue with `cargo vendor`.

3 years agoImprove RustDocFingerprint::remove_doc_dirs
CPerezz [Thu, 4 Feb 2021 00:03:04 +0000 (01:03 +0100)]
Improve RustDocFingerprint::remove_doc_dirs

We were not filtering the cases where the doc folder
paths did not exist.
Also, we were overrwriting the error when it doesn't
make sense. We now return the first one by folding the
results of the doc_dirs removal resolutions.

3 years agoRefactor doc_dirs obtention
CPerezz [Wed, 3 Feb 2021 23:09:36 +0000 (00:09 +0100)]
Refactor doc_dirs obtention

We should try to avoid dealing with paths ourseleves. Now the
access/parsing and construction is handled via `Layout`.

3 years agoFix spelling
CPerezz [Wed, 3 Feb 2021 22:50:59 +0000 (23:50 +0100)]
Fix spelling

3 years agoAuto merge of #9112 - alexcrichton:split-debuginfo, r=ehuss
bors [Wed, 3 Feb 2021 22:50:15 +0000 (22:50 +0000)]
Auto merge of #9112 - alexcrichton:split-debuginfo, r=ehuss

Add split-debuginfo profile option

This commit adds a new `split-debuginfo` option to Cargo compilation
profiles which gets forwarded to the `-Csplit-debuginfo` codegen option
in rustc. This commit also sets the default, only on macOS, to be
`-Csplit-debuginfo=unpacked`. The purpose of this change is to leverage
rust-lang/rust#79570 to avoid running `dsymutil` on incremental builds
while also preserving a pleasant debugging experience by default. This
should lead to much faster incremental build times on macOS since
`dsymutil` isn't exactly the speediest tool in the world.

This is technically a breaking change in Cargo because we're no longer
by-default producing the `*.dSYM` folders on macOS. If those are still
desired, however, authors can always run `dsymutil` themselves or
otherwise configure `split-debuginfo = 'packed'` in their
manifest/profile configuration.

3 years agoDon't change the macOS default just yet
Alex Crichton [Tue, 2 Feb 2021 21:38:12 +0000 (13:38 -0800)]
Don't change the macOS default just yet

3 years agoFix upstream changes of #9122
CPerezz [Wed, 3 Feb 2021 18:38:46 +0000 (19:38 +0100)]
Fix upstream changes of #9122

3 years agoMerge branch 'master' into doc_versioning
Carlos Pérez [Wed, 3 Feb 2021 17:08:12 +0000 (18:08 +0100)]
Merge branch 'master' into doc_versioning

3 years agoAuto merge of #9126 - ehuss:registry-builder, r=alexcrichton
bors [Wed, 3 Feb 2021 15:56:05 +0000 (15:56 +0000)]
Auto merge of #9126 - ehuss:registry-builder, r=alexcrichton

Add RegistryBuilder for tests, and update crates-io error handling.

This adds `RegistryBuilder` to the test suite to make it more flexible to create different registry setups, and to reuse code a little more easily.

This also makes a small adjustment to the registry API to add a `ResponseError` type to make it easier to work with API errors.  As part of this, some tests were added to validate the API behavior for response errors.  There are only a few very small changes here:
* Extra newlines are removed from the headers printed in the error message.
* The UTF-8 error now also includes the text "invalid response from server".
* The "file too large" crates.io publish error now displays the tarball size.  (There is no test for this because it is only issued for talking to `crates.io`.)

Split from #9111.

3 years agoAuto merge of #9125 - ehuss:index-docs, r=alexcrichton
bors [Wed, 3 Feb 2021 15:21:05 +0000 (15:21 +0000)]
Auto merge of #9125 - ehuss:index-docs, r=alexcrichton

Add some documentation for index and registry stuff.

This adds some internal docs for index and registry things.

Split out of #9111.

3 years agoAuto merge of #9122 - ehuss:fix-multiple-run-custom-build, r=alexcrichton
bors [Wed, 3 Feb 2021 02:09:41 +0000 (02:09 +0000)]
Auto merge of #9122 - ehuss:fix-multiple-run-custom-build, r=alexcrichton

Fix env/cfg set for `cargo test` and `cargo run`.

There are some situations where a build script may need to run multiple times for the same package during the same `cargo` session.  There was a bug in that some of the values in the `Compilation` struct didn't handle this case.  The solution here is to be more careful about how this extra data is associated with `Unit`s, instead of assuming a package's build script only runs once.

The things that were not being handled properly:

* `Compilation::extra_env`, which is the output of `cargo:rustc-env` in build scripts.  The solution here is to use the `Metadata` hash which is used elsewhere for distinguishing build script outputs.
* `Compilation::cfgs`, which is the output of `cargo:rustc-cfg` in build scripts and the features to be set, and this is only used for doctests.  The solution here is to just add those `--cfg` flags directly in the `Doctest` struct.

The situations that cause a build script to be run multiple times:

* A package needed for both the host and target.  In the test here, this was accomplished with a proc-macro (which has to be `host`) and a cyclical dev dependency, but there are many other ways to trigger this.
* Something built with different features (with the new feature resolver), usually due to host/target differences.
* Something built with different profile settings, usually due to host/target differences.

Fixes #9100

3 years agoAdd note about `cargo:rustc-env` variables set at runtime.
Eric Huss [Wed, 3 Feb 2021 02:07:12 +0000 (18:07 -0800)]
Add note about `cargo:rustc-env` variables set at runtime.

3 years agoAdd a ResponseError for registry API interaction.
Eric Huss [Thu, 28 Jan 2021 20:39:51 +0000 (12:39 -0800)]
Add a ResponseError for registry API interaction.

The intent here is to make it easier to work with API errors.

This also includes some new tests for checking network errors.

3 years agoAdd RegistryBuilder to help initializing test registries.
Eric Huss [Thu, 28 Jan 2021 19:54:27 +0000 (11:54 -0800)]
Add RegistryBuilder to help initializing test registries.

The intent here is to make it more flexible to create different registry
setups, and to reuse code a little more easily.

3 years agoAdd some documentation for index and registry stuff.
Eric Huss [Thu, 28 Jan 2021 19:13:47 +0000 (11:13 -0800)]
Add some documentation for index and registry stuff.

3 years agoFix env/cfg set for `cargo test` and `cargo run`.
Eric Huss [Tue, 2 Feb 2021 00:28:23 +0000 (16:28 -0800)]
Fix env/cfg set for `cargo test` and `cargo run`.

3 years agoCache failures in the rustc info cache
Alex Crichton [Mon, 1 Feb 2021 18:39:36 +0000 (10:39 -0800)]
Cache failures in the rustc info cache

This commit updates the rustc info cache to cache failures to execute
rustc as well as successes. This fixes a weird issue where if you're
probing for flags the `rustc_info_cache` test fails on channels which
don't have the flag since previously a failure to execute rustc resulted
in never caching the result.

3 years agoAdd split-debuginfo profile option
Alex Crichton [Fri, 29 Jan 2021 21:24:56 +0000 (13:24 -0800)]
Add split-debuginfo profile option

This commit adds a new `split-debuginfo` option to Cargo compilation
profiles which gets forwarded to the `-Csplit-debuginfo` codegen option
in rustc. This commit also sets the default, only on macOS, to be
`-Csplit-debuginfo=unpacked`. The purpose of this change is to leverage
rust-lang/rust#79570 to avoid running `dsymutil` on incremental builds
while also preserving a pleasant debugging experience by default. This
should lead to much faster incremental build times on macOS since
`dsymutil` isn't exactly the speediest tool in the world.

This is technically a breaking change in Cargo because we're no longer
by-default producing the `*.dSYM` folders on macOS. If those are still
desired, however, authors can always run `dsymutil` themselves or
otherwise configure `split-debuginfo = 'packed'` in their
manifest/profile configuration.

3 years agoAuto merge of #9108 - CPerezz:locked_warn, r=alexcrichton
bors [Mon, 1 Feb 2021 16:24:34 +0000 (16:24 +0000)]
Auto merge of #9108 - CPerezz:locked_warn, r=alexcrichton

Impl warn for locked install without Cargo.lock

If we're installing in --locked mode and there's no `Cargo.lock` published
ie. the bin was published before https://github.com/rust-lang/cargo/pull/7026
the cargo install errors were not stating that it was due to the lack of
the `Cargo.lock` file. Instead, the error seemed completely unrelated.

Therefore, this tries to address this by adding a warn in the stderr
output.

Closes #9106

I will need some help on the testing side (assuming the code I added for the warning is correct).
It looks to me that the publish function implemented for testing purposes does not publish `Cargo.lock` which is the actual convention. Should this be updated too? See  #7026

3 years agoAuto merge of #9121 - vext01:extra-link-arg-doc, r=alexcrichton
bors [Mon, 1 Feb 2021 15:39:10 +0000 (15:39 +0000)]
Auto merge of #9121 - vext01:extra-link-arg-doc, r=alexcrichton

Document -Z extra-link-arg.

Whilst reading the cargo source code, I encountered `-Z extra-link-arg`. I'd missed this flag before because it is not documented in `-Z help`.

This commit adds the one-liner documentation.

([This argument **is** mentioned in the unstable cargo book](https://doc.rust-lang.org/beta/cargo/reference/unstable.html#extra-link-arg))

3 years agoAuto merge of #9120 - dimo414:patch-1, r=alexcrichton
bors [Mon, 1 Feb 2021 15:06:07 +0000 (15:06 +0000)]
Auto merge of #9120 - dimo414:patch-1, r=alexcrichton

Flip 'foo' and 'bar' to be consistent

The "Renaming dependencies" section initially uses 'foo' as the crate name and 'bar' as a rename, but then swaps them and uses 'bar' as the example crate name in the context of optional dependencies. Now both examples in this section treat 'foo' as the original crate name.

3 years agoDocument -Z extra-link-arg.
Edd Barrett [Mon, 1 Feb 2021 14:51:50 +0000 (14:51 +0000)]
Document -Z extra-link-arg.

3 years agoFlip 'foo' and 'bar' to be consistent
Michael Diamond [Mon, 1 Feb 2021 07:27:56 +0000 (23:27 -0800)]
Flip 'foo' and 'bar' to be consistent

The "Renaming dependencies" section initially uses 'foo' as the crate name and 'bar' as a rename, but then swaps them and uses 'bar' as the example crate name in the context of optional dependencies. Now both examples in this section treat 'foo' as the original crate name.

3 years agoImprove & fix doc dir removal process
CPerezz [Mon, 1 Feb 2021 00:11:36 +0000 (01:11 +0100)]
Improve & fix doc dir removal process

3 years agoCheck target-dependant doc folders
CPerezz [Sun, 31 Jan 2021 22:43:27 +0000 (23:43 +0100)]
Check target-dependant doc folders

When checking the fingerprint for rustdoc and applying
the corresponding logic, we don't only need to consider
the `target/doc` folder (Host target) but also triple targets.

So now the actual compilation targets are checked during the
rustdoc_fingerprint processing and they're treated as the Host/doc
folder.

3 years agoAuto merge of #9115 - djc:fix-msrv-handling, r=ehuss
bors [Sat, 30 Jan 2021 22:50:11 +0000 (22:50 +0000)]
Auto merge of #9115 - djc:fix-msrv-handling, r=ehuss

Don't try to parse MSRV if feature is not enabled

`@ehuss` is something like this what you had in mind? Should we add tests to make sure this works correctly?

3 years agoDon't try to parse MSRV if feature is not enabled
Dirkjan Ochtman [Sat, 30 Jan 2021 15:33:54 +0000 (16:33 +0100)]
Don't try to parse MSRV if feature is not enabled

3 years agoImpl warn for locked install withoud Cargo.lock
CPerezz [Thu, 28 Jan 2021 01:44:12 +0000 (02:44 +0100)]
Impl warn for locked install withoud Cargo.lock

If we're installing in --locked mode and there's no `Cargo.lock` published
ie. the bin was published before https://github.com/rust-lang/cargo/pull/7026
the cargo install errors were not stating that it was due to the lack of
the `Cargo.lock` file. Instead, the error seemed completely unrelated.

Therefore, this tries to address this by adding a warn in the stderr
output.

Closes #9106

3 years agoAuto merge of #9110 - klensy:simple-fix, r=alexcrichton
bors [Fri, 29 Jan 2021 15:04:09 +0000 (15:04 +0000)]
Auto merge of #9110 - klensy:simple-fix, r=alexcrichton

simplify char range check

Instead manually checking ranges for char, use std method.

3 years agotrivial char range check
klensy [Thu, 28 Jan 2021 22:27:16 +0000 (01:27 +0300)]
trivial char range check

3 years agoAddress latest reivew suggestions
CPerezz [Wed, 27 Jan 2021 00:14:31 +0000 (01:14 +0100)]
Address latest reivew suggestions

- Instead of `fs` we use the `utils::paths` functions
to interact with the filesystem.
- The doc fingerprint is now stored under `target/` instead
of `target/doc/`.
- The code in `compile` has been reduced to a single function call.

3 years agoExport `RustDocFingerprint` from `core/compiler`
CPerezz [Tue, 26 Jan 2021 00:26:39 +0000 (01:26 +0100)]
Export `RustDocFingerprint` from `core/compiler`

3 years agoMerge branch 'master' into doc_versioning
Carlos Pérez [Mon, 25 Jan 2021 23:54:30 +0000 (00:54 +0100)]
Merge branch 'master' into doc_versioning

3 years agoAdd rustdoc fingerprint exception for clean
CPerezz [Mon, 25 Jan 2021 23:52:07 +0000 (00:52 +0100)]
Add rustdoc fingerprint exception for clean

3 years agoCreate dirs if needed before f_p write call
CPerezz [Mon, 25 Jan 2021 23:01:59 +0000 (00:01 +0100)]
Create dirs if needed before f_p write call

Once `RustDocFingerprint::check_rustdoc_fingerprint()` is
executed it might happen that the `doc/` dir is removed.

This means that when we call `fingerprint.write()` we need
to create the `doc` directory again.

3 years agoMove rustdoc fingerprint checks earlier
CPerezz [Mon, 25 Jan 2021 23:00:24 +0000 (00:00 +0100)]
Move rustdoc fingerprint checks earlier

As @ehuss suggested, we should only execute once
the rustdoc fingerprint check per build, not once
per dep.

Therefore the checks have been moved to an earlier stage.

3 years agoAuto merge of #9097 - ehuss:tracking-issue-template-update, r=alexcrichton
bors [Mon, 25 Jan 2021 16:16:43 +0000 (16:16 +0000)]
Auto merge of #9097 - ehuss:tracking-issue-template-update, r=alexcrichton

Minor update to tracking issue template.

Just some minor tweaks, move the "about" to the bottom since it isn't that important (I think the summary should be first). Also add a link to an RFC if it is an RFC.

3 years agoAuto merge of #9098 - ehuss:extra-new-name-help, r=alexcrichton
bors [Mon, 25 Jan 2021 15:46:16 +0000 (15:46 +0000)]
Auto merge of #9098 - ehuss:extra-new-name-help, r=alexcrichton

Add some extra help to `cargo new` and invalid package names.

Binaries are not as restricted as package names, so provide some help in case the user really wants a binary with that name.

Closes #8829

3 years agoAuto merge of #9102 - alexcrichton:fix-serede, r=ehuss
bors [Mon, 25 Jan 2021 15:16:52 +0000 (15:16 +0000)]
Auto merge of #9102 - alexcrichton:fix-serede, r=ehuss

Fix compilation with serde 1.0.122

This may or may not be a bug in serde, but let's commit a fix here first
in any case.

Closes #9101

3 years agoFix compilation with serde 1.0.122
Alex Crichton [Mon, 25 Jan 2021 15:12:04 +0000 (07:12 -0800)]
Fix compilation with serde 1.0.122

This may or may not be a bug in serde, but let's commit a fix here first
in any case.

Closes #9101

3 years agoAdd some extra help to `cargo new` and invalid package names.
Eric Huss [Sun, 24 Jan 2021 19:05:11 +0000 (11:05 -0800)]
Add some extra help to `cargo new` and invalid package names.

3 years agoMinor update to tracking issue template.
Eric Huss [Sat, 23 Jan 2021 15:44:46 +0000 (07:44 -0800)]
Minor update to tracking issue template.

3 years agoAuto merge of #9095 - ehuss:spec-suggestion, r=alexcrichton
bors [Fri, 22 Jan 2021 23:18:00 +0000 (23:18 +0000)]
Auto merge of #9095 - ehuss:spec-suggestion, r=alexcrichton

Add suggestion for bad package id.

This adds some suggestions to the error message if a pkgid spec does not match any packages.

3 years agoAdd suggestion for bad package id.
Eric Huss [Fri, 22 Jan 2021 21:37:52 +0000 (13:37 -0800)]
Add suggestion for bad package id.

3 years agoAuto merge of #9093 - ehuss:remove-registry-new, r=alexcrichton
bors [Fri, 22 Jan 2021 19:24:40 +0000 (19:24 +0000)]
Auto merge of #9093 - ehuss:remove-registry-new, r=alexcrichton

Remove Registry::new.

`Registry::new` doesn't work in most circumstances because crates.io requires a user-agent, and it does not set one.

This also bumps the version over 0.32 due to #8914.

Closes #8914.
Closes #9040.

3 years agoRemove Registry::new.
Eric Huss [Fri, 22 Jan 2021 19:06:51 +0000 (11:06 -0800)]
Remove Registry::new.

3 years agoAuto merge of #9035 - weihanglo:fix/git-init-search-path, r=alexcrichton
bors [Fri, 22 Jan 2021 15:29:39 +0000 (15:29 +0000)]
Auto merge of #9035 - weihanglo:fix/git-init-search-path, r=alexcrichton

Fix: set default git config search path for tests

Fixes https://github.com/rust-lang/cargo/issues/8863 by setting the default config search path.

Just wait https://github.com/rust-lang/git2-rs/pull/656 being merged and update Cargo.toml the new release of git2-rs 😄

3 years agochore: bump versions of git2 and libgit2-sys
Weihang Lo [Fri, 22 Jan 2021 15:27:44 +0000 (23:27 +0800)]
chore: bump versions of git2 and libgit2-sys

3 years agoAuto merge of #9092 - ehuss:unstable-updates, r=alexcrichton
bors [Thu, 21 Jan 2021 21:04:12 +0000 (21:04 +0000)]
Auto merge of #9092 - ehuss:unstable-updates, r=alexcrichton

Unstable updates

This is a collection of updates for unstable/nightly feature support, intended to provide better messages for users and better internal and external documentation.  Separated by commit, in summary:

* Added comments and new docstrings for improved internal documentation.
* Added new documentation to the reference guide on how unstable things work.
  * Also added redirects for stabilized features so any external links won't be broken.
* Add a targeted error message if you put `cargo-features` in the wrong place in `Cargo.toml`.
* Remove `publish-lockfile`.  The feature was stabilized without the key in #7026 about 1.5 years ago.  Also added "removed" support for features, which prints out a more helpful error message.
* Add help messages about stabilized `-Z` flags (instead of spitting out an unhelpful error message).
* Add help messages about stabilized `cargo-features` features.
* Add more context to the error when using `cargo-features` on stable.
* Unhide nightly CLI flags. I changed my mind on how these should work. I think it is useful to "advertise" the existence of these options on stable. The error message if you try to use it should help guide on what to do.

Closes #9074.

3 years agoAdd redirects on the unstable docs.
Eric Huss [Thu, 21 Jan 2021 04:14:25 +0000 (20:14 -0800)]
Add redirects on the unstable docs.

This adds some redirects so if there are any links to old documentation,
they will get redirect to new documentation.

3 years agoUpdate the user documentation on unstable features.
Eric Huss [Thu, 21 Jan 2021 04:13:06 +0000 (20:13 -0800)]
Update the user documentation on unstable features.

This attempts to make it clearer on the different ways
unstable features can be activated.

3 years agoUpdate the internal documentation on unstable features.
Eric Huss [Thu, 21 Jan 2021 04:11:08 +0000 (20:11 -0800)]
Update the internal documentation on unstable features.

Attempts to make it clearer on how the different kinds of unstable
support works, and clarify the steps for adding new features
and stabilizing.

3 years agoRework cargo-features a little.
Eric Huss [Thu, 21 Jan 2021 04:08:52 +0000 (20:08 -0800)]
Rework cargo-features a little.

* Add `removed` support.
* Include the version where it is stabilized.
* Include a links to the documentation in the error/warning messages.

3 years agotest: remove odd semicolon
Weihang Lo [Fri, 1 Jan 2021 15:36:23 +0000 (23:36 +0800)]
test: remove odd semicolon

3 years agofix: set search path before init repos
Weihang Lo [Fri, 1 Jan 2021 14:07:34 +0000 (22:07 +0800)]
fix: set search path before init repos

3 years agoAdd more helpful message with stabilized -Z flags.
Eric Huss [Thu, 21 Jan 2021 03:46:50 +0000 (19:46 -0800)]
Add more helpful message with stabilized -Z flags.

Previously, when something was stabilized, Cargo would spit out a very
unhelpful error message about an unknown -Z flag. This changes it so
that it displays a helpful warning (or error).

3 years agoRemove publish-lockfile key from manifest.
Eric Huss [Thu, 21 Jan 2021 03:31:57 +0000 (19:31 -0800)]
Remove publish-lockfile key from manifest.

The feature was stabilized without the key in #7026 about 1.5 years ago.
(Will follow up with an error message in a subsequent commit.)

3 years agoAdd error message for wrong cargo-features placement.
Eric Huss [Thu, 21 Jan 2021 03:22:51 +0000 (19:22 -0800)]
Add error message for wrong cargo-features placement.

This is intended to help if the user puts cargo-features in the
wrong place in Cargo.toml.

3 years agoAdd some comments why some options are hidden.
Eric Huss [Thu, 21 Jan 2021 03:18:59 +0000 (19:18 -0800)]
Add some comments why some options are hidden.

3 years agoUnhide nightly-only flags.
Eric Huss [Thu, 21 Jan 2021 03:16:54 +0000 (19:16 -0800)]
Unhide nightly-only flags.

I changed my mind on how these should work. I think it is useful to
"advertise" the existence of these options on stable. The error message
if you try to use it should help guide on what to do.

3 years agoAuto merge of #9077 - ehuss:fix-doc-resolver2-proc-macro, r=alexcrichton
bors [Wed, 20 Jan 2021 19:02:26 +0000 (19:02 +0000)]
Auto merge of #9077 - ehuss:fix-doc-resolver2-proc-macro, r=alexcrichton

Fix some issues with `cargo doc` and the new feature resolver.

This contains two related commits fixing some issues with `cargo doc` and the new feature resolver.

The first commit fixes a panic. The old code was using `UnitFor::new_normal` when computing doc units, but this was wrong. That essentially circumvents the new feature resolver, and breaks determining the correct features to use. I don't remember exactly what I was thinking when I wrote that, other than "rustdoc shouldn't care", but it does matter.

Unfortunately changing that makes collisions worse because it aggravates #6313, so the second commit adds some logic for removing some collisions automatically. Specifically:

- Prefers dependencies for the target over dependencies for the host (such as proc-macros).
- Prefers the "newest" version if it comes from the same source.

There are still plenty of situations where there can be collisions, but I'm uncertain on the best way to handle those.

Fixes #9064

3 years agoOptimize removing unit_deps.
Eric Huss [Wed, 20 Jan 2021 16:27:36 +0000 (08:27 -0800)]
Optimize removing unit_deps.

3 years agoAuto merge of #8037 - djc:rfc-2495, r=ehuss
bors [Wed, 20 Jan 2021 16:12:56 +0000 (16:12 +0000)]
Auto merge of #8037 - djc:rfc-2495, r=ehuss

Implement support for rust-version field in project metadata

Needs a bunch more work, but I'd like some early feedback! Remaining work:

- [x] Bikeshedding name (picked `rust-version` here over `msrv` or `min-rust-version`)
- [x] Failing test for local dependency with unsatisfied MSRV
- [x] Requirement cannot be smaller than 1.27
- [x] Requirement cannot be smaller than initial release of edition used
- [x] Check for `run`, `verify` and `publish` subcommands
- [x] More tests (would love feedback on this)
- [x] Handle pre-release identifiers
- [x] Disallow semver range operators
- [x] Feature gate it
- [x] Add documentation for unstable feature

Minimal version of `@moxian's` earlier take in #7801.

cc rust-lang/rust#65262

3 years agoImplement support for rust-version field in project metadata
Dirkjan Ochtman [Tue, 24 Mar 2020 21:31:28 +0000 (22:31 +0100)]
Implement support for rust-version field in project metadata