kdesrc-build release 1.15

Released: 2012-May-05

Download it: kdesrc-build-1.15.tar.bz2 - Details (incl. PGP signature)

kdesrc-build 1.15 had 180 commits from 7 authors from the prior release (1.14.1). The changes are summarized below:

Summary of new features/changes:

  • kdesrc-build supports reordering modules from the KDE project database so that they are built in the right order. This applies even for modules that are automatically included from a group specified by the user (e.g. if you asked to build all of kdeedu). This relies on accurate dependency information, which is downloaded from the kde-build-metadata repository automatically.

  • It is possible to download and build translation packages again (the kde-languages option).

  • kdesrc-build doesn't re-download the KDE Project database if it hasn't changed.

  • A large amount of refactoring has been performed (with more to follow).

The full list of changes follows:


  • The Subversion modules kde-base-artwork and kde-wallpapers have the KDE/ prefix added like the other KDE Subversion modules. (Fix by Andre Woebbeking)
  • Documentation improvements from Burkhard Lück.
  • Fix module build order for kde-baseapps. kde-baseapps must be built before konsole and kate due to a change in the logical/virtual project layout. Thanks to David Faure for tracking down the cause and providing an initial fix. (Bug 283127)
  • Similarly, build kactivities before kde-runtime. Noticed by Jan Hackel. (Bug 298401)
  • Fix crash present when using use-idle-io-priority. (Bug 283071)
  • Do not force a KDE Project database update when using --no-src. (Bug 283026)
  • Look for dialog(1) before trying to use it in kdesrc-build-setup. (Bug 290252)
  • Re-implement the broken l10n-building support. (Bug 283027)
  • Do not add entries to the environment twice (not a regression as a different bug prevented this behavior from showing in earlier releases) (Bug 291357)
  • Ensure that specific module options override module-set options. This broke in a previous release at some point. (Bug 288611)
  • Support --resume-from and --resume-after for kde-projects as well. (Bug 290450)
  • Move lockfile to where its associated rc-file is. This keeps kdesrc-build from needlessly forbidding concurrent execution (you still must ensure your separate rc-files do not themselves trample on each others' directories). (Bug 292266)
  • Fix handling of the KDE Project database on the very first run of kdesrc-build if using --pretend. (Bug 295715)
  • Updates/corrections to default branches of some modules (e.g. qt, kdelibs). Thanks to David Faure and Eike Hein for watching these.
  • Properly show number of failed tests (David Faure).
  • New clones of KDE Project modules use the kde: prefix by default. Likewise for git snapshots of KDE Project modules.
  • Fix XML parsing of the KDE Project module database (char handlers can be called multiple times for a given tag). Thanks to Ralf Jung for the report and detailed diagnosis.
  • Corrected repo change warning message. It does not actually currently try to fix the problem it notes (but maybe someday...)
  • Process exit handlers are now really only run once (this should fix receiving duplicated "Script finished at..." messages when using ^C to stop execution).
  • Save persistent data in correct location when reading configuration files from a relative path instead of an absolute path.
  • Install data to correct spot if KDE is not installed (noted by teprrr on IRC).
  • Improvements when running kdesrc-build for the first time and using --pretend.
  • Verbose progress output is only forced for Qt when downloading from Gitorious as the KDE Git infrastructure does not suffer from server-side disconnections on very large clones.
  • References to the old apply-patches option removed.
  • kdesrc-build fails much sooner if unable to change directory instead of waiting for a later (usually unrelated) error.
  • The persistent last-install-rev entry is unset if kdesrc-build is used to uninstall a module.
  • The error message for duplicate module names in a use-modules entry is no longer hardcoded to "kdelibs".
  • kdesrc-build-setup improvements from Raphael Kubo da Costa.

New features:

  • You can specify which SSH identity to request from the SSH Agent, using the new ssh-identity-file option. Patch provided by Ralf Jung. (Bug 284071)
  • Support KDE-provided built metadata. Specifically this allows kdesrc-build to automatically build some modules in the right order (e.g. if you just ask to build kdevelop, kdesrc-build has to actually build kdevelop/kdevplatform before the rest of kdevelop/*). In addition this allows kdesrc-build to ignore modules that should not be attempted to build but are present in the KDE project database (e.g. some -www modules). (Bug 288378)
  • Unknown modules on the command line are assumed to be KDE Project modules (kdesrc-build will still abort if it turns out there is no such module in the KDE Project database). This can allow for quick and easy "one-shot" installation of programs available in the KDE Project database.
  • The module used to build Qt no longer must be called "qt-copy". The sample configuration file uses qt. It is not required to rename exsting modules. This change will pave the way for Qt 5 support to come (where Qt exists amongst multiple independent modules). (Bug 265255)
  • The qmake build system is supported.
  • Allow specifying the location of the persistent data store (using persistent-data-file). (Bug 223334)
  • kdesrc-build searches for "essential" programs before even bothering to start the build. (Bug 263936)
  • Add ability to default to the "stable" branch of a module given in the KDE Project database instead of always using the master branch. Feature kindly contributed by Valery Yundin. This resurrects the use-stable-kde option. (Bug 297357)
  • kdesrc-build now will prefer to name any git branches it must create after the corresponding remote branch. kdesrc-build will not overwrite a local branch name however (and it will even prefer an existing local branch if it's pointing at the appropriate remote branch). (Bug 294347)
  • Metadata related to KDE Project support is no longer downloaded if no modules to be built are "KDE Project" modules (although keep in mind any unknown modules are now assumed to be of this category).
  • KDE Project metadata is now "mirrored", so it is only downloaded from the KDE servers if it has changed. This can significantly reduce bandwidth usage for repeated runs of kdesrc-build over a short time.
  • Add support for the Bazaar source code management tool, since the libdbusmenu-qt library that KDE depends on uses it. (Note that your distro-provided packages of this library should normally be sufficient, but if you wish to run the bleeding-edge version, now you can) Patch provided by Aurélien Gâteau/Canonical.
  • The perl executable as provided in the PATH environment variable is now used instead of hard-coding "/usr/bin/perl".
  • The prefix option now supports the $MODULE variable, similar to the existing support in module-base-path. Patch provided by Raphael Kubo da Costa.


For the most part these should have no visible change from the end-user perspective. These are listed since they are the most likely cause of regressions or new bugs.

  • Commands that read utility output (e.g. git, svn) use a common routine to disable localization so that kdesrc-build can process the output. (Bug 292143)
  • Renamed ksb::Phases to ksb::PhaseList.
  • A lot of refactoring to the update and build code. Subversion handling code is properly modularized (git will follow with the next release).
  • Many utility methods moved to ksb::Util.
  • Perl internal exceptions should give a stack trace like kdesrc-build exceptions.
  • kdesrc-build exceptions are handled in a single fashion now.
  • A module now has a concept of a separate "scm type" and "build type" instead of just a "module type". E.g. you can have a Module that uses git for the scm and qmake for the build system.
  • Some refactoring of the IPC system (used for async build/update) to move the common code to the already-existing BaseIPC instead of having two root IPC classes.
  • Occasional dead code removal.
  • svn conflicted code check occurs following update instead of prior to every build.
  • A "generic" build system is assumed until it's possible to read the source code to allow the process to proceed in --pretend-mode.
  • Use Text::ParseWords instead of custom quote-splitting.
  • Build system in use is shown with --verbose and --debug.
  • The branch being checked out is normally shown.
  • If a module being built is part of a named module-set, that module-set is shown (e.g. "Building juk from kdemm (1/1)")
  • Logged output includes the current directory now.
  • Improvements to various internal list utility functions.
  • Some svn command have their output examined. kdesrc-build now performs this examination during svn execution instead of laboriously re-reading the generated log files at the end.
  • package method export code has been refactored such that there is only one export method (one of the two originals had a bug, although it was not noticeable at the time).