Skip to content

Commit 64623bc

Browse files
committed
[libc++] Bump OS version for macOS backdeployment CI jobs
In 0547e57, I introduced backdeployment testing on macOS using Github-provided builders. This was done by basically building libc++ on a slightly older macOS (like macOS 13) and then running against the system library on that machine. However, that created a dependency that libc++ must keep working on macOS 13, which doesn't support the latest-released Xcode. This patch solves that problem by moving the deployment testing to a newer version of macOS which supports the latest-released version of Xcode. Sadly, that also reduces the backdeployment coverage we have since we're not actually testing on older OSes, but is necessary to satisfy the documented libc++ support policy. In the future, we could improve the situation by providing a Lit configuration that allows compiling (but not running) all the tests, building the tests on a supported macOS, and then shipping those tests on an older backdeployment target in order to run them against the system library. Since that requires significant engineering, this isn't done at this time.
1 parent a5a9b2b commit 64623bc

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

.github/workflows/libcxx-build-and-test.yaml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,20 @@ jobs:
201201
os: macos-15
202202
- config: apple-configuration
203203
os: macos-15
204+
# TODO: These jobs are intended to test back-deployment (building against ToT libc++ but running against an
205+
# older system-provided libc++.dylib). Doing this properly would require building the test suite on a
206+
# recent macOS using a recent Clang (hence recent Xcode), and then running the actual test suite on an
207+
# older mac. We could do that by e.g. sharing artifacts between the two jobs.
208+
#
209+
# However, our Lit configuration currently doesn't provide a good way to do that in a batch, so our only
210+
# alternative is to actually build on the same host that we're going to run on. Sadly, that doesn't work
211+
# since older macOSes don't support newer Xcodes. For now, we run the "backdeployment" jobs on recent
212+
# macOS versions as a way to avoid rotting that configuration, but it doesn't provide a lot of additional
213+
# coverage.
204214
- config: apple-system
205-
os: macos-13
215+
os: macos-15
206216
- config: apple-system-hardened
207-
os: macos-13
217+
os: macos-15
208218
runs-on: ${{ matrix.os }}
209219
steps:
210220
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

0 commit comments

Comments
 (0)