Closed
Bug 589148
(require-libxul)
Opened 14 years ago
Closed 14 years ago
Tracking for removing shared build options (--disable-libxul)
Categories
(Firefox Build System :: General, enhancement)
Firefox Build System
General
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: khuey, Unassigned)
References
Details
After Gecko 2.0 we want to drop support for shared builds. That is, the only build options will be libxul builds (the Firefox way) or static builds (the Thunderbird way). This bug will be used to track what needs to happen before we can do that without significant pain.
Comment 1•14 years ago
|
||
IIRC, we have a few binary tests that currently only build/run with shared builds (xpcshell thankfully works with libxul nowadays, so other tesat suites are not affected). Also, we really should remove support for all non-libxul-based builds. Fully-static should also only be allowed in a way that does some libxul-based system. Current --enable-static is less static than libxul in some ways and a number of core features are made to be only built when libxul is on, so we should go the full way there. Thunderbird and SeaMonkey will be libxul-based in some way soon anyhow, the ideas for non-classic libxul things go around ideas from ted and taras about "fat libxul" or linking libxul into the main app executable or such things, but at its core will be libxul-based building. Also, current --enable-static basically defies any automated testing with our suites whatsoever (i.e. no xpcshell, which is even a requirement for mochitests, etc.) so we really want to get rid of that anyhow, as it would be really nice to be able to run tests on release builds.
Reporter | ||
Comment 2•14 years ago
|
||
(In reply to comment #1) > IIRC, we have a few binary tests that currently only build/run with shared > builds (xpcshell thankfully works with libxul nowadays, so other tesat suites > are not affected). This is correct. Those tests will be dead.
Comment 3•14 years ago
|
||
(In reply to comment #2) > This is correct. Those tests will be dead. OK, we'll just will need to make sure to hunt them down and kill them, either here or in a followup. :)
Comment 4•14 years ago
|
||
(In reply to comment #2) > (In reply to comment #1) > > IIRC, we have a few binary tests that currently only build/run with shared > > builds (xpcshell thankfully works with libxul nowadays, so other tesat suites > > are not affected). > > This is correct. Those tests will be dead. I think we should have a (separate) bug about figuring out how to make them work in a libxul world, since they're probably useful, but not at the moment.
Reporter | ||
Comment 5•14 years ago
|
||
(In reply to comment #4) > (In reply to comment #2) > > (In reply to comment #1) > > > IIRC, we have a few binary tests that currently only build/run with shared > > > builds (xpcshell thankfully works with libxul nowadays, so other tesat suites > > > are not affected). > > > > This is correct. Those tests will be dead. > I think we should have a (separate) bug about figuring out how to make them > work in a libxul world, since they're probably useful, but not at the moment. I tend to lump this into the general category of "lets make c++ unit testing not suck" (which probably deserves a bug).
Comment 6•14 years ago
|
||
Note that the current thunderbird static builds will also be broken, because they still have a separate xpcom_core. They will need to modify their build config so that xpcom_core is linked into whatever big binary they produce (binary or sharedlib).
Reporter | ||
Comment 7•14 years ago
|
||
I realized this morning that in a world where we drop intermediate static libs and link object files directly compiled tests will once again be able to see all of the symbols of interest, so these tests will actually not die but will come back to life. It will also be much easier to write compiled tests.
Comment 8•14 years ago
|
||
I really don't understand what that means: you'd still have to link all of libxul to the compiled tests, whether it comes in static-library form or objects-as-fake-static-library form.
Reporter | ||
Comment 9•14 years ago
|
||
Is there a serious reason not to just make a non-libxul build configuration default to public symbols? That seems to solve all of the pain of keeping it around.
Comment 10•14 years ago
|
||
On Linux and maybe mac, it's possible, but I'm not sure it's worth it: You'd have to get rid of -z,defs (or link all possible libraries together to resolve symbols, but if you have A->B B<-A dependencies, even that won't work). You probably need to still make the components be "real libraries", not XPCOM components. On Mac, you might need to disable two-phase namespace resolution.
Reporter | ||
Comment 11•14 years ago
|
||
(In reply to comment #10) > You'd have to get rid of -z,defs (or link all possible libraries together to > resolve symbols, but if you have A->B B<-A dependencies, even that won't work). Ah, I'd forgotten about that. That approach isn't going to be work then.
Updated•14 years ago
|
Alias: libxul
Updated•14 years ago
|
Alias: libxul → require-libxul
Reporter | ||
Updated•14 years ago
|
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Updated•7 years ago
|
Product: Core → Firefox Build System
You need to log in
before you can comment on or make changes to this bug.
Description
•