Date: Sun, 23 Jul 2006 10:55:49 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: tyler@bleepsoft.com Cc: freebsd-hackers@freebsd.org Subject: Re: Building a sandboxed kernel Message-ID: <20060723.105549.2106235963.imp@bsdimp.com> In-Reply-To: <3320CEAC-8A5C-407D-9867-C2A22820A599@bleepsoft.com> References: <7ADD22A7-42DE-49D8-B411-DBA4CB2FA0CD@bleepsoft.com> <20060723100223.GB24435@gothmog.pc> <3320CEAC-8A5C-407D-9867-C2A22820A599@bleepsoft.com>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <3320CEAC-8A5C-407D-9867-C2A22820A599@bleepsoft.com> "R. Tyler Ballance" <tyler@bleepsoft.com> writes: : -----BEGIN PGP SIGNED MESSAGE----- : Hash: SHA1 : : >> : >> Between varying versions of userland tools (like config(8)) and path : >> troubles, I'm wondering what tips anybody has to doing non-standard : >> builds of the kernel (non-standard being not in /usr/src and not the : >> host arch) : >> : >> Currently the make command I'm using, which doesn't work, is (/usr/ : >> obj is chmod'd 777): : >> : >> make TARGET_ARCH=iguana DESTDIR=/home/tyler/iguana buildkernel : >> : >> Any suggestions? : > : > You don't have to use /usr/obj for all your builds: : > : > % mkdir -p /home/tyler/obj/iguana : > % env MAKEOBJDIRPREFIX=/home/tyler/obj/iguana \ : > make TARGET_ARCH=iguana \ : > DESTDIR=/home/tyler/iguana \ : > buildkernel : > : > The trick here is to use MAKEOBJDIRPREFIX to change the default object : > directory prefix from `/usr/obj' to whatever suits your own setup. : : : This doesn't solve the problem of different versions of userland : tools required. For example, my machne is RELENG_6, but I'm : developing against the -CURRENT branch of code synced up in perforce. : Does one necessarily need a -CURRENT userland to develop with the - : CURRENT code base? All arguments of being able to test the code that : is built are moot since the testing of my code will all occur within : a virtualized (Qemu) machine environment. : : I'm sure the difference in versions between RELENG_6 and CURRENT : aren't too great, but what about developing with CURRENT code on : RELENG_5? I guess the basic question is, how can I maintain my normal : workstation environment while using a toolset appropriate for : building CURRENT? (Does it even matter really?) Doesn't matter. I often do the following: setenv TARGET arm # this may be iguana for you setenv TARGET_ARCH arm setenv MAKEOBJDIRPREFIX /home/imp/obj cd p4/imp_arm make buildworld make buildenv # from here on out is in a subshell cd ../arm/src/sys/arm/conf config KB920X cd ../compile/KB920X make depend && make You'll notice that I built in a tree that had all the arm patches applied, and got a 'buildenv' there, but then build the kernel out of a different tree. This is a -current p4 tree for both imp_arm and arm, but I do this on a RELENG_6 system. I've done it in the recent past on a 5.3 system too. TARGET is MACHINE and TARGET_ARCH is MACHINE_ARCH. MACHINE is the kernel architecture, while MACHINE_ARCH is the CPU architecture (TARGET_CPU is the specific CPU that we're optimizing for). Chances are excellent we'll have TARGET_ARCH armel and armeb shortly. Right now we have a hack ARM_BIG_ENDIAN used to control big vs little endian, but since MACHINE_ARCH gets encoded into packages, I think we need to move it there so binary packages do the right thing. But that's a WIP in my tree right now... Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060723.105549.2106235963.imp>