On 7/1/19 1:10 PM, Sebastian Kuzminsky wrote:
> On 7/1/19 11:55 AM, andy pugh wrote:
>> On Mon, 1 Jul 2019 at 17:09, Sebastian Kuzminsky
>> <[email protected]> wrote:
>>
>>>> Also when I look at this page
>>>> http://buildbot.linuxcnc.org/dists/stretch/
>>>> <http://buildbot.linuxcnc.org/dists/stretch/> it shows master and 2.7
>>>> haven’t been updated since 09-Jun
>>>
>>> Oops! Fixed, thanks for letting me know.
>>
>> Any plans for a Buster Buildbot?
>
> I'd very much like to add Buster builders to the Buildbot.
>
> LinuxCNC builds on Buster and the tests pass, so run-in-place style
> build-and-test should be doable today.
>
> But some parts of LinuxCNC have runtime dependencies that are not
> available in Buster. We'd have to figure out what to do about those
> parts before we can start shipping Buster debs...
>
>
>> Is it worth looking at cross-compiling for armhf if native arm boards
>> are not reliable enough?
>> (It's not particularly useful for build process testing, but having
>> the debs would at least get some users testing)
>
> I'd much rather do native arm builds, both because of the test coverage
> issue you mentioned and also to keep the build process unified across
> hardware architectures.
>
>
As Seb points out, there are good reasons to use native builds, and
testing is the most compelling to me. The new RPi 4 [1] is pre-shipping
in a $55 version with 4GB RAM, and would be easy to add to a BuildBot,
or if you're thinking of migrating that BuildBot out of your shop,
consider Scaleway's cheap, bare-metal ARM-architecture cloud [2]. These
two options are well-suited for both building and testing.
In case anyone's still interested in cross-compiling, I have a lot of
relevant experience with Machinekit; read on. If not, stop reading
right here!
Cross-building still has an advantage even when testing on ARM
architecture is a requirement. Packages can be quickly built on more
powerful arm64 hardware (cross-builds are as fast as native builds), and
native-architecture tests can be run on e.g. BeagleBone, a platform
targeted to run (IIRC) but anemic to build LCNC.
However, cross-compiling Debian packages for ARM is non-trivial. The
`Multi-Arch:` header in `debian/control` is the future solution for
cross-building packages, but even though this has been around for
several Debian distros, it's still not implemented properly in all
packages. The last time I really dug down into this, in Stretch,
Multiarch support was broken in some of the Machinekit build dependencies.
Cross-build support in LCNC needs to be added to the packaging, to
`configure.ac` and to the build system. Doing this for Machinekit took
me a few days. Once it's done, it would be worth looking at whether LCNC
Buster packages can be cross-built with Multiarch. It's possible that
LCNC deps are just enough different from MK's and that Buster Multiarch
support has improved enough since Stretch that this will work. It's
easy to test, and if successful, cross-building packages would be
completely painless.
For the Machinekit project, I wanted to cross-build in Travis CI's amd64
cloud instances. I devised a solution that installs ARM-architecture
dependencies in a chroot-like filesystem under `/sysroot/` using
`multistrap`, adds some monkey patches, and uses `gcc
--sysroot=/sysroot` to cross-build packages. This is all done in Docker
images to make it easy to build this ugly, messy build environment on
Docker Hub or my laptop, and use it to cross-build anywhere. Take a
look at the the base image [3] and the companion build script [4] if
you're curious. IMO it's an amazing hack (at least for its hairiness),
but at the same time an abomination that I hope will soon be obviated by
progress in the Multiarch project.
John
[1]: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/
[2]: https://www.scaleway.com/en/arm-instances/
[3]: https://github.com/zultron/mk-cross-builder
[4]:
https://github.com/machinekit/machinekit/blob/master/scripts/build_docker
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers