From f29450a05d9c5d10ed1d846249a83620dae95ec8 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 10 Jul 2021 10:44:31 +0200 Subject: [PATCH 1/3] Use clang 12.0.1 on dist-x86_64/i686-linux The LLD + ThinLTO __morestack bug has been fixed in 12.0.1, so we can now update our clang version. This also means that we no longer need to build Python 2. --- src/ci/docker/host-x86_64/dist-i686-linux/Dockerfile | 4 +--- src/ci/docker/host-x86_64/dist-x86_64-linux/Dockerfile | 4 +--- src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh | 2 +- src/ci/pgo.sh | 2 +- 4 files changed, 4 insertions(+), 8 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 247b539652b15..42fda98bc7a4b 100644 --- a/src/ci/docker/host-x86_64/dist-i686-linux/Dockerfile +++ b/src/ci/docker/host-x86_64/dist-i686-linux/Dockerfile @@ -69,8 +69,6 @@ COPY host-x86_64/dist-x86_64-linux/build-gcc.sh /tmp/ RUN ./build-gcc.sh && apt-get remove -y gcc g++ COPY host-x86_64/dist-x86_64-linux/build-python.sh /tmp/ -# Build Python 2.7 needed for Clang 10. -RUN ./build-python.sh 2.7.12 # Build Python 3 needed for LLVM 12. RUN ./build-python.sh 3.9.1 @@ -97,7 +95,7 @@ ENV RUST_CONFIGURE_ARGS \ --build=i686-unknown-linux-gnu \ --set llvm.ninja=false \ --set rust.jemalloc -ENV SCRIPT python2.7 ../x.py dist --build $HOSTS --host $HOSTS --target $HOSTS +ENV SCRIPT python3 ../x.py dist --build $HOSTS --host $HOSTS --target $HOSTS ENV CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_LINKER=clang # This was added when we switched from gcc to clang. It's not clear why this is 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 4dd4378f19692..8242e091cd4c7 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 @@ -69,8 +69,6 @@ COPY host-x86_64/dist-x86_64-linux/build-gcc.sh /tmp/ RUN ./build-gcc.sh && apt-get remove -y gcc g++ COPY host-x86_64/dist-x86_64-linux/build-python.sh /tmp/ -# Build Python 2.7 needed for Clang 10. -RUN ./build-python.sh 2.7.12 # Build Python 3 needed for LLVM 12. RUN ./build-python.sh 3.9.1 @@ -102,7 +100,7 @@ ENV RUST_CONFIGURE_ARGS \ --set llvm.thin-lto=true \ --set llvm.ninja=false \ --set rust.jemalloc -ENV SCRIPT ../src/ci/pgo.sh python2.7 ../x.py dist \ +ENV SCRIPT ../src/ci/pgo.sh python3 ../x.py dist \ --host $HOSTS --target $HOSTS \ --include-default-paths \ src/tools/build-manifest 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 969443ac0949b..b511d0263ab15 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 @@ -4,7 +4,7 @@ set -ex source shared.sh -LLVM=llvmorg-10.0.0 +LLVM=llvmorg-12.0.1 mkdir llvm-project cd llvm-project diff --git a/src/ci/pgo.sh b/src/ci/pgo.sh index d2962179eea31..aa009a4eac6af 100755 --- a/src/ci/pgo.sh +++ b/src/ci/pgo.sh @@ -4,7 +4,7 @@ set -euxo pipefail rm -rf /tmp/rustc-pgo -python2.7 ../x.py build --target=$PGO_HOST --host=$PGO_HOST \ +python3 ../x.py build --target=$PGO_HOST --host=$PGO_HOST \ --stage 2 library/std --rust-profile-generate=/tmp/rustc-pgo RUSTC_BOOTSTRAP=1 ./build/$PGO_HOST/stage2/bin/rustc --edition=2018 \ From 7f9467c13d75817663c3d6cbe918adfe01fe51aa Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 10 Jul 2021 18:12:01 +0200 Subject: [PATCH 2/3] Update binutils version This is needed to handle R_X86_64_REX_GOTPCRELX relocations. --- .../host-x86_64/dist-x86_64-linux/build-binutils.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh index ed0b5c85f7ca9..9456fd0cb5f90 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh @@ -4,14 +4,16 @@ set -ex source shared.sh -curl https://ftp.gnu.org/gnu/binutils/binutils-2.25.1.tar.bz2 | tar xfj - +VERSION=2.26.1 + +curl https://ftp.gnu.org/gnu/binutils/binutils-$VERSION.tar.bz2 | tar xfj - mkdir binutils-build cd binutils-build -hide_output ../binutils-2.25.1/configure --prefix=/rustroot +hide_output ../binutils-$VERSION/configure --prefix=/rustroot hide_output make -j10 hide_output make install cd .. rm -rf binutils-build -rm -rf binutils-2.25.1 +rm -rf binutils-$VERSION From 54110fed4129eb2b78798a8c200248720707a66a Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 10 Jul 2021 18:15:01 +0200 Subject: [PATCH 3/3] Use nproc instead of hardcoded 10 for build parallelism --- src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh | 2 +- src/ci/docker/host-x86_64/dist-x86_64-linux/build-clang.sh | 2 +- src/ci/docker/host-x86_64/dist-x86_64-linux/build-cmake.sh | 2 +- src/ci/docker/host-x86_64/dist-x86_64-linux/build-curl.sh | 2 +- src/ci/docker/host-x86_64/dist-x86_64-linux/build-gcc.sh | 2 +- src/ci/docker/host-x86_64/dist-x86_64-linux/build-openssl.sh | 2 +- src/ci/docker/host-x86_64/dist-x86_64-linux/build-python.sh | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh index 9456fd0cb5f90..b5378244b793c 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-binutils.sh @@ -11,7 +11,7 @@ curl https://ftp.gnu.org/gnu/binutils/binutils-$VERSION.tar.bz2 | tar xfj - mkdir binutils-build cd binutils-build hide_output ../binutils-$VERSION/configure --prefix=/rustroot -hide_output make -j10 +hide_output make -j$(nproc) hide_output make install cd .. 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 b511d0263ab15..40a637616d35f 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 @@ -30,7 +30,7 @@ hide_output \ -DLLVM_ENABLE_PROJECTS="clang;lld" \ -DC_INCLUDE_DIRS="$INC" -hide_output make -j10 +hide_output make -j$(nproc) hide_output make install cd ../.. diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-cmake.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-cmake.sh index e17831a1afee5..2f6b1fa9b8e3e 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-cmake.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-cmake.sh @@ -9,7 +9,7 @@ curl -L https://github.com/Kitware/CMake/releases/download/v$CMAKE/cmake-$CMAKE. mkdir cmake-build cd cmake-build hide_output ../cmake-$CMAKE/configure --prefix=/rustroot -hide_output make -j10 +hide_output make -j$(nproc) hide_output make install cd .. diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-curl.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-curl.sh index a60c6be9f3222..6efa789756619 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-curl.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-curl.sh @@ -30,7 +30,7 @@ hide_output ../curl-$VERSION/configure \ --disable-rtsp \ --disable-ldaps \ --disable-ldap -hide_output make -j10 +hide_output make -j$(nproc) hide_output make install cd .. diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gcc.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gcc.sh index 25f99596099f3..3a03eb2bdc838 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gcc.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gcc.sh @@ -32,7 +32,7 @@ hide_output ../gcc-$GCC/configure \ --prefix=/rustroot \ --enable-languages=c,c++ \ --disable-gnu-unique-object -hide_output make -j10 +hide_output make -j$(nproc) hide_output make install ln -s gcc /rustroot/bin/cc diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-openssl.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-openssl.sh index d8f6bdb51b8d5..34bbe19d2fac3 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-openssl.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-openssl.sh @@ -14,7 +14,7 @@ curl $URL | tar xzf - cd openssl-$VERSION hide_output ./config --prefix=/rustroot shared -fPIC -hide_output make -j10 +hide_output make -j$(nproc) hide_output make install cd .. rm -rf openssl-$VERSION diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-python.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-python.sh index 970d67b6db3dd..9a203beadd103 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-python.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-python.sh @@ -14,7 +14,7 @@ cd python-build # than that fairly normal. CFLAGS='-I /rustroot/include' LDFLAGS='-L /rustroot/lib -L /rustroot/lib64' \ hide_output ../Python-$VERSION/configure --prefix=/rustroot -hide_output make -j10 +hide_output make -j$(nproc) hide_output make install cd ..