Date: Sat, 14 Jun 2014 17:31:21 -0600 From: Warner Losh <imp@bsdimp.com> To: Oliver Pinter <oliver.pntr@gmail.com> Cc: gavin@freebsd.org, freebsd-current@freebsd.org Subject: Re: building i386 kernel on amd64 host Message-ID: <66AD5DED-0B46-4C59-849E-AC84B25F06AB@gmail.com> In-Reply-To: <CAPjTQNEpGixRAtr1M6g=nq%2BJa6keaJncDR88UuJ3v3ocb1YHEg@mail.gmail.com> References: <CAPjTQNF6rnwMBzcdMbeLFn_%2B6Ej-uamDuqeYHxp9KbxC44h1Gw@mail.gmail.com> <201406131059.01450.jhb@freebsd.org> <CAPjTQNEpGixRAtr1M6g=nq%2BJa6keaJncDR88UuJ3v3ocb1YHEg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Jun 14, 2014, at 3:57 PM, Oliver Pinter <oliver.pntr@gmail.com> = wrote: > On 6/13/14, John Baldwin <jhb@freebsd.org> wrote: >> On Friday, June 13, 2014 6:21:28 am Oliver Pinter wrote: >>> Hi All! >>>=20 >>> When I try to build i386 kernel on amd64 host running compile error >>> due wrong cpufunc.h picked up by build system. >>>=20 >>> I used the attached script to build the kernel, and I attached a = build >>> log. >>>=20 >>> Any suggestion how can I fix this? >>=20 >> To build an i386 kernel on an amd64 host do this: >>=20 >> cd /usr/src (or some other tree) >> make TARGET=3Di386 kernel-toolchain >> make TARGET=3Di386 buildkernel >> make TARGET=3Di386 installkernel DESTDIR=3D/some/place >>=20 >> And your i386 kernel will end up in /some/place/boot/kernel/kernel. = (You >> can >> set things like KERNCONF to pick an alternate kernel config just as = with >> normal 'make buildkernel'.) >>=20 >> (Your attachment was size zero for me btw) >>=20 >> -- >> John Baldwin >>=20 >=20 > I used this script to build the kernel: > = http://svnweb.freebsd.org/socsvn/soc2014/op/tools/build_kernel_32bit.csh?v= iew=3Dlog >=20 > And the error log are there: > https://gist.github.com/opntr/cf8aa0e404c0c5ed6f90 . > I get this error, when I first build kernel for amd64 system, and > after that i386 kernel, and only the kernel. >=20 > Now seems like I can build the whole system with buildworld > buildkernel on vanilla master, I removed the objdir and do a clean > buildworld. Now I test the modified kernel build, after the > buildworld. >=20 > It is broken too. When I do only make kernel-toolchain buildkernel, > than this are broken for vanilla freebsd source and for my version to. >=20 > summary: > OK: make buildworld buildkernel > BROKEN: make kernel-toolchain buildkernel On the same line? O?r is that just a summary? > Seems like someone in build environment bootstrapping are broken. I=92ve not been able to reproduce this. rm -rf $OBJDIR make TARGET=3Di386 kernel-toolchain make TARGET=3Di386 buildkernel works just fine on current with a clean tree and an empty/missing = make.conf and src.conf. As for your script, don=92t define MACHINE and MACHINE_ARCH. That=92s = almost always wrong since that overrides things on the command line, = which is what make buildkernel winds up translating to. You never need = to define those yourself in any supported environment, and likely most = unsupported ones. Also, I=92d strongly recommend doing it as two invocations to make, not = one. kernel-toolchain likely doesn=92t have all the right guards in = place for it that buildworld likely does. Or you can dive in and figure = that out. You can=92t really do anything *kernel* related until = kernel-toolchain finishes=85 Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?66AD5DED-0B46-4C59-849E-AC84B25F06AB>