[libcxx-commits] [libcxx] Refactor dockerfile to support Buildkite AND Github Actions (PR #71954)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Sun Nov 12 17:28:22 PST 2023
================
@@ -21,42 +39,82 @@
#
# If you're only looking to run the Docker image locally for debugging a
# build bot, see the `run-buildbot-container` script located in this directory.
-#
-# A pre-built version of this image is maintained on Github under the libc++ organization, as ghcr.io/libcxx/libcxx-builder.
-# To update the image, rebuild it and push it to github (all members of the libc++ organization should be able to do this).
-#
-# $ docker compose build
-# $ docker compose push
-#
-FROM ubuntu:jammy
+
+# HACK: We set the base image in the docker-compose file depending on the final target (buildkite vs github actions).
+# This means we have a much slower container build, but we can use the same Dockerfile for both targets.
+ARG BASE_IMAGE
+FROM $BASE_IMAGE AS builder-base
# Make sure apt-get doesn't try to prompt for stuff like our time zone, etc.
ENV DEBIAN_FRONTEND=noninteractive
-RUN apt-get update && apt-get install -y bash curl
+# populated in the docker-compose file
+ARG GCC_LATEST_VERSION
+ENV GCC_LATEST_VERSION=${GCC_LATEST_VERSION}
+
+# populated in the docker-compose file
+ARG LLVM_HEAD_VERSION
+ENV LLVM_HEAD_VERSION=${LLVM_HEAD_VERSION}
+
+# HACK: The github actions runner image already has sudo and requires its use. The buildkite base image does not.
+# Reconcile this.
+RUN <<EOF
+ apt-get update || true
+ apt-get install -y sudo || true
+ echo "ALL ALL = (ALL) NOPASSWD: ALL" | tee /etc/sudoers || true
+EOF
+
+RUN sudo apt-get update \
+ && sudo apt-get install -y \
+ python3 \
+ python3-distutils \
+ python3-psutil \
+ git \
+ gdb \
+ ccache \
+ gpg \
+ wget \
+ bash \
+ curl \
+ python3 \
+ python3-dev \
+ libpython3-dev \
+ uuid-dev \
+ libncurses5-dev \
+ swig3.0 \
+ libxml2-dev \
+ libedit-dev \
+ language-pack-en \
+ language-pack-fr \
+ language-pack-ja \
+ language-pack-ru \
+ language-pack-zh-hans \
+ lsb-release \
+ wget \
+ unzip \
+ software-properties-common \
+ && sudo rm -rf /var/lib/apt/lists/*
+
# Install various tools used by the build or the test suite
#RUN apt-get update && apt-get install -y ninja-build python3 python3-distutils python3-psutil git gdb ccache
# TODO add ninja-build once 1.11 is available in Ubuntu, also remove the manual installation.
-RUN apt-get update && apt-get install -y python3 python3-distutils python3-psutil git gdb ccache
-RUN apt-get update && apt-get install -y wget && \
- wget -qO /usr/local/bin/ninja.gz https://github.com/ninja-build/ninja/releases/latest/download/ninja-linux.zip && \
- gunzip /usr/local/bin/ninja.gz && \
- chmod a+x /usr/local/bin/ninja
-
-# Install dependencies required to run the LLDB data formatter tests
-RUN apt-get update && apt-get install -y python3 python3-dev libpython3-dev uuid-dev libncurses5-dev swig3.0 libxml2-dev libedit-dev
-
-# Locales for gdb and localization tests
-RUN apt-get update && apt-get install -y language-pack-en language-pack-fr \
- language-pack-ja language-pack-ru \
- language-pack-zh-hans
+RUN <<EOF
+ wget -qO /tmp/ninja.gz https://github.com/ninja-build/ninja/releases/latest/download/ninja-linux.zip
+ gunzip /tmp/ninja.gz
+ chmod a+x /tmp/ninja
+ sudo mv /tmp/ninja /usr/local/bin/ninja
+EOF
+
+
# These two are not enabled by default so generate them
----------------
ldionne wrote:
`# These two locales are not enabled [...]`
https://github.com/llvm/llvm-project/pull/71954
More information about the libcxx-commits
mailing list