Build libgccjit in CI

This commit is contained in:
Guillaume Gomez 2024-03-01 17:59:12 +01:00
parent 4bcaa4fe39
commit 95b49e7d73
4 changed files with 40 additions and 4 deletions

View File

@ -3394,7 +3394,6 @@ impl Step for CodegenGCC {
.arg("--out-dir") .arg("--out-dir")
.arg(builder.stage_out(compiler, Mode::ToolRustc).join("cg_gcc")) .arg(builder.stage_out(compiler, Mode::ToolRustc).join("cg_gcc"))
.arg("--release") .arg("--release")
.arg("--no-default-features")
.arg("--mini-tests") .arg("--mini-tests")
.arg("--std-tests"); .arg("--std-tests");
cargo.args(builder.config.test_args()); cargo.args(builder.config.test_args());

View File

@ -0,0 +1,28 @@
#!/bin/sh
set -ex
cd $1
# Setting up folders for GCC
git clone https://github.com/antoyo/gcc gcc-src
cd gcc-src
git checkout $(head -1 /scripts/libgccjit.version)
mkdir ../gcc-build ../gcc-install
cd ../gcc-build
# Building GCC.
../gcc-src/configure \
--enable-host-shared \
--enable-languages=jit \
--enable-checking=release \
--disable-bootstrap \
--disable-multilib \
--prefix=$(pwd)/../gcc-install
make
make install
rm -rf ../gcc-src
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

View File

@ -0,0 +1 @@
b6f163f52

View File

@ -15,7 +15,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
sudo \ sudo \
xz-utils \ xz-utils \
tidy \ tidy \
libgccjit-12-dev \
\ \
# Install dependencies for chromium browser # Install dependencies for chromium browser
gconf-service \ gconf-service \
@ -57,13 +56,17 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
lsb-release \ lsb-release \
xdg-utils \ xdg-utils \
wget \ wget \
# libgccjit dependencies
flex \
libmpfr-dev \
libgmp-dev \
libmpc3 \
libmpc-dev \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
COPY scripts/sccache.sh /scripts/ COPY scripts/sccache.sh /scripts/
RUN sh /scripts/sccache.sh RUN sh /scripts/sccache.sh
# Make `libgccjit.so` accessible.
RUN ln -s /usr/lib/gcc/x86_64-linux-gnu/12/libgccjit.so /usr/lib/x86_64-linux-gnu/libgccjit.so
# Fix rustc_codegen_gcc lto issues. # Fix rustc_codegen_gcc lto issues.
ENV GCC_EXEC_PREFIX="/usr/lib/gcc/" ENV GCC_EXEC_PREFIX="/usr/lib/gcc/"
@ -92,6 +95,11 @@ ENV RUST_CONFIGURE_ARGS \
ENV HOST_TARGET x86_64-unknown-linux-gnu ENV HOST_TARGET x86_64-unknown-linux-gnu
COPY host-x86_64/dist-x86_64-linux/libgccjit.version /scripts/
COPY host-x86_64/dist-x86_64-linux/build-gccjit.sh /scripts/
RUN sh /scripts/build-gccjit.sh /scripts
ENV SCRIPT /tmp/checktools.sh ../x.py && \ ENV SCRIPT /tmp/checktools.sh ../x.py && \
NODE_PATH=`npm root -g` python3 ../x.py test tests/rustdoc-gui --stage 2 \ NODE_PATH=`npm root -g` python3 ../x.py test tests/rustdoc-gui --stage 2 \
--test-args "'--no-sandbox --jobs 1'" --test-args "'--no-sandbox --jobs 1'"