-
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
Sharing target
directories
#482
Comments
#436 (or its work around) might help? |
As I posted on #523, could we have something like |
Example of a all: build doc
travis: test doc
mv target/doc doc
build:
cargo build src/*/
update:
cargo update src/*/
clean:
cargo clean
test:
cargo test src/*/ # unit tests
cargo test tests/*/ # integration tests
test-update: update
cargo update tests/*/
doc:
cargo doc src/*/
bench:
cargo bench benches/*/
bench-update: update
cargo update benches/*/
examples:
cargo build examples/*/
examples-update: update
cargo update examples/*/ And the [package]
name = "gfx"
version = "0.1.0"
authors = [
]
build = "make build" Note the separate |
Could (Servo might still want to run other tests, but this would be a first step.) |
Certainly! That's what I would like to implement. |
Is this on the radar at all? |
@metajack not currently, but I can try to flesh something out if needed. |
This commit adds support to allow specifying a custom output directory to Cargo. First, the `build.target-dir` configuration key is checked, and failing that the `CARGO_TARGET_DIR` environment variable is checked, and failing that the root package's directory joined with the directory name "target" is used. There are a few caveats to switching target directories, however: * If the target directory is in the current source tree, and the folder name is not called "target", then Cargo may walk the output directory when determining whether a tree is fresh. * If the target directory is not called "target", then Cargo may look inside it currently for `Cargo.toml` files to learn about local packages. * Concurrent usage of Cargo will still result in badness (rust-lang#354), and this is now exascerbated because many Cargo projects can share the same output directory. * The top-level crate is not cached for future compilations, so if a crate is built into directory `foo` and then that crate is later used as a dependency, it will be recompiled. The naming limitations can be overcome in time, but for now it greatly simplifies the crawling routines and shouldn't have much of a negative impact other than some Cargo runtimes (which can in turn be negated by following the "target" name convention). Closes rust-lang#482
This commit adds support to allow specifying a custom output directory to Cargo. First, the `build.target-dir` configuration key is checked, and failing that the `CARGO_TARGET_DIR` environment variable is checked, and failing that the root package's directory joined with the directory name "target" is used. There are a few caveats to switching target directories, however: * If the target directory is in the current source tree, and the folder name is not called "target", then Cargo may walk the output directory when determining whether a tree is fresh. * If the target directory is not called "target", then Cargo may look inside it currently for `Cargo.toml` files to learn about local packages. * Concurrent usage of Cargo will still result in badness (rust-lang#354), and this is now exascerbated because many Cargo projects can share the same output directory. * The top-level crate is not cached for future compilations, so if a crate is built into directory `foo` and then that crate is later used as a dependency, it will be recompiled. The naming limitations can be overcome in time, but for now it greatly simplifies the crawling routines and shouldn't have much of a negative impact other than some Cargo runtimes (which can in turn be negated by following the "target" name convention). Closes rust-lang#482
This commit adds support to allow specifying a custom output directory to Cargo. First, the `build.target-dir` configuration key is checked, and failing that the `CARGO_TARGET_DIR` environment variable is checked, and failing that the root package's directory joined with the directory name "target" is used. There are a few caveats to switching target directories, however: * If the target directory is in the current source tree, and the folder name is not called "target", then Cargo may walk the output directory when determining whether a tree is fresh. * If the target directory is not called "target", then Cargo may look inside it currently for `Cargo.toml` files to learn about local packages. * Concurrent usage of Cargo will still result in badness (#354), and this is now exascerbated because many Cargo projects can share the same output directory. * The top-level crate is not cached for future compilations, so if a crate is built into directory `foo` and then that crate is later used as a dependency, it will be recompiled. The naming limitations can be overcome in time, but for now it greatly simplifies the crawling routines and shouldn't have much of a negative impact other than some Cargo runtimes (which can in turn be negated by following the "target" name convention). Closes #482
Projects like servo have many dependencies, all of which need to be tested. It's much easier to set up CI for all of the dependencies once than separately. Right now it's the case that
cargo test
must be run once in each dependency, causing many libraries to be built many times. It would be much nicer if thetarget
output directories could be shared amongst dependencies (somehow).The text was updated successfully, but these errors were encountered: