Cross-building ports with release(7)
Sergey Ivlev
ivlevsr at yandex.ru
Sun Mar 8 06:16:42 UTC 2020
06.03.2020, 22:15, "Ian Lepore" <ian at freebsd.org>:
> 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.
Thanks for reply!
Let's suppose that I've built a local repository with packages
targeting ARM (using poudriere and qemu). Is it possible than to use
`pkg add -c {CHROOTDIR} arm_pkg_name` within arm_do_quirk function to
install a package into the release?
More information about the freebsd-arm
mailing list