[Libreoffice-commits] core.git: Changes to 'private/jmux/wasm-tmp'

Jan-Marek Glogowski (via logerrit) logerrit at kemper.freedesktop.org
Mon Jan 25 14:02:37 UTC 2021


New branch 'private/jmux/wasm-tmp' available with the following commits:
commit a95c3d04f45d17f3b575834cfba2c42770c2319e
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Mon Jan 25 15:00:53 2021 +0100

    catchall
    
    Change-Id: If41abaa40cf6aef38400083d3afa3d82d446df43

commit eb1f9004e7c822b892416f4b99353a83b528da5b
Author: Thorsten Behrens <thorsten.behrens at allotropia.de>
Date:   Sun Jan 24 23:54:02 2021 +0100

    Get debug builds working
    
    - source maps really don't like SAFE_HEAP=1
      (c.f. https://github.com/emscripten-core/emscripten/issues/8584)
    - get OptFlags passed on consistently while at it
    
    Change-Id: I7d234de6b069877a558a2f3c7ab9dd5398d18ef2

commit 8c1f66ca64e0aafc30d1b5de398c9a6d92d7de1e
Author: Thorsten Behrens <thorsten.behrens at allotropia.de>
Date:   Sun Jan 24 22:29:38 2021 +0100

    Make qt5 src download options explicit
    
    Change-Id: Id2e78f71e10b8736cb03e42b1d0ad52c851cadd3

commit 2b95bc9c99cbad6521c1f7bc90f47fa2dc782088
Author: Thorsten Behrens <thorsten.behrens at allotropia.de>
Date:   Sun Jan 24 22:28:47 2021 +0100

    Change order of qmake search
    
    Otherwise we'd find local, non-emscription installation before
    the QT5DIR-provided one
    
    Change-Id: I956431c3433932adf1bee04ff8ce1cadfa0a4d81

commit fb08e5d27cfb4dd990bb2e3a607a166ab3ebf6f6
Author: Thorsten Behrens <thorsten.behrens at allotropia.de>
Date:   Sat Dec 19 22:50:49 2020 +0100

    Hack out vs-code config.in
    
    Change-Id: If3b9a9684f43ffaeaebbccd1545e168d6b5f74b4

commit a1b9c7f733fa2fea76d4ac128f49618cff65282e
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Sat Jan 9 13:41:18 2021 +0100

    Enable some more tests and demos for static builds
    
    Change-Id: I6372cd33db2fb72d417ca483d1324fca6947e077

commit b26d33a15e716c3bfe8f8a18dae20660398dfa4d
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Dec 29 11:49:50 2020 +0100

    Add a static components library
    
    This adds all component implementing libraries as dependency to a
    new components library, which otherwise just contains the "native"
    code with the mapping of the component constructors.
    
    Since there is no way to know, which components are actually used,
    this has to include all build components.
    
    The components lbrary is automatically added to all users of
    cppuhelper, which contains the calls to the mapper functions of the
    generated "native" code.
    
    Change-Id: Ie78af06c3325c0f58226a4c4da85a1d64fb45dc6

commit 494c38902c1d0e476ae2d6964df12bec7d557b54
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Dec 29 11:40:44 2020 +0100

    gbuild: handle Executable(s) for static build
    
    See the (large) comment in solenv/gbuild/static.mk trying to
    explain, why this implementation was chosen (spoiler: seems
    there is no other way) and what is actually implemented. Yes,
    I also think it's borderline maintainable (like gbuild in
    general; complexity clashing with make "restrictions"). Feel
    free to propose / implement anything easier, except expanding
    the bin/lo-all-static-libs "concept" ;-)
    
    Change-Id: Iceb73c05b163affc4385fd4f8f0f5a2ecb55b004

commit 27eedf9d572fdbfef4c222e4ea15fcdfabf3533a
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Dec 29 11:42:30 2020 +0100

    gbuild: introduce plugin (loader) concept
    
    This introduces two concepts: a plugin and its loader (library)
    
    LO currrently has dependency cycles for some libraries. There is
    scui, which depends on sc, while sc dlopen's scui. There are the
    various vclplug_* and the filters/gie libraries, which depends on
    vcl and vcl dlopen's them. While the dependcies of the plugins on
    their loader works fine, for static builds you must add a
    dependency from the loader to the plugins, which introduces a
    dependency cycle.
    
    I codeified a few rules into the build system along with it:
    * just plugins are allowed to depend / link other plugins
    * plugins aren't allowed to be linked into the merge lib
    * plugin loaders are "limited" to libraries
    
    At the high level, this is implemented via two new gbuild calls:
    * gb_Library_set_plugin_for,lib,loader: declare a library to be a
      plugin of a loader library
    * gb_Helper_register_plugins_for_install: "plugin" replacement for
      gb_Helper_register_libraries_for_install to implement some
      additional checks in the build system
    
    For the shared build, nothing changes. gb_Library_set_plugin_for is
    just forwarded to gb_LinkTarget__use_libraries.
    
    P.S. Android and iOS don't build their "executables" using gbuild,
    but call bin/lo-all-static-libs to "let the linker figure it out".
    
    P.P.S. the static handling isn't implemented in this commit, as it
    turned out to be (very) much more complex.
    
    Change-Id: I7b01d9c384cbc5838bd2cc93aff18e4868939d6e

commit 9d3ea15c4fff16c017a60102f73f22801ed2183c
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Thu Dec 31 00:25:16 2020 +0100

    WASM: link Writer native-code
    
    Change-Id: Ic475e2a9c5c9f493eb1b897dc8356aed5523037d

commit f739eff2c704d2b6a7c7d953db459d4b3e2218c2
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Dec 29 11:57:02 2020 +0100

    Drop some duplicate code
    
    Change-Id: Iff627d34774d495bec9ebe5c499dd0fd43a1d819

commit b48a98698fc34b784c8c791eda33d20638421a0f
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Thu Dec 24 22:47:22 2020 +0100

    WASM encode some more fixed configure options
    
    ... and update README.wasm
    
    Change-Id: Id4b8499dc2154466036f39150386d575a348a3ef

commit 565a6ccf56fa1ca7c0f2bb71896abfe7db6946fd
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Fri Jan 8 12:37:06 2021 +0100

    WASM use Qt qtloader.js and html template
    
    The emscripten generated one doesn't work, probably because of
    qtloader.js.
    
    Change-Id: I402d20d0175130ce3b26a9d998661fd66f5806a1

commit 198218f3132efca70aac5482c9f2493004bb51b1
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Dec 22 12:47:03 2020 +0100

    WASM build mandelbrot Qt example via gbuild
    
    All the flags are copied directly from the qmake example. The
    emscripten HTML doesn't work, but copying the Qt HTML and the
    qtloader.js correctly runs the example in the browser.
    
    This is all a bit messy, but it is mainly a know working app
    to verify any WASM development at this point, so we know the
    Gbuild configuration can build a WASM application.
    
    Change-Id: I1e5fcc64f452d524192f4ea6d975aafafbb9f5bb

commit 997cae70849181374f849f6b8e19ce4271415f17
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Dec 22 12:47:03 2020 +0100

    Refer from README.md to README.wasm
    
    Change-Id: I1e5fcc64f452d524192f4ea6d975aafafbb9f5bb

commit c92efefcee154e8e295e1a18c4a19514938e79e8
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Tue Dec 22 10:58:27 2020 +0100

    Make builds without patching emscripten
    
    Ok - the last patch for emscripten was broken too. This is almost
    a "brown paperbag" bug for me now ;-(
    
    With this commit, no more patching for emscripten should be needed.
    
    There is a workaround in sc/source/core/data/attarray.cxx, which looks
    like a compiler bug (see README.wasm).
    
    Change-Id: Ife4d9089177bc31463a7636674411a2cf0e64d87

commit e0b5e2d4c3050b5285884ba725d630411bfaeedd
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Mon Dec 21 17:31:23 2020 +0100

    Catchall again
    
    As described, I think I found the origin of the problem with an
    emcc.py patch I wrote in the beginning to fix configure with cpp
    tests. This compiles LO up to some point in Calc with a template
    failure. I've made an extra patch from the galeries changes.
    
    The binary is essentially broken. While the alignment is checked
    by LO configure, the result instantly crashes with memory
    alignement errors somewhere. There seems to be a problem with
    inline Exceptions, so I just converted SvStreamEOFException to
    non-inline as a workaround.
    
    Change-Id: I3333a04cdb765da3efc4aa511e265a3863d5c9cd

commit 62b61d5586fc76b6874823a37728d9e9276bb8a7
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Mon Dec 21 02:01:35 2020 +0100

    The OpenSSL catchall
    
    I've read somewhere in the docs, that ccache usage is fine with
    Emscripten. This now builds the non-DESKTOP build, but activates
    some binaries, like the ui-previewer. I'm not sure yet, if I should
    build with or without DESKTOP.
    
    After enabling of exceptions, the ui-previewer now fails to link
    with "undefined symbol: typeinfo for SvStreamEOFException". And I
    found "make vcl.all" doesn't rebuild anything non-vcl, which I had
    assumed.
    
    Then this "toggles" DISABLE_OPENSSL to ENABLE_OPENSSL, like all the
    other feature flags. And it builds xmlsec with openssl, but there
    isn't yet an openssl xmlsecurity backend.
    
    Change-Id: Ibcc944f27f2ce53bc24e6605669b6593fd5e93c3

commit f1cd33d917d01bcc24a28c4c2b56883b2f7358e1
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Sun Dec 20 12:00:17 2020 +0100

    Drop cairo debugging stuff and update README.wasm
    
    Change-Id: Ica8e115ee19c7777f520fe2c41a88efa07de8b13

commit 53565fef5e2b230ffb6bd23b19e87e834bd14ca7
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Fri Dec 18 16:44:29 2020 +0100

    Next catchall
    
    Before my rebase, this used to link a ui-previewer "executable".
    I have this major problem with the static linkage of the binary,
    which now has to list ~150 dependencies.
    
    While it linked withhout any more symbol errors, it (obviously)
    won't run, because the LO mainloop can't drive the browser
    mainloop.
    
    It currently fails in cairo with pthread detection, which did
    somehow work before. Also exception handling isn't yet correctly
    supported in the build - I think of providing an emscripten
    settings.js instead of adding the info to all external builds.
    
    Change-Id: I757634bb2f819022e537f3f4dd55ddabdc742454

commit 13806e494e9bfb06fd37ab7da95b9a37af4abe5e
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Wed Dec 16 02:08:15 2020 +0100

    Next catchall
    
    This is the "fail to link vcl/Executable_ui-previewer" commit. I
    was hoping to link this executable this evening, but there are
    some remaining mysteries to solve.
    
    I'm missing bridge functions, pcre2 (seems to be from boost regex,
    somehow?), the constructor lists from native-code.py and generally
    still broken dependencies.
    
    What does work is the linking of the Qt5 WASM library, after I
    re-build it inside my chroot, as my Debian has glibc 2.28, while
    my Ubuntu 18.04 chroot has 2.27, so all the native tooling
    wouldn't work. But no new build failures, so just some time.
    
    One main problem is the static linking of executables. For so,
    you have rpath and dependencies, which will get all the correct
    dependencies, but this exists for static archives. I still had
    to fix many externals with -pthread, so growing that list took
    a while anyway, but eventually this should and could be done
    by gbuild. Question is, how hard is it to implement.
    
    I don't know if sal/osl/unx/system.hxx is correct at all, but
    at least it compiles.
    
    I tried to update the REAME with all new infos I find.
    
    Change-Id: I64ecd4f923296eb4aeb42ff4b114c87b58503962

commit f9f992a1b3cf4d00610e93c9eb9efdf0e5d3263a
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Fri Dec 11 17:27:59 2020 +0100

    WASM catchall commit
    
    The current state is incompatible with upstream, especially the
    emconfigure change.
    
    Please also read README.wasm
    
    Change-Id: I668b4128491c467b94ea1c13ee695b08dce32968



More information about the Libreoffice-commits mailing list