I’ve been keeping a set of scripts to keep parallel builds of a few projects, to be able to test whether everything behaves well on older compilers. It is also nice to compile things with clang while developing since it usually provides nicer error messages compared to gcc, even if might be slower or generate slower code.
The main problem is that the setup was not really scalable. Adding new build profiles, or projects was not as easy as it ought to be.
Enter kdesrc-build-extra
kdesrc-build-extra is a simple tool that creates profile-based alternative builds to those created by kdesrc-build. It does not do it for all projects, but only for those that you choose.
It allows you to create a few profiles, and specify which projects you want built with each of them. So, for example, you can keep parallel builds of plasma-workspace with gcc 4.5 and the latest clang, while having a static checker like clang-analyze for plasma-framework.
The example configuration file comes with the program. The format is the same as the one used by kdesrc-buildrc, just with a few custom fields.
This is one of the profiles from the provided example configuration file:
# Build profile for building with the clang compiler
build-profile clang-build
# Prefix to use for building this profile
build-dir /opt/kf5/build-clang/
# [optional] Where to install the binaries from this profile
# install-dir /opt/kf5/usr-clang/
# C++ compiler executable
cxx-compiler /usr/bin/clang++
# C compiler executable
c-compiler /usr/bin/clang
# Which options to remove from the kdesrc-build setup
# when building this profile.
# Parameters covered by the above setting values are
# automatically removed.
cmake-options-remove -DUSE_COMPILER_HIDDEN_VISIBILITY \
-DKDE4_BUILD_TESTS \
-DBUILD_TESTING
# What should we add to the parameter list?
cmake-options-add -DUSE_COMPILER_HIDDEN_VISIBILITY=0
# Which projects do you want to build using this profile
projects kactivities plasma-framework
end build-profile
Installation
Now comes a bit weird part. Since these kinds of scripts in KDE tend to cover all programming languages in existence - perl, ruby, python and similar, I decided to go over the edge and do this in Haskell.
Thanks to Haskell’s package manager, the installation is quite simple.
cabal update
cabal install kdesrc-build-extra
cp ~/.cabal/bin/kdesrc-build-extra /path/to/your/kf5/sources
(you just need to install cabal and ghc before doing that)
Usage
Copy the kdesrc-build-extrarc-example file into the KF5 sources directory, edit it to fit your setup, and that is it.
I said *might* for a simple reason - everybody tells me it compiles faster, and it turns out not to be the case on my system. Neither the debian packaged version, nor the one I manually compile from svn every once in a while.
Unfortunately, the compilation speed for me is noticeably worse with the same settings, so I would not compile all kde stuff with it, but it is fast enough for the in-development compilation.
At least it is not bad enough for me to actually investigate what the issue is. :)
Cheers!