From c027b9951c4cc99d50b8c26ed8278984b7319a5a Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Fri, 10 May 2024 16:13:50 +0200 Subject: [PATCH] [try old LDC-LLVM v17.0.6] --- .github/workflows/main.yml | 2 +- .github/workflows/supported_llvm_versions.yml | 191 ------------------ 2 files changed, 1 insertion(+), 192 deletions(-) delete mode 100644 .github/workflows/supported_llvm_versions.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7ad64e2dfcb..e4b65aaa181 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,7 +11,7 @@ concurrency: env: CLANG_VERSION: 15.0.6 - LLVM_VERSION: f53afe4c + LLVM_VERSION: 17.0.6 jobs: build-native: diff --git a/.github/workflows/supported_llvm_versions.yml b/.github/workflows/supported_llvm_versions.yml deleted file mode 100644 index 9d784a8b639..00000000000 --- a/.github/workflows/supported_llvm_versions.yml +++ /dev/null @@ -1,191 +0,0 @@ -# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions - -name: Vanilla LLVM -on: - - pull_request - - push - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - test: - strategy: - fail-fast: false - matrix: - include: - - job_name: Ubuntu 20.04, LDC-LLVM 18, latest LDC beta - os: ubuntu-20.04 - host_dc: ldc-beta - # FIXME: no usable official package available yet - llvm_version: https://github.com/ldc-developers/llvm-project/releases/download/ldc-v18.1.5/llvm-18.1.5-linux-x86_64.tar.xz - - job_name: macOS 14, LLVM 17, latest LDC beta - os: macos-14 - host_dc: ldc-beta - llvm_version: 17.0.5 - cmake_flags: -DBUILD_SHARED_LIBS=ON -DRT_SUPPORT_SANITIZERS=ON -DD_COMPILER_FLAGS=-gcc=/usr/bin/c++ -DCMAKE_EXE_LINKER_FLAGS=-L/opt/homebrew/opt/zstd/lib - - job_name: macOS 14, LLVM 16, latest LDC beta - os: macos-14 - host_dc: ldc-beta - llvm_version: 16.0.5 - cmake_flags: -DBUILD_SHARED_LIBS=OFF -DD_COMPILER_FLAGS=-gcc=/usr/bin/c++ -DCMAKE_EXE_LINKER_FLAGS=-L/opt/homebrew/opt/zstd/lib - - job_name: Ubuntu 20.04, LLVM 15, latest LDC beta - os: ubuntu-20.04 - host_dc: ldc-beta - llvm_version: 15.0.6 - - job_name: macOS 11, LLVM 14, latest DMD beta - os: macos-11 - host_dc: dmd-beta - llvm_version: 14.0.6 - cmake_flags: -DBUILD_SHARED_LIBS=ON -DRT_SUPPORT_SANITIZERS=ON -DLDC_LINK_MANUALLY=ON -DCMAKE_CXX_COMPILER=/usr/bin/c++ -DCMAKE_C_COMPILER=/usr/bin/cc - - job_name: Ubuntu 20.04, LLVM 13, latest LDC beta - os: ubuntu-20.04 - host_dc: ldc-beta - llvm_version: 13.0.1 - cmake_flags: -DRT_SUPPORT_SANITIZERS=ON - - job_name: Ubuntu 20.04, LLVM 12, bootstrap LDC - os: ubuntu-20.04 - host_dc: ldc-1.19.0 - llvm_version: 12.0.1 - cmake_flags: -DBUILD_SHARED_LIBS=ON -DLIB_SUFFIX=64 - - job_name: Ubuntu 20.04, LLVM 11, latest DMD beta - os: ubuntu-20.04 - host_dc: dmd-beta - llvm_version: 11.1.0 - cmake_flags: -DBUILD_SHARED_LIBS=OFF -DRT_SUPPORT_SANITIZERS=ON -DLDC_LINK_MANUALLY=ON - name: ${{ matrix.job_name }} - runs-on: ${{ matrix.os }} - env: - # silence `ld: warning: object file (…) was built for newer macOS version (…) than being linked (…)` - MACOSX_DEPLOYMENT_TARGET: ${{ matrix.os == 'macos-14' && '13.6' || '11.6' }} - steps: - - uses: actions/checkout@v4 - with: - submodules: true - fetch-depth: 50 - - name: Install ninja - uses: symmetryinvestments/gha-setup-ninja@v2 - - name: Install D host compiler - uses: dlang-community/setup-dlang@v1 - with: - compiler: ${{ matrix.host_dc }} - - name: Clear LD_LIBRARY_PATH to prevent loading host compiler libs - run: echo "LD_LIBRARY_PATH=" >> $GITHUB_ENV - - name: Install lit - run: | - set -euxo pipefail - if [[ '${{ matrix.os }}' == 'macos-14' ]]; then - brew install lit python-setuptools - else - python3 -m pip install --user setuptools wheel - python3 -m pip install --user lit - fi - python3 -c "import lit.main; lit.main.main();" --version . | head -n 1 - - name: 'Linux: Install gdb, llvm-symbolizer and libzstd' - if: runner.os == 'Linux' - run: | - set -eux - sudo apt-get update - # Don't use latest gdb v10+ from Ubuntu toolchain PPA with regressions, use official v9 - sudo apt-get install gdb=9.1-0ubuntu1 llvm libzstd-dev - - - name: Try to restore cached LLVM - uses: actions/cache@v4 - with: - path: llvm - key: llvm-${{ matrix.llvm_version }}-${{ runner.os }} - - - name: Download & extract prebuilt vanilla LLVM ${{ matrix.llvm_version }} - run: | - set -eux - if [[ -d llvm ]]; then - echo "Already cached" - exit 0 - fi - - version='${{ matrix.llvm_version }}' - if [[ "$version" =~ ^https:// ]]; then - url="$version" - else - if [[ '${{ runner.os }}' == macOS ]]; then - 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+ - elif [[ "$version" =~ ^1[3-6]\. ]]; then - suffix='x86_64-linux-gnu-ubuntu-18.04' # LLVM 13.0.1+ - else - suffix='x86_64-linux-gnu-ubuntu-16.04' - fi - - url="https://github.com/llvm/llvm-project/releases/download/llvmorg-$version/clang+llvm-$version-$suffix.tar.xz" - fi - - curl -fL --retry 3 --max-time 300 -o llvm.tar.xz "$url" - mkdir llvm - tar -xf llvm.tar.xz --strip 1 -C llvm - rm llvm.tar.xz - - # 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}.* - fi - - - name: 'Linux: Make lld the default linker' - if: runner.os == 'Linux' && matrix.host_dc != 'ldc-1.9.0' - run: | - set -eux - echo "Using lld to work around sporadic failures" - sudo ln -sf "$PWD/llvm/bin/ld.lld" /usr/bin/ld - ld --version - - - name: Build LDC & LDC D unittests & defaultlib unittest runners with extra '${{ matrix.cmake_flags }}' - run: | - set -eux - cmake -G Ninja . \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_ROOT_DIR="$PWD/llvm" \ - -DLDC_LINK_MANUALLY=OFF \ - ${{ matrix.cmake_flags }} - ninja obj/ldc2.o all ldc2-unittest all-test-runners - bin/ldc2 --version - - - name: Run LDC D unittests - if: success() || failure() - run: ctest --output-on-failure -R "ldc2-unittest" - - name: Run LIT testsuite - if: success() || failure() - run: | - set -eux - # LLVM 14+ on Linux: don't use vanilla llvm-symbolizer (no support for zlib-compressed debug sections => failing ASan tests) - if [[ '${{ runner.os }}' == 'Linux' && ! '${{ matrix.llvm_version }}' =~ ^1[1-3]\. ]]; then - mv llvm/bin/llvm-symbolizer llvm/bin/llvm-symbolizer.bak - fi - 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 - if: success() || failure() - run: ctest -V -R "dmd-testsuite" - - name: Run defaultlib unittests & druntime integration tests - if: success() || failure() - run: | - set -eux - excludes='dmd-testsuite|lit-tests|ldc2-unittest' - if [[ '${{ runner.os }}' == macOS ]]; then - N=$(sysctl -n hw.logicalcpu) - if [[ '${{ matrix.os }}' == macos-14 ]]; then - # FIXME: crashes frequently with enabled optimizations on M1 runners - excludes+='|^std.internal.math.gammafunction(-shared)?$' - # FIXME: sporadically segfaults with enabled optimizations - excludes+='|^core.thread.fiber(-shared)?$' - fi - else - N=$(nproc) - fi - ctest -j$N --output-on-failure -E "$excludes"