-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
Tracking Issue for path-bases #14355
Comments
Implement base paths (RFC 3529) 1/n: path dep and patch support RFC: rust-lang/rfcs#3529 Tracking Issue: #14355 This PR add support in path dependencies and `patch` table and the `workspace` built-in path base.
RFC: rust-lang/rfcs#3529 Tracking Issue: rust-lang#14355 This PR adds the `--base` option to `cargo add` to allow adding a path dependency with a path base.
RFC: rust-lang/rfcs#3529 Tracking Issue: rust-lang#14355 This PR adds the `--base` option to `cargo add` to allow adding a path dependency with a path base.
RFC: rust-lang/rfcs#3529 Tracking Issue: rust-lang#14355 This PR adds the `--base` option to `cargo add` to allow adding a path dependency with a path base.
RFC: rust-lang/rfcs#3529 Tracking Issue: rust-lang#14355 This PR adds the `--base` option to `cargo add` to allow adding a path dependency with a path base.
RFC: rust-lang/rfcs#3529 Tracking Issue: rust-lang#14355 This PR adds the `--base` option to `cargo add` to allow adding a path dependency with a path base.
RFC: rust-lang/rfcs#3529 Tracking Issue: rust-lang#14355 This PR adds the `--base` option to `cargo add` to allow adding a path dependency with a path base.
Implement path-bases (RFC 3529) 2/n: `cargo [add|remove|update]` support RFC: rust-lang/rfcs#3529 Tracking Issue: #14355 This PR adds the `--base` option to `cargo add` to allow adding a path dependency with a path base.
RFC: rust-lang/rfcs#3529 Tracking Issue: rust-lang#14355 This PR adds the `--base` option to `cargo add` to allow adding a path dependency with a path base.
@dpaoliello this makes it possible to shorten the chars needed when specifying paths in workspaces, which is a great feature. But even better a feature would be to be able to declare paths like constants, once and reuse them everywhere. Has this been pitched / discussed? I understand this is a tracking issue for path-bases specifically, so sorry to hijack this issue, but what I propose is related to the problem which this tries to solve: better ergonomics for Imagine many crates (30+) in a single workspace, where I would like to group some crates together on filesystem by use of folders. We note that this is ofc opaque to cargo, but filesystem grouping is still good for IDE exploration and git. Project root: crates/
core/
utils/
Cargo.toml
src/
lib.rs
error/
Cargo.toml
src/
lib.rs
clients/
http/
Cargo.toml
src/
lib.rs
database
Cargo.toml
src/
lib.rs
really_huge_structure/
logic/
foo/
Cargo.toml
src/
lib.rs
bar/
Cargo.toml
src/
lib.rs
models/
foo/
Cargo.toml
src/
lib.rs
bar/
Cargo.toml
src/
lib.rs
Cargo.toml
README.md many many crates omitted, very simplified! I now have to specify the path But even better would be: Declaration in
|
Path base can be either relative or absolute. Note that relative paths are relative to the declaring config.toml, which makes it convenient for scenarios like yours where there is a common parent directory. In [path-bases]
core = "../crates/core"
clients = "../crates/clients"
logic = "../crates/really_huge_structure/logic"
models = "../crates/really_huge_structure/models" Which makes the foo-logic = { path = "foo", base = "logic" } That all said, I think a workspace may be better suited for your scenario than relying on path base. |
@dpaoliello cool! Im using workspaces, but I don't think I can use |
Yep, it's a bit verbose since you have to repeat everything, but you can list each of the workspace members as a path dependency in the workspace and then inherit those in the member manifests. [workspace]
members = [
"crates/really_huge_structure/logic/foo",
...
]
[workspace.dependencies]
foo-logic = { path = "crates/really_huge_structure/logic/foo" } |
Thank you! That is fantastic! I thought to try it first, but then I deemed it as silly, but it is way better than repeating a "core" crate many many times with path also being different (for nested crates at different directory "depths"). |
Summary
RFC: #3529
Original issue: #9855
Documentation: https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#path-bases
Implementation:
cargo [add|remove|update]
support #14427[patch]
table in config supportIntroduce shared base directories in Cargo configuration files that in turn enable base-relative path dependencies.
Changes from RFC
base
naming was switched topackage
/registry
naming rules, meaning we support unicode instead of just ASCII (Implement path-bases (RFC 3529) 1/n: path dep and patch support #14360)Unresolved Issues
path-bases
) and field names (base
)?package
orcurrent-dir
for the directory of the current project?home
oruser_home
for the user's home directory?sysroot
for the current rustc sysroot?[patch]
table? Adding support for[patch]
in config files greatly complicates the implementationbase = "workspace"
work with implicit workspaces?Future Extensions
About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
The text was updated successfully, but these errors were encountered: