mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-04-28 14:10:42 +03:00
Vanilla-LLVM GHA: Bump Linux jobs to Ubuntu 24 and use distro LLVM 15/18 packages (#4797)
This commit is contained in:
parent
82878ef32c
commit
1df61f10cc
1 changed files with 18 additions and 35 deletions
53
.github/workflows/supported_llvm_versions.yml
vendored
53
.github/workflows/supported_llvm_versions.yml
vendored
|
@ -15,11 +15,10 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- job_name: Ubuntu 20.04, LDC-LLVM 18, bootstrap LDC
|
- job_name: Ubuntu 24.04, LLVM 18, bootstrap LDC
|
||||||
os: ubuntu-20.04
|
os: ubuntu-24.04
|
||||||
host_dc: ldc-1.19.0
|
host_dc: ldc-1.19.0
|
||||||
# FIXME: no usable official package available yet
|
llvm_version: 18
|
||||||
llvm_version: https://github.com/ldc-developers/llvm-project/releases/download/ldc-v18.1.8/llvm-18.1.8-linux-x86_64.tar.xz
|
|
||||||
cmake_flags: -DRT_SUPPORT_SANITIZERS=ON -DPHOBOS_SYSTEM_ZLIB=ON
|
cmake_flags: -DRT_SUPPORT_SANITIZERS=ON -DPHOBOS_SYSTEM_ZLIB=ON
|
||||||
- job_name: macOS 14, LLVM 17, latest LDC beta
|
- job_name: macOS 14, LLVM 17, latest LDC beta
|
||||||
os: macos-14
|
os: macos-14
|
||||||
|
@ -31,10 +30,10 @@ jobs:
|
||||||
host_dc: ldc-beta
|
host_dc: ldc-beta
|
||||||
llvm_version: 16.0.5
|
llvm_version: 16.0.5
|
||||||
cmake_flags: -DBUILD_SHARED_LIBS=OFF -DCMAKE_EXE_LINKER_FLAGS=-L/opt/homebrew/opt/zstd/lib -DCMAKE_C_COMPILER=/usr/bin/cc -DCMAKE_CXX_COMPILER=/usr/bin/c++
|
cmake_flags: -DBUILD_SHARED_LIBS=OFF -DCMAKE_EXE_LINKER_FLAGS=-L/opt/homebrew/opt/zstd/lib -DCMAKE_C_COMPILER=/usr/bin/cc -DCMAKE_CXX_COMPILER=/usr/bin/c++
|
||||||
- job_name: Ubuntu 20.04, LLVM 15, latest DMD beta
|
- job_name: Ubuntu 24.04, LLVM 15, latest DMD beta
|
||||||
os: ubuntu-20.04
|
os: ubuntu-24.04
|
||||||
host_dc: dmd-beta
|
host_dc: dmd-beta
|
||||||
llvm_version: 15.0.6
|
llvm_version: 15
|
||||||
cmake_flags: -DBUILD_SHARED_LIBS=ON -DRT_SUPPORT_SANITIZERS=ON -DLIB_SUFFIX=64 -DLDC_LINK_MANUALLY=ON
|
cmake_flags: -DBUILD_SHARED_LIBS=ON -DRT_SUPPORT_SANITIZERS=ON -DLIB_SUFFIX=64 -DLDC_LINK_MANUALLY=ON
|
||||||
name: ${{ matrix.job_name }}
|
name: ${{ matrix.job_name }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
@ -63,21 +62,22 @@ jobs:
|
||||||
python3 -m pip install --user lit
|
python3 -m pip install --user lit
|
||||||
fi
|
fi
|
||||||
python3 -c "import lit.main; lit.main.main();" --version . | head -n 1
|
python3 -c "import lit.main; lit.main.main();" --version . | head -n 1
|
||||||
- name: 'Linux: Install gdb, llvm-symbolizer, libzstd, zlib1g-dev'
|
- name: 'Linux: Install gdb, lld, llvm-dev and libclang-common-dev'
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
# Don't use latest gdb v10+ from Ubuntu toolchain PPA with regressions, use official v9
|
sudo apt-get install gdb lld-${{ matrix.llvm_version }} llvm-${{ matrix.llvm_version }}-dev libclang-common-${{ matrix.llvm_version }}-dev
|
||||||
sudo apt-get install gdb=9.1-0ubuntu1 llvm libzstd-dev zlib1g-dev
|
|
||||||
|
|
||||||
- name: Try to restore cached LLVM
|
- name: 'macOS: Try to restore cached LLVM'
|
||||||
|
if: runner.os == 'macOS'
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: llvm
|
path: llvm
|
||||||
key: llvm-${{ matrix.llvm_version }}-${{ runner.os }}
|
key: llvm-${{ matrix.llvm_version }}-${{ runner.os }}
|
||||||
|
|
||||||
- name: Download & extract prebuilt vanilla LLVM ${{ matrix.llvm_version }}
|
- name: 'macOS: Download & extract prebuilt vanilla LLVM ${{ matrix.llvm_version }}'
|
||||||
|
if: runner.os == 'macOS'
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
if [[ -d llvm ]]; then
|
if [[ -d llvm ]]; then
|
||||||
|
@ -89,19 +89,7 @@ jobs:
|
||||||
if [[ "$version" =~ ^https:// ]]; then
|
if [[ "$version" =~ ^https:// ]]; then
|
||||||
url="$version"
|
url="$version"
|
||||||
else
|
else
|
||||||
if [[ '${{ runner.os }}' == macOS ]]; then
|
url="https://github.com/llvm/llvm-project/releases/download/llvmorg-$version/clang+llvm-$version-arm64-apple-darwin22.0.tar.xz"
|
||||||
if [[ "$version" =~ ^1[6-9]\. ]]; then
|
|
||||||
suffix='arm64-apple-darwin22.0'
|
|
||||||
else
|
|
||||||
suffix='x86_64-apple-darwin'
|
|
||||||
fi
|
|
||||||
elif [[ "$version" =~ ^1[7-9]\. ]]; then
|
|
||||||
suffix='x86_64-linux-gnu-ubuntu-22.04' # LLVM 17+
|
|
||||||
else
|
|
||||||
suffix='x86_64-linux-gnu-ubuntu-18.04' # LLVM 14+
|
|
||||||
fi
|
|
||||||
|
|
||||||
url="https://github.com/llvm/llvm-project/releases/download/llvmorg-$version/clang+llvm-$version-$suffix.tar.xz"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
curl -fL --retry 3 --max-time 300 -o llvm.tar.xz "$url"
|
curl -fL --retry 3 --max-time 300 -o llvm.tar.xz "$url"
|
||||||
|
@ -110,16 +98,14 @@ jobs:
|
||||||
rm llvm.tar.xz
|
rm llvm.tar.xz
|
||||||
|
|
||||||
# don't link lib{c++,unwind} libs from LLVM package, they'd need RPATH fiddling
|
# don't link lib{c++,unwind} libs from LLVM package, they'd need RPATH fiddling
|
||||||
if [[ '${{ runner.os }}' == macOS ]]; then
|
rm -f llvm/lib/lib{c++,unwind}.*
|
||||||
rm -f llvm/lib/lib{c++,unwind}.*
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 'Linux: Make lld the default linker'
|
- name: 'Linux: Make lld the default linker'
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
echo "Using lld to work around sporadic failures"
|
echo "Using lld to work around sporadic failures"
|
||||||
sudo ln -sf "$PWD/llvm/bin/ld.lld" /usr/bin/ld
|
sudo ln -sf ld.lld-${{ matrix.llvm_version }} /usr/bin/ld
|
||||||
ld --version
|
ld --version
|
||||||
|
|
||||||
- name: Build LDC & LDC D unittests & defaultlib unittest runners with extra '${{ matrix.cmake_flags }}'
|
- name: Build LDC & LDC D unittests & defaultlib unittest runners with extra '${{ matrix.cmake_flags }}'
|
||||||
|
@ -127,7 +113,7 @@ jobs:
|
||||||
set -eux
|
set -eux
|
||||||
cmake -G Ninja . \
|
cmake -G Ninja . \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DLLVM_ROOT_DIR="$PWD/llvm" \
|
-DLLVM_ROOT_DIR=${{ runner.os == 'Linux' && format('/usr/lib/llvm-{0}', matrix.llvm_version) || '"$PWD/llvm"' }} \
|
||||||
-DLDC_LINK_MANUALLY=OFF \
|
-DLDC_LINK_MANUALLY=OFF \
|
||||||
${{ matrix.cmake_flags }}
|
${{ matrix.cmake_flags }}
|
||||||
ninja obj/ldc2.o all ldc2-unittest all-test-runners
|
ninja obj/ldc2.o all ldc2-unittest all-test-runners
|
||||||
|
@ -140,14 +126,11 @@ jobs:
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
# Linux: don't use vanilla llvm-symbolizer (no support for zlib-compressed debug sections => failing ASan tests)
|
|
||||||
if [[ '${{ runner.os }}' == 'Linux' ]]; then
|
if [[ '${{ runner.os }}' == 'Linux' ]]; then
|
||||||
mv llvm/bin/llvm-symbolizer llvm/bin/llvm-symbolizer.bak
|
# FIXME: lsan_interceptors.cpp:82 "((!lsan_init_is_running)) != (0)"
|
||||||
|
rm tests/sanitizers/lsan_memleak.d
|
||||||
fi
|
fi
|
||||||
ctest -V -R "lit-tests"
|
ctest -V -R "lit-tests"
|
||||||
if [[ -f llvm/bin/llvm-symbolizer.bak ]]; then
|
|
||||||
mv llvm/bin/llvm-symbolizer.bak llvm/bin/llvm-symbolizer
|
|
||||||
fi
|
|
||||||
- name: Run DMD testsuite
|
- name: Run DMD testsuite
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
run: ctest -V -R "dmd-testsuite"
|
run: ctest -V -R "dmd-testsuite"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue