nw.js 0.23.7 arm64 not compatible with Ubuntu on the Raspberry Pi
In !766 (merged) we added support for building arm64 packages for the Raspberry Pi 3/4 and similar ARM-based 64 bit systems. For this we leverage a build of nw.js 0.23.7 done some time ago by Maurits Lamers, available at https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases/tag/v0.23.7.
I've tested the OBS builds on various 64 bit Linux distros for the Pi4 now. While Maurits' package appears to work fine on Debian/Raspbian 10 arm64 systems such as the Raspbian Buster arm64 beta, it is incompatible with the various Ubuntu flavors readily available for the Pi. The error I'm getting there when trying to run purr-data in the terminal is always the same:
$ purr-data guidir is /opt/purr-data/lib/pd-l2ork/bin [0419/002948.525184:WARNING:chrome_main_delegate.cc(569)] final extension: (nw:4662): Pango-ERROR **: 00:29:49.007: Harfbuzz version too old (1.4.2) Trace/breakpoint trap (core dumped)
Leonard Laszlo's own armv7l builds of nw.js (using version 0.27.6) aren't affected by this, so our armv7l builds on the OBS work just fine both in Debian/Raspbian Buster and Ubuntu 32 bit ARM systems (tested with Ubuntu Mate 20.04 so far).
Unfortunately, that arm64 nw.js package by Maurits Lamers is a unicorn; there's not a single other arm64 build of nw.js on the Internet that we can use right now. So for the time being that means that if you want to run Purr Data on the Pi under Ubuntu right now, you'll have to stick to the 32 bit variants.
Maybe one day arm64 packages will be offered by https://nwjs.io/ now that these systems are becoming popular, but they've been dragging their feet to officially support ARM for so long, I don't expect that too happen any time soon. So in the (not so) long run, we'll likely have to build our own nw.js arm64 packages if we want to improve the situation. I'm not very much into these low-level things myself, so here's a challenge:
Build an arm64 version of nw.js (if possible, close to the 0.28.1 release that we're currently using elsewhere) that works on both Debian/Raspbian 10(+) and recent Ubuntu releases for the Raspberry Pi.
This isn't for the faint of heart. While there are some guides to be found on https://github.com/LeonardLaszlo/nw.js-armv7-binaries, and Maurits has documented his progress in this issue, the build process is complicated and involves cross-compilation. It also requires substantial resources (cpu, RAM, and harddrive space).
If there's anyone who's willing to give it a whirl, please get in touch or just post to this issue! (Jonathan, we might also consider this as a project in GSoC 2022 if nobody bites before that. I really think that this is important, and will only become more important in the future.)