The old version 2.1.4 does not cross-compile without help from QEMU that
we cannot rely on going forwards. 2.1.10 is Meson-based and handles this
much better.
Rather than update the package in-place, migrate it to portage-stable
and cover the differences with a small patch and env script.
Upstream now carries the systemd files, so we do not need to add these.
/etc is now automatically moved to /usr/share/flatcar/etc, so we no
longer need any special handling for that here, but I have added a
compatibility symlink for iscsid.conf.
Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
The coreos-overlay package under app-admin was written by Jeremi around
the same time I added it to Gentoo under sys-apps. It has had a new
release since.
Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
It is not clear why this was forked originally. One reason was to avoid
the sys-apps/lsb-release dependency, but it probably wasn't just that.
It seems likely that the upstream package did not support cross targets
at the time. Now it does.
It appears that LTO was previously enabled by us following Gentoo rather
than through an explicit decision. They now disable it by default, so we
do likewise. It previously used "fat" LTO, which makes Rust especially
slow to build and reportedly made rustc slower than with "thin" LTO!
There seems little benefit in using thin LTO given that we rebuild Rust
almost as much as the packages that use it, plus we don't enable LTO
anywhere else.
We still avoid rustdoc to keep the size down using INSTALL_MASK. This
isn't as good as not building it in the first place, but this alone
isn't worth keeping a fork.
Cross targets are now handled via the admittedly experimental
RUST_CROSS_TARGETS support. This has been in place for a while, and I
think it is fairly widely used now. If it does disappear, it would
almost certainly be for something even better.
This also updates Rust from 1.80.0 to 1.80.1.
Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
We have previously avoided this package because its /etc/lsb-release
clashes with the symlink created by our sys-apps/baselayout. This has
led to the need to fork some packages, such as dev-lang/rust, just to
avoid the dependency.
Instead, we can just stop it from installing /etc/lsb-release with
INSTALL_MASK. I also considered having it create the symlink instead of
baselayout, but baselayout has the tmpfiles.d handling, so this is
simpler.
Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
From https://wiki.gentoo.org/wiki/Catalyst/Stage_Creation#Build_Stage3:
> It is not necessary to build stage2 in order to build stage3. Gentoo
> release engineering does not build stage2, and you should not need to
> unless you're intentionally building a stage2 as your goal.
We can now sync portage-stable/scripts with upstream because
bootstrap.sh is only used during stage2, and the changes we had are no
longer relevant. It seems likely the changes were already redundant
anyway.
Signed-off-by: James Le Cuirot <jlecuirot@microsoft.com>
As the net-analyzer/netperf stable version does not have a clear
License, the upstream Gentoo package has a masked ebuild that uses the
source from Github commit:
3bc455b23f
This change unmasks netperf-2.7.0_p20210121 for amd64 and arm64, in
order to use the MIT licensed version of netperf.
Also, added netperf to the github actions sync list so that it gets
automatically synced with the upstream Gentoo.
Fixes: https://github.com/flatcar/Flatcar/issues/1459
Signed-off-by: Adrian Vladu <avladu@cloudbasesolutions.com>
Enabled user session dbus in base image to support podman rootless mode.
Extension images can now be created from multiple packages by seperating
them with a comma. The podman sysext includes app-containers/podman and
net-misc/passt.
It can be enabled by adding podman to /etc/flatcar/enabled-sysext.conf.
Potential TODO: gpgme had to be added as BDEPEND to podman ebuild.
The Flatcar extensions get built by the GitHub PR CI but only their
content files get archived. Add the .raw image itself so that one can
copy it into the image (downloading it at boot time won't work because
this uses bincache - so one could get an extension image in case the but
version happens to match but it won't be the one that was built in the
GitHub CI).
The GitHub Action artifacts are compressed zip files which include
bz2 files which are either the raw .bin images that have many zero bytes
in the rootfs but the main data in /usr is using zstd compression, or
they are the qcow2 .img images which are compressed themselves (and of
course have the same /usr compression). The bz2 compression doesn't help
in our case.
Remove the bz2 compression layer. If in the future non-zip artifacts
are supported we can add it back for the .bin image only by using
explicit calls only for that file instead of the
--image_compression_formats= flag for all images.
The qemu and qemu_uefi_secure images have the same contents as the
qemu_uefi image which wastes space on the release server. A similar
case is the PXE vmlinuz which is the same as the regular one, too.
Set up symlinks for same images, and also detect this when compressing
to set up symlinks there as well. To reduce complexity, the qemu and
qemu_uefi_secure images are not supported anymore and the Jenkins or
GitHub CI will skip over them if specified. Users that build their own
images need to adapt, though.