Date: Sun, 08 Mar 2020 11:10:59 +0500 From: Sergey Ivlev <ivlevsr@yandex.ru> To: Ian Lepore <ian@freebsd.org>, "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: <3580141583647357@vla1-2bebf6b1c06e.qloud-c.yandex.net> In-Reply-To: <76e66ea321b8d7480af75cfbd38fa55f5ac40afd.camel@freebsd.org> References: <2228511583493903@vla3-bebe75876e15.qloud-c.yandex.net> <76e66ea321b8d7480af75cfbd38fa55f5ac40afd.camel@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
06.03.2020, 22:15, "Ian Lepore" <ian@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?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3580141583647357>