Date: Mon, 16 Jun 2014 22:43:10 +0200 From: Oliver Pinter <oliver.pntr@gmail.com> To: Warner Losh <imp@bsdimp.com> Cc: gavin@freebsd.org, freebsd-current@freebsd.org Subject: Re: building i386 kernel on amd64 host Message-ID: <CAPjTQNFiy%2B_-GWRykMyyA2nAnM-WQ6zQ7u0ZNOqB6w4WB9euaw@mail.gmail.com> In-Reply-To: <66AD5DED-0B46-4C59-849E-AC84B25F06AB@gmail.com> References: <CAPjTQNF6rnwMBzcdMbeLFn_%2B6Ej-uamDuqeYHxp9KbxC44h1Gw@mail.gmail.com> <201406131059.01450.jhb@freebsd.org> <CAPjTQNEpGixRAtr1M6g=nq%2BJa6keaJncDR88UuJ3v3ocb1YHEg@mail.gmail.com> <66AD5DED-0B46-4C59-849E-AC84B25F06AB@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 6/15/14, Warner Losh <imp@bsdimp.com> wrote: > > 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! >>>> >>>> When I try to build i386 kernel on amd64 host running compile error >>>> due wrong cpufunc.h picked up by build system. >>>> >>>> I used the attached script to build the kernel, and I attached a build >>>> log. >>>> >>>> Any suggestion how can I fix this? >>> >>> To build an i386 kernel on an amd64 host do this: >>> >>> cd /usr/src (or some other tree) >>> make TARGET=i386 kernel-toolchain >>> make TARGET=i386 buildkernel >>> make TARGET=i386 installkernel DESTDIR=/some/place >>> >>> 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'.) >>> >>> (Your attachment was size zero for me btw) >>> >>> -- >>> John Baldwin >>> >> >> I used this script to build the kernel: >> http://svnweb.freebsd.org/socsvn/soc2014/op/tools/build_kernel_32bit.csh?view=log >> >> 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. >> >> 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. >> >> 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. >> >> 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've not been able to reproduce this. > > rm -rf $OBJDIR > make TARGET=i386 kernel-toolchain > make TARGET=i386 buildkernel > > works just fine on current with a clean tree and an empty/missing make.conf > and src.conf. > > As for your script, don't define MACHINE and MACHINE_ARCH. That's 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'd strongly recommend doing it as two invocations to make, not one. > kernel-toolchain likely doesn't have all the right guards in place for it > that buildworld likely does. Or you can dive in and figure that out. You > can't really do anything *kernel* related until kernel-toolchain finishes... > > Warner Warner, thanks! Splitting up to two part the build script, working fine! https://github.com/HardenedBSD/tools/blob/f98ec30cbe6f155c9f15c0d4b1ecbf74fc970e32/build_kernel_32bit.csh > > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPjTQNFiy%2B_-GWRykMyyA2nAnM-WQ6zQ7u0ZNOqB6w4WB9euaw>