Open Bug 1614858 Opened 5 years ago Updated 2 years ago

Do regular builds with clang trunk

Categories

(Firefox Build System :: Toolchains, task)

task

Tracking

(Not tracked)

People

(Reporter: glandium, Unassigned)

References

Details

Most of the pieces to do that automatically are actually available, with a caveat.

This is great; thanks for filing, glandium.

My understanding is that cron jobs get added to whatever unsuspecting push happens at the trigger time. I'm not so sure I'd want to add this extra noise to pushes or make people worry about failures that will inevitably happen (even if these are marked tier 3 or whatever). And it would be nice to have a view that shows only the pushes with trunk jobs, one day after the next. Also, how do tests work in this setup? Do we need to duplicate everything like linux64-asan and linux64-asan-with-clang-trunk etc.?

I think my ideal would be to have a bot that does try pushes where the clang fetch task is changed to the latest revision. That avoids duplicating the test definitions, and would let us filter on that bot's username to see the history of pushes from one day to the next. I am not sure how much harder this would be than your proposal though.

I guess neither of us has mentioned tests explicitly, so for completeness I'll share my position here. In my experience, the bulk of the effort dealing with "clang N+1" problems happens outside of basic builds. New -Werrors (for example) are pretty easy to deal with, versus the runtime problems are the trickiest to repro and debug, and would benefit the most from having a viewable history so that we can minimize bisect windows. So while builds alone would be a great step, in the long term I'd love to have a world where we get full test suite results on a regular basis.

I don't have a timeframe beyond '2020' but I will be working on a system that will be able to run try pushes with arbitrary sets of builds/tests bumping clang to trunk; as well as (if desired) filing bugs for breakage and patches to land clang bumps for a particular toolchain.

Bastien had mentioned having some experience with cron stuff also.

I have been doing that work for several years now on https://relman-ci.moz.tools/
So, I am 200% in favor of this.

Are we going to go tier 2 or 3?
What should the action in case of failure?

What about gcc too ? gcc is doing great work in term of warnings/errors detection (better than clang IMHO). In clang, most of the improvements are doing in clang-tidy.

(In reply to Sylvestre Ledru [:Sylvestre] from comment #5)

I have been doing that work for several years now on https://relman-ci.moz.tools/
So, I am 200% in favor of this.

Are we going to go tier 2 or 3?

What's the difference? If tier 2 means "Sheriffs look at it and file bugs but most developers won't be bothered" that's possibly okay, but I think we're going to expect it to permafail a lot (and possibly fix itself as upstream fixes bugs).

What should the action in case of failure?

I suppose filing a bug. If it just doesn't compile then we can probably ignore it. For things like new -Werrors we can fix them or disable at directory level and file follow ups. For ICE's we'd file upstream bugs. For test failures we'd need a lot of further analysis.

What about gcc too ? gcc is doing great work in term of warnings/errors detection (better than clang IMHO). In clang, most of the improvements are doing in clang-tidy.

I think we're focused on LLVM for now as it's our default compiler toolchain, but ideally whatever we get in place could be a template for testing GCC release branches as well.

(In reply to Eric Rahm [:erahm] from comment #6)

What's the difference? If tier 2 means "Sheriffs look at it and file bugs but most developers won't be bothered" that's possibly okay, but I think we're going to expect it to permafail a lot (and possibly fix itself as upstream fixes bugs).

(Assuming we're talking about cron jobs getting added to random developers' pushes) I don't want sheriffs to file bugs "against" a certain changeset that wasn't at fault, developers shouldn't think they need to spend time investigating those.

Bug 1703483 addressed comment 0, let's recycle this bug for the upcoming extended version of this, where we setup a separate branch to run the same things as central using clang-trunk.

Depends on: 1767919, 1768094
Depends on: 1768099
Depends on: 1768568
Depends on: 1768572
Depends on: 1768995
Depends on: 1768996
Depends on: 1768997
Depends on: 1768999
Depends on: 1769001
Depends on: 1769003
Depends on: 1769011
Depends on: 1769151
Depends on: 1769153
Depends on: 1769173
Depends on: 1769174
Depends on: 1769178
Depends on: 1773210
Depends on: 1773221
Depends on: 1774526
Depends on: 1774536
Depends on: 1781968
Depends on: 1783374
Depends on: 1783798
Depends on: 1783799
Depends on: 1784172
Depends on: 1784171
Depends on: 1784185
Depends on: 1784186
Depends on: 1784189
Depends on: 1784191
Depends on: 1784193
Depends on: 1784205
Depends on: 1784210
Depends on: 1786761
Depends on: 1789346
Depends on: 1790918
Depends on: 1791454
Depends on: 1791475
Depends on: 1791476
Depends on: 1791480
Depends on: 1791481
Depends on: 1791713
Depends on: 1794074
Severity: normal → S3
Depends on: 1795186
Depends on: 1797406
Depends on: 1797653
Depends on: 1797395
Depends on: 1798431
Depends on: 1799792
Depends on: 1799816
Depends on: 1800150
No longer depends on: 1789346
Depends on: 1801029
Depends on: 1801041
Depends on: 1806001
Depends on: 1806051
You need to log in before you can comment on or make changes to this bug.