-
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
packaging: omit generated Cargo.lock if binaries and examples are package-excluded #11557
Comments
This piece of code controls the behavior you described sits here cargo/src/cargo/sources/path.rs Lines 153 to 167 in abc6abe
The fix might be simple. Call the clouse To me, it seems quite hacky but actually reasonable, since the package doesn't include any example ro binary anymore. However, I've seen several counter proposals advocating that every package even a library only package should commit its |
I'm either misunderstanding something, or there's a misunderstanding. My understanding is that:
For me, those 2 statements are not incompatible and that's what I expect from the following situation:
|
In #14815, the Cargo team has decided to always include |
Problem
When running
cargo package --no-verify --no-metadata -p <my_package>
Expected behavior: a generated
Cargo.lock
is produced for the package if and only if the package contains one or more examples or binaries.Observed behavior: If the package has
examples/**
, but has marked the path as excluded (https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields), aCargo.lock
is still generated despite the examples being excluded from the<package>.crate
file.Steps
No response
Possible Solution(s)
No response
Notes
This is admittedly an edge condition, but we have a CI flow where it is important to be able to avoid the
Cargo.lock
generation step. We are packaging multiple dependent crates from a workspace simultaneously for submission to an alternative registry with no API (direct registry index manipulation), so the failed registry lookups that occur duringCargo.lock
generation break our ability to package the crates simultaneously.We would not want to
.gitignore
the examples, as we want them there for developers of the crates. However, any other exclusion mechanism (if there are reasons not to overload https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields) would be appropriate.The workaround we currently use is to avoid examples inside publishing crates, instead putting them in separate crate(s) in the same workspace.
This is related to:
cargo package
#7487Version
The text was updated successfully, but these errors were encountered: