kdesrc-build release 1.14
kdesrc-build 1.14 had 185 commits from 8 authors from the prior release (1.13). The changes are summarized below:
References to qt-kde in the qt-copy module should be replaced by qt. The 'qt-kde' module no longer exists in the KDE project database. This change has already been made to the qt-copy module in the sample configuration file.
There is a new on-disk layout for source and build directories for modules that come from the KDE project database (i.e. that use repository kde-projects). To avoid needless re-cloning and re-building, kdesrc-build will automatically move old source and build directories for affected modules the first time they are updated or built.
The new layout is designed to reflect the logical database layout. As an example, kdesrc-build would be checked out to source-dir/extragear/utils/kdesrc-build to reflect its layout in the project database, while kdelibs would be checked out to source-dir/kde/kdelibs.
Code removal/consolidation by using Perl core modules where feasible. The minimum Perl version required is 5.10.1.
A manpage for kdesrc-build was added. If you install kdesrc-build yourself don't forget to add the KDE man pages directory to your MANPATH, or tell CMake to install your KDE man pages to a directory in your MANPATH.
A simplistic script called kdesrc-build-setup has been added to generate a (very) simple configuration file for you. The resultant configuration file is not nearly as commented as the sample configuration file, but it will at least get you started if you have no existing configuration file. The script can (and in fact must) be run from the command line so that you can use it to configure kdesrc-build as long as you can run kdesrc-build itself.
Git supports user-defined URI schemes to find repositories over the network. The KDE system administrators have a recommended 'kde:' URI scheme, which kdesrc-build will automatically define for you if you do not already have it set. The sample configuration file uses the 'kde:' URI for modules that do not come from the KDE project database.
There is a syntax (module-name/*) which you can use in a use-modules option to build all modules descending from a given module, without including the parent. This might be useful if the parent module has a source code repository of its own only to build its child modules (which kdesrc-build will already do, so the parent module is not needed). Normally such parent modules are marked inactive in the project database, without this change kdesrc-build will ignore that module (and its children!). This syntax is only supported for the kde-projects repository.
As an example:
module-set kdegraphics repository kde-projects # We cannot build "kdegraphics" directly, but we can build its children. use-modules kdegraphics/libs kdegraphics/* end module-set
The --purge-old-logs command line option has been removed (it can still be altered as a generic option). Instead it has been made the default action for kdesrc-build -- in other words kdesrc-build will start removing old log directories by default.
kdesrc-build supports using Git snapshot tarballs for Git modules from the KDE project database, for performing the initial module clone. This is done by default, and helps reduce load on the KDE project infrastructure.
A new keyword is supported in the configuration file, include. This can be used to include other files into the configuration file, allowing for having a file holding common options to be included into different project kdesrc-buildrc files.
This is more of a change for packagers, but the kdesrc-build distribution tarball now comes completely from git. Packagers should be able to run git archive --prefix=kdesrc-build-1.14/ v1.14 | bzip2 > kdesrc-build-1.14.tar.bz2 to get the same tarball as included in the download link above.
A command line option, --no-tests was added, which works substantially the same as the existing --no-build, --no-src, etc.
The output of the --help option has been revised and significantly reduced in length.
The DocBook documentation has been improved slightly as well.
A large internal refactoring has been performed to make the code structure more modular. The long-term goal is to ensure kdesrc-build continues to be maintainable and to allow for quick feature additions. There should be no user-visible effect (except that kdesrc-build might tell you what module set a given module is being built from since that information is now tracked for longer internally)
Some "Would have created directory" messages are suppressed in pretend mode after their first time displayed.
The sample configuration uses KDE Project database modules exclusively.
A warning message is displayed if a requested KDE project database module does not contain any repositories that can be built.
kdesrc-build will now alter the default origin Git remote instead of its previous alternative remote identifier. If you have been tracking this manually then either do not use kdesrc-build for that source directory, or ensure you keep your ~/.kdesrc-buildrc file in sync with your desired repository.
Subversion tarball snapshot support removed since most KDE modules are now in Git.
Post-build error email support removed.
+module syntax actually works. (This syntax on the command line forces kdesrc-build to assume that the given module is from the KDE project database even if you haven't defined it in your ~/.kdesrc-buildrc).
Various fixes/updates to the sample configuration file.
Also check environment variables queued to be set when trying to determine the proper environment variable setting for environment variables that handle a list of directory paths (e.g. PATH, LD_LIBRARY_PATH).
The KDE Project database is downloaded in pretend mode when it's needed (as has always been indicated on the kdesrc-build output). In addition only 1 download per run is attempted.
The exception handler makes a more proper check for a Perl "object" before trying to make a method call. Realistically this just changes the error message you eventually would get.
"C" locale is properly set when running commands that kdesrc-build must analyze the output of.