Page MenuHomePhabricator

[libc++][CI] Increases the Clang version used.
ClosedPublic

Authored by Mordante on Aug 4 2022, 8:30 AM.

Details

Reviewers
ldionne
Group Reviewers
Restricted Project
Commits
rGca04b49597cc: [libc++][CI] Increases the Clang version used.
Summary

Changes the CI to use the Clang 16 nightly builds instead of Clang 14.
(The libc++15 branch was accidentally build using Clang 14 instead of
Clang 15; hence the skipping of a number.)

Also adds a Clang 15 build to the test matrix.

Based on the private discussion with @ldionne we decided to move
the configuration parameters from the run-buildbot script to the
CI configuration buildkite-pipeline.yml. Other hard-coded values
from the Dockerfile should be move to the CI configuration too. That
will be done in another commit.

C++17 will use Clang-15 since D131479 causes a test to fail.

Diff Detail

Event Timeline

Mordante created this revision.Aug 4 2022, 8:30 AM
Herald added a project: Restricted Project. · View Herald TranscriptAug 4 2022, 8:30 AM
Herald added a subscriber: arichardson. · View Herald Transcript
Mordante updated this revision to Diff 450500.Aug 6 2022, 2:00 AM

Retry CI with new Docker image.

Mordante updated this revision to Diff 450532.Aug 6 2022, 6:42 AM

Fixes CI.

Mordante updated this revision to Diff 450540.Aug 6 2022, 8:40 AM

Attempts to fix the CI.

Mordante updated this revision to Diff 450563.Aug 6 2022, 11:24 AM

Another attempt to fix the CI.

Mordante published this revision for review.Aug 8 2022, 11:44 AM
Mordante edited the summary of this revision. (Show Details)
Mordante added a reviewer: ldionne.
Herald added a project: Restricted Project. · View Herald TranscriptAug 8 2022, 11:44 AM
Herald added a reviewer: Restricted Project. · View Herald Transcript

As discussed during live review, instead I think we should define the compiler in use inside buildkite-pipeline.yml via env (https://buildkite.com/docs/pipelines/command-step#command-step-attributes). This would allow dropping various versioned jobs from the run-buildbot script (e.g. generic-clang-14 would become a call to generic-cxx2b with env set to CXX=clang++-14).

ldionne requested changes to this revision.Aug 16 2022, 9:37 AM
This revision now requires changes to proceed.Aug 16 2022, 9:37 AM

I think this means we should also somehow hardcode what version of e.g. clang-tidy is used in the .yml file. Basically, the Dockerfile installs a bunch of stuff but makes no decision as to which version of a given tool is used. Then, the .yml file picks the default versions it wants to use, and the run-buildbot script is as version-agnostic as possible.

Mordante updated this revision to Diff 453060.Aug 16 2022, 10:24 AM

Tests the alternative approach as discussed during the live review.
(When this works the other jobs needs to be adjusted too.)

Mordante planned changes to this revision.Aug 16 2022, 10:25 AM
Mordante updated this revision to Diff 453082.Aug 16 2022, 11:45 AM

Test CI with a global version.

Mordante updated this revision to Diff 453087.Aug 16 2022, 11:57 AM

More testing.

Mordante updated this revision to Diff 453301.Aug 17 2022, 9:03 AM

Convert all builders to the new style.

Mordante updated this revision to Diff 453674.Aug 18 2022, 8:39 AM

Try to use Clang 16, this might fail if the updated Docker image hasn't propagated to the CI runners.

Mordante edited the summary of this revision. (Show Details)Aug 18 2022, 8:46 AM
Mordante edited the summary of this revision. (Show Details)Aug 18 2022, 8:49 AM
Mordante updated this revision to Diff 453682.Aug 18 2022, 9:17 AM

Rebased to verify the modular build failures are in ToT too.

Mordante updated this revision to Diff 453701.Aug 18 2022, 10:33 AM

Allow all builds for testing.

Mordante updated this revision to Diff 454040.Aug 19 2022, 9:07 AM

Test modular build with a newer Clang 15.

Mordante updated this revision to Diff 455143.Aug 24 2022, 3:42 AM

Test with new Docker image and rebased.

ldionne accepted this revision.Aug 24 2022, 9:28 AM

There's a few comments, but this LGTM. Thanks a lot, this is a realllllly nice improvement. This will decouple updating the compilers for CI from updating the Docker image on runners, which has been a source of pain in the past.

Just so that we're on the same page, this will also expose us to potential breaks in the nightly Clang build when we update the Docker image. However, I think that's acceptable since we can do basic testing before updating the Docker image.

libcxx/utils/ci/buildkite-pipeline.yml
174

I think these jobs were forgotten.

227

Is this supported? That would be nice.

368

I think this one should be using clang-head too. It just means that we will build Clang from scratch using clang-head, and then we'll build libc++ using the just-built clang-fromscratch.

It's mostly for consistency with other CI jobs, I guess, because in practice we should be able to build Clang from scratch using almost any system compiler.

This revision is now accepted and ready to land.Aug 24 2022, 9:28 AM
Mordante updated this revision to Diff 455263.Aug 24 2022, 10:06 AM
Mordante marked 2 inline comments as done.

Addresses review comments.

Mordante marked an inline comment as done.Aug 24 2022, 10:10 AM
Mordante added inline comments.
libcxx/utils/ci/buildkite-pipeline.yml
227
Mordante edited the summary of this revision. (Show Details)Aug 27 2022, 4:41 AM
This revision was landed with ongoing or failed builds.Aug 27 2022, 4:42 AM
This revision was automatically updated to reflect the committed changes.
Mordante marked an inline comment as done.