From 83b1378c23e9c0021e3dfab4920df9efebe0e4d0 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Fri, 6 Jun 2025 11:54:23 +0200 Subject: [PATCH 1/2] CI: Add Alpine aarch64 job/package --- .github/workflows/main.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c7c4c7f34f..47c22afc6d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -70,6 +70,26 @@ jobs: -DEXTRA_CXXFLAGS=-flto=full with_pgo: true + - job_name: Alpine musl aarch64 + os: ubuntu-24.04-arm + container_image: alpine:3.21 + arch: aarch64 + base_cmake_flags: >- + -DLDC_INSTALL_LLVM_RUNTIME_LIBS_ARCH=aarch64 + -DLLVM_IS_SHARED=OFF + -DLDC_ENABLE_PLUGINS=OFF + -DLDC_DYNAMIC_COMPILE=OFF + extra_cmake_flags: >- + -DTEST_COMPILER_RT_LIBRARIES="profile;lsan;asan;msan;fuzzer" + -DLDC_INSTALL_LTOPLUGIN=OFF + -DLDC_FULLY_STATIC=ON + -DCMAKE_C_COMPILER=clang + -DCMAKE_CXX_COMPILER=clang++ + -DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++ + -DD_COMPILER_FLAGS="-O -flto=full -defaultlib=phobos2-ldc-lto,druntime-ldc-lto" + -DEXTRA_CXXFLAGS=-flto=full + with_pgo: true + - job_name: macOS x86_64 os: macos-13 arch: x86_64 @@ -138,7 +158,7 @@ jobs: # create missing 7za symlink ln -s 7z /usr/bin/7za # make lld the default linker (note: /usr/bin/ld seems unused) - ln -sf /usr/bin/ld.lld /usr/x86_64-alpine-linux-musl/bin/ld + ln -sf /usr/bin/ld.lld /usr/${{ matrix.arch }}-alpine-linux-musl/bin/ld # create ../llvm symlink to distro LLVM (no prebuilt LDC-LLVM for musl) ln -s /usr/lib/llvm19 $(dirname $(pwd))/llvm ../llvm/bin/llvm-config --version From d5a099f86b26ac4b3826a695cb4a7545c8f6aed4 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Fri, 6 Jun 2025 12:58:32 +0200 Subject: [PATCH 2/2] [try pretty wild workaround] --- .github/workflows/main.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 47c22afc6d..2768f46e38 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -136,7 +136,10 @@ jobs: name: ${{ matrix.job_name }} runs-on: ${{ matrix.os }} - container: ${{ matrix.container_image }} + container: + image: ${{ matrix.container_image }} + volumes: # needed for Alpine aarch64 job: https://github.com/actions/runner/issues/801#issuecomment-2394425757 + - /:/host timeout-minutes: 90 env: MACOSX_DEPLOYMENT_TARGET: ${{ matrix.arch == 'arm64' && '11.0' || '10.12' }} @@ -162,6 +165,16 @@ jobs: # create ../llvm symlink to distro LLVM (no prebuilt LDC-LLVM for musl) ln -s /usr/lib/llvm19 $(dirname $(pwd))/llvm ../llvm/bin/llvm-config --version + + # see https://github.com/actions/runner/issues/801#issuecomment-2394425757 + if [[ '${{ matrix.arch }}' == aarch64 ]]; then + apk add nodejs + sed -i "s:ID=alpine:ID=NotpineForGHA:" /etc/os-release + cd /host/home/runner/runners/*/externals/ + rm -rf node20/* + mkdir node20/bin + ln -s /usr/bin/node node20/bin/node + fi fi - uses: actions/checkout@v4 with: