This is part of a series of posts on compiling a custom version of Qt5 in order to develop for both amd64 and a Raspberry Pi.
As an attempt to get webview to compile, I'm reattempting to build a Qt5 cross-compiling environment using a raspbian sysroot, instead of having dependencies for both arm and amd64 installed in the build system.
Using dependencies installed in a straightforward way in the build system has
failed because of issues like #963136,
where some of the build dependencies are needed for both architectures, but the
corresponding Debian -dev
packages are not yet coinstallable.
This is something that causes many people much pain.
Start from a clean sysroot
Looking for a Raspbian image, I found out that it has been renamed to "Raspberry Pi OS". I realised that software names are like underwear: as soon as they become well used, they need to be changed.
I downloaded RaspbianRaspberry Pi OS Lite from
https://www.raspberrypi.org/downloads/raspberry-pi-os/
to start with something minimal. It came out as something like 1.5G
uncompressed, which wasn't as minimal as I would have hoped, but that'll be
what I'll have to work with.
Adding build dependencies
I have acquired significant experience manipulating
RaspbianRaspberry Pi OS images from working with
Himblick.
This time I'm working with the disk image directly, instead of an SD card, since I will be needing it as a sysroot during the build, and I won't need to actually boot it on real hardware.
The trick is to work with kpartx to make the partitions in the image available as loopback block devices.
I have extracted a lot of relevant code from Himblick into a Python library I called Transilience
The result is this provisioning script,
which is able to take a RaspbianRaspberry Pi OS image, enlarge it,
and install Debian packages into it.
I find this script pretty cool, also in the way it embeds quite a bit of experience gathered on the field. I can also be integrated in a fully automated setup and provisioning system.
The next step will be to use the result as a sysroot to build Qt.