WIP: Add support for building Qt5 modules.

Authored by mpyne on Jan 13 2019, 2:01 AM.

Description

WIP: Add support for building Qt5 modules.

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. :)

Details