From 9d66b1b202676b166a86ec02e764325381ea4d27 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Sun, 17 Mar 2024 11:45:07 -0700 Subject: [PATCH 1/3] ci: Build gccjit from a git archive A full `git clone` of GCC includes quite a lot of history, and it's completely unnecessary for building it in CI. We can use a GitHub archive URL to get a simple tarball that is much faster to download. Also, the `gcc-build` directory can be removed after install to reduce the image size even further. --- .../dist-x86_64-linux/build-gccjit.sh | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh index b22d60f2b1d10..e2aaed4fbfb3f 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash +GIT_REPO="https://github.com/antoyo/gcc" + +# This commit hash needs to be updated to use a more recent gcc fork version. +GIT_COMMIT="78dc50f0e50e6cd1433149520bd512a4e0eaa1bc" + set -ex cd $1 @@ -7,13 +12,11 @@ cd $1 source shared.sh # Setting up folders for GCC -git clone https://github.com/antoyo/gcc gcc-src -cd gcc-src -# This commit hash needs to be updated to use a more recent gcc fork version. -git checkout 78dc50f0e50e6cd1433149520bd512a4e0eaa1bc +curl -L "$GIT_REPO/archive/$GIT_COMMIT.tar.gz" | + tar -xz --transform "s/gcc-$GIT_COMMIT/gcc-src/" -mkdir ../gcc-build ../gcc-install -cd ../gcc-build +mkdir gcc-build gcc-install +cd gcc-build # Building GCC. hide_output \ @@ -28,6 +31,7 @@ hide_output \ hide_output make -j$(nproc) hide_output make install -rm -rf ../gcc-src +cd .. +rm -rf gcc-src gcc-build ln -s /scripts/gcc-install/lib/libgccjit.so /usr/lib/x86_64-linux-gnu/libgccjit.so ln -s /scripts/gcc-install/lib/libgccjit.so /usr/lib/x86_64-linux-gnu/libgccjit.so.0 From 7936e18213941c903f02bc84720ac535393a0328 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Sun, 17 Mar 2024 13:08:06 -0700 Subject: [PATCH 2/3] Use the rust-lang/gcc repo directly Co-authored-by: Urgau <3616612+Urgau@users.noreply.github.com> --- src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh index e2aaed4fbfb3f..200823848face 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -GIT_REPO="https://github.com/antoyo/gcc" +GIT_REPO="https://github.com/rust-lang/gcc" # This commit hash needs to be updated to use a more recent gcc fork version. GIT_COMMIT="78dc50f0e50e6cd1433149520bd512a4e0eaa1bc" From f512f9e94903b81030672678592aff44ae777e20 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Sun, 17 Mar 2024 13:10:49 -0700 Subject: [PATCH 3/3] Use `pushd` and `popd` Co-authored-by: Urgau <3616612+Urgau@users.noreply.github.com> --- src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh index 200823848face..5bc6f5cc2169b 100755 --- a/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh +++ b/src/ci/docker/host-x86_64/dist-x86_64-linux/build-gccjit.sh @@ -16,7 +16,7 @@ curl -L "$GIT_REPO/archive/$GIT_COMMIT.tar.gz" | tar -xz --transform "s/gcc-$GIT_COMMIT/gcc-src/" mkdir gcc-build gcc-install -cd gcc-build +pushd gcc-build # Building GCC. hide_output \ @@ -31,7 +31,7 @@ hide_output \ hide_output make -j$(nproc) hide_output make install -cd .. +popd rm -rf gcc-src gcc-build ln -s /scripts/gcc-install/lib/libgccjit.so /usr/lib/x86_64-linux-gnu/libgccjit.so ln -s /scripts/gcc-install/lib/libgccjit.so /usr/lib/x86_64-linux-gnu/libgccjit.so.0