For release tests and updating a machine to a dev build we already have
the dev-key-signed generic update payload but not yet the OEM sysext
update payload.
Generate the dev-key-signed OEM sysext update payload during build and
upload it.
This pulls in
https://github.com/flatcar/bootengine/pull/64
to download sysext images if required (optional extensions on first boot
or as fallback download after a update with missing payloads).
The initial MVP of the OEM sysext usage we release won't have updates
for the sysext image and, therefore, it is not bound to the OS version.
The special name suffix instead of the version hints bootengine at using
it if no matching version is found. The name will also be used at hint
for update-engine to clean it up when versioned sysext images arrive.
This pulls in
https://github.com/flatcar/bootengine/pull/63
to prevent the bootloop that sometimes happened and now happens more
often, e.g., as seen with the coreos.update.badusr kola test.
We don't have an update process of the OEM sysexts implemented yet, so
use a fake "initial" version for them and make them independent from
OS version.
It isn't doing much as nothing QEMU-specific was being installed into
the OEM partition.
With that done, we opt into building an OEM sysext image for QEMU
platform.
This package will be used for the sysext image, instead of for
installing files into /usr/share/oem. This means that we can drop some
files or move them elsewhere. The systemd service file is not needed,
because it is installed by the app-emulation/wa-linux-agent package
now. This also means that the ignition file as lost its purpose. The
grub.cfg and oem-release must be installed in /usr/share/oem, next to
the sysext raw image file, so handling of these files is moved to the
newly added coreos-base/common-oem-files package. `eject` symlink to
`/usr/bin/true` is installed in the newly added manglefs.sh script.
With this done, we also opt into building an OEM sysext image for
Azure platform.
Th package will generate and install both grub.cfg and oem-release
files into /usr/share/oem. Each platform can customize the process by
providing their own fragments for each of the two files if necessary.
Since the contents of this package will be now a part of the sysext
image, we don't need any special OEM-specific hacks. We don't need to
install the package in /usr/share/oem directory any more, so update
the ebuild to use the Gentoo python machinery to install files in the
usual locations. This can also use a normal python package, so replace
dependencies on dev-lang/python-oem and dev-python/distro-oem with
dev-lang/python and dev-python/distro, respectively. The waagent.conf
file we used to provide is updated (to disable auto updates, for
example, and dropped obsolete options) and now is a part of the patch,
so it is installed by the python machinery.