Support non-unified builds via configure
Categories
(Firefox Build System :: General, enhancement)
Tracking
(Not tracked)
People
(Reporter: jorendorff, Assigned: jorendorff)
References
Details
Attachments
(2 files, 1 obsolete file)
|
2.04 KB,
patch
|
sfink
:
review+
|
Details | Diff | Splinter Review |
|
2.59 KB,
patch
|
Details | Diff | Splinter Review |
| Assignee | ||
Comment 1•8 years ago
|
||
Comment 2•8 years ago
|
||
Comment 3•8 years ago
|
||
| Assignee | ||
Comment 4•8 years ago
|
||
Comment 5•8 years ago
|
||
| Assignee | ||
Comment 6•8 years ago
|
||
| Assignee | ||
Comment 7•8 years ago
|
||
| Assignee | ||
Updated•8 years ago
|
| Assignee | ||
Comment 8•8 years ago
|
||
| Assignee | ||
Comment 9•8 years ago
|
||
Comment 10•8 years ago
|
||
Comment 11•8 years ago
|
||
Comment 12•8 years ago
|
||
Updated•8 years ago
|
Comment 13•8 years ago
|
||
| Assignee | ||
Comment 14•8 years ago
|
||
Comment 15•8 years ago
|
||
Comment 16•8 years ago
|
||
| Assignee | ||
Comment 17•8 years ago
|
||
| Assignee | ||
Updated•8 years ago
|
Comment 18•8 years ago
|
||
| Assignee | ||
Comment 19•8 years ago
|
||
Comment 20•8 years ago
|
||
Comment 21•8 years ago
|
||
| Assignee | ||
Comment 22•8 years ago
|
||
Comment 23•8 years ago
|
||
Comment 26•8 years ago
|
||
Comment 27•8 years ago
|
||
Comment 28•7 years ago
|
||
May I ask a question. Why are unified builds different for Firefox and Thunderbird? We had two bustages recently and one a while ago caused by unified builds. Each time FF compiled, but TB didn't. Here are the fixes:
https://hg.mozilla.org/mozilla-central/rev/3aec75953c28 - 12 Jan 2019, adding one missing include.
https://hg.mozilla.org/mozilla-central/rev/c9a17c8a3c3f - 3 Jan 2019 (incorrect fix)
https://hg.mozilla.org/mozilla-central/rev/f612a041c69c - 4 Jan 2019 (correct fix), adding six(!) missing includes
https://hg.mozilla.org/mozilla-central/rev/c40ca7a1bdd9 - 9 Mar 2017, adding one missing include.
I know, TB doesn't have any tier status, but it's stressful for the TB maintainer to fix and fix the bustage, get review and approval to fix it on M-C directly. The last two occurrences happened on the 23:00 merge and it took until after midnight to get it sorted out. Surely other downstream projects are also affected, see bug 1345771 comment #15.
Personally I find it particularly, well, let's say, "inconvenient", that the M-C code base is in a broken state, that is, it only compiles under certain "lucky" circumstances and may break at any moment when those circumstances change. Surely there must be a way to detect this bustage before it lands, like yesterday, well, in the AM hours of today, I added WindowProxyHolder.h to a file using WindowProxyHolder, a symbol 100% unknown in that file.
Comment 29•7 years ago
|
||
s/fix and fix/find and fix/.
Comment 30•7 years ago
|
||
(In reply to Jorg K (GMT+1) from comment #28)
May I ask a question. Why are unified builds different for Firefox and Thunderbird?
This is a valid question. Usually the answer is that some files are only compiled in a certain configuration, which shifts the unification boundaries.
For your situation, you need to figure out (hopefully with assistance from build people) why there is a difference and eliminate it. Otherwise, you're always going to be fighting an uphill battle, even if we decide to make a tier 2 build (as I hope we will.)
Personally I find it particularly, well, let's say, "inconvenient", that the M-C code base is in a broken state, that is, it only compiles under certain "lucky" circumstances and may break at any moment when those circumstances change. Surely there must be a way to detect this bustage before it lands, like yesterday, well, in the AM hours of today, I added WindowProxyHolder.h to a file using WindowProxyHolder, a symbol 100% unknown in that file.
The code is not in a broken state, this sort of breakage is the expected result of our chosen method of compilation. The code is valid when compiled unified in the configurations that are tested in CI. It's not a lucky circumstance, it's a known situation. It's not unlike requiring a certain library's headers to build; without that library installed, and furthermore a compatible version of that library installed, your build will fail. The constraint of unification, though subtle and annoying, buys us a huge compilation speed win and so is totally worth it.
We have chosen to not detect this bustage before it lands, to remove that sort of nuisance overhead from developers. Even if we had a tier 2 build, we would say that it's ok to land stuff that breaks it. I imagine that m-c would stay more or less working if we had that build, though -- sheriffs would try to get people to fix it before merging.
If I were to try tracking your problem down, I would suggest first comparing all of your $objdir/**/Unified*.cpp files against those from a plain m-c build. (You'd have to strip off the leading portion of the absolute paths, though.) A build peer might just know what is likely to be the problem, though; perhaps setting the product (or whatever other configuration settings you use?) is enough to add in or remove some files. I recommend filing a bug on this to see what help you can get.
Comment 31•7 years ago
|
||
Thanks, I followed your suggestion and filed bug 1519936.
Comment 32•4 years ago
|
||
Good news, this seems to have been fixed elsewhere, in bug 1725125 and bug 1725145.
mozconfig option:
ac_add_options --disable-unified-build
Of course that would break the build if we really disabled unified mode everywhere right now, so many directories opt out of honoring this by setting REQUIRES_UNIFIED_BUILD in their mozconfig. But presumably the number of directories that have to do that will go down over time.
Comment 33•4 years ago
|
||
(So: if I'm understanding correctly, you can force a given directory to build in non-unified mode by (a) removing REQUIRES_UNIFIED_BUILD from that directory's moz.build file, and (b) putting ac_add_options --disable-unified-build in your mozconfig.)
Comment 34•4 years ago
|
||
Thanks Daniel for pointing to this original bug. Your comments are correct, also we have some autoland tasks that perform hybrid build.
Description
•