-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Stabilize publish-lockfile. #7026
Conversation
87a9478
to
34307c6
Compare
📌 Commit 34307c6 has been approved by |
Stabilize publish-lockfile. This stabilizes the publish-lockfile feature. Specifically: - Makes `Cargo.lock` included by default for packages with executables. - Deprecates the `publish-lockfile` manifest key. It is no longer used. Additional notes: - Fixed issue where if a `Cargo.lock` file didn't exist, `cargo package` would fail the VCS dirty check. - Changed it so that `cargo publish` or `cargo package` will now show manifest warnings. I believe this was an oversight. Closes #5654
☀️ Test successful - checks-travis, status-appveyor |
Update cargo Update cargo 19 commits in 545f354259be4e9745ea00a524c0e4c51df01aa6..807429e1b6da4e2ec52488ef2f59e77068c31e1f 2019-05-23 17:45:30 +0000 to 2019-06-11 14:06:10 +0000 - Stabilize publish-lockfile. (rust-lang/cargo#7026) - change package cache lock message (rust-lang/cargo#7029) - Fix documenting an example. (rust-lang/cargo#7023) - Fix nonconcurrent tests (rust-lang/cargo#6900) - Update git2 crates for libgit2 0.28 (rust-lang/cargo#7018) - fix bunch of clippy warnings (rust-lang/cargo#7019) - Ignore remap-path-prefix in metadata hash. (rust-lang/cargo#6966) - Don't synthesize feature diretives for non-optional deps (rust-lang/cargo#7010) - Handle pipelined tests of libraries (rust-lang/cargo#7008) - Import the cargo-vendor subcommand into Cargo (rust-lang/cargo#6869) - Remove unnecessary outlives bounds (rust-lang/cargo#7000) - Catch filename output collisions in rustdoc. (rust-lang/cargo#6998) - the testing SAT solver was messed up by a refactor (rust-lang/cargo#6995) - Add some hints to the docs for `cfg()` targets (rust-lang/cargo#6990) - Test the Resolver against the varisat Library (rust-lang/cargo#6980) - Update changelog. (rust-lang/cargo#6984) - Update cache-messages tracking issue. (rust-lang/cargo#6987) - zsh: Add --all-targets option to cargo-check and cargo-build (rust-lang/cargo#6985) - Fix typo (rust-lang/cargo#6982)
Update cargo Update cargo 19 commits in 545f354259be4e9745ea00a524c0e4c51df01aa6..807429e1b6da4e2ec52488ef2f59e77068c31e1f 2019-05-23 17:45:30 +0000 to 2019-06-11 14:06:10 +0000 - Stabilize publish-lockfile. (rust-lang/cargo#7026) - change package cache lock message (rust-lang/cargo#7029) - Fix documenting an example. (rust-lang/cargo#7023) - Fix nonconcurrent tests (rust-lang/cargo#6900) - Update git2 crates for libgit2 0.28 (rust-lang/cargo#7018) - fix bunch of clippy warnings (rust-lang/cargo#7019) - Ignore remap-path-prefix in metadata hash. (rust-lang/cargo#6966) - Don't synthesize feature diretives for non-optional deps (rust-lang/cargo#7010) - Handle pipelined tests of libraries (rust-lang/cargo#7008) - Import the cargo-vendor subcommand into Cargo (rust-lang/cargo#6869) - Remove unnecessary outlives bounds (rust-lang/cargo#7000) - Catch filename output collisions in rustdoc. (rust-lang/cargo#6998) - the testing SAT solver was messed up by a refactor (rust-lang/cargo#6995) - Add some hints to the docs for `cfg()` targets (rust-lang/cargo#6990) - Test the Resolver against the varisat Library (rust-lang/cargo#6980) - Update changelog. (rust-lang/cargo#6984) - Update cache-messages tracking issue. (rust-lang/cargo#6987) - zsh: Add --all-targets option to cargo-check and cargo-build (rust-lang/cargo#6985) - Fix typo (rust-lang/cargo#6982)
Update cargo Update cargo 19 commits in 545f354259be4e9745ea00a524c0e4c51df01aa6..807429e1b6da4e2ec52488ef2f59e77068c31e1f 2019-05-23 17:45:30 +0000 to 2019-06-11 14:06:10 +0000 - Stabilize publish-lockfile. (rust-lang/cargo#7026) - change package cache lock message (rust-lang/cargo#7029) - Fix documenting an example. (rust-lang/cargo#7023) - Fix nonconcurrent tests (rust-lang/cargo#6900) - Update git2 crates for libgit2 0.28 (rust-lang/cargo#7018) - fix bunch of clippy warnings (rust-lang/cargo#7019) - Ignore remap-path-prefix in metadata hash. (rust-lang/cargo#6966) - Don't synthesize feature diretives for non-optional deps (rust-lang/cargo#7010) - Handle pipelined tests of libraries (rust-lang/cargo#7008) - Import the cargo-vendor subcommand into Cargo (rust-lang/cargo#6869) - Remove unnecessary outlives bounds (rust-lang/cargo#7000) - Catch filename output collisions in rustdoc. (rust-lang/cargo#6998) - the testing SAT solver was messed up by a refactor (rust-lang/cargo#6995) - Add some hints to the docs for `cfg()` targets (rust-lang/cargo#6990) - Test the Resolver against the varisat Library (rust-lang/cargo#6980) - Update changelog. (rust-lang/cargo#6984) - Update cache-messages tracking issue. (rust-lang/cargo#6987) - zsh: Add --all-targets option to cargo-check and cargo-build (rust-lang/cargo#6985) - Fix typo (rust-lang/cargo#6982)
@@ -186,6 +186,7 @@ features! { | |||
[stable] rename_dependency: bool, | |||
|
|||
// Whether a lock file is published with this crate | |||
// This is deprecated, and will likely be removed in a future version. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why wasnt this marked as stable instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We did not have a compelling enough reason to add a mechanism to disable including the lock file.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I dont think it is possible to disable a stable feature. There is no remove
method, while there is an add
method:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure I understand. We didn't feel like it was important to allow someone to specify publish-lockfile = false
in Cargo.toml
, so we plan to just completely remove that part. I could have removed it immediately, but I figured I'd leave it in for a while in case we changed our mind.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cargo/src/cargo/core/features.rs
Lines 115 to 128 in 34307c6
fn get(features: &Features) -> bool { | |
stab!($stab) == Status::Stable || features.$feature | |
} | |
static FEAT: Feature = Feature { | |
name: stringify!($feature), | |
get, | |
}; | |
&FEAT | |
} | |
)* | |
fn is_enabled(&self, features: &Features) -> bool { | |
(self.get)(features) | |
} |
When a feature is marked stable, it is always enabled.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The feature is, but not the publish-lockfile
flag in the manifest. They two are independent. In this case, we don't want either of them (the feature or the flag).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I get it.
62: Remove stabilized publish-lockfile feature r=phil-opp a=phil-opp The feature was stabilized/removed in rust-lang/cargo#7026. Now all binaries include the Cargo.lock by default. Fixes #57 Co-authored-by: Philipp Oppermann <dev@phil-opp.com>
Pkgsrc changes: * Add a patch to llvm to deal with const dli_saddr. * Adapt two other patches. * Cross-build currently fails, so i386, powerpc and sparc64 bootstrap kits for 1.37.0 are built natively. Missing aarch64 hardware, so that's not available yet. * Bump bootstrap requirements to 1.36.0 except for armv7-unknown-netbsd-eabihf which I've not managed to cross-build. Upstream changes: Version 1.37.0 (2019-08-15) ========================== Language -------- - `#[must_use]` will now warn if the type is contained in a [tuple][61100], [`Box`][62228], or an [array][62235] and unused. - [You can now use the `cfg` and `cfg_attr` attributes on generic parameters.][61547] - [You can now use enum variants through type alias.][61682] e.g. You can write the following: ```rust type MyOption = Option<u8>; fn increment_or_zero(x: MyOption) -> u8 { match x { MyOption::Some(y) => y + 1, MyOption::None => 0, } } ``` - [You can now use `_` as an identifier for consts.][61347] e.g. You can write `const _: u32 = 5;`. - [You can now use `#[repr(align(X)]` on enums.][61229] - [The `?`/_"Kleene"_ macro operator is now available in the 2015 edition.][60932] Compiler -------- - [You can now enable Profile-Guided Optimization with the `-C profile-generate` and `-C profile-use` flags.][61268] For more information on how to use profile guided optimization, please refer to the [rustc book][rustc-book-pgo]. - [The `rust-lldb` wrapper script should now work again.][61827] Libraries --------- - [`mem::MaybeUninit<T>` is now ABI-compatible with `T`.][61802] Stabilized APIs --------------- - [`BufReader::buffer`] - [`BufWriter::buffer`] - [`Cell::from_mut`] - [`Cell<[T]>::as_slice_of_cells`][`Cell<slice>::as_slice_of_cells`] - [`DoubleEndedIterator::nth_back`] - [`Option::xor`] - [`Wrapping::reverse_bits`] - [`i128::reverse_bits`] - [`i16::reverse_bits`] - [`i32::reverse_bits`] - [`i64::reverse_bits`] - [`i8::reverse_bits`] - [`isize::reverse_bits`] - [`slice::copy_within`] - [`u128::reverse_bits`] - [`u16::reverse_bits`] - [`u32::reverse_bits`] - [`u64::reverse_bits`] - [`u8::reverse_bits`] - [`usize::reverse_bits`] Cargo ----- - [`Cargo.lock` files are now included by default when publishing executable crates with executables.][cargo/7026] - [You can now specify `default-run="foo"` in `[package]` to specify the default executable to use for `cargo run`.][cargo/7056] Misc ---- Compatibility Notes ------------------- - [Using `...` for inclusive range patterns will now warn by default.][61342] Please transition your code to using the `..=` syntax for inclusive ranges instead. - [Using a trait object without the `dyn` will now warn by default.][61203] Please transition your code to use `dyn Trait` for trait objects instead. [62228]: rust-lang/rust#62228 [62235]: rust-lang/rust#62235 [61802]: rust-lang/rust#61802 [61827]: rust-lang/rust#61827 [61547]: rust-lang/rust#61547 [61682]: rust-lang/rust#61682 [61268]: rust-lang/rust#61268 [61342]: rust-lang/rust#61342 [61347]: rust-lang/rust#61347 [61100]: rust-lang/rust#61100 [61203]: rust-lang/rust#61203 [61229]: rust-lang/rust#61229 [60932]: rust-lang/rust#60932 [cargo/7026]: rust-lang/cargo#7026 [cargo/7056]: rust-lang/cargo#7056 [`BufReader::buffer`]: https://doc.rust-lang.org/std/io/struct.BufReader.html#method.buffer [`BufWriter::buffer`]: https://doc.rust-lang.org/std/io/struct.BufWriter.html#method.buffer [`Cell::from_mut`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.from_mut [`Cell<slice>::as_slice_of_cells`]: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.as_slice_of_cells [`DoubleEndedIterator::nth_back`]: https://doc.rust-lang.org/std/iter/trait.DoubleEndedIterator.html#method.nth_back [`Option::xor`]: https://doc.rust-lang.org/std/option/enum.Option.html#method.xor [`RefCell::try_borrow_unguarded`]: https://doc.rust-lang.org/std/cell/struct.RefCell.html#method.try_borrow_unguarded [`Wrapping::reverse_bits`]: https://doc.rust-lang.org/std/num/struct.Wrapping.html#method.reverse_bits [`i128::reverse_bits`]: https://doc.rust-lang.org/std/primitive.i128.html#method.reverse_bits [`i16::reverse_bits`]: https://doc.rust-lang.org/std/primitive.i16.html#method.reverse_bits [`i32::reverse_bits`]: https://doc.rust-lang.org/std/primitive.i32.html#method.reverse_bits [`i64::reverse_bits`]: https://doc.rust-lang.org/std/primitive.i64.html#method.reverse_bits [`i8::reverse_bits`]: https://doc.rust-lang.org/std/primitive.i8.html#method.reverse_bits [`isize::reverse_bits`]: https://doc.rust-lang.org/std/primitive.isize.html#method.reverse_bits [`slice::copy_within`]: https://doc.rust-lang.org/std/primitive.slice.html#method.copy_within [`u128::reverse_bits`]: https://doc.rust-lang.org/std/primitive.u128.html#method.reverse_bits [`u16::reverse_bits`]: https://doc.rust-lang.org/std/primitive.u16.html#method.reverse_bits [`u32::reverse_bits`]: https://doc.rust-lang.org/std/primitive.u32.html#method.reverse_bits [`u64::reverse_bits`]: https://doc.rust-lang.org/std/primitive.u64.html#method.reverse_bits [`u8::reverse_bits`]: https://doc.rust-lang.org/std/primitive.u8.html#method.reverse_bits [`usize::reverse_bits`]: https://doc.rust-lang.org/std/primitive.usize.html#method.reverse_bits [rustc-book-pgo]: https://doc.rust-lang.org/rustc/profile-guided-optimization.html
The feature was stabilized without the key in rust-lang#7026 about 1.5 years ago. (Will follow up with an error message in a subsequent commit.)
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.
If we're installing in --locked mode and there's no `Cargo.lock` published ie. the bin was published before rust-lang#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 rust-lang#9106
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 #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
This stabilizes the publish-lockfile feature. Specifically:
Cargo.lock
included by default for packages with executables.publish-lockfile
manifest key. It is no longer used.Additional notes:
Cargo.lock
file didn't exist,cargo package
would fail theVCS dirty check.
cargo publish
orcargo package
will now show manifestwarnings. I believe this was an oversight.
Closes #5654