On 21/04/13 12:33, Bjoern Michaelsen wrote:
On Tue, Apr 16, 2013 at 12:32:13PM -0400, Kohei Yoshida wrote:
Having said that, if I were to point out one major concern with the current
build system is that we are creating so many layers of abstractions,
indirections just to make the system more "elegant" that, it's becoming
increasing hard for non-build system experts to do anything non-trivial.
So, for a non-build system expert such as myself, the choices are either 1)
don't do anything non-trivial, such as integrating an external library into
the build, or 2) become a build expert yourself.
well... all of the abstractions in gbuild don't help much for external
libraries. the abstractions expect the build targets to follow certain
conventions, and in many cases enforce such conventions, but external
libraries are not under our control and don't conform to any sort of
conventions, especially on Windows.
so for external libraries something like gbuild actually doesn't offer
any benefits; you need to fit the external build into the conventions
imposed by gbuild (such as dependencies for everything and namespacing
issues) but don't get much benefit from that because every external is
unique in its own way. the only reason why we build externals with
gbuild is that we don't want to have yet another build system for them.
I think there are two thing to discuss here: One is the common assumption that
building LibreOffice on multiple platforms is trivial, and the complexity is
there only for some misguided "elegance". Its not. Its an inherently complex
problem. And I dont think having some layers of abstraction is a problem per
se. A lot of the mindnumbling complexity of gbuild is because:
- it had to stay compatible with the dmake/solver concept
(we can rid ourselves of that now it is completely gone, modulo scp2 madness)
fortunately the de-construction of solver is already in progress :)
- three-layer-office (now effectly two-layer office)
a lot could be simplified by ridding ourselves of that madness
hmmm... i'm not sure if a one-layer office is really that much simpler
than a 2-layer one... mostly the difference is just a bunch of different
RPATH mappings on unixes.
- platform-specific optimizations that are not completely transparent
(this esp. is an issue for windows)
We killed the first. I hope we can kill the second someday. The third is the
reason for my reluctance for having support in the build system for bazillion
build scenarios in gbuild (like LLVM, mingw, Android, ccache on Windows, PCH on
Windows) -- all of which add complexity to the build system and many having
only a very small group supporting that functionality introducing fragility and
frustration. Thats warranted when the platform is of strategic importance, but
e.g. even with the build time improvements PCH give, I am still unsure if its
worth the complexity and fragility it introduces.
i definitely think that PCH is worth its weight given how significantly
it speeds up MSVC builds. without PCH we would probably be talking
about needing 20 windows tinderboxes for gerrit, not 10.
Finally, let me encourage you to become/stay a 'build expert' yourself at least
to the point that you can judge if adding yet another feature/scenario to the
build system will introduce new complexity(*).
meh... we can't demand everybody become a build expert :)
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.