mordante wrote:

> > It's not ideal, but I can't think of a better solution. Typically nightly 
> > apt builds are built nightly so then we can update the Docker CI quickly. 
> > If the nightly builds are red it might take a bit longer.
> > The patch is in draft since I wanted to test with the bootstrap build which 
> > required temporary disabling other builds (the second commit). When the CI 
> > is green I'll do a final review and publish the patch.
> 
> It's been 2 days, maybe we should just submit this and see if anything goes 
> wrong? Besides, the CI seems green now, so hopefully everything has already 
> been checked.

I'll land this soon. Yesterday evening I didn't have time.

> > > In the long-term, how should people land changes like this? Compiler 
> > > diagnostics are expected to change sometimes, so we should figure out 
> > > some way that allows landing these without reverts. Any thoughts?
> > 
> > 
> > Typically we work together with whom changes the tests. When there are 
> > libc++ changes it is visible in our review queue. For changes in 
> > diagnostics it's often possible to use a regex matcher. For example, the 
> > messages of `static_asserts` changed a while back. In general we prefer to 
> > minimize the tests depending on the compiler diagnostics.
> 
> This use-case is different, we need a way to change the set of reported 
> diagnostics in Clang even if the diagnostic is produced in libc++ tests. 
> Blocking changes to Clang because libc++ tests against nightly and head 
> builds looks too harsh.
> 
> I think we need to find some alternative solution that works here. The 
> obvious solution that I see is to run the nightly Clang as post-submits and 
> allow them to be broken for this reasons (as it will fix itself after nightly 
> Clang gets rebuilt).

All but one of the libc++ pre-commit CI jobs uses pre-built clang binaries. We 
heavily depend on a pre-commit CI to test changes on platforms we don't have 
access to. So changing it to a post-commit CI is not an option.

> @AaronBallman, @cor3ntin what are your thoughts as Clang maintainers? TLDR; 
> is that libc++ runs tests in CI with both head Clang and nightly Clang 
> builds. Therefore, if we happen to change the set of reported diagnostics in 
> Clang (in this case it was a spurious error in initialization of invalid 
> classes that got silenced with a Clang change), we cannot land this change 
> without breaking the libc++ CI.

Note that the original patch also breaks clang-16 and clang-17. So usually 
there's a regex matcher used and that works with clang-16, clang-17, clang-18 
nightly, and clang-18 ToT. This is a rare case where it's not possible to use a 
regex. (In general clang patches affecting libc++ are rare.) As mentioned 
before typically we work together with Clang to see how to fix this. As far as 
I can tell the changes to libc++ were not reviewed by the a libc++ reviewer and 
not tested in the pre-commit CI. Please correct me if I'm wrong.

After a previous breakage both @ldionne and I have discussed this with 
@AaronBallman and that resulted in 
[documentation](https://clang.llvm.org/hacking.html#testingLibc++) to create 
awareness and we helped to get a clang pre-commit CI up and running.

https://github.com/llvm/llvm-project/pull/76833
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to