From aad709b7ac2e35d364875c7ec151fb24df1ff46e Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Thu, 20 Oct 2022 18:09:24 +0900 Subject: [PATCH 1/2] ci: Bring back ninja for dist builders The primary reason for this is that make can result in a substantial under utilization of parallelism, mostly due to the submake structure preventing good dependency tracking and scheduling. In f758c7b2a78 (Debian 6 doesn't have ninja, so use make for the dist builds) llvm.ninja was disabled due to lack of distro package. This is no longer the case with the CentOS 7 base, so bring ninja back for a performance boost. --- src/ci/docker/host-x86_64/dist-i686-linux/Dockerfile | 2 +- src/ci/docker/host-x86_64/dist-x86_64-linux/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ci/docker/host-x86_64/dist-i686-linux/Dockerfile b/src/ci/docker/host-x86_64/dist-i686-linux/Dockerfile index cd86d9fb584fb..bff3f8f21929f 100644 --- a/src/ci/docker/host-x86_64/dist-i686-linux/Dockerfile +++ b/src/ci/docker/host-x86_64/dist-i686-linux/Dockerfile @@ -23,6 +23,7 @@ RUN yum upgrade -y && \ libstdc++-devel.x86_64 \ make \ ncurses-devel \ + ninja-build \ openssl-devel \ patch \ perl \ @@ -64,7 +65,6 @@ ENV RUST_CONFIGURE_ARGS \ --enable-profiler \ --set target.i686-unknown-linux-gnu.linker=clang \ --build=i686-unknown-linux-gnu \ - --set llvm.ninja=false \ --set rust.jemalloc ENV SCRIPT python3 ../x.py dist --build $HOSTS --host $HOSTS --target $HOSTS ENV CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_LINKER=clang diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/Dockerfile b/src/ci/docker/host-x86_64/dist-x86_64-linux/Dockerfile index b960239807af8..84877320eca64 100644 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/Dockerfile +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/Dockerfile @@ -23,6 +23,7 @@ RUN yum upgrade -y && \ libstdc++-devel.x86_64 \ make \ ncurses-devel \ + ninja-build \ openssl-devel \ patch \ perl \ @@ -76,7 +77,6 @@ ENV RUST_CONFIGURE_ARGS \ --set target.x86_64-unknown-linux-gnu.ar=/rustroot/bin/llvm-ar \ --set target.x86_64-unknown-linux-gnu.ranlib=/rustroot/bin/llvm-ranlib \ --set llvm.thin-lto=true \ - --set llvm.ninja=false \ --set rust.jemalloc \ --set rust.use-lld=true ENV SCRIPT ../src/ci/pgo.sh python3 ../x.py dist \ From 354e95ac62333102465426a772852bf62443192d Mon Sep 17 00:00:00 2001 From: Tatsuyuki Ishi Date: Thu, 20 Oct 2022 18:09:52 +0900 Subject: [PATCH 2/2] ci: Use ninja in build-clang.sh Now that we have brought ninja back to the installed base packages, we can use it for the initial Clang build as well. --- src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh index 9abfd4e973115..15ab3e5bd6e68 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh @@ -25,6 +25,7 @@ INC="/rustroot/include:/usr/include" # disable them. BOLT is used for optimizing LLVM. hide_output \ cmake ../llvm \ + -GNinja \ -DCMAKE_C_COMPILER=/rustroot/bin/gcc \ -DCMAKE_CXX_COMPILER=/rustroot/bin/g++ \ -DCMAKE_BUILD_TYPE=Release \ @@ -39,8 +40,8 @@ hide_output \ -DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt;bolt" \ -DC_INCLUDE_DIRS="$INC" -hide_output make -j$(nproc) -hide_output make install +hide_output ninja +hide_output ninja install cd ../.. rm -rf llvm-project