You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rollup merge of #126472 - onur-ozkan:improve-libcxx-build, r=Kobzol
build `libcxx-version` only when it doesn't exist
In #126423, it seems like c++ parsing takes quite amount of time on bootstrap startups. This PR makes libcxx-version to be compiled only when it doesn't exist.
A simple demonstration on the overhead of buiding `libcxx-version`:
```sh
$ rm -rf build/host/libcxx-version
$ x build
Building bootstrap
Finished `dev` profile [unoptimized] target(s) in 0.07s
----- LIBCXX VERSION CHECK TOOK: 509ms
Building tool rustdoc (stage1 -> stage2, x86_64-unknown-linux-gnu)
Finished `release` profile [optimized] target(s) in 0.25s
Build completed successfully in 0:00:02
$ x build
Building bootstrap
Finished `dev` profile [unoptimized] target(s) in 0.07s
----- LIBCXX VERSION CHECK TOOK: 2ms
Creating a sysroot for stage2 compiler (use `rustup toolchain link 'name' build/host/stage2`)
Building tool rustdoc (stage1 -> stage2, x86_64-unknown-linux-gnu)
Finished `release` profile [optimized] target(s) in 0.14s
Build completed successfully in 0:00:01
```
let out_dir = builder.out.join(self.target.to_string()).join("libcxx-version");
826
-
let _ = fs::remove_dir_all(&out_dir);
827
-
t!(fs::create_dir_all(&out_dir));
826
+
let executable = out_dir.join(exe("libcxx-version",self.target));
828
827
829
-
let compiler = builder.cxx(self.target).unwrap();
830
-
letmut cmd = Command::new(compiler);
828
+
// This is a sanity-check specific step, which means it is frequently called (when using
829
+
// CI LLVM), and compiling `src/tools/libcxx-version/main.cpp` at the beginning of the bootstrap
830
+
// invocation adds a fair amount of overhead to the process (see https://github.com/rust-lang/rust/issues/126423).
831
+
// Therefore, we want to avoid recompiling this file unnecessarily.
0 commit comments