Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Jan 2009 21:17:11 -0800
From:      Sam Leffler <sam@freebsd.org>
To:        Brooks Davis <brooks@freebsd.org>
Cc:        Andrew Hotlab <andrew.hotlab@hotmail.com>, freebsd-arch@freebsd.org
Subject:   Re: Cross compiling FreeBSD
Message-ID:  <496EC6D7.4090003@freebsd.org>
In-Reply-To: <20090115044309.GA72611@lor.one-eyed-alien.net>
References:  <COL112-W14559CEDAEB8C5373A03B4F6D60@phx.gbl>	<20090114211616.GC16116@server.vk2pj.dyndns.org>	<20090115031847.GA52343@duncan.reilly.home> <20090115044309.GA72611@lor.one-eyed-alien.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Brooks Davis wrote:
> On Thu, Jan 15, 2009 at 02:18:47PM +1100, Andrew Reilly wrote:
>> On Thu, Jan 15, 2009 at 08:16:17AM +1100, Peter Jeremy wrote:
>>> This won't work because install{world,kernel} uses programs (under
>>> /usr/obj) that were built to run on the build system (amd64 in
>>> your case) and so won't run on the target (i386) system.
>>>
>>> The supported approach is to NFS mount the target machines onto the
>>> build machine and run "make DESTDIR=/mount/point install{world,kernel}"
>>> on the build machine.  Note that this will report errors since NFS
>>> cannot handle UFS flags - you will need to manually remove/add schg flags.
>> Is there any reason (apart from using more space on the build
>> machine) not to install to a DESTDIR (not /) on the build
>> machine, and then tar/pax/cpio that tree across to the client
>> system?  Presumably something like that must be done for the
>> distribution builds that go into making the CD and DVD images.
> 
> This should work just fine.  I use installs to DESTDIR to build images to be
> run at NFS root file systems.

+1

> 
>> NetBSD has (had? it's been a while since I looked) a cool
>> mechanism that allowed the whole tree to be built (and
>> "installed" to a DESTDIR) without root permissions, using a
>> variation on install that copied the file as the running user
>> and recorded the intended user/group/mod/flags in an mtree file.
>> Then a subsequent task created a tarball that contained the file
>> contents and the mtree permissions, all as a non-root user.  So
>> you don't even need to muck about with root-over-nfs issues for
>> deployment: just log into the client and untar the distribution
>> over the network (as root).  Very, very neat, IMO.  I used to
>> build embedded i386 NetBSD installations on my amd64 FreeBSD
>> system that way without much in the way of trouble.  Haven't had
>> to do it for a while, though, so perhaps it's all changed.  I
>> wouldn't hate to discover that FreeBSD can do that too,
>> though...
> 
> We don't have this yet, but lots of people would like to see this (just
> not quite enough to do it yet :).

I've used netbsd and didn't find the unprivileged build process as
useful as I expected but I'm certainly a fan of eliminating root use.  I
recently added makefs to the base system which simplifies setting up a
cross-devel environment but we still lack bi-endian native filesystem
support.  Otherwise the key issues in improving cross-build support are:
ports and requiring freebsd as the build host.  With the advent of
virtual machines however the build host issue is less critical.

	Sam



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?496EC6D7.4090003>