From dff3d0f591163a7ab2b02808f727f99934a98c4c Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sat, 4 May 2024 15:34:40 +0200 Subject: [PATCH] chore: add ubuntu-22.04 CI build --- .docker/Dockerfile.ubuntu-2204 | 68 ++++++++++++++++++++++++++++++++++ .docker/Makefile | 45 ++++++++++------------ .docker/build-linux.sh | 9 ++++- .github/workflows/build.yml | 6 +++ 4 files changed, 101 insertions(+), 27 deletions(-) create mode 100644 .docker/Dockerfile.ubuntu-2204 diff --git a/.docker/Dockerfile.ubuntu-2204 b/.docker/Dockerfile.ubuntu-2204 new file mode 100644 index 00000000..f8114c63 --- /dev/null +++ b/.docker/Dockerfile.ubuntu-2204 @@ -0,0 +1,68 @@ +# syntax=docker/dockerfile:1 +ARG ARCH=amd64 +FROM $ARCH/ubuntu:22.04 +RUN apt update +RUN apt upgrade -y +RUN apt install -y gnupg wget software-properties-common +RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null +RUN apt-add-repository 'deb https://apt.kitware.com/ubuntu/ jammy main' +RUN apt install -y \ + bash-completion \ + vim \ + less +RUN apt install -y \ + gcc-12 \ + g++-12 \ + clang-15 \ + git \ + zstd \ + ccache \ + ninja-build \ + cmake \ + make \ + bison \ + flex \ + ronn \ + fuse3 \ + pkg-config \ + binutils-dev \ + libacl1-dev \ + libarchive-dev \ + libbenchmark-dev \ + libboost-chrono-dev \ + libboost-context-dev \ + libboost-filesystem-dev \ + libboost-iostreams-dev \ + libboost-program-options-dev \ + libboost-regex-dev \ + libboost-system-dev \ + libboost-thread-dev \ + libbrotli-dev \ + libevent-dev \ + libhowardhinnant-date-dev \ + libjemalloc-dev \ + libdouble-conversion-dev \ + libiberty-dev \ + liblz4-dev \ + liblzma-dev \ + libmagic-dev \ + libssl-dev \ + libunwind-dev \ + libdwarf-dev \ + libelf-dev \ + libfmt-dev \ + libfuse-dev \ + libfuse3-dev \ + libgoogle-glog-dev \ + libutfcpp-dev \ + libflac++-dev \ + python3-mistletoe +ARG ARCH +# current ronn version is horribly broken +RUN gem install ronn-ng +RUN useradd -g users -u 1000 -m mhx +ARG SCRIPT=build-linux.sh +COPY $SCRIPT /usr/local/bin/run.sh +RUN chmod +x /usr/local/bin/run.sh +USER mhx +ENTRYPOINT /usr/local/bin/run.sh diff --git a/.docker/Makefile b/.docker/Makefile index 4ee989c7..423edb37 100644 --- a/.docker/Makefile +++ b/.docker/Makefile @@ -1,48 +1,43 @@ IMAGE_UBUNTU="dwarfs-buildenv" +IMAGE_UBUNTU2204="dwarfs-buildenv-ubuntu2204" IMAGE_FEDORA="dwarfs-buildenv-fedora" IMAGE_ARCH="dwarfs-buildenv-arch" ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) NPROC:=$(shell nproc) +COMMON_RUN_OPTS=-it --rm \ + --cap-add SYS_ADMIN --device /dev/fuse --privileged \ + --mount type=bind,source="$(ROOT_DIR)"/..,target=/workspace,readonly \ + --mount type=bind,source="$(ROOT_DIR)"/../@docker-ccache,target=/ccache \ + --mount type=bind,source="$(ROOT_DIR)"/../@docker-home,target=/home/mhx \ + --mount type=bind,source="$(ROOT_DIR)"/../@docker-build,target=/home/mhx/build \ + --env CCACHE_DIR=/ccache --env CTEST_PARALLEL_LEVEL=$(NPROC) \ + --entrypoint /bin/bash + build: docker build -t $(IMAGE_UBUNTU) . +run: + @docker run $(COMMON_RUN_OPTS) $(IMAGE_UBUNTU) + build_arm: docker build -f Dockerfile.ubuntu -t $(IMAGE_UBUNTU) --build-arg ARCH=arm64v8 . -run: - @docker run -it --rm \ - --cap-add SYS_ADMIN --device /dev/fuse --privileged \ - --mount type=bind,source="$(ROOT_DIR)"/..,target=/workspace,readonly \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-ccache,target=/ccache \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-home,target=/home/ubuntu \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-build,target=/home/ubuntu/build \ - --env CCACHE_DIR=/ccache --env CTEST_PARALLEL_LEVEL=$(NPROC) \ - --entrypoint /bin/bash $(IMAGE_UBUNTU) +build_ubuntu2204: + docker build -f Dockerfile.ubuntu-2204 -t $(IMAGE_UBUNTU2204) . + +run_ubuntu2204: + @docker run $(COMMON_RUN_OPTS) $(IMAGE_UBUNTU2204) build_fedora: docker build -f Dockerfile.fedora -t $(IMAGE_FEDORA) . run_fedora: - @docker run -it --rm \ - --cap-add SYS_ADMIN --device /dev/fuse --privileged \ - --mount type=bind,source="$(ROOT_DIR)"/..,target=/workspace,readonly \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-ccache,target=/ccache \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-home,target=/home/mhx \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-build,target=/home/mhx/build \ - --env CCACHE_DIR=/ccache --env CTEST_PARALLEL_LEVEL=$(NPROC) \ - --entrypoint /bin/bash $(IMAGE_FEDORA) + @docker run $(COMMON_RUN_OPTS) $(IMAGE_FEDORA) build_arch: docker build -f Dockerfile.arch -t $(IMAGE_ARCH) . run_arch: - @docker run -it --rm \ - --cap-add SYS_ADMIN --device /dev/fuse --privileged \ - --mount type=bind,source="$(ROOT_DIR)"/..,target=/workspace,readonly \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-ccache,target=/ccache \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-home,target=/home/mhx \ - --mount type=bind,source="$(ROOT_DIR)"/../@docker-build,target=/home/mhx/build \ - --env CCACHE_DIR=/ccache --env CTEST_PARALLEL_LEVEL=$(NPROC) \ - --entrypoint /bin/bash $(IMAGE_ARCH) + @docker run $(COMMON_RUN_OPTS) $(IMAGE_ARCH) diff --git a/.docker/build-linux.sh b/.docker/build-linux.sh index 54280fee..4270b8a4 100644 --- a/.docker/build-linux.sh +++ b/.docker/build-linux.sh @@ -15,8 +15,13 @@ rm -rf build mkdir build cd build -GCC_VERSION=14 -CLANG_VERSION=18 +if [[ "$BUILD_DIST" == "ubuntu-2204" ]]; then + GCC_VERSION=12 + CLANG_VERSION=15 +else + GCC_VERSION=14 + CLANG_VERSION=18 +fi case "-$BUILD_TYPE-" in *-ninja-*) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7c720abb..23b5d1e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -276,6 +276,12 @@ jobs: - arch: arm64v8 dist: ubuntu build_type: clang-debug-ninja-static + - arch: arm64v8 + dist: ubuntu-2204 + build_type: gcc-release-ninja + - arch: arm64v8 + dist: ubuntu-2204 + build_type: clang-release-ninja runs-on: - self-hosted