zirias@
Developer
A simple way to upgrade from source using builds done on a different machine is to just share /usr/src and /usr/obj with NFS and only execute the
Otherwise, you'll run into problems because some tools are built targeting the build machine; these are used during further building and during installation. So for example, if you build on
My current workaround is building for i386 twice. Once as a cross-build, using the result to populate a jail for poudriere as well as another "i386 builder" jail, which I use to build for the second time (to a different /usr/obj without cross-building). From this second build, installation on an actual i386 machine works fine.
Well, my question is: is there a (hopefully simple) way to just tell the build-system to also cross-compile these temporary tools, so I don't need this workaround building everything twice?
installkernel
and installworld
make targets on the target machine. This is really straight-forward, as long as both machines use the same (pre-upgrade) ABI, including the same target architecture.Otherwise, you'll run into problems because some tools are built targeting the build machine; these are used during further building and during installation. So for example, if you build on
amd64
targeting i386
(super easy with TARGET=i386
), the result won't be installable with the "NFS trick" mentioned above on an actual i386 machine because e.g. make installworld
will try to execute tools there that were built for amd64.My current workaround is building for i386 twice. Once as a cross-build, using the result to populate a jail for poudriere as well as another "i386 builder" jail, which I use to build for the second time (to a different /usr/obj without cross-building). From this second build, installation on an actual i386 machine works fine.
Well, my question is: is there a (hopefully simple) way to just tell the build-system to also cross-compile these temporary tools, so I don't need this workaround building everything twice?