Comments (9)
I meant "strip them if they aren't included", not "unconditionally strip them". It could also likely be a user-controlled lint so people can control whether they want to error or allow it (#12235).
from cargo.
btw i have a solution in work. I am working to make it so published packages have all targets explicitly enumerated.
from cargo.
rand
has package.include
set:
include = ["src/", "LICENSE-*", "README.md", "CHANGELOG.md", "COPYRIGHT"]
This doesn't include benches/
.
When you use auto-detected benches, cargo publish
works just fine because it will auto-detect among the bundled files and be fine.
When you add [[bench]]
tables, cargo knows to look for them but they were not include
d, and so things error.
Possible ways to improve the experience for this:
- Make the error clearer by explicitly checking whether targets were included
- Auto-strip certain types of targets, like
[[bench]]
and[[test]]
from cargo.
Auto-strip certain types of targets, like
[[bench]]
and[[test]]
I might be wrong, but doesn't crater run rely on tests being published to crates.io?
from cargo.
Isn't inclusion in the package a separate issue?
I would expect
[[bench]]
name = "uniform"
harness = false
to behave identically to
[[bench]]
name = "uniform"
path = "benches/uniform.rs"
harness = false
where benches/uniform.rs
exists, given that the former is already supported by cargo bench
.
from cargo.
Interesting, I hadn't realized that the presence of path
makes a difference.
The reason is that without path
, we have to do target auto-detection which fails. With path
, we skip that and only error if the target is activated.
This makes me think we'll only be able to handle this by stripping these target as erroring would likely break some existing cases. We could still warn though and once that is user controllable, they could turn that into an error.
from cargo.
I think I'm hitting a variant of this, testing with cargo package
. My Cargo.toml contains
[package]
exclude = ["benches"]
[[bench]]
# `benches/exec_compare.rs` is not meant to be run from cargo
name = "exec_compare"
bench = false
Which gives me
can't find `exec_compare` bench at `benches/exec_compare.rs` or `benches/exec_compare/main.rs`.
Please specify bench.path if you want to use a non-default path.
I can work around this by not excluding benches (but that's not the desired behavior), or by setting path="anything"
. The fact that even a bogus path value makes cargo happy is interesting.
from cargo.
At the time of upload,setting path
but not verifying the validity of the path
seems reasonable to me. But if bench = false
is set, should existential checks be eliminated?
cargo book:
Setting targets to
bench = false
will stop them from being bencharmked by default.
I understand the implication here is that with bench = false
set, Cargo will not execute benchmarks for crates with name=xx
. Am I understanding this wrong?
from cargo.
@heisen-li have not checked the code but I believe this is about target path auto-discovery inconsistency when packaging, not compiling default targets.
from cargo.
Related Issues (20)
- cargo fails to download git package HOT 1
- cargo publish says that the tarball can not be verified after having compiled successfully the crate HOT 2
- Undocumented, inconsisten inheritance of `[badges]`
- `cargo add` deletes comments in TOML unexpectedly under certain conditions HOT 2
- Panic with "already borrowed: BorrowMutError" since nightly-2024-03-26 HOT 5
- cargo add --no-default-features displaying wrong feature selection HOT 3
- `cargo generate-lockfile` panicked when `--offline`
- Already borrowed panic (`BorrowMutErr`) during `cargo update` HOT 5
- cargo clippy error when using compile option --emit=obj, and crate-type = ["staticlib"] HOT 1
- Cargo `vendor` doesn't include dependency's hidden files HOT 3
- better support for generation and installation of associated files HOT 4
- Make `.cargo/config` deprecation warnings silent HOT 2
- Cargo runs unit tests when they are disabled and `--lib` is passed HOT 6
- Cargo clean removes target directory, even when it is a softlink HOT 3
- cargo should clone iced and smithay one time and partial HOT 1
- Access to compiler artifact notifications messages
- Cargo generate-lockfile picks dependencies that are too high for my current rustc HOT 1
- Build script allowlist mode HOT 3
- The built release by `cargo build -r` has the wrong format (Malformed Mach-o file) on MacOS aarch64-apple-darwin HOT 8
- -Zscript doesn't download dependecies HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cargo.