From bcfaa035716ee0208b869d4f74ffcca55c498a59 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 5 Jul 2024 20:52:22 +0200 Subject: [PATCH] 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. --- mkosi.conf | 5 +-- mkosi.conf.d/20-arch.conf | 36 +----------------- mkosi.conf.d/20-centos.conf | 2 - mkosi.conf.d/20-fedora/mkosi.conf | 10 ----- .../20-fedora/mkosi.conf.d/20-uefi.conf | 10 ----- mkosi.conf.d/20-opensuse.conf | 37 +------------------ mkosi.conf.d/20-rhel-ubi.conf | 3 -- mkosi.conf.d/30-centos-fedora/mkosi.conf | 26 +------------ .../mkosi.conf.d/20-uefi.conf | 2 - mkosi.conf.d/30-debian-ubuntu/mkosi.conf | 37 ++----------------- .../mkosi.conf.d/20-ext4-orphan-file.conf | 7 ++-- .../mkosi.conf.d/20-not-focal.conf | 14 ------- .../mkosi.conf.d/20-systemd-extra.conf | 1 - mkosi.prepare | 9 +++++ mkosi.prepare.chroot | 1 + mkosi/resources/mkosi-tools/mkosi.conf | 2 +- .../mkosi-tools/mkosi.conf.d/10-arch.conf | 2 +- .../mkosi.conf.d/10-centos-fedora/mkosi.conf | 6 +-- .../mkosi-tools/mkosi.conf.d/10-centos.conf | 12 ------ .../mkosi.conf} | 4 -- .../mkosi.conf.d/systemd-boot.conf | 6 +-- .../mkosi.conf.d/ubuntu-keyring.conf | 9 +++++ .../mkosi.conf.d/virtiofsd.conf | 15 ++++++++ .../mkosi.conf.d/10-fedora/mkosi.conf | 4 ++ .../mkosi-tools/mkosi.conf.d/10-opensuse.conf | 2 +- 25 files changed, 58 insertions(+), 204 deletions(-) delete mode 100644 mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf delete mode 100644 mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-not-focal.conf create mode 100755 mkosi.prepare delete mode 100644 mkosi/resources/mkosi-tools/mkosi.conf.d/10-centos.conf rename mkosi/resources/mkosi-tools/mkosi.conf.d/{10-debian-ubuntu.conf => 10-debian-ubuntu/mkosi.conf} (91%) rename mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-focal.conf => mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/systemd-boot.conf (55%) create mode 100644 mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/ubuntu-keyring.conf create mode 100644 mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/virtiofsd.conf diff --git a/mkosi.conf b/mkosi.conf index 29c8b1ab9..000536b17 100644 --- a/mkosi.conf +++ b/mkosi.conf @@ -15,13 +15,12 @@ BuildSources=. BuildSourcesEphemeral=yes Packages= - attr - ca-certificates gdb - jq less nano strace + systemd + udev tmux InitrdPackages= diff --git a/mkosi.conf.d/20-arch.conf b/mkosi.conf.d/20-arch.conf index c5d1b413c..8be11b199 100644 --- a/mkosi.conf.d/20-arch.conf +++ b/mkosi.conf.d/20-arch.conf @@ -5,51 +5,17 @@ Distribution=arch [Content] Packages= - apt - archlinux-keyring base bash - btrfs-progs - bubblewrap - ca-certificates - coreutils - cpio - curl dbus-broker dbus-broker-units - debian-archive-keyring - dnf - dosfstools - e2fsprogs - edk2-ovmf - erofs-utils - git grub iproute iputils linux - mtools openssh - openssl - pacman perf - pesign - python-cryptography - qemu-base + python qemu-user-static - sbsigntools - shadow shim - socat - squashfs-tools strace - swtpm - systemd - systemd-ukify - tar - ukify - util-linux - virtiofsd - xfsprogs - xz - zstd diff --git a/mkosi.conf.d/20-centos.conf b/mkosi.conf.d/20-centos.conf index 48bb3c51c..eccb74ff8 100644 --- a/mkosi.conf.d/20-centos.conf +++ b/mkosi.conf.d/20-centos.conf @@ -13,5 +13,3 @@ Distribution=|rocky @ShimBootloader=none Packages= linux-firmware - dnf - dnf-plugins-core diff --git a/mkosi.conf.d/20-fedora/mkosi.conf b/mkosi.conf.d/20-fedora/mkosi.conf index 49a31aee7..1a05c7cb3 100644 --- a/mkosi.conf.d/20-fedora/mkosi.conf +++ b/mkosi.conf.d/20-fedora/mkosi.conf @@ -8,15 +8,5 @@ Distribution=fedora [Content] Packages= - apt - archlinux-keyring - btrfs-progs - debian-keyring - distribution-gpg-keys - dnf5 - dnf5-plugins - erofs-utils - pacman qemu-user-static systemd-networkd - zypper diff --git a/mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf b/mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf deleted file mode 100644 index 776648639..000000000 --- a/mkosi.conf.d/20-fedora/mkosi.conf.d/20-uefi.conf +++ /dev/null @@ -1,10 +0,0 @@ -# SPDX-License-Identifier: LGPL-2.1-or-later - -[Match] -Architecture=|x86-64 -Architecture=|arm64 - -[Content] -Packages= - sbsigntools - systemd-ukify diff --git a/mkosi.conf.d/20-opensuse.conf b/mkosi.conf.d/20-opensuse.conf index 07316fa21..d6a25070d 100644 --- a/mkosi.conf.d/20-opensuse.conf +++ b/mkosi.conf.d/20-opensuse.conf @@ -11,19 +11,7 @@ Distribution=opensuse @ShimBootloader=none Packages= bash - btrfs-progs - bubblewrap - ca-certificates - coreutils - cpio - curl - distribution-gpg-keys - dnf - dosfstools - e2fsprogs - erofs-utils - git-core - grep + diffutils grub2-efi grub2-i386-pc grub2-x86_64-efi @@ -34,36 +22,15 @@ Packages= libtss2-mu0 libtss2-rc0 libtss2-tcti-device0 - mtools openssh-clients openssh-server - openssl - ovmf patterns-base-minimal_base perf - pesign - python3-pefile - qemu-headless + python3 qemu-linux-user - sbsigntools - shadow shim - socat - squashfs strace - swtpm - systemd systemd-boot - systemd-container systemd-coredump - systemd-experimental - tar ucode-amd ucode-intel - udev - util-linux - virtiofsd - xfsprogs - xz - zstd - zypper diff --git a/mkosi.conf.d/20-rhel-ubi.conf b/mkosi.conf.d/20-rhel-ubi.conf index 34128ec63..088eda43a 100644 --- a/mkosi.conf.d/20-rhel-ubi.conf +++ b/mkosi.conf.d/20-rhel-ubi.conf @@ -8,6 +8,3 @@ Distribution=rhel-ubi [Content] Bootable=no -Packages= - systemd - systemd-udev diff --git a/mkosi.conf.d/30-centos-fedora/mkosi.conf b/mkosi.conf.d/30-centos-fedora/mkosi.conf index 4c8e3e674..431ab2c46 100644 --- a/mkosi.conf.d/30-centos-fedora/mkosi.conf +++ b/mkosi.conf.d/30-centos-fedora/mkosi.conf @@ -9,36 +9,12 @@ Distribution=|fedora [Content] Packages= bash - bubblewrap - ca-certificates - coreutils - cpio - curl-minimal - dosfstools - e2fsprogs - git-core iproute iputils kernel-core - mtools openssh-clients openssh-server - openssl perf - python3-cryptography - qemu-kvm-core - shadow-utils - socat - squashfs-tools + python3 strace - swtpm - systemd - systemd-container systemd-resolved - systemd-udev - tar - util-linux - virtiofsd - xfsprogs - xz - zstd diff --git a/mkosi.conf.d/30-centos-fedora/mkosi.conf.d/20-uefi.conf b/mkosi.conf.d/30-centos-fedora/mkosi.conf.d/20-uefi.conf index e6b919c48..6ade55055 100644 --- a/mkosi.conf.d/30-centos-fedora/mkosi.conf.d/20-uefi.conf +++ b/mkosi.conf.d/30-centos-fedora/mkosi.conf.d/20-uefi.conf @@ -6,8 +6,6 @@ Architecture=|arm64 [Content] Packages= - edk2-ovmf grub2-efi - pesign shim systemd-boot diff --git a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf b/mkosi.conf.d/30-debian-ubuntu/mkosi.conf index 4b5d18ec2..6b008ca5c 100644 --- a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf +++ b/mkosi.conf.d/30-debian-ubuntu/mkosi.conf @@ -6,51 +6,22 @@ Distribution=|ubuntu [Content] Packages= - ?exact-name(systemd-ukify) ^libtss2-esys-[0-9.]+-0$ ^libtss2-mu[0-9.-]+$ - apt bash - btrfs-progs - bubblewrap - ca-certificates - coreutils - cpio - curl - debian-archive-keyring - dosfstools - e2fsprogs - erofs-utils - git-core + dbus-broker iproute2 iputils-ping libtss2-rc0 libtss2-tcti-device0 - mtools openssh-client openssh-server - openssl - ovmf - pesign - python3-cryptography - python3-pefile - qemu-system + python3 qemu-user-static - sbsigntool shim-signed - socat - squashfs-tools strace - systemd - systemd-container systemd-coredump systemd-sysv - tar + systemd-boot + systemd-resolved tzdata - udev - uidmap - util-linux - xfsprogs - xz-utils - zstd - zypper diff --git a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-ext4-orphan-file.conf b/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-ext4-orphan-file.conf index c4f6859d6..2109fb9ab 100644 --- a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-ext4-orphan-file.conf +++ b/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-ext4-orphan-file.conf @@ -2,10 +2,9 @@ [Match] Distribution=ubuntu -Release=|focal -Release=|jammy +Release=jammy [Content] -# "orphan_file" is enabled by default in recent versions of mkfs.ext4 but not supported by the Jammy/Focal kernels -# so we explicitly disable it. +# "orphan_file" is enabled by default in recent versions of mkfs.ext4 but not supported by the Jammy kernel so we +# explicitly disable it. Environment=SYSTEMD_REPART_MKFS_OPTIONS_EXT4="-O ^orphan_file" diff --git a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-not-focal.conf b/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-not-focal.conf deleted file mode 100644 index a65670a82..000000000 --- a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-not-focal.conf +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: LGPL-2.1-or-later - -[Match] -Distribution=|!ubuntu -Release=|!focal - -[Content] -Packages= - archlinux-keyring - dbus-broker - dnf - makepkg - pacman-package-manager - swtpm diff --git a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-systemd-extra.conf b/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-systemd-extra.conf index ab5a92524..4fa991635 100644 --- a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-systemd-extra.conf +++ b/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-systemd-extra.conf @@ -2,7 +2,6 @@ [Match] Release=!jammy -Release=!focal [Content] Packages= diff --git a/mkosi.prepare b/mkosi.prepare new file mode 100755 index 000000000..3c47fc797 --- /dev/null +++ b/mkosi.prepare @@ -0,0 +1,9 @@ +#!/bin/bash +# SPDX-License-Identifier: LGPL-2.1-or-later +set -e + +if [ "$1" = "build" ]; then + exit 0 +fi + +mkosi-chroot "$SRCDIR"/bin/mkosi dependencies | xargs -d '\n' mkosi-install diff --git a/mkosi.prepare.chroot b/mkosi.prepare.chroot index 754015efb..ded1f5e2d 100755 --- a/mkosi.prepare.chroot +++ b/mkosi.prepare.chroot @@ -1,5 +1,6 @@ #!/bin/sh # SPDX-License-Identifier: LGPL-2.1-or-later +set -e if [ "$1" = "final" ] && command -v pacman-key; then pacman-key --init diff --git a/mkosi/resources/mkosi-tools/mkosi.conf b/mkosi/resources/mkosi-tools/mkosi.conf index 04ece81a2..8a5edd844 100644 --- a/mkosi/resources/mkosi-tools/mkosi.conf +++ b/mkosi/resources/mkosi-tools/mkosi.conf @@ -16,6 +16,7 @@ Packages= ca-certificates coreutils cpio + curl diffutils dnf dosfstools @@ -35,7 +36,6 @@ Packages= systemd tar util-linux - virtiofsd xfsprogs zstd SELinuxRelabel=no diff --git a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-arch.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-arch.conf index 73d0a3304..329ccb589 100644 --- a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-arch.conf +++ b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-arch.conf @@ -9,7 +9,6 @@ Packages= archlinux-keyring base btrfs-progs - curl dbus-broker dbus-broker-units debian-archive-keyring @@ -31,4 +30,5 @@ Packages= systemd-ukify ubuntu-keyring virt-firmware + virtiofsd xz diff --git a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-centos-fedora/mkosi.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-centos-fedora/mkosi.conf index b17676772..d78c79485 100644 --- a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-centos-fedora/mkosi.conf +++ b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-centos-fedora/mkosi.conf @@ -9,11 +9,7 @@ Distribution=|fedora [Content] Packages= - apt createrepo_c - curl-minimal - debian-keyring - distribution-gpg-keys dnf-plugins-core git-core openssh-clients @@ -27,6 +23,6 @@ Packages= systemd-container systemd-journal-remote systemd-udev - ubu-keyring virt-firmware + virtiofsd xz diff --git a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-centos.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-centos.conf deleted file mode 100644 index 8aa105a11..000000000 --- a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-centos.conf +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-License-Identifier: LGPL-2.1-or-later - -[Match] -Distribution=|centos -Distribution=|alma -Distribution=|rocky -Distribution=|rhel - -[Distribution] -Repositories= - epel - epel-next diff --git a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf similarity index 91% rename from mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu.conf rename to mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf index 1e5c1c8ad..1b0a8f9c3 100644 --- a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu.conf +++ b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf @@ -12,7 +12,6 @@ Packages= archlinux-keyring btrfs-progs createrepo-c - curl debian-archive-keyring erofs-utils git-core @@ -33,12 +32,9 @@ Packages= sbsigntool squashfs-tools swtpm-tools - systemd-boot systemd-container systemd-coredump systemd-journal-remote - ubuntu-keyring uidmap - virtiofsd xz-utils zypper diff --git a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-focal.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/systemd-boot.conf similarity index 55% rename from mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-focal.conf rename to mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/systemd-boot.conf index e46e11874..a31acd147 100644 --- a/mkosi.conf.d/30-debian-ubuntu/mkosi.conf.d/20-focal.conf +++ b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/systemd-boot.conf @@ -1,9 +1,9 @@ # SPDX-License-Identifier: LGPL-2.1-or-later [Match] -Distribution=ubuntu -Release=focal +Distribution=|!ubuntu +Release=|!jammy [Content] Packages= - dbus + systemd-boot diff --git a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/ubuntu-keyring.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/ubuntu-keyring.conf new file mode 100644 index 000000000..a94ac4ab4 --- /dev/null +++ b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/ubuntu-keyring.conf @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +[Match] +Distribution=|!debian +Release=|!bookworm + +[Content] +Packages= + ubuntu-keyring diff --git a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/virtiofsd.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/virtiofsd.conf new file mode 100644 index 000000000..8c2b285bd --- /dev/null +++ b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-debian-ubuntu/mkosi.conf.d/virtiofsd.conf @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +# Install virtiofsd except on Ubuntu Jammy and Debian Bookworm. + +[Match] +Distribution=|!ubuntu +Release=|!jammy + +[Match] +Distribution=|!debian +Release=|!bookworm + +[Content] +Packages= + virtiofsd diff --git a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-fedora/mkosi.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-fedora/mkosi.conf index fa2b1165e..089766069 100644 --- a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-fedora/mkosi.conf +++ b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-fedora/mkosi.conf @@ -5,8 +5,11 @@ Distribution=fedora [Content] Packages= + apt archlinux-keyring btrfs-progs + debian-keyring + distribution-gpg-keys dnf5 dnf5-plugins erofs-utils @@ -16,4 +19,5 @@ Packages= qemu-system-s390x-core reprepro systemd-ukify + ubu-keyring zypper diff --git a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-opensuse.conf b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-opensuse.conf index b496f72dc..c48f44248 100644 --- a/mkosi/resources/mkosi-tools/mkosi.conf.d/10-opensuse.conf +++ b/mkosi/resources/mkosi-tools/mkosi.conf.d/10-opensuse.conf @@ -8,7 +8,6 @@ Packages= btrfs-progs ca-certificates-mozilla createrepo_c - curl distribution-gpg-keys dnf-plugins-core dnf5 @@ -34,5 +33,6 @@ Packages= systemd-coredump systemd-experimental systemd-journal-remote + virtiofsd xz zypper -- 2.47.2