]> git.ipfire.org Git - thirdparty/mkosi.git/log
thirdparty/mkosi.git
13 months agoEnable EPEL again for CentOS default tools tree 2845/head
Daan De Meyer [Sat, 6 Jul 2024 22:32:24 +0000 (00:32 +0200)] 
Enable EPEL again for CentOS default tools tree

Now that we have a Repositories= match, we can conditionally enable
EPEL for CentOS Stream 9 only and override the repositories when we
call mkosi dependencies. This means that the CentOS Stream 9 default
tools tree will have all the EPEL packages but we won't list them in
the output of mkosi dependencies.

We also add various missing packages to the CentOS Stream default tools
tree.

13 months agoAdd Repositories= match
Daan De Meyer [Sat, 6 Jul 2024 22:20:00 +0000 (00:20 +0200)] 
Add Repositories= match

13 months agoMerge pull request #2847 from DaanDeMeyer/config
Daan De Meyer [Tue, 9 Jul 2024 06:06:39 +0000 (08:06 +0200)] 
Merge pull request #2847 from DaanDeMeyer/config

Rework configuration parsing (again)

13 months agomkosi-initrd: Always add virtio_console module to initramfs
Daan De Meyer [Mon, 8 Jul 2024 22:25:38 +0000 (00:25 +0200)] 
mkosi-initrd: Always add virtio_console module to initramfs

13 months agoRework configuration parsing (again) 2847/head
Daan De Meyer [Sun, 7 Jul 2024 15:22:40 +0000 (17:22 +0200)] 
Rework configuration parsing (again)

As explained in #2846, there are multiple issues with the current
implementation of mkosi.images. Let's take what we learned from the
default initrd and the default tools tree and apply it mkosi.images.

Specifically, all issues arise from the fact that we apply every option
from the global configuration (including CLI arguments) to the images
from mkosi.images/. To avoid the issues that arise from this (e.g --package
abc installing abc in all images), we made configuration values override
CLI arguments again so that we could override faulty CLI arguments again
in subimages so that they would only apply to the main image (e.g. set
Format= explicitly for each subimage so that --format on the command line
only applies to the main image).

Because we still wanted to allow configurable settings that can be modified
via the command line, we introduced the default specifier '@' which can be
prefixed to a setting to set a default value instead of overriding the value.
The '@' specifier is generally used in the global image independent
configuration to specify default values that can be overridden from the command
line. This specifier has led to a lot of confusion, along with the behavior that
the CLI does not override the configuration.

From the default tools tree and default initrd, we learned that what works
very well is to only have specific settings from the main image configuration
apply to the default tools tree and default initrd. For example, the distribution,
release, mirror and architecture should be the same for the main image and the
initrd, but the packages from the main image should not all be installed in the
initrd.

We can apply this idea to the images from mkosi.images/ as well, if we
introduce the assumption that all images defined in mkosi.images are
subimages intended to be included in some way or form in the main image.
This assumption allows us to divide all settings into either image specific
settings or "universal" settings that should apply to the main image and all
its subimages. The universal settings are passed on to each subimage. The image
specific settings are not.

This idea also allows us to define the "main" image outside of mkosi.images
again. Since only "universal" settings are passed on, we can safely define
an output format and such again in the global configuration, as we know this
won't be passed on to subimages.

It also allows us to make CLI arguments override configuration again. Since
there is no need anymore for subimages to override the CLI configuration as
inappropriate CLI configuration such as extra packages will only apply to the
main image and not any subimages from mkosi.images/. Because CLI configuration
overrides file configuration again, we also don't need the '@' specifier anymore,
as default values can simply be set without '@', since the CLI will override
the configuration file values by default.

We also lose the need for --append, because the sole use for --append was again
to override file based configuration.

Note that configuration from mkosi.local.conf is special in that it
should override settings from other configuration files, but not settings
that are specified on the CLI.

This commit implements all of what's mentioned above, specifically:

- CLI configuration now always trumps file based configuration.
- The '@' specifier is dropped automatically during parsing
- The main image is now always added from global configuration, even
if there are images in mkosi.images/. The main image is always built
last, and cannot be used as a dependency in the Dependencies= setting
for images defined in mkosi.images/.
- The Dependencies= setting for the main image now is used to specify
which subimages from mkosi.images/ to build. By default all subimages
are built.
- A universal tag is introduced for settings and appropriate settings
are marked as universal. Universal settings are passed on from the
main image configuration to subimage configuration.
- The Images= setting is removed, as it's role is replaced by
Dependencies=.
- The old name mkosi.presets and the Preset section name are removed
as they have been deprecated for a long time now.
- The config parsing tests are extended to cover more cases.
- All builtin configuration is adapted to stop using the '@' specifier.
- The documentation is updated in accordance with the changes.

13 months agoFix empty strings for lists and dicts
Daan De Meyer [Mon, 8 Jul 2024 17:41:16 +0000 (19:41 +0200)] 
Fix empty strings for lists and dicts

Parse functions should return None to pick the default value. Also,
we don't get any values at all if unescape=True and the empty string
is passed so make sure we handle that case as well.

13 months agoDon't do caching if we have base trees
Daan De Meyer [Mon, 8 Jul 2024 14:39:32 +0000 (16:39 +0200)] 
Don't do caching if we have base trees

Instead of doing a complicated scheme with cache overlays which
aren't invalidated when the base tree changes, let's not do caching
when there are base trees. We assume that if there's a base tree
only a minimal amount of extra packages is installed that is sufficiently
fast without caching.

13 months agoUse list type for Images= and Dependencies= instead of tuple
Daan De Meyer [Mon, 8 Jul 2024 13:40:25 +0000 (15:40 +0200)] 
Use list type for Images= and Dependencies= instead of tuple

Also remove the unneeded JSON transformer/parser.

13 months agoRevert "action: Remove apparmor disable logic"
Daan De Meyer [Mon, 8 Jul 2024 12:19:42 +0000 (14:19 +0200)] 
Revert "action: Remove apparmor disable logic"

Turns out this hasn't been shipped in the default image yet.

This reverts commit 90cb8d54a0c65f46f0c7462be74a4135576edddf.

13 months agoMake INVOKING_USER.chown() take /tmp and /var/tmp into account
Daan De Meyer [Mon, 8 Jul 2024 10:45:23 +0000 (12:45 +0200)] 
Make INVOKING_USER.chown() take /tmp and /var/tmp into account

Let's also chown the directory to be user owned if located in /tmp
or /var/tmp.

13 months agoUse subdirectory of build directory for each subimage
Daan De Meyer [Mon, 8 Jul 2024 08:15:36 +0000 (10:15 +0200)] 
Use subdirectory of build directory for each subimage

Instead of sharing the build directory between all images, let's
use a subdirectory of the build directory for subimages.

This requires us to unshare the user namespace in run_build() before
we create the directories so that we always have permissions to create
any nested build directories.

13 months agoResolve source path in mount_base_trees()
Daan De Meyer [Mon, 8 Jul 2024 07:28:46 +0000 (09:28 +0200)] 
Resolve source path in mount_base_trees()

We want to check the extension on the resolved path, not on any
symlinks, so let's make sure we resolve the path first.

13 months agoDrop dead code
Daan De Meyer [Sun, 7 Jul 2024 13:44:16 +0000 (15:44 +0200)] 
Drop dead code

We don't read configuration for the genkey verb anymore so this can
be dropped.

13 months agoUse return value of finalize_value() in one more place
Daan De Meyer [Sun, 7 Jul 2024 13:39:13 +0000 (15:39 +0200)] 
Use return value of finalize_value() in one more place

Doesn't change behavior, just slightly easier to read.

13 months agoSimplify parse_new_includes()
Daan De Meyer [Sun, 7 Jul 2024 13:35:27 +0000 (15:35 +0200)] 
Simplify parse_new_includes()

We don't need to keep track of the current amount of includes since
those includes are already tracked in parsed_includes and will be
ignored. Slightly less efficient but this shouldn't matter here.

We also store the inode in parsed_includes before we parse the config
to make sure we don't try to parse it more than once.

13 months agoRename finalize_default() to finalize_value()
Daan De Meyer [Sun, 7 Jul 2024 13:33:52 +0000 (15:33 +0200)] 
Rename finalize_default() to finalize_value()

Fits what the function does better.

13 months agoMerge pull request #2843 from DaanDeMeyer/opensuse
Daan De Meyer [Sat, 6 Jul 2024 21:38:12 +0000 (23:38 +0200)] 
Merge pull request #2843 from DaanDeMeyer/opensuse

opensuse: Add support for aarch64

13 months agoopensuse: Install qemu-ovmf-x86_64 and qemu-uefi-aarch64 in tools tree 2843/head
Daan De Meyer [Sat, 6 Jul 2024 19:27:08 +0000 (21:27 +0200)] 
opensuse: Install qemu-ovmf-x86_64 and qemu-uefi-aarch64 in tools tree

Let's make sure the UEFI firmware for both x86-64 and arm64 is
available.

13 months agoopensuse: Install qemu-ipxe
Daan De Meyer [Sat, 6 Jul 2024 19:16:32 +0000 (21:16 +0200)] 
opensuse: Install qemu-ipxe

qemu-ipxe contains efi-virtio.rom which fixes the following failure:

"""
qemu-system-aarch64: failed to find romfile "efi-virtio.rom"
"""

13 months agoInstall qemu-efi-aarch64 in Debian/Ubuntu tools trees
Daan De Meyer [Sat, 6 Jul 2024 19:06:26 +0000 (21:06 +0200)] 
Install qemu-efi-aarch64 in Debian/Ubuntu tools trees

This package provides the aarch64 OVMF firmware required to do
UEFI on arm64.

13 months agoDo not unconditionally try to install systemd-boot and resolved on Debian/Ubuntu
Daan De Meyer [Sat, 6 Jul 2024 19:05:10 +0000 (21:05 +0200)] 
Do not unconditionally try to install systemd-boot and resolved on Debian/Ubuntu

These are already handled by the systemd-extras.conf dropin.

Fixes bcfaa035716ee0208b869d4f74ffcca55c498a59

13 months agoVarious fixes for grub packages in default tools trees
Daan De Meyer [Sat, 6 Jul 2024 19:02:31 +0000 (21:02 +0200)] 
Various fixes for grub packages in default tools trees

- Install grub2-tools on all architectures on CentOS/Fedora instead
of just x86-64.
- Only install grub-pc-bin on x86-64 on Debian/Ubuntu as it is not
available on other architectures
- Install grub-common instead of grub2 as grub-common contains all
the binaries we need and grub2 configures the system to use grub
as the bootloader which we don't want when these packages might be
installed on user's systems via mkosi dependencies.
- Do not install grub2 on OpenSUSE due to the same problem, it
configures the system to use grub as the bootloader which we don't
want. Unfortunately there is no subpackage with only the grub binaries
on OpenSUSE. Reported as https://bugzilla.opensuse.org/show_bug.cgi?id=1227464.
The tests are changed to not try to build or boot opensuse images
with bios.

13 months agoExtend grub binary search path
Daan De Meyer [Sat, 6 Jul 2024 20:03:07 +0000 (22:03 +0200)] 
Extend grub binary search path

Debian has a bespoke setup where if only grub-pc-bin is installed,
grub-bios-setup is installed in /usr/lib/i386-pc instead of in
/usr/bin. Let's take that into account and look for binaries in
/usr/lib/grub/i386-pc as well.

13 months agoUpdate docs to reflect removed packages from CentOS tools tree
Daan De Meyer [Sat, 6 Jul 2024 18:52:52 +0000 (20:52 +0200)] 
Update docs to reflect removed packages from CentOS tools tree

13 months agoopensuse: Allow building default image for arm64
Daan De Meyer [Sat, 6 Jul 2024 18:38:32 +0000 (20:38 +0200)] 
opensuse: Allow building default image for arm64

We also get rid of the systemd-coredump package which got merged back
into the main systemd package.

13 months agoopensuse: Add support for aarch64
Daan De Meyer [Sat, 6 Jul 2024 18:24:10 +0000 (20:24 +0200)] 
opensuse: Add support for aarch64

This requires another rework for the repositories() method for
OpenSUSE. Whereas before we picked up all the repositories from
https://download.opensuse.org/tumbleweed/repo/, it turns out that
the debug and source repositories can also be found at
https://download.opensuse.org/debug/tumbleweed/repo/ and
https://download.opensuse.org/source/tumbleweed/repo/ respectively.
Furthermore, the latter locations are the only ones that are available
for ports under https://download.opensuse.org/ports/ so we switch to
those instead.

Additionally, openSUSE-current is not available for ports so we disallow
using current, stable and release with architectures other than x86-64.

While there are more ports than just aarch64, for now let's just add
aarch64 and wait for user demand before we add any others.

13 months agorun: Don't try to communicate inner pid for debug shell
Daan De Meyer [Sat, 6 Jul 2024 19:49:19 +0000 (21:49 +0200)] 
run: Don't try to communicate inner pid for debug shell

The pipe write end has already been closed by then so bash will
fail with "bad file descriptor". Since there's no reason in having
the inner pid in the debug shell let's make sure we don't try to
communicate it there.

13 months agoAlways execute ukify with the configured python interpreter
Daan De Meyer [Sat, 6 Jul 2024 15:41:42 +0000 (17:41 +0200)] 
Always execute ukify with the configured python interpreter

We extend python_binary() with a binary argument so we can pass in
the binary we want to execute with python so python_binary() can
figure out whether we're going to use the python binary from the
tools tree or not.

13 months agoOnly use cache.direct if image size is aligned to page size
Daan De Meyer [Sat, 6 Jul 2024 15:24:21 +0000 (17:24 +0200)] 
Only use cache.direct if image size is aligned to page size

Trying to use cache.direct with an image whose size is not a multiple
of the page size fails so let's make sure we only use cache.direct if
that's the case and make sure the image size is a multiple of the page
size if we can.

13 months agoMerge pull request #2839 from DaanDeMeyer/dependencies
Daan De Meyer [Sat, 6 Jul 2024 15:43:15 +0000 (17:43 +0200)] 
Merge pull request #2839 from DaanDeMeyer/dependencies

Use mkosi dependencies in default image

13 months agoUse mkosi dependencies in default image 2839/head
Daan De Meyer [Fri, 5 Jul 2024 18:52:22 +0000 (20:52 +0200)] 
Use mkosi dependencies in default image

Let's reduce duplication by using mkosi dependencies to install
all required dependencies to build the default image. To make this
work we add support for tools trees on jammy/bookworm. We also drop
support for a focal default image as it's too much of a burden to
maintain.

We also remove the EPEL only packages from the CentOS tools tree so
that mkosi dependencies works on a CentOS Stream system without EPEL
enabled.

Finally, curl-minimal is replaced by curl because trying to install
curl-minimal on a system with curl leads to a dnf failure so we opt
for the larger curl in order to make mkosi dependencies useful in
more situations.

13 months agoaction: Remove apparmor disable logic
Daan De Meyer [Sat, 6 Jul 2024 14:31:45 +0000 (16:31 +0200)] 
action: Remove apparmor disable logic

This is now done in GA itself so we can drop our logic.

13 months agoDon't parse configuration for dependencies verb
Daan De Meyer [Sat, 6 Jul 2024 14:40:22 +0000 (16:40 +0200)] 
Don't parse configuration for dependencies verb

13 months agoopensuse: Modernize and complete repositories
Daan De Meyer [Fri, 5 Jul 2024 11:53:47 +0000 (13:53 +0200)] 
opensuse: Modernize and complete repositories

Let's complete our list of opensuse repositories and modernize the
implementation at the same time.

13 months agoAdd %F to access the default filesystem of a distribution
Daan De Meyer [Fri, 5 Jul 2024 07:19:51 +0000 (09:19 +0200)] 
Add %F to access the default filesystem of a distribution

One annoyance about using mkosi.repart has always been that to keep
using the default filesystem per distribution you have to write a
lot of matches. Now that systemd-repart supports
$SYSTEMD_REPART_OVERRIDE_FSTYPE_ROOT, let's add a specifier to access
the default filesystem so that it can be combined with the environment
variable to get the same result.

13 months agoReplace root=PARTUUID and mount.usr=PARTUUID with the actual partition UUID
Daan De Meyer [Thu, 4 Jul 2024 18:41:09 +0000 (20:41 +0200)] 
Replace root=PARTUUID and mount.usr=PARTUUID with the actual partition UUID

These are not known upfront so let's treat these literals as placeholders
which are to be replaced with the actual partition UUID when we know it.

13 months agoMerge pull request #2834 from DaanDeMeyer/virtconsole
Jörg Behrmann [Thu, 4 Jul 2024 16:24:38 +0000 (18:24 +0200)] 
Merge pull request #2834 from DaanDeMeyer/virtconsole

Use qemu's virtconsole for the serial console

13 months agoUse qemu's virtconsole for the serial console 2834/head
Daan De Meyer [Thu, 4 Jul 2024 15:16:35 +0000 (17:16 +0200)] 
Use qemu's virtconsole for the serial console

edk2 now has a virtio serial driver so let's switch to virtconsole
for the serial console as it's significantly faster compared to the
old ISA serial console.

13 months agoMove systemd-ukify to UEFI only config file
Daan De Meyer [Thu, 4 Jul 2024 15:15:14 +0000 (17:15 +0200)] 
Move systemd-ukify to UEFI only config file

It cannot be installed on powerpc or s390x.

13 months agoDrop default kernel command line
Daan De Meyer [Thu, 4 Jul 2024 14:41:53 +0000 (16:41 +0200)] 
Drop default kernel command line

All the latest releases of distributions now have a systemd stub
that knows how to read extra kernel command line arguments from
SMBIOS (It was backported to CentOS Stream 9), so let's drop the
default kernel command line and rely completely on passing the
console to use via SMBIOS.

This makes sure that users trying to deploy our images on bare metal
have a working console. Users that want to access the system via the
serial console will have to add the required console= argument
themselves.

13 months agoadd Arch Linux ARM repo
Grey Christoforo [Wed, 3 Jul 2024 16:27:10 +0000 (17:27 +0100)] 
add Arch Linux ARM repo

13 months agojson: appease type checkers in a less cumbersome way for now
Jörg Behrmann [Wed, 3 Jul 2024 15:15:03 +0000 (17:15 +0200)] 
json: appease type checkers in a less cumbersome way for now

13 months agoMerge pull request #2827 from DaanDeMeyer/rmtree
Luca Boccassi [Wed, 3 Jul 2024 13:46:07 +0000 (15:46 +0200)] 
Merge pull request #2827 from DaanDeMeyer/rmtree

Call rmtree() on context.root after finalize_staging()

13 months agoWork around pyright errors 2827/head
Daan De Meyer [Wed, 3 Jul 2024 10:51:34 +0000 (12:51 +0200)] 
Work around pyright errors

13 months agoCall rmtree() on context.root after finalize_staging()
Daan De Meyer [Wed, 3 Jul 2024 10:17:03 +0000 (12:17 +0200)] 
Call rmtree() on context.root after finalize_staging()

After we've finalized the staging directory, there is no more need
for the root directory in the workspace. It used to get cleaned by
the setup_workspace() context manager but this is rather slow (can
take more than a second). By calling rmtree() explicitly, if we're
on a btrfs filesystem, we'll call btrfs subvolume delete which is
much faster than rm.

13 months agoMake sure rmtree() doesn't fail on paths that don't exist
Daan De Meyer [Wed, 3 Jul 2024 10:16:40 +0000 (12:16 +0200)] 
Make sure rmtree() doesn't fail on paths that don't exist

13 months agoMerge pull request #2826 from DaanDeMeyer/fstab
Luca Boccassi [Wed, 3 Jul 2024 09:09:20 +0000 (11:09 +0200)] 
Merge pull request #2826 from DaanDeMeyer/fstab

Use fstab.extra instead of kernel command line for extra mounts

13 months agoMount all virtiofs mounts in the initrd 2826/head
Daan De Meyer [Tue, 2 Jul 2024 21:45:00 +0000 (23:45 +0200)] 
Mount all virtiofs mounts in the initrd

This allows using these to mount e.g. kernel modules as well
before switch-root. If there is no initramfs, the modules will still
be loaded in the rootfs.

13 months agoUse fstab.extra instead of kernel command line for extra mounts
Daan De Meyer [Tue, 2 Jul 2024 21:43:55 +0000 (23:43 +0200)] 
Use fstab.extra instead of kernel command line for extra mounts

Kernel command line space is very limited, so let's use credentials
where we can instead.

13 months agoAdd rw to extra kernel command line by default
Daan De Meyer [Tue, 2 Jul 2024 21:43:13 +0000 (23:43 +0200)] 
Add rw to extra kernel command line by default

This generally makes more sense as the default for us instead of
ro.

13 months agoAlways rerun build if Format=none and don't remove previous outputs
Daan De Meyer [Tue, 2 Jul 2024 20:56:25 +0000 (22:56 +0200)] 
Always rerun build if Format=none and don't remove previous outputs

Let's always rerun the build if Format=none. Also, since we know
Format=none won't touch any of the outputs we know about, let's keep
the existing outputs intact. This allows using Format=none to rerun
the build script without removing the existing output (e.g. directory
or disk image).

We'll be able to make use of this in mkosi-kernel to rebuild the kernel
modules without removing the disk image produced in a previous step.

We also simplify check_outputs() to only check the main output and not
the auxiliary outputs.

13 months agoFix disk image check
Daan De Meyer [Tue, 2 Jul 2024 19:58:02 +0000 (21:58 +0200)] 
Fix disk image check

13 months agoShow proper error when using disk images as a tree without being root
Daan De Meyer [Tue, 2 Jul 2024 17:27:06 +0000 (19:27 +0200)] 
Show proper error when using disk images as a tree without being root

Fixes #2818

13 months agoAdd mirror to package cache key if one is specified
Daan De Meyer [Tue, 2 Jul 2024 11:36:29 +0000 (13:36 +0200)] 
Add mirror to package cache key if one is specified

On Arch Linux, pacman seems to only check if the sync db on the
mirror is newer than the one available locally, which breaks when
using e.g. the archive where the sync db is older by definition.

Let's add any specified mirror to the default package cache dir key
to make sure that a different cache is used for explicitly specified
mirrors.

13 months agoResolve source symlink in install_tree()
Daan De Meyer [Tue, 2 Jul 2024 09:26:38 +0000 (11:26 +0200)] 
Resolve source symlink in install_tree()

We do a bunch of checks on file extension and such, and those
should be done on the resolved filename and not on a symlink.

13 months agoMake sure policy-rc.d parent directory exists
Daan De Meyer [Tue, 2 Jul 2024 09:09:29 +0000 (11:09 +0200)] 
Make sure policy-rc.d parent directory exists

If BaseTrees= is used /usr/sbin might not exist so let's make sure
it does to avoid failing with an incomprehensible exception.

13 months agoPick up GNUPGHOME from user's environment
Daan De Meyer [Tue, 2 Jul 2024 09:19:17 +0000 (11:19 +0200)] 
Pick up GNUPGHOME from user's environment

If not set in Environment=, we default to the user's home directory.
Let's instead use GNUPGHOME from the user's environment if it is set
before falling back to the user's home directory.

Fixes #2815.

13 months agobuild(deps): bump github/codeql-action from 3.25.3 to 3.25.11
dependabot[bot] [Mon, 1 Jul 2024 22:22:44 +0000 (22:22 +0000)] 
build(deps): bump github/codeql-action from 3.25.3 to 3.25.11

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.3 to 3.25.11.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/d39d31e687223d841ef683f52467bd88e9b21c14...b611370bb5703a7efb587f9d136a52ea24c5c38c)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
13 months agobuild(deps): bump actions/checkout from 4.1.6 to 4.1.7
dependabot[bot] [Mon, 1 Jul 2024 22:22:47 +0000 (22:22 +0000)] 
build(deps): bump actions/checkout from 4.1.6 to 4.1.7

Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/a5ac7e51b41094c92402da3b24376905380afc29...692973e3d937129bcbf40652eb9f2f61becf3332)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
13 months agoMerge pull request #2814 from NekkoDroid/tar-decompression
Daan De Meyer [Mon, 1 Jul 2024 10:56:06 +0000 (12:56 +0200)] 
Merge pull request #2814 from NekkoDroid/tar-decompression

Support decompressing tar archives (+ use systemd-dissect long option)

13 months agoUse long options for `systemd-dissect` 2814/head
Michael Ferrari [Mon, 1 Jul 2024 09:14:42 +0000 (11:14 +0200)] 
Use long options for `systemd-dissect`

13 months agoSupport decompressing tar archives
Michael Ferrari [Mon, 1 Jul 2024 09:10:36 +0000 (11:10 +0200)] 
Support decompressing tar archives

This switches `extract_tar` to read the file itself instead of from
stdin to be able to auto-detect the compression method used.

BSD tar can auto-detect and decompress from stdin, but GNU tar only
auto-detects the compression method and notifies the user, but refuses
to run when not explicitly specifying the format on the command line.

13 months agodoc: distribution-gpg-keys is available in Arch Linux
Jelle van der Waa [Sun, 30 Jun 2024 10:33:53 +0000 (12:33 +0200)] 
doc: distribution-gpg-keys is available in Arch Linux

This package is available in the Arch Linux repositories since
2024-06-19.

13 months agodoc: mention default QEMU exit keybinding
Jelle van der Waa [Sun, 30 Jun 2024 09:41:06 +0000 (11:41 +0200)] 
doc: mention default QEMU exit keybinding

Quitting directly is easier then first switching to the qemu console and
then entering `quit`.

https://www.qemu.org/docs/master/system/mux-chardev.html

13 months agoFix mirror paths for centos/fedora family of distributions.
Daan De Meyer [Sat, 29 Jun 2024 09:16:47 +0000 (11:16 +0200)] 
Fix mirror paths for centos/fedora family of distributions.

We assumed that fedora would always be in the fedora subdirectory
of the mirror and that centos would always be in the centos-stream
subdirectory of the mirror but this is not guaranteed to be true
(see https://pagure.io/centos-infra/issue/1430).

Let's fix this by not always appending centos-stream/ or fedora/ to
the given mirror so the user can determine whether to include this
or not.

This is a breaking change but making sure all mirrors can be used
regardless of layout seems more important in this case.

For EPEL we do make a bigger assumption on the mirror layout since
we're forced to as we don't have a mechanism to specify more than one
mirror. We also allow users to override the epel mirror via an
environment variable.

13 months agoaarch64 fixes for default image packages
Daan De Meyer [Sat, 29 Jun 2024 08:31:45 +0000 (10:31 +0200)] 
aarch64 fixes for default image packages

13 months agoDefault to no secure boot for non-x86 architectures
Daan De Meyer [Fri, 28 Jun 2024 13:16:37 +0000 (15:16 +0200)] 
Default to no secure boot for non-x86 architectures

13 months agomkosi-initrd: provide a separate mkosi-initrd script
Antonio Alvarez Feijoo [Thu, 27 Jun 2024 14:37:00 +0000 (16:37 +0200)] 
mkosi-initrd: provide a separate mkosi-initrd script

Extract the basic functionality implemented on the kernel-install plugin into a
separate script. This allows to simplify the initrd/UKI build auto-filling
arguments of the `mkosi` call, and also auto-include user/distro configuration
from `/{etc,usr/lib}/mkosi-initrd`.

13 months agoMerge pull request #2789 from keszybz/eradicate-named-tuples
Daan De Meyer [Thu, 27 Jun 2024 13:36:50 +0000 (15:36 +0200)] 
Merge pull request #2789 from keszybz/eradicate-named-tuples

Use dataclasses instead of NamedTuples, unnest code

13 months agoTwo small cleanups suggests by pylint 2789/head
Zbigniew Jędrzejewski-Szmek [Sun, 16 Jun 2024 12:08:13 +0000 (14:08 +0200)] 
Two small cleanups suggests by pylint

13 months agokernel-install: drop final NamedTuple use
Zbigniew Jędrzejewski-Szmek [Sat, 15 Jun 2024 20:17:14 +0000 (22:17 +0200)] 
kernel-install: drop final NamedTuple use

13 months agotests: make Config a normal dataclass
Zbigniew Jędrzejewski-Szmek [Sat, 15 Jun 2024 20:15:15 +0000 (22:15 +0200)] 
tests: make Config a normal dataclass

13 months agoqemu: drop another NamedTuple use
Zbigniew Jędrzejewski-Szmek [Sat, 15 Jun 2024 20:08:50 +0000 (22:08 +0200)] 
qemu: drop another NamedTuple use

13 months agoinstaller/arch: make Repository a normal dataclass
Zbigniew Jędrzejewski-Szmek [Sat, 15 Jun 2024 20:05:55 +0000 (22:05 +0200)] 
installer/arch: make Repository a normal dataclass

13 months agosandbox: drop another NamedTuple use
Zbigniew Jędrzejewski-Szmek [Sat, 15 Jun 2024 20:02:47 +0000 (22:02 +0200)] 
sandbox: drop another NamedTuple use

13 months agoinstaller/apt: make Repository a normal dataclass
Zbigniew Jędrzejewski-Szmek [Sat, 15 Jun 2024 19:56:15 +0000 (21:56 +0200)] 
installer/apt: make Repository a normal dataclass

NamedTuple is an outdated solution… Make a normal dataclass to
match other places. Dataclasses also have nicer string representation.

Also let's not make the class nested. This doesn't matter terribly here,
but it makes the code unusual. Rename the type to "AptRepository"
to match RpmRepository.

13 months agoinstaller/rpm: make RpmRepository a dataclass
Zbigniew Jędrzejewski-Szmek [Sat, 15 Jun 2024 19:57:49 +0000 (21:57 +0200)] 
installer/rpm: make RpmRepository a dataclass

Dataclasses are the more modern approach, with better string representation and
less hacks. A NamedTuple is also a tuple, which is rather surprising when we
don't use that.

13 months agoUpdate mkosi apt sources location in kernel-install plugin
Daan De Meyer [Wed, 26 Jun 2024 10:30:58 +0000 (12:30 +0200)] 
Update mkosi apt sources location in kernel-install plugin

This was changed in cffddd87776178f19d9a7a633aa597cc9e49722f so let's
accomodate for that in the kernel-install plugin.

13 months agoMerge pull request #2806 from DaanDeMeyer/debian
Daan De Meyer [Wed, 26 Jun 2024 11:35:13 +0000 (13:35 +0200)] 
Merge pull request #2806 from DaanDeMeyer/debian

Deal with systemd split packages added in Debian testing

13 months agomkosi-tools: Sort package list 2806/head
Daan De Meyer [Wed, 26 Jun 2024 10:45:58 +0000 (12:45 +0200)] 
mkosi-tools: Sort package list

13 months agoDeal with systemd split packages added in Debian testing
Daan De Meyer [Wed, 26 Jun 2024 10:04:19 +0000 (12:04 +0200)] 
Deal with systemd split packages added in Debian testing

systemd-repart and systemd-cryptsetup were moved to subpackages in
Debian testing. Let's make sure we account for that in mkosi-tools
and mkosi-initrd.

13 months agoOnly use fw_cfg if credential name is not too long
Daan De Meyer [Tue, 25 Jun 2024 08:41:44 +0000 (10:41 +0200)] 
Only use fw_cfg if credential name is not too long

13 months agoMerge pull request #2802 from DaanDeMeyer/sdmagic
Jörg Behrmann [Mon, 24 Jun 2024 21:19:03 +0000 (23:19 +0200)] 
Merge pull request #2802 from DaanDeMeyer/sdmagic

Fix sdmagic check on CentOS

13 months agoBump 256~devel version requirements to 256 2802/head
Daan De Meyer [Mon, 24 Jun 2024 11:39:37 +0000 (13:39 +0200)] 
Bump 256~devel version requirements to 256

Now that 256 is released, let's bump our 256~devel version requirements
to 256.

13 months agoFix sdmagic check on CentOS
Daan De Meyer [Mon, 24 Jun 2024 11:37:29 +0000 (13:37 +0200)] 
Fix sdmagic check on CentOS

systemd-stub on CentOS has misaligned PE sections causing us to read
a bunch of null bytes from the sdmagic section. Let's treat this case
as not finding a stub version to fix the CI builds.

13 months agoSkip directories when generating checksums
Michael Ferrari [Sat, 22 Jun 2024 09:38:23 +0000 (11:38 +0200)] 
Skip directories when generating checksums

It is possible that some directory is created by the user in
`mkosi.postoutput`, so just make sure to skip those as they can't be
hashed.

Also remove the check for directory output type as auxiliary files may
be created that should be hashed.

13 months agoDon't rename vmlinux to vmlinuz when copying from /boot to /usr
Daan De Meyer [Mon, 24 Jun 2024 08:30:42 +0000 (10:30 +0200)] 
Don't rename vmlinux to vmlinuz when copying from /boot to /usr

We only want to rename vmlinux to vmlinuz when copying to the output
directory. In the image itself we can keep using the same name.

Follow up for 6972f9efba5c8472d990be3783b7e7dbf76e109e

13 months agomkosi-tools: Install distribution-gpg-keys in Arch Linux default tools tree
Daan De Meyer [Mon, 24 Jun 2024 08:59:07 +0000 (10:59 +0200)] 
mkosi-tools: Install distribution-gpg-keys in Arch Linux default tools tree

It was recently packaged in the extra repository.

13 months agoMerge pull request #2799 from DaanDeMeyer/tmp
Daan De Meyer [Mon, 24 Jun 2024 08:16:27 +0000 (10:16 +0200)] 
Merge pull request #2799 from DaanDeMeyer/tmp

Various sandbox fixes

13 months agoMake /var/tmp optional for sandbox 2799/head
Daan De Meyer [Sun, 23 Jun 2024 12:28:41 +0000 (14:28 +0200)] 
Make /var/tmp optional for sandbox

Let's only create a custom /var/tmp directory for some commands instead
of all of them.

We only create a custom /var/tmp for systemd-repart and scripts as other
commands shouldn't have need for a separate /var/tmp that's stored on disk.

Fixes #2792

13 months agoFix sandbox in run_postoutput_scripts()
Daan De Meyer [Sun, 23 Jun 2024 12:18:21 +0000 (14:18 +0200)] 
Fix sandbox in run_postoutput_scripts()

13 months agoRename vartmp to vartmpdir
Daan De Meyer [Sun, 23 Jun 2024 12:10:11 +0000 (14:10 +0200)] 
Rename vartmp to vartmpdir

13 months agoMake sure /tmp, /var/tmp and /dev/shm permissions are correct in sandbox
Daan De Meyer [Sun, 23 Jun 2024 12:07:56 +0000 (14:07 +0200)] 
Make sure /tmp, /var/tmp and /dev/shm permissions are correct in sandbox

13 months agoStop mounting tmpfs to /tmp in sandbox
Daan De Meyer [Sun, 23 Jun 2024 12:07:01 +0000 (14:07 +0200)] 
Stop mounting tmpfs to /tmp in sandbox

/ is already a tmpfs in the sandbox, so there's no real point in
mounting a tmpfs to /tmp.

13 months agoMerge pull request #2798 from DaanDeMeyer/fix
Daan De Meyer [Mon, 24 Jun 2024 08:14:18 +0000 (10:14 +0200)] 
Merge pull request #2798 from DaanDeMeyer/fix

Skip vmlinuz in /boot without matching dir in /usr/lib/modules

13 months agoSimplify logic 2798/head
Daan De Meyer [Sun, 23 Jun 2024 15:21:28 +0000 (17:21 +0200)] 
Simplify logic

13 months agoSkip vmlinuz in /boot without matching dir in /usr/lib/modules
Daan De Meyer [Sun, 23 Jun 2024 11:41:25 +0000 (13:41 +0200)] 
Skip vmlinuz in /boot without matching dir in /usr/lib/modules

Fixes #2796

13 months agomkosi-initrd: replace long-time deprecated $tempnode with $devnode
Antonio Alvarez Feijoo [Thu, 20 Jun 2024 12:22:40 +0000 (14:22 +0200)] 
mkosi-initrd: replace long-time deprecated $tempnode with $devnode

14 months agoqemu/vmspawn: check for an uncompressed kernel too
Luca Boccassi [Sun, 16 Jun 2024 22:34:02 +0000 (23:34 +0100)] 
qemu/vmspawn: check for an uncompressed kernel too

On some architecture/distributions (eg: ppc64el and riscv64 on Debian/Ubuntu)
the kernel is shipped uncompressed, as vmlinux. If vmlinuz cannot be found,
try looking for vmlinux.

14 months agoMerge pull request #2787 from DaanDeMeyer/fix
Daan De Meyer [Sun, 16 Jun 2024 08:24:20 +0000 (10:24 +0200)] 
Merge pull request #2787 from DaanDeMeyer/fix

chdir into /proc for determining default Config