Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 06 Mar 2020 10:15:47 -0700
From:      Ian Lepore <ian@freebsd.org>
To:        Sergey Ivlev <ivlevsr@yandex.ru>, "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>, "freebsd-arm@FreeBSD.org" <freebsd-arm@FreeBSD.org>
Subject:   Re: Cross-building ports with release(7)
Message-ID:  <76e66ea321b8d7480af75cfbd38fa55f5ac40afd.camel@freebsd.org>
In-Reply-To: <2228511583493903@vla3-bebe75876e15.qloud-c.yandex.net>
References:  <2228511583493903@vla3-bebe75876e15.qloud-c.yandex.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 2020-03-06 at 16:25 +0500, Sergey Ivlev wrote:
> Hello!
> 
> I've successfully built FreeBSD 13.0-CURRENT (r358609) image for
> ARMv7 on AMD64 host using release(7).
> 
> I wonder is it possible for AMD64 host to build/install ports into
> the image?
> 
> I've defined arm_do_quirk function in my configuration file, where
> I'm calling `make DESTDIR=${CHROOTDIR}/${DESTDIR} TARGET=arm
> TARGET_ARCH=armv7 ... build install clean`.  But it ended up with
> error, of course, because that make(1) chroots into
> ${CHROOTDIR}/${DESTDIR} and runs executables from there, but
> ${CHROOTDIR}/${DESTDIR} is where **built target** located (i.e. where
> files for ARMv7; ${CHROOTDIR}/${DESTDIR} is {my chrrot
> dir}/usr/obj/usr/src/arm.armv7/release/{kernel name}).  Altering the
> PATH variable so it will specify ${CHROOTDIR} as the first entry,
> doesn't help either -- I end up with the same ``exec format error''
> (env PATH="${CHROOTDIR}:${PATH}" make DESTDIR=...).
> 
> I had also tried to `chroot ${CHROOTDIR} make DESTDIR=${DESTDIR}
> TARGET=arm TARGET_ARCH=armv7 ... build install clean`, but
> mount_nullfs(8) failed under chroot(8).
> 
> Therefore, my question is: is it possible while building an image for
> ARMv7 on AMD64 host with release(7) also building and installing
> ports into the result image?
> 
> Thanks in advance!
> 

Cross-building ports is done with poudriere and qemu.  There is some
info on setting it up in https://wiki.freebsd.org/QemuUserModeHowTo but
I think that's pretty out of date.  There may be newer how-to info that
I'm not aware of.  I'm going to CC the freebsd-arm@ list on this reply,
because the folks there probably know of better information resources
for all this.

I also have no idea how to integrate poudriere-based building with
release(7) stuff.  It may be a matter of building a local package repo
using poudriere, then configuring the release script stuff to use it.

-- Ian





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?76e66ea321b8d7480af75cfbd38fa55f5ac40afd.camel>