brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · b78c99e Raw
123 lines · plain
1ARG LLVM_VERSION=21.1.02# FIXME: Use "${LLVM_VERSION%%.*}" instead of "LLVM_VERSION_MAJOR" once we update runners to Ubuntu-26.04 with Buildah >= 1.373ARG LLVM_VERSION_MAJOR=214 5FROM docker.io/library/ubuntu:24.04 AS llvm-downloader6ARG LLVM_VERSION7ARG LLVM_VERSION_MAJOR8 9RUN apt-get update && \10    apt-get install -y wget xz-utils && \11    wget -O llvm.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/LLVM-${LLVM_VERSION}-Linux-X64.tar.xz && \12    mkdir -p /llvm-extract && \13    tar -xvJf llvm.tar.xz -C /llvm-extract \14        # Only unpack these tools to save space on Github runner.15        LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-${LLVM_VERSION_MAJOR} \16        LLVM-${LLVM_VERSION}-Linux-X64/lib/clang/${LLVM_VERSION_MAJOR}/include \17        LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-tidy \18        LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-format \19        LLVM-${LLVM_VERSION}-Linux-X64/bin/git-clang-format && \20    rm llvm.tar.xz21 22 23FROM docker.io/library/ubuntu:24.04 AS base24ENV LLVM_SYSROOT=/opt/llvm25ENV PATH=${LLVM_SYSROOT}/bin:${PATH}26 27# Need nodejs for some of the GitHub actions.28# Need git for git-clang-format.29RUN apt-get update && \30    DEBIAN_FRONTEND=noninteractive apt-get install -y \31    git \32    nodejs \33    sudo \34    # These are needed by the premerge pipeline.35    # Pip is used to install dependent python packages.36    python3-pip \37    python-is-python3 && \38    apt-get clean && \39    rm -rf /var/lib/apt/lists/*40 41# Create a new user with id 1001 as that is the user id that42# Github Actions uses to perform the checkout action.43RUN useradd gha -u 1001 -m -s /bin/bash44RUN adduser gha sudo45RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers46# Don't set USER gha right away because we still need to install packages47# as root in 'ci-container-code-format' and 'ci-container-code-lint' containers48 49 50FROM base AS ci-container-build-tools51ARG LLVM_VERSION52ARG LLVM_VERSION_MAJOR53 54COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-${LLVM_VERSION_MAJOR} \55                            ${LLVM_SYSROOT}/bin/56COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/lib/clang/${LLVM_VERSION_MAJOR}/include \57                            ${LLVM_SYSROOT}/lib/clang/${LLVM_VERSION_MAJOR}/include58RUN ln -s ${LLVM_SYSROOT}/bin/clang-${LLVM_VERSION_MAJOR} ${LLVM_SYSROOT}/bin/clang && \59    ln -s ${LLVM_SYSROOT}/bin/clang ${LLVM_SYSROOT}/bin/clang++60 61RUN apt-get update && \62    DEBIAN_FRONTEND=noninteractive apt-get install -y \63    cmake \64    ninja-build && \65    apt-get clean && \66    rm -rf /var/lib/apt/lists/*67 68ENV CC=${LLVM_SYSROOT}/bin/clang69ENV CXX=${LLVM_SYSROOT}/bin/clang++70 71 72FROM base AS ci-container-code-format73ARG LLVM_VERSION74 75COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-format \76                            /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/git-clang-format \77                            ${LLVM_SYSROOT}/bin/78 79 80# Install dependencies for 'pr-code-format.yml' job81COPY llvm/utils/git/requirements_formatting.txt requirements_formatting.txt82RUN pip install -r requirements_formatting.txt --break-system-packages && \83    rm requirements_formatting.txt84USER gha85WORKDIR /home/gha86 87 88FROM ci-container-build-tools AS ci-container-code-lint89ARG LLVM_VERSION90ARG LLVM_VERSION_MAJOR91 92COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-tidy \93                            ${LLVM_SYSROOT}/bin/94COPY clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py ${LLVM_SYSROOT}/bin/clang-tidy-diff.py95 96# Install dependencies for 'pr-code-lint.yml' job97COPY llvm/utils/git/requirements_linting.txt requirements_linting.txt98RUN pip install -r requirements_linting.txt --break-system-packages && \99    rm requirements_linting.txt100USER gha101WORKDIR /home/gha102 103 104FROM ci-container-build-tools as ci-container-abi-tests105 106RUN apt-get update && \107    DEBIAN_FRONTEND=noninteractive apt-get install -y \108    abi-compliance-checker \109    abi-dumper \110    autoconf \111    parallel \112    pkg-config && \113    apt-get clean && \114    rm -rf /var/lib/apt/lists/*115 116RUN git clone https://github.com/universal-ctags/ctags.git && \117    cd ctags && \118    ./autogen.sh && \119    ./configure && \120    sudo make install && \121    rm -Rf ../ctags122 123