Skip site navigation (1)Skip section navigation (2)
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>