On 16.02.20 15:33, Luboš Luňák wrote:
Hello,
I've pushed https://gerrit.libreoffice.org/c/core/+/88754 , which allows
viewing what actually happens during building. Exact instructions are in
https://cgit.freedesktop.org/libreoffice/core/tree/solenv/gbuild/Trace.mk .
At http://ge.tt/9z4s0J13 I've uploaded a trace
of './autogen.sh --enable-dbgutil --disable-java && make' Windows build on 16
HT core Ryzen 7 that takes about 70 minutes, viewable using the
chrome://tracing URL in Chromium.
A couple of observations:
- The build gets to building actual LO sources only after half the build time.
This means that the default of building most externals ourselves is kind of
silly, especially on Windows without ccache. It would make sense to have
some --with-system-libs=auto which would try to use as much system stuff as
possible and print a summary, and --enable-debug/dbgutil could default to it.
Even on Windows, e.g. python3 is an optional component installed by MSVC, I
don't know why we don't even try to use it.
the problem is that the MSVC's python binaries won't contain any patches
required for LO, and may be configured with a different set of optional
modules enabled... probably it's good enough to pass all the unit
tests, but i wouldn't bet on it. oh, and will it be built with debug
runtimes for --enable-dbgutil?
Norbert once added some support to gbuild for downloading "binary
tarballs" but i don't think anybody used it in years.
- About 9 minutes are spent building only nss and firebird, both apparently
doing -j1 builds, and nss blocks most of LO sources, and nss itself is
blocked by python3. IIRC somebody has already tried to do something about
these and didn't manage. Nss's build page says that the recommended build is
actually using some Mozilla build tool instead of autotools, has somebody
tried that?
there's a humongous patch in our gerrit to make it build in parallel
with make that really should be upstreamed because it would be quite
unmaintainable as LO downstream patch... and also NSS has grown a 2nd
build system using "gyp" in the meantime, which i don't know anything
about but would presumably introduce new build dependencies.
https://gerrit.libreoffice.org/c/core/+/74751/70
- Unittests in dbgutil take as much as half the time it takes to compile .cxx
sources (not counting externals not built by gbuild). It could make sense to
revisit using -O1/-Og, at least for Jenkins builds. Also, now that we do have
jenkins would very likely benefit from -Og with few if any downside.
Jenkins builds, maybe finally plain 'make' could be sensible and not run
tests all the time.
i have never liked the number of tests that are run via "make",
particularly since the vast majority of them are not unit tests, but
integration tests. i'd like to move all integration tests to "make
subsequentcheck", but a previous attempt at that found 2 problems:
* most jenkins builders only run "make" and not "make check"
* it introduced an additional delay while linking the serialized large
libraries where currently some integration tests run in parallel (this
would require some tweaks to avoid)
https://gerrit.libreoffice.org/c/core/+/31075
Context
Re: Tracing where build time is spent · Jan-Marek Glogowski
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.