Skip to content
  • Michael Pyne's avatar
    Add support for building Qt5 modules. · 11490810
    Michael Pyne authored
    This commit adds basic support for building Qt5 using the Qt5 support
    documented at https://wiki.qt.io/Building_Qt_5_from_Git as requested in
    issue #16 (and a dependency for #15).
    
    Architecturally within kdesrc-build, Qt5 is handled as a special type of
    module-set, in the same way that KDE project modules are special-cased
    using 'kde-projects'. For Qt5, we use 'qt-projects', and reuse the
    existing use-modules and ignore-modules options.
    
    The first difference is that {use,ignore}-modules applies to Qt's git
    *submodules*. We pass the combination of those to Qt's `init-repository`
    script as a module-subset. Currently the user will need to enter at
    least a use-modules declaration for other reasons, so we would want to
    setup a sample qt5 configuration to include something appropriate.
    
    Qt5 support also involves a dedicated source code updater (based on the
    basic Git support already present) and a dedicated build system. The
    source code updater handles the Git update for the qt5 "supermodule"
    containing `init-repository` and then calls `init-repository` to
    complete the rest of the process.
    
    Unfortunately the existing async IPC code doesn't play well with this
    but the worst that happens is that kdesrc-build will have 2 updates
    running at once for a time (kdesrc-build will think all of Qt is updated
    once the supermodule is updated).
    
    The build system is actually fairly standard compared to the other
    changes.
    
    There's a lot that's still missing here, including:
    
    * documentation,
    * real support for Git submodules (an open feature request for a long
    time),
    * the per-distro list of Qt build dependencies not handled by
    kdesrc-build, and
    * support for things like Qt's `qt5_tool`.
    
    But, it's successfully built for me with Qt 5.12. :)
    11490810