The qtdir setting took on much less importance with Qt 5. We've never
officially supported building Qt 5 with kdesrc-build, and qmake and
cmake both use qmake or similar Qt-provided config information to find
Qt, rather than using the unsupported QTDIR environment variable.
As a result, default the value to an empty string (interpreted as use of
system Qt) and stop adding it automatically to the environment variables
defined during the build. If set, it will continue to be used for now.
This also helps the environment setup driver detect when it should look
for the system Qt5 qmake.
Noticed that some of the kf5-*-build-include files use multiple
ignore-modules declarations for a single module set. I like this, it
allows for commenting why the modules are being ignored. But it
shouldn't have worked before. Now it does.
I thought KF5 had removed /apps/ from the DATA_INSTALL_DIR, and so
adjusted the CMakeLists.txt install to match when it turned out my
module search paths were wrong. Turns out /apps/ is used, so put that
path and adjust module search paths instead.
This installs needed KDE-related environment settings without going so
far as to install .xsession support. For that, see
install-session-driver, whose documentation has been fixed to make clear
it's not a default.
The kde-env-user stuff is probably extraneous, users who will go through and
tweak the installed kde-env-master.sh script should be skilled enough to
already have their own .bashrc (or equivalent) and be able to setup their own
env vars prior to sourcing kde-env-master.sh
This also ports some of the Qt4/KDE4 stuff to Qt5/KF5, removes now-unnecessary
environment variable settings, etc.
This installs needed KDE-related environment settings without going so
far as to install .xsession support. For that, see
install-session-driver, whose documentation has been fixed to make clear
it's not a default.
It turns out that there is a code path where ksb::Module objects in the
process of being created do not have ModuleResolver::_applyOptions()
called on them to ensure that deferred options (from "options" blocks in
the config file) as applied if necessary.
This affected modules like libdbusmenu-qt, which if processed as part of
generating the build list from the config file would *NOT* have
_applyOptions() called (because expandModuleSets only ran this on
ksb::ModuleSets being expanded, and the resolveSingleSelector call that
otherwise would have run applyOptions is only called when modules are
passed as cmdline "selectors").
Fix by pushing _applyOptions to be called for all modules processed
through expandModuleSets (which despite the name gets a cut at every
module in the module list), and removing applyOptions from
resolveSingleSelector since it's redundant now.
BUG:382172
FIXED-IN:17.08
Basically, modules which are updated by default but not actually built
(e.g. due to using the manual-build option) are never mentioned in the
kdesrc-build output in the default async mode of operation.
This required a bit of refactoring of the IPC code to fix, since the
underlying cause is that the output during async mode is driven by the
needs of the build thread, which would request updates from the monitor
thread on a per-module basis. But the build thread never inquired about
modules only being updated, so any such modules were never mentioned on
the command line.
Though I admit that I don't yet fully understand why the bug was
present, this seems to fix the use of options like --src-only. There was
an actual bug here: command line options are supposed to override
rc-file options by default, so the call to update the global context
object's options had to happen after the rc-file options were read.
Whatever *this* the problem was, it appears to have been related to
either the generation of the list of potential modules, or the filtering
of that list aftewards.
If other problems are encountered please reopen.
BUG:370534
FIXED-IN:16.11
The XML file is not needed anymore, and is no longer downloaded.
But there's a regression with bug 307694 (stripping out modules not in
the branch group) if left this way. However the port to the new project
management framework should also solve that.
Could be confused with the kde_projects.xml stuff I'm about to rip out
-- this part of the code is needed for dependency resolution, not
project enumeration.
In other words, we separate parsing of options blocks from whether
existing modules or module-sets have already been seen. Instead we
decide later (when expanding module-sets or modules) whether there are
any relevant options blocks to apply (this is the 'deferred option'
handling).
Now you should be able to declare options blocks that contain options
appropriate for module-sets, even if no module-set is defined with that
name (e.g. if you're doing weirdness with 'include' declarations).
This does require that you don't use the same name for modules and for
module-sets, but that is essentially already a requirement anyways.
There's no good way to always disambiguate that.
BUG:366594
FIXED-IN:16.10
This is intended to split off idea of reading cmdline options to apply
from the idea of reading 'options' blocks to later apply. Right now the
processing for both are intermingled.
This is to allow for reading in "options" blocks that may apply to
module-sets later, even if the needed module-set hasn't been read-in yet
(e.g. if it's contained in a common file meant to be included in some
but not all configurations).
To do this right we need to decouple the actions of reading options and
then later applying them to the various OptionsBase subclasses. This is
a start toward that.
This change tries to ensure that modules and module-sets do not have the
same names.
However this doesn't quite work yet -- an option block for a module-set
must meet all requirements for module-sets, including repository
declaration, use-modules, etc. A subsequent patch will refactor that to
fix.
When a configure.ac or configure.in file exists in the source
dir but no configure file and an autogen.sh script exists this
will now run ./autogen.sh in the source dir to hopefully
create the configure file and then use that in the actual configure
step.
This is required for all GnuPG Libraries and so also for GPGME.
REVIEW: 129070
The backend side was broken during the upgrades to git.kde.org and
svn.kde.org so let's just skip needless error messages for our users
until this whole thing blows over.
This makes it more convenient to work with baseline configurations (that
are 'include'd) without changing the upstream configuration.
Still to do: add a warning when modules and module-sets end up sharing
the same name somehow.
BUG:365813
FIXED-IN:16.08
Before:
"Don't use module libaccounts-qt on line 20 of /path/kdesrc-buildrc, use options libaccounts-qt"
but line 20 is unrelated, some global option.
After:
"Don't use module libaccounts-qt on line 20 of /path/extragear/utils/kdesrc-build/kf5-workspace-build-include, use options libaccounts-qt"
REVIEW: 127910
This still takes too long for most shell shortcuts, but will make it
possible to do things like setup shell functions to cd right to a build
dir based only on a module name, check for which git branch a module is
resolved to, or see what config file options a module ended up falling
under.
As part of the documentation changes, I also ported the docs to KF5.
JSON::PP is included in core Perl so one less dependency to look after,
and it's fast enough (for what we need) that there's really no point to
making it possible to look for JSON::XS.
This has the nice side effect of (finally) making KDEXMLReader free of
per-class global state (I keep forgetting Perl supports closures...),
but mostly this is to keep pace with the way we're using the source
repositories and grabbing potentially many dozens of modules at once
from the XML data. Better to just read it once and query rather than
parse anew for each and every set of queries.
The docs have been at docs.kde.org for a long time, now they're the one
and only recommended location. But I forgot to update the URLs
referenced by the script itself. :(
BUG:357162
FIXED-IN:16.01
As opposed to only kde-projects modules also present in the rc-file.
E.g. this rc-file
---
global
branch-group kf5-qt5
end global
module-set
repository kde-projects
use-modules plasma-desktop
include-dependencies true
end module-set
---
...still lists 83 modules to build if you run kdesrc-build.
We also needed to ensure that each module generated by user selectors
knows to propagate the 'needs dependencies' flag.
Commit 480f184 added a reference to the calligra module to get
lxr.kde.org to make calligra symbols available. However this also pulled
in other modules since kdesrc-build will normally take each entry in
use-modules as a virtual project path to dereference. For instance this
makes it possible to get all KDevelop-related modules by declaring
"use-modules kdevelop".
When this syntax is ambiguous (as it is for kdevelop and phonon) you
could normally do what you wanted by being more specific, using
declarations like "kdevelop/kdevelop" or "phonon/phonon".
However calligra.git is a top-level entry in the virtual project
hierarchy, so something like "/calligra" would still match calligra.git
(at /calligra) and krita (at /calligra/krita).
So, add Yet Another Syntax to allow for specifying a specific git
module while still taking advantage of the special kde-projects
niceties for module-sets. If you specify "foo.git" in a use-modules
entry, kdesrc-build will treat the module as if you'd asked for "foo",
but will not try to do any further searching for other modules in the
virtual project hierarchy.
CCMAIL:faure@kde.org
Now we describe up-to-date module progress (if multiple modules are
being built) and consolidate muliple lines of information into just a
couple (for build and install).
This option can be used to setup the user.name and user.email git-config
options within each new git repository cloned or installed from
snapshot, including kde-projects repositories. This can be useful for
KDE developers with multiple Git identities that they use for
development.
Module settings override global settings so you could e.g. have a global
git-user option for KDE modules and then override specific modules or
module-sets with a different git-user setting.
This setting is only applied during the initial git-clone process
though... if there's interest in having kdesrc-build re-apply settings
later that's possible too.
BUG:352478
FIXED-IN:15.09