Comments (5)
I'm a bit skeptical that this is related to corrosion. Corrosion / CMake does all its work at configure time. At build time the Generator (in your case ninja) invokes the build rules (e.g. cargo rustc ....
. There are multiple build rules, and Ninja will also spend some time evaluating Generator expressions and checking if a file was actually generated by the command. However, ninja is widely used and I doubt there is something there that could take a noticable amount of time. You could of course check if the issue also occurs when using Unix Makefiles
as the Generator.
sccache
is invoked by cargo
(assuming you are using RUSTC_WRAPPER=sccache
or something similar), so if the hang is related to sccache, then the issue is either on sccache or cargos side, since CMake / Ninja knows nothing about sccache.
from corrosion.
CMake sometimes hangs indefinitely after Cargo finishes building a crate.
Are your sure it is actually CMake that hangs? I've recently been experimenting on integrating a workaround for #413 into corrosion until it is fixed upstream, and have noticed hangs for the following dead simple program (only tested on mac):
// use std::ffi::OsString;
use std::process::Command;
fn main() {
// let args = std::env::args_os()
// .chain([OsString::from("--target=abcdefg")]);
let mut handle = Command::new("echo")
// .args(args)
.spawn()
.expect("Failed to spawn");
handle.wait().expect("Command wasn't running");
}
I get the following output:
❯ time $HOME/.rustup/toolchains/stable-aarch64-apple-darwin/bin/cargo run --release
Finished release [optimized] target(s) in 0.00s
Running `target/release/wrapper`
target/release/wrapper --target=abcdefg
$HOME/.rustup/toolchains/stable-aarch64-apple-darwin/bin/cargo run --release 0.01s user 0.01s system 0% cpu 3.081 total
The hang happens between "Running" which is printed immediately and the output of "echo" which can take seconds to appear, even though compilation has already finished!.
When cargo is removed from the picture I have not seen any hangs yet.
from corrosion.
Note that I used to have hangs as well when using vscode + CMake, but since disabling sccache i haven't observed them again. So I think it is somehow related to having sccache enabled.
from corrosion.
I think you are right that this only shows up with sccache. When the build hangs, neither rustc nor cargo processes are running. I don't know if Corrosion, CMake, or sccache are the problem; my guess is the bug is in sccache.
from corrosion.
Potentially related:
mozilla/sccache#1011
mozilla/sccache#756
I have never encountered this using sccache with Cargo alone (not using CMake + Corrosion).
from corrosion.
Related Issues (20)
- `corrosion_import_public_crate(CRATE_NAME "libc" VERSION "0.2")`-like feature / CMake-Crates.io integration? HOT 2
- Support `$<CONFIG>` in `OUTPUT_DIRECTORY` HOT 6
- [Bug]: Some crate requires AR_<triple> environment to cross-compile HOT 1
- [Bug]: Regression caused by passing AR? commit b72c8ceb52f5d0235ce0fc268cfeff20ce56e8d8? HOT 1
- Upstream Rust language support
- [Bug]:cross compile failed HOT 1
- [Bug]: cross compilation from linux to windows with build tools fails. HOT 4
- [Enhancement]: Vcpkg support HOT 5
- [Bug]: "multiple rules generate" with Ninja Multiconfig in CROSS_CONFIG mode HOT 10
- [Bug]: Macos build with -F rather than -L HOT 4
- unused crates in a workspace not included in package, but still expected HOT 3
- corrosion_import_crate: issue with PROFILE argument in combination with CRATES
- [Bug]: corrosion_link_libraries does not include transitive dependencies HOT 2
- Breaking change to target names containing dashes with Rust 1.79 HOT 3
- corrosion_experimental_cbindgen always triggers rebuilds of files that include the generated header HOT 3
- corrosion_link_libraries behavior vs. expectation HOT 1
- [Bug]: undefined symbols during link-time on Windows with LLVM HOT 8
- corrosion_set_features did not work HOT 8
- [Bug]: On error, FindRust puts `Rust_FOUND` in wrong scope HOT 1
- Detect and issue a warning if a different corrosion version is already included.
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 corrosion.