Apologies for the issues with this upgrade, everyone. Let me offer a quick explanation, for anyone who cares.
There are a few things at play here:
-
We switched from Raspbian Stretch to Raspbian Buster about a year and a half ago, in order to support the Raspberry Pi 4, but continued issuing a single OTA update. That was bound to catch up to us.
-
The build process for this release (0.12) was changed. The previous build process was a tedious process, consisting of:
- A series of manual steps on a first-generation Raspberry Pi.
- A series of automated steps via Travis CI/GitHub Actions.
- A series of manual steps on a Linux workstation.
The process is now a single script, which can be done via automation.
-
We had to switch Node versions (8 -> 10) in this release, as 8 is no longer supported and several of our dependencies were already dropping support for it.
So, the primary issue here is that the gateway itself (and its dependencies) are now built as a part of the Raspbian Buster image creation process, rather than being cross-compiled in a Debian Stretch environment and then copied into the image.
Since Buster uses a newer version of glibc, the OTA update went awry for people using the old Stretch images.
When those upgrades failed, the part of the upgrade process that pulls down the proper add-on updates for the new Node version also failed, leading to the multi-stage failure.
Again, I apologize for this. On the bright side, the gateway should be in a much better state now, such that anyone can build an image by running one script.
For anyone jumping directly to this comment, there are two solutions:
- Rebuild your Node modules and reinstall broken add-ons, as instructed here.
- Back up your
/home/pi/.mozilla-iot
directory, flash a fresh 0.12 image, then restore that directory. You’ll probably still have to reinstall some add-ons.