Re: Cross compiling user applications for armv7
Mark Millard <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.arm |
|---|---|
| Message-ID | <[email protected]> |
On Sep 14, 2025, at 05:46, Michał Kruszewski <[email protected]> wrote: > I have finally managed > poudriere jail -c -x -j armv7 -m git+https -a arm.armv7 -v releng/14.3 -K GENERIC > to work. > I see that it cross compiles the systems. > This is pointless and redundant as I have already cross compiled the system on my own. It does involve a reference to the source tree used. I do not know your your PATH_TO_ARMV7_SYS_DIR . I show deleting the above jail creation as well. # poudriere jail -d -jarmv7 # poudriere jail -c -jarmv7 -a arm.armv7 -m null -M PATH_TO_ARMV7_SYS_DIR -S /usr/src/ -v 16.0-CURRENT That presumes that qemu-user-static is already installed and that the likes of: # binmiscctl enable armv7 has already been done. It sets up for references to the system toolchain to be natively executed for cross build activity. But it does not set up for any other toolchain references to be natively executed. One alternative to that based on official binary builds: There is a way for poudriere to create its jail from official pre-built binaries and still have that property ( I show deleting the prior jail as well ): # poudriere jail -d -jarmv7 # poudriere jail -c -jarmv7 -aarmv7 -U https://pkg.freebsd.org -mpkgbase=base_release_3 -v 14 That presumes that qemu-user-static is already installed and that the likes of: # binmiscctl enable armv7 has already been done. It sets up for references to the system toolchain to be natively executed. But it does not set up for any other toolchain references to be natively executed. > How can I tell poudriere to use the system I have compiled on my own? See above. > I also started wondering why is qemu even required? A lot of the ports tree does not use the system toolchain at all, for example, instead using other port-tree packages that are alternate toolchain materials. The ports-package based toolchains are not set up for doing cross builds and ports using alternative toolchains do not try to do cross-build instances of the alternate toolchains. > The cross compiler toolchain is already prepared and ready-to-use after system compilation. Not for the toolchains used by many ports. See above. > The ports descriptions already exist. > Why can't I simply cross compile ports? The infrastructure is set up to to use the system toolchain natively --but not to natively use any other toolchain. > This task does not require qemu, The way FreeBSD and its ports tree is set up: yes it does. You are speculating about a noy-FreeBSD-as-it-is context that might be technically possible to create someday but that does not now exist. > as I don't want to run resulting binaries on host. > I just wont to cross compile ports and place them on the target file system. > Qemu shouldn't be required for that. Sorry, but it is required as things are. Note that Warner's notes to you and void's notes to you and my notes to you all are referencing the involvement of qemu-user-static. Same for the poudriere-devel man page. FreeBSD's official port-package builds have always involved qemu-user-static when native hardware was not in use. They would not waste the time and resources for such contexts if an alternative had been in place. > Regards, > Michał Kruszewski > > > Sent with Proton Mail secure email. > > On Sunday, September 14th, 2025 at 2:33 PM, void <[email protected]> wrote: > >> Hello, >> >> On Sun, Sep 14, 2025 at 09:24:07AM +0000, Michał Kruszewski wrote: >> >>> I actually build system from the current main branch. >>> How do I set up poudriere in such a case? >> >> >> I'd do it like this, on amd64: >> >> install poudriere-devel and configure poudriere.conf for your system. >> (copy /usr/local/etc/poudriere.conf.sample to poudriere.conf and >> edit it) >> install qemu-user-static >> run this: 'binmiscctl enable armv7' >> then >> >> poudriere jail -c -j armv7 -J10 -a arm.armv7 -m git+https -K GENERIC-NODEBUG -v main >> >> the -J corresponding to the number of cores you may have. >> >> Note that poudriere uses qemu-user-static for cross-compilation and >> you can't build rust (or anything that uses rust) with it, as far as >> I'm aware. >> -- === Mark Millard marklmi at yahoo.com