diff --git a/modules/ksb/ModuleSet/Qt.pm b/modules/ksb/ModuleSet/Qt.pm index d9233ec..4452f6a 100644 --- a/modules/ksb/ModuleSet/Qt.pm +++ b/modules/ksb/ModuleSet/Qt.pm @@ -1,63 +1,63 @@ package ksb::ModuleSet::Qt 0.10; # Class: ModuleSet::Qt # # This represents a collection of Qt5 source code modules that are collectively # kept up to date by Qt's init-repository script. This module set is -# essentially uses to make sure that generated ksb::Modules use proper scm() +# essentially used to make sure that generated ksb::Modules use proper scm() # and buildSystems() # # Use of this module-set is controlled by the 'repository' option being set to # the magic value 'qt-projects', just as 'kde-projects' is used for KDE. use strict; use warnings; use 5.014; use parent qw(ksb::ModuleSet); use ksb::BuildContext; use ksb::BuildException; use ksb::BuildSystem::Qt5; use ksb::Debug; use ksb::Module; use ksb::Util; sub _makeQt5Module { my $self = assert_isa(shift, __PACKAGE__); my $ctx = assert_isa(shift, 'ksb::BuildContext'); my $newModule = ksb::Module->new($ctx, 'Qt5'); $self->_initializeNewModule($newModule); # Repo URL to the Qt5 "supermodule" that contains the documented # init-repository script. # See https://wiki.qt.io/Building_Qt_5_from_Git $newModule->setOption('repository', 'https://code.qt.io/qt/qt5.git'); $newModule->setScmType('qt5'); $newModule->setBuildSystem(ksb::BuildSystem::Qt5->new($newModule)); # Convert the use-modules/ignore-modules entries into a form appropriate # for init-repository's module-subset option. my @modEntries = ($self->modulesToFind(), map { "-$_" } $self->modulesToIgnore()); $newModule->setOption('use-qt5-modules', join(' ', @modEntries)); return $newModule; } # This function should be called after options are read and build metadata is # available in order to convert this module set to a list of ksb::Module. # # In our case, we will return ONLY ONE MODULE. That module will handle "sub # modules" via the init-repository script so from kdesrc-build's perspective it # is handled as a single unit. # # OVERRIDE from super class sub convertToModules { my ($self, $ctx) = @_; return $self->_makeQt5Module($ctx); } 1; diff --git a/qt5-build-include b/qt5-build-include index 65c94a7..01e8ba3 100644 --- a/qt5-build-include +++ b/qt5-build-include @@ -1,20 +1,30 @@ module-set qt5-set repository qt-projects branch 5.13 # not the most recent but recent enough # init-repository supports catch-alls like "default" as well, in which case # you will want to uncomment ignore-modules below to control which modules to # leave out use-modules qtbase qtdeclarative qtgraphicaleffects qtimageformats \ qtmultimedia qtquickcontrols qtquickcontrols2 qtscript qtsensors qtsvg \ qttools qtwayland qtwebchannel qtwebsockets qtwebview qtx11extras \ qtxmlpatterns # ignore-modules qtwebengine # install path. This *MUST* match your qtdir setting in kdesrc-buildrc! prefix ${qtdir} configure-flags -optimized-tools -reduce-relocations # make-options -j7 end module-set + +# qtwebengine is essentially the Chromium Embedded Framework with Qt bindings +# and has source code of unusually large complexity for the compiler. +# TL;DR: This will eat a *ton* of RAM and can lockup your system if you have a +# lot of CPU cores. qtwebengine is disabled by default but if you enable it +# also ensure you don't outstrip your available RAM with too high of a +# parallelism (-j flag). +options qtwebengine + make-options NINJAFLAGS=-j4 +end options