Subject: Re: Building pkgsrc for alternative arch or OS rev?
To: Chris Ross <cross+netbsd@distal.com>
From: Eric Haszlakiewicz <erh@jodi.nimenees.com>
List: current-users
Date: 01/24/2005 15:40:14
On Sun, Dec 26, 2004 at 08:12:49PM -0500, Chris Ross wrote:
> 
>   Hi.  My main development machine is an i386 running -current.  
> However,
> I have a few machines that are much slower that are providing most of my
> services.  Is there a [good] way to build against the obj trees that I 
> also
> built on this same build machine, so that the pkgsrc binaries are built 
> to
> run on an alternative arch, or an alternative version of NetBSD?

	Use null and union mounts combined with chroot.
Here's what I've got in my fstab:

/usr/pkgsrc.current /space/netbsd/image-current/usr/pkgsrc null rw 0 0
/usr/pkgsrc.base /space/netbsd/image-current/usr/pkgsrc union -b,rw 0 0
/space/netbsd/image-netbsd-2-0/usr/pkgsrc.2.0 /space/netbsd/image-netbsd-2-0/usr
/pkgsrc null rw 0 0
/usr/pkgsrc.base /space/netbsd/image-netbsd-2-0/usr/pkgsrc union -b,rw 0 0

/usr/pkgsrc.base is the actual checked-out pkgsrc tree.
/usr/pkgsrc.current and /space/netbsd/image-netbsd-2-0/usr/pkgsrc.2.0
are storage location for files created while building for -current and 
-netbsd-2.
/space/netbsd/image-netbsd-2-0 and .../image-current are _destdir_
locations, not obj trees. (i.e. untar the sets there)

I also null mount another directory into each one of the chroots and set
/usr/pkgsrc/distfiles to be a symlink pointing to that directory.  That
way I don't end up with multiple downloads of the same sources.
(that's the path as seen from _within_ the chroot)

To build packages for -netbsd-2 I do this:
	Update /usr/pkgsrc.base
	rm -r /space/.../usr/pkgsrc.2.0/*
	chroot /space/netbsd/image-netbsd-2-0
	cd /usr/pkgsrc
	Build the packages

eric