Cross-building ports with release(7)

Mori Hiroki yamori813 at yahoo.co.jp
Sun Mar 8 06:44:10 UTC 2020


Hi

ZRouter.org support ports cross build.

https://zrouter.org


I do build mips, mipsel, arm, armv7 ports by ZRouter.

I put paper to AsiaBSDCon 2020 about cross build ports.
The paper is accept. But AsiaBSDCon is cancelled.

This is prepared slide.

https://docs.google.com/presentation/d/1iybunLiYIKbpOKHYHNHDnaQ7jO23DpXGk_UR9mF21NY/edit?usp=sharing



----- Original Message -----
> From: Michael Vale <m.vale at live.com.au>
> To: Ian Lepore <ian at freebsd.org>
> Cc: "freebsd-hackers at freebsd.org" <freebsd-hackers at freebsd.org>; "freebsd-arm at FreeBSD.org" <freebsd-arm at FreeBSD.org>; Sergey Ivlev <ivlevsr at yandex.ru>
> Date: 2020/3/7, Sat 03:15
> Subject: Re: Cross-building ports with release(7)
> 
> Sergey,
> 
> I see what you are trying to achieve here. Sorry but the cross ports build 
> scripting has been neglected.  It requires staging.  I will take a look at this 
> today but I can't promise anything as other things have taken priority in 
> life.  You can for the interim make packages and install them after the fact or 
> use Ian's suggestion.
> 
> On 7 Mar 2020 04:15, Ian Lepore <ian at freebsd.org> wrote:
> 
> 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
> 
> 
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
> 
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
> 



More information about the freebsd-arm mailing list