We just did a big discover when testing a new 8 core build box. We
noticed that fakeroot kills performance on multicore big time. Compiling
kernel with abuild (via fakeroot) took 1 hour +. Total CPU usage was on
15%. So I tested to run it without fakeroot. CPU usage went to 96% and
kernel compile time took 10-11 minutes.
So, basicly, we want avoid fakeroot during compile. Its not needed til
'make install' and packaging anyways. The drawback is that it means we
need to change every APKBUILD we have.
The problem is that abuild runs "rootpkg" in fakeroot, which will call
the build() function. We would need run build() without fakeroot, then
run "make install" in a separate function (like gentoo does).
So... I'm open to ideas. What do we do? This is also a good time to stop
up and think if we want to do the package splitting differently. Arch
linux have added support for package splitting too recently.
I can see 3 options:
1. we follow archlinux style:
(see the splitting part)
2. we follow gentoo style, and create src_prepare() (for applying
patches), src_configure() to run ./configure, src_compile() to run make
and src_install() to do the make install - as fakeroot.
3. we do our own, something.
I would like to avoid building up an entire API with lots of helper
funcs, like gentoo has. I want the APKBUILD's be simple to understand
whats going on. We already have some special things for -dev and -doc
packages that contradicts that, but at th same time, its nice to not
need rewrite everything in every APKBUILD. We also have our own pkgusers
and pkggroups additions that creates users in build environment needed
I'm leaning at the direction on doing someething similar what Arch Linux
does. That is, go for package_foo() functions.
Received on Mon Oct 19 2009 - 16:38:46 UTC