cross building i386 on amd64

Yoshihiro Ota ota at j.email.ne.jp
Sat Apr 17 02:19:15 UTC 2021


Hi

On Fri, 16 Apr 2021 22:35:55 +0300
Andriy Gapon <avg at FreeBSD.org> wrote:

> On 16/04/2021 20:22, Peter Blok wrote:
> > Hi,
> > 
> > I’m cross building 12-STABLE i386 on a 12-STABLE amd64 system. Sources are refreshed every day.
> > 
> > Build runs fine and put everything in the right directory. For the target i386 system it is
> > in /usr/obj/i386TARGET.
> > 
> > Next I NFS mount the source /on /usr/src and /usr/obj/i386TARGET on /usr/obj on the target
> > machine
> > 
> > When I run make installworld it will use install
> > from /usr/obj/usr/src/i386.i386/tmp/legacy/usr/bin because it is the first install it finds in
> > the PATH set by installworld. This tanks because install is compiled for amd64.
> > 
> > I understand why the legacy path is compiled for amd64. This is needed to build a distribution.
> > 
> > So is this is bug or is the way I distribute the objects not supported?
> 
> I used this method only for same architecture installations.
> Never tried it for different architectures, so I cannot tell if this is a 
> regression.
> 
> -- 
> Andriy Gapon

I recall someone said build and install needs to be on the same archtecture and base code.

1. I use ggated/ggatec to export i386 device(s) to amd64 and run install on amd64.

2. I haven't tried this for a while and not sure if this still works.
You can use nullfs mount over the i386.i386/tmp to hide binaries from there;
if it hasn't changed, install targets don't build tmp and thus ends up picking from regular /bin and /usr/bin - there may be cases this fails.

Hiro


More information about the freebsd-hackers mailing list