1# syntax=docker/dockerfile:1
2FROM --platform=linux/amd64 debian:bookworm-slim AS builder
3
4ENV DEBIAN_FRONTEND=noninteractive
5
6RUN <<EOF
7#!/bin/bash
8    set -e
9    apt-get -y update
10
11    DEPS=(
12        bison
13        build-essential
14        ca-certificates
15        flex
16        g++-multilib
17        libc6-dev-i386
18        libgmp-dev
19        libisl-dev
20        libmpc-dev
21        libmpfr-dev
22        patch
23        wget
24    )
25
26    apt-get -y --no-install-recommends install "${DEPS[@]}"
27    rm -rf /var/lib/apt/lists/*
28EOF
29
30RUN wget -q https://ftp.gnu.org/gnu/gcc/gcc-11.4.0/gcc-11.4.0.tar.xz -O - | tar xJ --strip=1
31RUN wget -q https://xenbits.xen.org/people/andrewcoop/gcc-11.2-Add-fcf-check-attribute-yes-no.patch -O - | patch -p1
32RUN ./configure \
33        --prefix=/opt/gcc-11-ibt \
34        --enable-languages=c \
35        --disable-nls \
36        --disable-threads \
37        --disable-bootstrap \
38        --disable-shared \
39        --disable-libmudflap \
40        --disable-libssp \
41        --disable-libgomp \
42        --disable-decimal-float \
43        --disable-libquadmath \
44        --disable-libatomic \
45        --disable-libcc1 \
46        --disable-libmpx
47RUN make -j`nproc` && make -j`nproc` install
48
49
50FROM --platform=linux/amd64 debian:bookworm-slim
51COPY --from=builder /opt/gcc-11-ibt /opt/gcc-11-ibt
52
53LABEL maintainer.name="The Xen Project" \
54      maintainer.email="xen-devel@lists.xenproject.org"
55
56ENV DEBIAN_FRONTEND=noninteractive
57ENV PATH="/opt/gcc-11-ibt/bin:${PATH}"
58
59RUN <<EOF
60#!/bin/bash
61    set -e
62
63    useradd --create-home user
64
65    apt-get -y update
66
67    DEPS=(
68        # Xen
69        bison
70        build-essential
71        checkpolicy
72        flex
73        python3-minimal
74    )
75
76    apt-get -y --no-install-recommends install "${DEPS[@]}"
77    rm -rf /var/lib/apt/lists/*
78EOF
79
80USER user
81WORKDIR /build
82