Hi, (sorry for the late reply, I missed this mail) On Tue, Apr 16, 2013 at 12:32:13PM -0400, Kohei Yoshida wrote: > I'd say gbuild itself, compounded by some regular build breakage related to > ccache (particular if you use a combination of gcc-wrapper with ccache > directly specified in CC and CXX environment variables), and the very weird > handling of DLL's by MSVC. The slow build process on Windows didn't make > the whole experience any better.
Well, thats using ccache on MSVC? Thats indeed a tricky scenario and one I intentionally avoided during the initial concept of gbuild. The added complexity was just not worth the gains. Esp. if it introduces a single-point of failure "build system expert" that can handle that case. > 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. 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) - three-layer-office (now effectly two-layer office) a lot could be simplified by ridding ourselves of that madness - 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. Also note the old build system was a good example what happens if you encourage local ad-hoc trickstering instead of some global concept for a problem -- a huge unmaintainable mess of fragile stuff, that only works by accident. See: http://web.archive.org/web/20100504161204/http://blogs.sun.com/GullFOSS/entry/why_some_compilers_suck_more or the fact that it had at least four stacked different methods to declare a symbol as exported (that all had fucky interactions with each other, sometimes resulting in different exports on different platforms). 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(*). Like every system gbuild will bitrot and in 5-10 years someone will come along and rewrite the whole mess in a fresh attempt that then hold on for another 10 years. Your best bet to prevent such a 'we need to rewrite it again'-event from happening too soon, is to help preventing bitrot, contribute to maintainance of gbuild and have a good insight in the tradeoff of adding yet-another-feature to gbuild (esp. localized micro-optimizations). > Skipped? I don't use gerrit for things that need to be done right away. Why not? > Putting that up on gerrit and wait for a few days or more was never an option > for this. Why wait a few days? If you ping any of us on IRC, you get a build started on all platforms ~instantly(*). And most certainly in the two days you wrote you worked on this. Best, Bjoern (*) And the core to understand is the 1KLOC solenv/gbuild/LinkTarget.mk (**) And once we have the Windows builders in place you wont need that anymore. _______________________________________________ LibreOffice mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice
