&kde; modules and source code organizationThe Module&kde; groups its software into modules of various size.
This was initially a loose grouping of a few large modules, but with the
introduction of the Git-based source code repositories, these large
modules were further split into many smaller modules.
&kdesrc-build; uses this module concept as well. In essence, a
module is a grouping of code that can be downloaded, built,
tested, and installed.
Individual modulesIt is easy to set &kdesrc-build; to build a single module. The following
listing is an example of what a declaration for a Git-based module would
look like in the configuration
file.
module kdefoo
end module
This is a Git-based module since it doesn't use a repository option. Also, the
option is listed as an example only, it is not
required.Groups of related modulesNow most &kde; source modules are Git-based &kde;, and are normally
combined into groups of modules.&kdesrc-build; therefore supports groups of modules as well, using
module sets. An example:
module-set base-modules
kde-projects
kde-runtime kde-workspace kde-baseapps
end module-set
You can leave the module set name (base-modules
in this case) empty if you like. This setting tells
&kdesrc-build; where to download the source from, but you can also use a
git:// URL.One special feature of the kde-projects is that &kdesrc-build; will
automatically include any Git modules that are grouped under the modules you
list (in the KDE Project database).Module branch groupsTaking the concept of a group of
modules further, the &kde; developers eventually found that
synchronizing the names of the Git branches across a large number of
repositories was getting difficult, especially during the development push for
the new &kde; Frameworks for &Qt; 5.
So the concept of branch groups was developed, to allow
users and developers to select one of only a few groups, and allow the script
to automatically select the appropriate Git branch.
&kdesrc-build; supports this feature as of version 1.16-pre2, via the
branch-group option.
Example of using branch-groupbranch-group can be used in the configuration file as follows:
global
# Select KDE Frameworks 5 and other Qt5-based apps
kf5-qt5
# Other global options here ...
end global
module-set
# branch-group only works for kde-projects
kde-projects
# branch-group is inherited from the one set globally, but could
# specified here.
kdelibs kde-workspace
end module-set
# kdelibs's branch will be "frameworks"
# kde-workspace's branch will be "master" (as of August 2013)
In this case the same branch-group gives different
branch names for each Git module.
This feature requires some data maintained by the &kde; developers in a Git
repository named kde-build-metadata, however this module
will be included automatically by &kdesrc-build; (though you may see it appear
in the script output).
&kde; modules that do not have a set branch name for the branch
group you choose will default to an appropriate branch name, as if you had not
specified branch-group at all.