[libcxx] [llvm] [libc++] Move some macOS CI jobs to Github actions (PR #89083)

Louis Dionne via llvm-commits llvm-commits at lists.llvm.org
Thu May 23 07:51:21 PDT 2024


https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/89083

>From 6b4eefb07224841186d5b7f55ff2ee055ecc0baa Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Wed, 17 Apr 2024 10:29:14 -0400
Subject: [PATCH 1/6] [libc++] Move some macOS CI jobs to Github actions

This is an attempt to decouple macOS CI testing from BuildKite, which
would make the maintenance of macOS CI easier and more accessible to
all contributors. Right now, the macOS CI is running entirely on machines
owned by the LLVM Foundation with only a small set of contributors having
direct access to them.

The story for performing back-deployment testing still needs to be
figured out, so for now we are retaining some jobs under BuildKite.
---
 .github/workflows/libcxx-build-and-test.yaml | 35 +++++++++
 libcxx/utils/ci/buildkite-pipeline.yml       | 75 +++++---------------
 2 files changed, 53 insertions(+), 57 deletions(-)

diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index 44a3d79c72c0a..bbf09a1786cba 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -82,6 +82,7 @@ jobs:
             **/CMakeError.log
             **/CMakeOutput.log
             **/crash_diagnostics/*
+
   stage2:
     if: github.repository_owner == 'llvm'
     runs-on: libcxx-runners-8-set
@@ -126,6 +127,7 @@ jobs:
             **/CMakeError.log
             **/CMakeOutput.log
             **/crash_diagnostics/*
+
   stage3:
     if: github.repository_owner == 'llvm'
     needs: [ stage1, stage2 ]
@@ -190,6 +192,39 @@ jobs:
             **/CMakeError.log
             **/CMakeOutput.log
             **/crash_diagnostics/*
+
+  macos:
+    runs-on: macos-14
+    needs: [ stage1 ]
+    strategy:
+      fail-fast: false
+      matrix:
+        config: [
+          generic-cxx03,
+          generic-cxx23,
+          generic-modules,
+          apple-system
+        ]
+    steps:
+      - uses: actions/checkout at v4
+      - uses: maxim-lobanov/setup-xcode at v1
+        with:
+          xcode-version: 'latest-stable'
+      - uses: seanmiddleditch/gha-setup-ninja at master
+      - name: Build and test
+        run: |
+          bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+      - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
+        if: always()  # Upload artifacts even if the build or test suite fails
+        with:
+          name: macos-${{ matrix.config }}-results
+          path: |
+            **/test-results.xml
+            **/*.abilist
+            **/CMakeError.log
+            **/CMakeOutput.log
+            **/crash_diagnostics/*
+
   windows:
     runs-on: windows-2022
     needs: [ stage1 ]
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index 4bacdec8f8d6b..0e9a02ad081b1 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -56,47 +56,8 @@ environment_definitions:
 
 
 steps:
-- group: ':mac: Apple'
+- group: ':mac: Apple Backdeployment'
   steps:
-  - label: MacOS x86_64
-    command: libcxx/utils/ci/run-buildbot generic-cxx23
-    agents:
-      queue: libcxx-builders
-      os: macos
-      arch: x86_64
-    <<: *common
-
-  - label: MacOS arm64
-    command: libcxx/utils/ci/run-buildbot generic-cxx23
-    agents:
-      queue: libcxx-builders
-      os: macos
-      arch: arm64
-    <<: *common
-
-  - label: MacOS with Modules
-    command: libcxx/utils/ci/run-buildbot generic-modules
-    agents:
-      queue: libcxx-builders
-      os: macos
-    <<: *common
-
-  - label: MacOS with C++03
-    command: libcxx/utils/ci/run-buildbot generic-cxx03
-    agents:
-      queue: libcxx-builders
-      os: macos
-    <<: *common
-
-    # Build with the configuration we use to generate libc++.dylib on Apple platforms
-  - label: Apple system
-    command: libcxx/utils/ci/run-buildbot apple-system
-    agents:
-      queue: libcxx-builders
-      os: macos
-      arch: arm64 # This can technically run on any architecture, but we have more resources on arm64 so we pin this job to arm64
-    <<: *common
-
   - label: Apple back-deployment macosx10.13
     command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.13
     agents:
@@ -121,6 +82,23 @@ steps:
       arch: x86_64 # TODO: Remove this once we are able to run back-deployment on arm64 again, since this isn't x86_64 specific
     <<: *common
 
+    # TODO: Re-enable this once we've figured out how to run back-deployment testing on arm64 on recent OSes
+    # - label: "Apple back-deployment macosx11.0 arm64"
+    #   command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-11.0"
+    #   artifact_paths:
+    #     - "**/test-results.xml"
+    #     - "**/*.abilist"
+    #   agents:
+    #     queue: "libcxx-builders"
+    #     os: "macos"
+    #     arch: "arm64"
+    #   retry:
+    #     automatic:
+    #       - exit_status: -1  # Agent was lost
+    #         limit: 2
+    #   timeout_in_minutes: 120
+
+
 - group: ARM
   steps:
   - label: AArch64
@@ -230,20 +208,3 @@ steps:
       queue: libcxx-builders
       os: android
     <<: *common
-
-
-    # TODO: Re-enable this once we've figured out how to run back-deployment testing on arm64 on recent OSes
-    # - label: "Apple back-deployment macosx11.0 arm64"
-    #   command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-11.0"
-    #   artifact_paths:
-    #     - "**/test-results.xml"
-    #     - "**/*.abilist"
-    #   agents:
-    #     queue: "libcxx-builders"
-    #     os: "macos"
-    #     arch: "arm64"
-    #   retry:
-    #     automatic:
-    #       - exit_status: -1  # Agent was lost
-    #         limit: 2
-    #   timeout_in_minutes: 120

>From bde6cf824401f34e981f40297e7e13957fe8ccc4 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Tue, 7 May 2024 10:10:37 -0400
Subject: [PATCH 2/6] Reduce configuration to avoid spamming the bots while we
 are testing

---
 .github/workflows/libcxx-build-and-test.yaml | 306 +++++++++----------
 1 file changed, 150 insertions(+), 156 deletions(-)

diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index bbf09a1786cba..e9453fa521acd 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -55,16 +55,10 @@ jobs:
       fail-fast: false
       matrix:
         config: [
-          'generic-cxx03',
           'generic-cxx26',
-          'generic-modules'
         ]
         cc: [  'clang-19' ]
         cxx: [ 'clang++-19' ]
-        include:
-          - config: 'generic-gcc'
-            cc: 'gcc-13'
-            cxx: 'g++-13'
     steps:
       - uses: actions/checkout at v4
       - name: ${{ matrix.config }}.${{ matrix.cxx }}
@@ -83,115 +77,115 @@ jobs:
             **/CMakeOutput.log
             **/crash_diagnostics/*
 
-  stage2:
-    if: github.repository_owner == 'llvm'
-    runs-on: libcxx-runners-8-set
-    needs: [ stage1 ]
-    continue-on-error: false
-    strategy:
-      fail-fast: false
-      matrix:
-        config: [
-          'generic-cxx11',
-          'generic-cxx14',
-          'generic-cxx17',
-          'generic-cxx20',
-          'generic-cxx23'
-        ]
-        cc: [ 'clang-19' ]
-        cxx: [ 'clang++-19' ]
-        include:
-          - config: 'generic-gcc-cxx11'
-            cc: 'gcc-13'
-            cxx: 'g++-13'
-          - config: 'generic-cxx23'
-            cc: 'clang-17'
-            cxx: 'clang++-17'
-          - config: 'generic-cxx26'
-            cc: 'clang-18'
-            cxx: 'clang++-18'
-    steps:
-      - uses: actions/checkout at v4
-      - name: ${{ matrix.config }}
-        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
-        env:
-          CC: ${{ matrix.cc }}
-          CXX: ${{ matrix.cxx }}
-      - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
-        if: always()  # Upload artifacts even if the build or test suite fails
-        with:
-          name: ${{ matrix.config }}-${{ matrix.cxx }}-results
-          path: |
-            **/test-results.xml
-            **/*.abilist
-            **/CMakeError.log
-            **/CMakeOutput.log
-            **/crash_diagnostics/*
+  # stage2:
+  #   if: github.repository_owner == 'llvm'
+  #   runs-on: libcxx-runners-8-set
+  #   needs: [ stage1 ]
+  #   continue-on-error: false
+  #   strategy:
+  #     fail-fast: false
+  #     matrix:
+  #       config: [
+  #         'generic-cxx11',
+  #         'generic-cxx14',
+  #         'generic-cxx17',
+  #         'generic-cxx20',
+  #         'generic-cxx23'
+  #       ]
+  #       cc: [ 'clang-19' ]
+  #       cxx: [ 'clang++-19' ]
+  #       include:
+  #         - config: 'generic-gcc-cxx11'
+  #           cc: 'gcc-13'
+  #           cxx: 'g++-13'
+  #         - config: 'generic-cxx23'
+  #           cc: 'clang-17'
+  #           cxx: 'clang++-17'
+  #         - config: 'generic-cxx26'
+  #           cc: 'clang-18'
+  #           cxx: 'clang++-18'
+  #   steps:
+  #     - uses: actions/checkout at v4
+  #     - name: ${{ matrix.config }}
+  #       run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+  #       env:
+  #         CC: ${{ matrix.cc }}
+  #         CXX: ${{ matrix.cxx }}
+  #     - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
+  #       if: always()  # Upload artifacts even if the build or test suite fails
+  #       with:
+  #         name: ${{ matrix.config }}-${{ matrix.cxx }}-results
+  #         path: |
+  #           **/test-results.xml
+  #           **/*.abilist
+  #           **/CMakeError.log
+  #           **/CMakeOutput.log
+  #           **/crash_diagnostics/*
 
-  stage3:
-    if: github.repository_owner == 'llvm'
-    needs: [ stage1, stage2 ]
-    continue-on-error: false
-    strategy:
-      fail-fast: false
-      max-parallel: 8
-      matrix:
-        config: [
-          'generic-abi-unstable',
-          'generic-hardening-mode-debug',
-          'generic-hardening-mode-extensive',
-          'generic-hardening-mode-fast',
-          'generic-hardening-mode-fast-with-abi-breaks',
-          'generic-merged',
-          'generic-modules-lsv',
-          'generic-no-exceptions',
-          'generic-no-experimental',
-          'generic-no-filesystem',
-          'generic-no-localization',
-          'generic-no-random_device',
-          'generic-no-threads',
-          'generic-no-tzdb',
-          'generic-no-unicode',
-          'generic-no-wide-characters',
-          'generic-no-rtti',
-          'generic-optimized-speed',
-          'generic-static',
-          # TODO Find a better place for the benchmark and bootstrapping builds to live. They're either very expensive
-          # or don't provide much value since the benchmark run results are too noise on the bots.
-          'benchmarks',
-          'bootstrapping-build'
-        ]
-        machine: [ 'libcxx-runners-8-set' ]
-        include:
-        - config: 'generic-cxx26'
-          machine: libcxx-runners-8-set
-        - config: 'generic-asan'
-          machine: libcxx-runners-8-set
-        - config: 'generic-tsan'
-          machine: libcxx-runners-8-set
-        - config: 'generic-ubsan'
-          machine: libcxx-runners-8-set
-        # Use a larger machine for MSAN to avoid timeout and memory allocation issues.
-        - config: 'generic-msan'
-          machine: libcxx-runners-8-set
-    runs-on: ${{ matrix.machine }}
-    steps:
-      - uses: actions/checkout at v4
-      - name: ${{ matrix.config }}
-        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
-        env:
-          CC: clang-19
-          CXX: clang++-19
-      - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
-        if: always()
-        with:
-          name: ${{ matrix.config }}-results
-          path: |
-            **/test-results.xml
-            **/*.abilist
-            **/CMakeError.log
-            **/CMakeOutput.log
-            **/crash_diagnostics/*
+  # stage3:
+  #   if: github.repository_owner == 'llvm'
+  #   needs: [ stage1, stage2 ]
+  #   continue-on-error: false
+  #   strategy:
+  #     fail-fast: false
+  #     max-parallel: 8
+  #     matrix:
+  #       config: [
+  #         'generic-abi-unstable',
+  #         'generic-hardening-mode-debug',
+  #         'generic-hardening-mode-extensive',
+  #         'generic-hardening-mode-fast',
+  #         'generic-hardening-mode-fast-with-abi-breaks',
+  #         'generic-merged',
+  #         'generic-modules-lsv',
+  #         'generic-no-exceptions',
+  #         'generic-no-experimental',
+  #         'generic-no-filesystem',
+  #         'generic-no-localization',
+  #         'generic-no-random_device',
+  #         'generic-no-threads',
+  #         'generic-no-tzdb',
+  #         'generic-no-unicode',
+  #         'generic-no-wide-characters',
+  #         'generic-no-rtti',
+  #         'generic-optimized-speed',
+  #         'generic-static',
+  #         # TODO Find a better place for the benchmark and bootstrapping builds to live. They're either very expensive
+  #         # or don't provide much value since the benchmark run results are too noise on the bots.
+  #         'benchmarks',
+  #         'bootstrapping-build'
+  #       ]
+  #       machine: [ 'libcxx-runners-8-set' ]
+  #       include:
+  #       - config: 'generic-cxx26'
+  #         machine: libcxx-runners-8-set
+  #       - config: 'generic-asan'
+  #         machine: libcxx-runners-8-set
+  #       - config: 'generic-tsan'
+  #         machine: libcxx-runners-8-set
+  #       - config: 'generic-ubsan'
+  #         machine: libcxx-runners-8-set
+  #       # Use a larger machine for MSAN to avoid timeout and memory allocation issues.
+  #       - config: 'generic-msan'
+  #         machine: libcxx-runners-8-set
+  #   runs-on: ${{ matrix.machine }}
+  #   steps:
+  #     - uses: actions/checkout at v4
+  #     - name: ${{ matrix.config }}
+  #       run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+  #       env:
+  #         CC: clang-19
+  #         CXX: clang++-19
+  #     - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
+  #       if: always()
+  #       with:
+  #         name: ${{ matrix.config }}-results
+  #         path: |
+  #           **/test-results.xml
+  #           **/*.abilist
+  #           **/CMakeError.log
+  #           **/CMakeOutput.log
+  #           **/crash_diagnostics/*
 
   macos:
     runs-on: macos-14
@@ -225,45 +219,45 @@ jobs:
             **/CMakeOutput.log
             **/crash_diagnostics/*
 
-  windows:
-    runs-on: windows-2022
-    needs: [ stage1 ]
-    strategy:
-      fail-fast: false
-      matrix:
-        include:
-        - { config: clang-cl-dll, mingw: false }
-        - { config: clang-cl-static, mingw: false }
-        - { config: clang-cl-no-vcruntime, mingw: false }
-        - { config: clang-cl-debug, mingw: false }
-        - { config: clang-cl-static-crt, mingw: false }
-        - { config: mingw-dll, mingw: true }
-        - { config: mingw-static, mingw: true }
-        - { config: mingw-dll-i686, mingw: true }
-    steps:
-      - uses: actions/checkout at v4
-      - name: Install dependencies
-        run: |
-          choco install -y ninja wget
-          pip install psutil
-      - name: Install a current LLVM
-        if: ${{ matrix.mingw != true }}
-        run: |
-          choco install -y llvm --version=17.0.6
-      - name: Install llvm-mingw
-        if: ${{ matrix.mingw == true }}
-        run: |
-          curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20231128/llvm-mingw-20231128-ucrt-x86_64.zip
-          powershell Expand-Archive llvm-mingw*.zip -DestinationPath .
-          del llvm-mingw*.zip
-          mv llvm-mingw* c:\llvm-mingw
-          echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
-      - name: Add Git Bash to the path
-        run: |
-          echo "c:\Program Files\Git\usr\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
-      - name: Set up the MSVC dev environment
-        if: ${{ matrix.mingw != true }}
-        uses: ilammy/msvc-dev-cmd at v1
-      - name: Build and test
-        run: |
-          bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
+  # windows:
+  #   runs-on: windows-2022
+  #   needs: [ stage1 ]
+  #   strategy:
+  #     fail-fast: false
+  #     matrix:
+  #       include:
+  #       - { config: clang-cl-dll, mingw: false }
+  #       - { config: clang-cl-static, mingw: false }
+  #       - { config: clang-cl-no-vcruntime, mingw: false }
+  #       - { config: clang-cl-debug, mingw: false }
+  #       - { config: clang-cl-static-crt, mingw: false }
+  #       - { config: mingw-dll, mingw: true }
+  #       - { config: mingw-static, mingw: true }
+  #       - { config: mingw-dll-i686, mingw: true }
+  #   steps:
+  #     - uses: actions/checkout at v4
+  #     - name: Install dependencies
+  #       run: |
+  #         choco install -y ninja wget
+  #         pip install psutil
+  #     - name: Install a current LLVM
+  #       if: ${{ matrix.mingw != true }}
+  #       run: |
+  #         choco install -y llvm --version=17.0.6
+  #     - name: Install llvm-mingw
+  #       if: ${{ matrix.mingw == true }}
+  #       run: |
+  #         curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20231128/llvm-mingw-20231128-ucrt-x86_64.zip
+  #         powershell Expand-Archive llvm-mingw*.zip -DestinationPath .
+  #         del llvm-mingw*.zip
+  #         mv llvm-mingw* c:\llvm-mingw
+  #         echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
+  #     - name: Add Git Bash to the path
+  #       run: |
+  #         echo "c:\Program Files\Git\usr\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
+  #     - name: Set up the MSVC dev environment
+  #       if: ${{ matrix.mingw != true }}
+  #       uses: ilammy/msvc-dev-cmd at v1
+  #     - name: Build and test
+  #       run: |
+  #         bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}

>From d90d968363c3f5d4531bcf69ee013a3683393947 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Tue, 7 May 2024 14:06:42 -0400
Subject: [PATCH 3/6] Install psutil

---
 .github/workflows/libcxx-build-and-test.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index e9453fa521acd..b0a258476732c 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -207,6 +207,7 @@ jobs:
       - uses: seanmiddleditch/gha-setup-ninja at master
       - name: Build and test
         run: |
+          python3 -m pip install psutil
           bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
       - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
         if: always()  # Upload artifacts even if the build or test suite fails

>From 3a8dfff4a5663ad60ed5c9575c82c4f70bce2b73 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Tue, 7 May 2024 15:22:03 -0400
Subject: [PATCH 4/6] Reduce strain on BuildKite

---
 libcxx/utils/ci/buildkite-pipeline.yml | 284 ++++++++++++-------------
 1 file changed, 142 insertions(+), 142 deletions(-)

diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index 0e9a02ad081b1..3393e40310866 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -66,145 +66,145 @@ steps:
       arch: x86_64 # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then
     <<: *common
 
-  - label: Apple back-deployment macosx10.15
-    command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.15
-    agents:
-      queue: libcxx-builders
-      os: macos
-      arch: x86_64 # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then
-    <<: *common
-
-  - label: Apple back-deployment with hardening enabled
-    command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-hardened-11.0
-    agents:
-      queue: libcxx-builders
-      os: macos
-      arch: x86_64 # TODO: Remove this once we are able to run back-deployment on arm64 again, since this isn't x86_64 specific
-    <<: *common
-
-    # TODO: Re-enable this once we've figured out how to run back-deployment testing on arm64 on recent OSes
-    # - label: "Apple back-deployment macosx11.0 arm64"
-    #   command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-11.0"
-    #   artifact_paths:
-    #     - "**/test-results.xml"
-    #     - "**/*.abilist"
-    #   agents:
-    #     queue: "libcxx-builders"
-    #     os: "macos"
-    #     arch: "arm64"
-    #   retry:
-    #     automatic:
-    #       - exit_status: -1  # Agent was lost
-    #         limit: 2
-    #   timeout_in_minutes: 120
-
-
-- group: ARM
-  steps:
-  - label: AArch64
-    command: libcxx/utils/ci/run-buildbot aarch64
-    agents:
-      queue: libcxx-builders-linaro-arm
-      arch: aarch64
-    <<: *common
-
-  - label: AArch64 -fno-exceptions
-    command: libcxx/utils/ci/run-buildbot aarch64-no-exceptions
-    agents:
-      queue: libcxx-builders-linaro-arm
-      arch: aarch64
-    <<: *common
-
-  - label: Armv8
-    command: libcxx/utils/ci/run-buildbot armv8
-    agents:
-      queue: libcxx-builders-linaro-arm
-      arch: armv8l
-    <<: *common
-
-  - label: Armv8 -fno-exceptions
-    command: libcxx/utils/ci/run-buildbot armv8-no-exceptions
-    agents:
-      queue: libcxx-builders-linaro-arm
-      arch: armv8l
-    <<: *common
-
-  - label: Armv7
-    command: libcxx/utils/ci/run-buildbot armv7
-    agents:
-      queue: libcxx-builders-linaro-arm
-      arch: armv8l
-    <<: *common
-
-  - label: Armv7 -fno-exceptions
-    command: libcxx/utils/ci/run-buildbot armv7-no-exceptions
-    agents:
-      queue: libcxx-builders-linaro-arm
-      arch: armv8l
-    <<: *common
-
-  - label: Armv7-M picolibc
-    command: libcxx/utils/ci/run-buildbot armv7m-picolibc
-    agents:
-      queue: libcxx-builders-linaro-arm
-      arch: aarch64
-    <<: *common
-
-  - label: Armv7-M picolibc -fno-exceptions
-    command: libcxx/utils/ci/run-buildbot armv7m-picolibc-no-exceptions
-    agents:
-      queue: libcxx-builders-linaro-arm
-      arch: aarch64
-    <<: *common
-
-- group: AIX
-  steps:
-  - label: AIX (32-bit)
-    command: libcxx/utils/ci/run-buildbot aix
-    env:
-      CC: clang
-      CXX: clang++
-      OBJECT_MODE: '32'
-    agents:
-      queue: libcxx-builders
-      os: aix
-    <<: *common
-
-  - label: AIX (64-bit)
-    command: libcxx/utils/ci/run-buildbot aix
-    env:
-      CC: clang
-      CXX: clang++
-      OBJECT_MODE: '64'
-    agents:
-      queue: libcxx-builders
-      os: aix
-    <<: *common
-
-- group: ':freebsd: FreeBSD'
-  steps:
-  - label: FreeBSD 13 amd64
-    command: libcxx/utils/ci/run-buildbot generic-cxx26
-    env:
-      CC: clang17
-      CXX: clang++17
-    agents:
-      queue: libcxx-builders
-      os: freebsd
-    <<: *common
-
-- group: ':android: Android'
-  steps:
-  - label: Android 5.0, x86 NDK
-    command: libcxx/utils/ci/run-buildbot android-ndk-21-def-x86
-    agents:
-      queue: libcxx-builders
-      os: android
-    <<: *common
-
-  - label: Android 13, x86_64 NDK
-    command: libcxx/utils/ci/run-buildbot android-ndk-33-goog-x86_64
-    agents:
-      queue: libcxx-builders
-      os: android
-    <<: *common
+#   - label: Apple back-deployment macosx10.15
+#     command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.15
+#     agents:
+#       queue: libcxx-builders
+#       os: macos
+#       arch: x86_64 # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then
+#     <<: *common
+
+#   - label: Apple back-deployment with hardening enabled
+#     command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-hardened-11.0
+#     agents:
+#       queue: libcxx-builders
+#       os: macos
+#       arch: x86_64 # TODO: Remove this once we are able to run back-deployment on arm64 again, since this isn't x86_64 specific
+#     <<: *common
+
+#     # TODO: Re-enable this once we've figured out how to run back-deployment testing on arm64 on recent OSes
+#     # - label: "Apple back-deployment macosx11.0 arm64"
+#     #   command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-11.0"
+#     #   artifact_paths:
+#     #     - "**/test-results.xml"
+#     #     - "**/*.abilist"
+#     #   agents:
+#     #     queue: "libcxx-builders"
+#     #     os: "macos"
+#     #     arch: "arm64"
+#     #   retry:
+#     #     automatic:
+#     #       - exit_status: -1  # Agent was lost
+#     #         limit: 2
+#     #   timeout_in_minutes: 120
+
+
+# - group: ARM
+#   steps:
+#   - label: AArch64
+#     command: libcxx/utils/ci/run-buildbot aarch64
+#     agents:
+#       queue: libcxx-builders-linaro-arm
+#       arch: aarch64
+#     <<: *common
+
+#   - label: AArch64 -fno-exceptions
+#     command: libcxx/utils/ci/run-buildbot aarch64-no-exceptions
+#     agents:
+#       queue: libcxx-builders-linaro-arm
+#       arch: aarch64
+#     <<: *common
+
+#   - label: Armv8
+#     command: libcxx/utils/ci/run-buildbot armv8
+#     agents:
+#       queue: libcxx-builders-linaro-arm
+#       arch: armv8l
+#     <<: *common
+
+#   - label: Armv8 -fno-exceptions
+#     command: libcxx/utils/ci/run-buildbot armv8-no-exceptions
+#     agents:
+#       queue: libcxx-builders-linaro-arm
+#       arch: armv8l
+#     <<: *common
+
+#   - label: Armv7
+#     command: libcxx/utils/ci/run-buildbot armv7
+#     agents:
+#       queue: libcxx-builders-linaro-arm
+#       arch: armv8l
+#     <<: *common
+
+#   - label: Armv7 -fno-exceptions
+#     command: libcxx/utils/ci/run-buildbot armv7-no-exceptions
+#     agents:
+#       queue: libcxx-builders-linaro-arm
+#       arch: armv8l
+#     <<: *common
+
+#   - label: Armv7-M picolibc
+#     command: libcxx/utils/ci/run-buildbot armv7m-picolibc
+#     agents:
+#       queue: libcxx-builders-linaro-arm
+#       arch: aarch64
+#     <<: *common
+
+#   - label: Armv7-M picolibc -fno-exceptions
+#     command: libcxx/utils/ci/run-buildbot armv7m-picolibc-no-exceptions
+#     agents:
+#       queue: libcxx-builders-linaro-arm
+#       arch: aarch64
+#     <<: *common
+
+# - group: AIX
+#   steps:
+#   - label: AIX (32-bit)
+#     command: libcxx/utils/ci/run-buildbot aix
+#     env:
+#       CC: clang
+#       CXX: clang++
+#       OBJECT_MODE: '32'
+#     agents:
+#       queue: libcxx-builders
+#       os: aix
+#     <<: *common
+
+#   - label: AIX (64-bit)
+#     command: libcxx/utils/ci/run-buildbot aix
+#     env:
+#       CC: clang
+#       CXX: clang++
+#       OBJECT_MODE: '64'
+#     agents:
+#       queue: libcxx-builders
+#       os: aix
+#     <<: *common
+
+# - group: ':freebsd: FreeBSD'
+#   steps:
+#   - label: FreeBSD 13 amd64
+#     command: libcxx/utils/ci/run-buildbot generic-cxx26
+#     env:
+#       CC: clang17
+#       CXX: clang++17
+#     agents:
+#       queue: libcxx-builders
+#       os: freebsd
+#     <<: *common
+
+# - group: ':android: Android'
+#   steps:
+#   - label: Android 5.0, x86 NDK
+#     command: libcxx/utils/ci/run-buildbot android-ndk-21-def-x86
+#     agents:
+#       queue: libcxx-builders
+#       os: android
+#     <<: *common
+
+#   - label: Android 13, x86_64 NDK
+#     command: libcxx/utils/ci/run-buildbot android-ndk-33-goog-x86_64
+#     agents:
+#       queue: libcxx-builders
+#       os: android
+#     <<: *common

>From 294c07bbb8034317f542664e3bccb94416744834 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Tue, 7 May 2024 15:25:07 -0400
Subject: [PATCH 5/6] Try installing psutil in venv

---
 .github/workflows/libcxx-build-and-test.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index b0a258476732c..9450088cd09bf 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -207,6 +207,8 @@ jobs:
       - uses: seanmiddleditch/gha-setup-ninja at master
       - name: Build and test
         run: |
+          python3 -m venv .venv
+          source .venv/bin/activate
           python3 -m pip install psutil
           bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}
       - uses: actions/upload-artifact at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0

>From a4a0306007fa0eb5f24df93677a37d935e3ae75d Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Wed, 8 May 2024 11:03:00 -0400
Subject: [PATCH 6/6] Try dropping DYLD_LIBRARY_PATH

---
 libcxx/test/configs/apple-libc++-shared.cfg.in | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libcxx/test/configs/apple-libc++-shared.cfg.in b/libcxx/test/configs/apple-libc++-shared.cfg.in
index 2d0aee3ae905e..1c730c8ff4c86 100644
--- a/libcxx/test/configs/apple-libc++-shared.cfg.in
+++ b/libcxx/test/configs/apple-libc++-shared.cfg.in
@@ -1,11 +1,11 @@
 # Testing configuration for Apple's system libc++.
 #
 # This configuration differs from a normal LLVM shared library configuration in
-# that we must use DYLD_LIBRARY_PATH to run the tests against the just-built library,
-# since Apple's libc++ has an absolute install_name.
+# that we have a single include directory for the libc++ headers since Apple
+# system builds don't use a per-target include directory layout.
 #
-# We also don't use a per-target include directory layout, so we have only one
-# include directory for the libc++ headers.
+# We also identify the variant of the standard library as 'apple-libc++', which
+# enables additional vendor-specific tests.
 
 lit_config.load_config(config, '@CMAKE_CURRENT_BINARY_DIR@/cmake-bridge.cfg')
 
@@ -16,10 +16,10 @@ config.substitutions.append(('%{compile_flags}',
     '-nostdinc++ -I %{include-dir} -I %{libcxx-dir}/test/support'
 ))
 config.substitutions.append(('%{link_flags}',
-    '-nostdlib++ -L %{lib-dir} -lc++'
+    '-nostdlib++ -L %{lib-dir} -Wl,-rpath,%{lib-dir} -lc++'
 ))
 config.substitutions.append(('%{exec}',
-    '%{executor} --execdir %T --env DYLD_LIBRARY_PATH=%{lib-dir} -- '
+    '%{executor} --execdir %T -- '
 ))
 
 config.stdlib = 'apple-libc++'



More information about the llvm-commits mailing list