diff --git a/.docker/Dockerfile b/.docker/Dockerfile index e044a025..146fb68a 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -1,9 +1,10 @@ # syntax=docker/dockerfile:1 ARG ARCH=amd64 -FROM $ARCH/ubuntu:23.10 -RUN apt update && 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' +FROM $ARCH/ubuntu:24.04 +RUN apt update +RUN apt upgrade -y +RUN apt install -y gnupg wget software-properties-common apt-utils +RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections RUN apt install -y \ gcc-11 \ g++-11 \ @@ -11,9 +12,12 @@ RUN apt install -y \ g++-12 \ gcc-13 \ g++-13 \ + gcc-14 \ + g++-14 \ clang-15 \ clang-16 \ clang-17 \ + clang-18 \ git \ vim \ zstd \ diff --git a/.docker/build-linux.sh b/.docker/build-linux.sh index e42c8571..0af421fd 100644 --- a/.docker/build-linux.sh +++ b/.docker/build-linux.sh @@ -31,18 +31,18 @@ esac case "-$BUILD_TYPE-" in *-gcc-*) - export CC=gcc-13 CXX=g++-13 + export CC=gcc-14 CXX=g++-14 export COMPILER=gcc ;; *-oldgcc-*) export CC=gcc-11 CXX=g++-11 ;; *-clang-*) - export CC=clang-17 CXX=clang++-17 + export CC=clang-18 CXX=clang++-18 export COMPILER=clang ;; *-oldclang-*) - export CC=clang-15 CXX=clang++-15 + export CC=clang-15 CXX=clang++-16 ;; *) echo "missing compiler in: $BUILD_TYPE" @@ -90,6 +90,7 @@ if [[ "-$BUILD_TYPE-" == *-noperfmon-* ]]; then fi if [[ "-$BUILD_TYPE-" == *-static-* ]]; then + export LDFLAGS="-L/opt/static-libs/$COMPILER/lib" CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_DO_NOT_USE=1" CMAKE_ARGS="${CMAKE_ARGS} -DSTATIC_BUILD_EXTRA_PREFIX=/opt/static-libs/$COMPILER" else @@ -114,9 +115,9 @@ if [[ "-$BUILD_TYPE-" == *-coverage-* ]]; then unset LLVM_PROFILE_FILE rm -rf /tmp-runner/coverage mkdir -p /tmp-runner/coverage - llvm-profdata-17 merge -sparse profile/* -o dwarfs.profdata + llvm-profdata-18 merge -sparse profile/* -o dwarfs.profdata for binary in mkdwarfs dwarfs dwarfsck dwarfsextract *_test ricepp/ricepp_test; do - llvm-cov-17 show -instr-profile=dwarfs.profdata $binary >/tmp-runner/coverage/$(basename $binary).txt + llvm-cov-18 show -instr-profile=dwarfs.profdata $binary >/tmp-runner/coverage/$(basename $binary).txt done fi diff --git a/.docker/install-static-libs.sh b/.docker/install-static-libs.sh index c4eeced8..fb26f981 100644 --- a/.docker/install-static-libs.sh +++ b/.docker/install-static-libs.sh @@ -8,6 +8,7 @@ cd pkgs FILE_VERSION=5.45 FILE_SHA512=12611a59ff766c22a55db4b4a9f80f95a0a2e916a1d8593612c6ead32c247102a8fdc23693c6bf81bda9b604d951a62c0051e91580b1b79e190a3504c0efc20a +BZIP2_VERSION=1.0.8 LIBARCHIVE_VERSION=3.7.2 FLAC_VERSION=1.4.3 LIBUNWIND_VERSION=1.7.2 @@ -27,6 +28,7 @@ while true; do fi done +wget https://sourceware.org/pub/bzip2/bzip2-${BZIP2_VERSION}.tar.gz wget https://github.com/libarchive/libarchive/releases/download/v${LIBARCHIVE_VERSION}/libarchive-${LIBARCHIVE_VERSION}.tar.xz wget https://github.com/xiph/flac/releases/download/${FLAC_VERSION}/flac-${FLAC_VERSION}.tar.xz wget https://github.com/libunwind/libunwind/releases/download/v${LIBUNWIND_VERSION}/libunwind-${LIBUNWIND_VERSION}.tar.gz @@ -34,8 +36,8 @@ wget https://github.com/libunwind/libunwind/releases/download/v${LIBUNWIND_VERSI for COMPILER in clang gcc; do if [[ "$COMPILER" == "clang" ]]; then - export CC=clang-17 - export CXX=clang++-17 + export CC=clang-18 + export CXX=clang++-18 elif [[ "$COMPILER" == "gcc" ]]; then export CC=gcc-13 export CXX=g++-13 @@ -50,6 +52,12 @@ for COMPILER in clang gcc; do INSTALL_DIR=/opt/static-libs/$COMPILER + tar xf ../bzip2-${BZIP2_VERSION}.tar.gz + cd bzip2-${BZIP2_VERSION} + make -j$(nproc) + make PREFIX="$INSTALL_DIR" install + + cd "$HOME/pkgs/$COMPILER" tar xf ../libarchive-${LIBARCHIVE_VERSION}.tar.xz cd libarchive-${LIBARCHIVE_VERSION} ./configure --prefix="$INSTALL_DIR" --without-iconv --without-xml2 --without-expat