-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Garbage collect whole target/ #13136
Copy link
Copy link
Open
Labels
C-feature-requestCategory: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`S-acceptedStatus: Issue or feature is accepted, and has a team member available to help mentor or reviewStatus: Issue or feature is accepted, and has a team member available to help mentor or reviewZ-gcNightly: garbage collectionNightly: garbage collectionZ-scriptNightly: cargo scriptNightly: cargo script
Metadata
Metadata
Assignees
Labels
C-feature-requestCategory: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`Category: proposal for a feature. Before PR, ping rust-lang/cargo if this is not `Feature accepted`S-acceptedStatus: Issue or feature is accepted, and has a team member available to help mentor or reviewStatus: Issue or feature is accepted, and has a team member available to help mentor or reviewZ-gcNightly: garbage collectionNightly: garbage collectionZ-scriptNightly: cargo scriptNightly: cargo script
Type
Fields
Give feedbackNo fields configured for issues without a type.
Note: for cleaning individual build units within a build-dir, see #6229
Problem
With "cargo script", the target directory is "hidden" from the user, making it easy to leak when you delete your script.
If we move forward with rust-lang/rfcs#3371, a similar situation will happen for regular packages.
If I haven't touched a project in a long while but have run
rustup update, there might be nothing of use left intarget/, wasting space.Sometimes I want to
cargo cleanall projects on my system (see #11305).Proposed Solution
We should track in the GC data base a list of
Cargo.toml/ cargo script associated with the target directory)Cargo.lockfor future potential work like Pin cache entries still in use #13137 without having to infer theCargo.lock(special logic needed for cargo-script, feature requests exist for even weirder situations)Note that neither of the two fields can serve as a unique / primary key. If people use
CARGO_TARGET_DIR=/tmp/cargothen multiple workspaces may point to the same target dir. Likewise, people may end up with multiple target dirs for one workspace.We need to track the
Cargo.toml/ cargo script because the workspace root is ambiguous when it comes to cargo scripts.Example entries for
CARGO_TARGET_DIR=/tmp/cargo:Example entries for rust-analyzer target dir
Forms of cleanup
target/if unused for X time (this is in the "locally recreatable" category)target/(I just upgraded Rust, maybe rustup could suggest this)target/(workspace doesn't exist)Notes
No response