Comments (9)
btw i have a solution in work. I am working to make it so published packages have all targets explicitly enumerated.
from cargo.
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.
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)
- Workspace unexpected-cfg lint configuration does not apply to integration test. HOT 3
- Remove `cargo::rustc-check-cfg` to only have one place to configure the `unknown_cfgs` lint HOT 8
- Location of patch information HOT 4
- The output from `cargo package --list` is not good for workspaces HOT 5
- Recommendations for workspace creation HOT 1
- cargo-upgrade verbose option broken HOT 3
- `cargo build --release` SIGKILL:ed on OSX HOT 4
- `cargo fmt --all` from excluded sub-directory still checks parent workspace HOT 5
- Improve the diagnostics in virual workspaces HOT 3
- 0.79.1 release with updated `gix` dependency HOT 2
- Incorrect formatting for git fetch HOT 2
- Deduplicate fingerprint logic and `check-cfg` lint config
- Exports symbols of cdylib dependencies HOT 2
- No way to specify linker arguments via rustflags for dependency build scripts with `--target` HOT 4
- called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" } HOT 3
- cargo new: Confusing error message about adding to a workspace HOT 4
- cargo publish should refuse an out-of-date lockfile HOT 4
- Non determinist vendoring of git dependencies HOT 10
- `cargo update --config net.git-fetch-with-cli=true` fetches using git2 HOT 1
- "Cargo install" should provide download binaries only from crate.io if availibale rather than build these binaries every time when calling cargo install HOT 3
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.