Speed up package builds
Harald Sitter
apachelogger at ubuntu.com
Thu Jul 29 23:40:40 BST 2010
Following are essentials on how to speed up test building:
a) env varibles
All KDE binary packages get compressed using LZMA which is a jolly nice
compression algorithm that decompresses almost as fast/light as GZIP while
permitting much smaller binaries most of the time. This however comes at the
cost of horrible CPU and RAM usage at compression time hence you defenitely
want the following envioronment variable set in a build environment:
export DEB_NO_LZMA=1
This turns of LZMA and use the default setting (GZIP, which is generally less
aggressive at compression).
Additionally you might find the following very useful too:
export DEB_NO_COMPRESSION=1
I only added support for this today (pkg-kde-tools 0.9.2ubuntu7) in addition
to no LZMA compression it also enforces no compression at all, which is of
course faster than GZIP too.
If you have disk space to spare I must recommend setting those two variables.
Especially if you build a lot of stuff you will notice a lot less waiting.
You can add those simply to your pbuilderrc to get them applied inside the
pbuilder environment.
2) use cowbuilder or similar madness
I would recommend cowbuilder as the waepon of choice becaues it is just a
wrapper around pbuilder so essentially everything stays the same you just have
cowbuilder lay ontop of pbuilder. Cowbuilder basically eliminates the need of
having tgz chroots but instead maintains your copy on disk and then hardlinks
to the build envrionments (there are obvious disadvantages to this, so for
review builds of new software I would still go with pbuilder...).
This should speed up environment setups nice (according to Quintasan, I did
not try it myself ;))
3) ninjas: know your stack!
If you are doing KDE release building you will probably have seen the nice dep
graph [1] already. What is nice about this is, that you can work on things in
layers ... someone nukes down the blue "parenting" packages and others work on
the various layers. In any case you will notice that like 92.4% of the time
packaging is done on packages depending on one or more other packages
underneath. Now in the situation of release building where you are actually
walking up the graph you can make very smart use of this fact. Instead of
having to download and install kdelibs+deps just create a pbuilder chroot and
login using
sudo pbuilder login --save-after-login
then add the ninjas PPA (and apt-transport-https to get that working) and
install kdelibs5-dev. That way you cut pretty much half the effort off the
dependency installation. As you are moving up the graph you of course might
add other parenting packages (such as kdepimlibs).
BUT!!! Do not do this for regular builds! Do not install kdepimlibs or any
"higher" parent unless you are positive that you do not need to build
something underneath it...
Simply, unless you are very attentive, DO NOT install anything other than
kdelibs5-dev and DO NOT forget to switch to a 100% clean pbuilder once you are
done.
Really, while this speeds up things A LOT it is also a potential spot where
things can be screwed up A LOT, so be very careful.
[1] https://wiki.kubuntu.org/Kubuntu/Ninjas/DependencyGraph
--
Harald Sitter
Kubuntu Core Developer
http://www.kubuntu.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
Url : https://lists.ubuntu.com/archives/kubuntu-devel/attachments/20100730/17d33e0f/attachment.pgp
More information about the kubuntu-devel
mailing list