"tinderbox" using stacked unionfs

From: David Naylor <naylor.b.david_at_gmail.com>
Date: Sat, 23 Jan 2010 12:33:14 +0200
Hi,

I have been experimenting with using unionfs to build ports in a "tinderbox" 
environment.  This avoids having to remove and extract files for the build of 
each port and it allows the discovery of installed/modified files by the port.  

Please see attached for a (updated) shell script that handles all the "heavy 
lifting" of building ports.  Of importance is LOCALBASE and BUILDDIR.  If you 
want to override LOCALBASE please use `env` as the script needs to know about 
it.  BUILDDIR (/usr/build by default) is where the script stores everything 
(including PKG_DBDIR).  

# env LOCALBASE=/tmp/local BUILDDIR=/tmp/build ./ports-union-builder.sh

Will install x11/xorg without affecting already installed systems.  

CURRENT STATUS:
 - *** Currently kernel stack size is too small and the above will trigger a 
stack overflow.  Recompiling a kernel with ``options KSTACK_PAGES=32'' will 
alleviate that problem.  
 - Currently there is a build problem that affects eggdbus/polkit (possibly 
others) thus preventing x11/xorg from being built.  I will investigate the 
cause (help welcome).  
 - I highly recommend running this in a chroot
 - NO WARRANTY, SLIPPERY WHEN WET, EATS CHILDREN.  

Since the script doesn't complete a full build I am unable to compare the 
build speeds (thus the overhead of unionfs) but here are some partial results 
(with FORCE_MAKE_JOBS and quad core):

# time make -C /usr/ports/x11/xorg install clean
2185.180u 1066.927s 38:12.27 141.8%     4123+1745k 5185+1890io 51638pf+0w

# time ./ports-union-builder.sh
Port /usr/ports/devel/eggdbus failed to build
Port /usr/ports/x11/xorg failed due to dependency /usr/ports/devel/eggdbus
1065.356u 862.073s 25:03.88 128.1%      4602+1840k 4582+57338io 18327pf+0w

Regards,

David

Received on Sat Jan 23 2010 - 09:33:13 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:00 UTC