mkosi: Switch to use mkosi presets with prebuilt initrds

Instead of building the initrds for the mkosi images with dracut,
let's switch to using mkosi presets to build the initrd with mkosi
as well.

This commit splits up our single image build into three separate
mkosi presets:

1. The "base" preset. This image contains systemd and all its runtime
dependencies. The sole purpose of this image is to serve as a base image
for the initrd and the final image. It's also responsible for building
systemd from source with the build script. The results are installed into
the base image. Note that we install the systemd and udev packages into this
image as well to prevent package managers from overriding the systemd we built
from source with the distro packaged systemd if it's pulled in as a dependency
by another package from the initrd or final profiles.
2. The "initrd" preset. This image provides the initrd. It's trivial and does
nothing more than packaging the base image up as a zstd compressed initramfs and
adds /init and /etc/initrd-release symlinks to the image.
3. The "final" preset. This image builds on top of the base image and adds
a kernel and extra packages that are useful for testing and debugging.

We also split out the optional kernel build into a separate set of config files
that are only included if a kernel to build is actually provided.

Note that this commit doesn't really change anything about how mkosi is used.
The commands remain the same, except that mkosi will now build all the presets
in order. "mkosi summary" will show the summary of all the presets. "mkosi qemu,
boot, shell" will always boot the final preset. With "-f", all presets will be
built and the final one is booted. "-i" makes a cache of each preset.

The only thing to keep in mind is that specifying config via the mkosi CLI will
apply to each of the presets. e.g. any extra packages added with "-p" will be
installed in both the initrd and the final image. To apply local configuration
to a single preset, create a file 00-local.conf in
mkosi.presets/<profile>/mkosi.conf.d and put all the preset specific configuration
in there.
This commit is contained in:
Daan De Meyer
2023-05-01 15:39:50 +02:00
parent d9081eb0ae
commit d052cc8893
53 changed files with 596 additions and 315 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ jobs:
steps:
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
- uses: systemd/mkosi@54f80aa8f687ed4d1759f0a7329c64c3f0ff70ad
- uses: systemd/mkosi@3008c7e9383669b7fb6f6afe556c6fd28f28f8f4
- name: Configure
run: |
+11
View File
@@ -0,0 +1,11 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# Arch and CentOS 8 Stream initrds are rather big so we need to give QEMU more memory so the kernel can load
# them without OOMing.
[Match]
Distribution=arch centos
Release=rolling 8
[Host]
QemuMem=3G
+7
View File
@@ -0,0 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=debian
[Distribution]
Release=testing
+7
View File
@@ -0,0 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=fedora
[Distribution]
Release=38
+7
View File
@@ -0,0 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=opensuse
[Distribution]
Release=tumbleweed
+4 -58
View File
@@ -10,60 +10,6 @@ OutputDirectory=mkosi.output
[Content]
BuildDirectory=mkosi.builddir
CacheDirectory=mkosi.cache
ExtraTrees=src:/root/src
Packages=
acl
bash-completion
coreutils
diffutils
dnsmasq
dosfstools
dracut
e2fsprogs
findutils
gcc # For sanitizer libraries
gdb
grep
kbd
kexec-tools
kmod
less
mtools
nano
nftables
openssl
python3
qrencode
sed
strace
systemd
tree
udev
util-linux
valgrind
wireguard-tools
xfsprogs
zsh
BuildPackages=
bc
binutils
bison
clang
flex
gcc
gettext
git
gperf
lld
llvm
make
meson
pkgconf
rpm
rsync
tar
zstd
[Host]
Acl=yes
@@ -77,7 +23,7 @@ KernelCommandLineExtra=systemd.crash_shell
systemd.mask=auditd
# Tell the kernel to only log warning and up to the console.
loglevel=4
[Validation]
Password=
Autologin=yes
# Disable the kernel's ratelimiting on userspace logging to kmsg.
printk.devkmsg=on
# Tell networkd to manage the ethernet interface.
ip=enp0s1:any
+8
View File
@@ -0,0 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=ubuntu
[Distribution]
Release=jammy
Repositories=universe
+5
View File
@@ -0,0 +1,5 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=centos
Release=8
-51
View File
@@ -1,51 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright © 2016 Zeal Jagannatha
[Match]
Distribution=arch
[Content]
Packages=
alsa-lib
base
btrfs-progs
compsize
dhcp
f2fs-tools
fuse2
gnutls
iproute
libbpf
libcap-ng
libfido2
libmicrohttpd
libmnl
libpwquality
libxkbcommon
linux
man-db
numactl
openbsd-netcat
openssh
polkit
popt
python-pefile
python-psutil
python-pytest
quota-tools
shadow
tpm2-tss
vim
BuildPackages=
bpf
docbook-xsl
libxslt
linux-api-headers
pahole
perl
python-docutils
python-jinja
python-lxml
python-pyelftools
-3
View File
@@ -1,3 +0,0 @@
set debuginfod enabled off
set build-id-verbose 0
set substitute-path ../src /root/src
@@ -1,6 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
disable ssh.service
disable sshd.service
disable dnsmasq.service
disable isc-dhcp-server.service
disable isc-dhcp-server6.service
-16
View File
@@ -1,16 +0,0 @@
#!/bin/sh
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [ "$(grep '^ID=' /etc/os-release)" = "ID=\"centos\"" ] && [ "$(grep '^VERSION=' /etc/os-release)" = "VERSION=\"8\"" ]; then
alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
alternatives --set python3 /usr/bin/python3.9
fi
# Make sure the necessary test users are available in the build image. We do this here because the build
# script does not run as root.
if [ "$1" = "build" ]; then
for id in 1 2 3; do
getent group $id >/dev/null || echo "g testgroup$id $id -" | systemd-sysusers -
done
fi
@@ -162,31 +162,3 @@ if [ "$WITH_TESTS" = 1 ] ; then
fi
meson install -C "$BUILDDIR" --quiet --no-rebuild --only-changed
if [ -d mkosi.kernel/ ]; then
SRCDIR="$SRCDIR/mkosi.kernel"
BUILDDIR="$BUILDDIR/mkosi.kernel"
cd "$SRCDIR"
mkdir -p "$BUILDDIR"
# Ensure fast incremental builds by fixating these values which usually change for each build.
export KBUILD_BUILD_TIMESTAMP="Fri Jun 5 15:58:00 CEST 2015"
export KBUILD_BUILD_HOST="mkosi"
scripts/kconfig/merge_config.sh -O "$BUILDDIR" \
../mkosi.kernel.config \
tools/testing/selftests/bpf/config.x86_64 \
tools/testing/selftests/bpf/config
# Make sure systemd-boot boots this kernel and not the distro provided one by overriding the version.
make O="$BUILDDIR" VERSION=99 -j "$(nproc)"
KERNEL_RELEASE=$(make O="$BUILDDIR" VERSION=99 -s kernelrelease)
mkdir -p "$DESTDIR/usr/lib/modules/$KERNEL_RELEASE"
make O="$BUILDDIR" VERSION=99 INSTALL_MOD_PATH="$DESTDIR/usr" modules_install
make O="$BUILDDIR" VERSION=99 INSTALL_PATH="$DESTDIR/usr/lib/modules/$KERNEL_RELEASE" install
mkdir -p "$DESTDIR/usr/lib/kernel/selftests"
make -C tools/testing/selftests -j "$(nproc)" O="$BUILDDIR" VERSION=99 KSFT_INSTALL_PATH="$DESTDIR/usr/lib/kernel/selftests" SKIP_TARGETS="" install
ln -sf /usr/lib/kernel/selftests/bpf/bpftool "$DESTDIR/usr/bin/bpftool"
fi
+34
View File
@@ -0,0 +1,34 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Output]
Format=directory
[Content]
Bootable=no
BuildSources=../..
CleanPackageMetadata=no
Packages=
kmod
less
systemd
udev
BuildPackages=
acl
diffutils
gawk
binutils
clang
gettext
git
gperf
grep
lld
llvm
make
meson
pkgconf
rsync
sed
tar
zstd
@@ -0,0 +1,31 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=arch
[Content]
Packages=
gnutls
libbpf
libfido2
libmicrohttpd
libnftnl
libpwquality
libxkbcommon
openssl
qrencode
systemd-sysvcompat
tpm2-tss
BuildPackages=
bpf
docbook-xsl
glib2
libxslt
linux-api-headers
perl
python
python-jinja
python-lxml
python-pefile
python-pyelftools
@@ -5,67 +5,40 @@ Distribution=centos fedora
[Content]
Packages=
alsa-lib
audit-libs
cryptsetup
dhcp-server
dnf
fuse
glib2
glibc-minimal-langpack
glibc.i686
cryptsetup-libs
gnutls
iproute
iproute-tc
kernel-core
libasan
libbpf
libcap-ng
libcap-ng-utils
libfido2
libgcrypt
libmicrohttpd
libmnl
libnftnl
libubsan
libxcrypt
libxkbcommon
netcat
numactl-libs
openssh-server
p11-kit
pam
passwd
polkit
popt
procps-ng
quota
openssl-libs
qrencode-libs
tpm2-tss
util-linux
vim-common
BuildPackages=
/usr/bin/pkg-config
bpftool
docbook-xsl
dwarves
glibc-devel.i686
glibc-static
glibc-static.i686
findutils
libxslt
pam-devel
perl-interpreter
pkgconfig(alsa)
pkgconfig(audit)
pkgconfig(blkid)
pkgconfig(bzip2)
pkgconfig(dbus-1)
pkgconfig(fdisk)
pkgconfig(fuse)
pkgconfig(glib-2.0)
pkgconfig(gnutls)
pkgconfig(libacl)
pkgconfig(libbpf)
pkgconfig(libcap-ng)
pkgconfig(libcap)
pkgconfig(libcryptsetup)
pkgconfig(libcurl)
@@ -74,7 +47,7 @@ BuildPackages=
pkgconfig(libidn2)
pkgconfig(libkmod)
pkgconfig(libmicrohttpd)
pkgconfig(libmnl)
pkgconfig(libnftnl)
pkgconfig(libpcre2-8)
pkgconfig(libqrencode)
pkgconfig(libseccomp)
@@ -83,12 +56,12 @@ BuildPackages=
pkgconfig(mount)
pkgconfig(numa)
pkgconfig(openssl)
pkgconfig(openssl)
pkgconfig(p11-kit-1)
pkgconfig(popt)
pkgconfig(pwquality)
pkgconfig(tss2-esys)
pkgconfig(tss2-mu)
pkgconfig(tss2-rc)
pkgconfig(valgrind)
pkgconfig(xkbcommon)
python3-docutils
rpm
@@ -5,69 +5,39 @@ Distribution=debian ubuntu
[Content]
Packages=
btrfs-progs
cryptsetup-bin
dbus-broker
default-dbus-session-bus
f2fs-tools
fdisk
fuse
gcc # Provides libasan/libubsan
iproute2
isc-dhcp-server
libasound2
libc6-i386
libcap-ng-utils
libcap-ng0
libfdisk1
libfido2-1
libglib2.0-0
libgnutls30
libidn2-0
libmicrohttpd12
libmnl0
libnuma1
libnftnl11
libp11-kit0
libpam0g
libpopt0
libpwquality1
libqrencode4
libssl3
libtss2-dev # Use the -dev package to avoid churn in updating version numbers
netcat-openbsd
openssh-server
passwd
policykit-1
procps
python3-pefile
python3-psutil
python3-pytest
quota
systemd
systemd-sysv
tzdata
xxd
BuildPackages=
docbook-xsl
dpkg-dev
g++
gcc-multilib
libacl1-dev
libasound-dev
libaudit-dev
libblkid-dev
libbpf-dev
libbz2-dev
libc6-dev
libc6-dev-i386
libcap-dev
libcap-ng-dev
libcryptsetup-dev
libcurl4-openssl-dev
libdbus-1-dev
libdw-dev
libfdisk-dev
libfido2-dev
libfuse-dev
libgcrypt20-dev
libglib2.0-dev
libgnutls28-dev
@@ -75,12 +45,10 @@ BuildPackages=
libiptc-dev
libkmod-dev
libmicrohttpd-dev
libmnl-dev
libmount-dev
libnuma-dev
libnftnl-dev
libp11-kit-dev
libpam0g-dev
libpopt-dev
libpwquality-dev
libqrencode-dev
libseccomp-dev
@@ -89,9 +57,10 @@ BuildPackages=
libxen-dev
libxkbcommon-dev
libzstd-dev
pahole
python3-docutils
python3
python3-jinja2
python3-lxml
python3-pefile
python3-pyelftools
python3-pytest
xsltproc
@@ -3,13 +3,9 @@
[Match]
Distribution=debian
[Distribution]
Release=testing
[Content]
Packages=
libbpf1
linux-image-cloud-amd64
BuildPackages=
bpftool
@@ -3,22 +3,13 @@
[Match]
Distribution=fedora
[Distribution]
Release=38
[Content]
Packages=
btrfs-progs
compsize
f2fs-tools
python3dist(pefile)
python3dist(psutil)
python3dist(pytest)
BuildPackages=
libcap-static
pkgconfig(libgcrypt)
pkgconfig(xencontrol)
python3
python3dist(jinja2)
python3dist(lxml)
python3dist(pefile)
python3dist(pyelftools)
python3dist(pytest)
@@ -3,23 +3,13 @@
[Match]
Distribution=opensuse
[Distribution]
Release=tumbleweed
[Content]
# We install gawk, gzip, grep, xz here explicitly so that the busybox versions don't get installed instead.
Packages=
btrfs-progs
dbus-1
f2fs-tools
fuse
gcc # Provides libasan/libubsan
glibc-32bit
glibc-locale-base
kernel-default
libasound2
gawk
grep
gzip
libbpf1
libcap-ng-utils
libcap-ng0
libcrypt1
libcryptsetup12
libdw1
@@ -28,48 +18,34 @@ Packages=
libgcrypt20
libglib-2_0-0
libkmod2
liblz4-1
libmnl0
libmount1
libnuma1
libnftnl11
libopenssl3
libp11-kit0
libpopt0
libqrencode4
libseccomp2
libxkbcommon0
openssh-server
libzstd1
pam
python3-pefile
python3-psutil
python3-pytest
shadow
tpm2-0-tss
vim
xz
BuildPackages=
alsa-devel
audit-devel
bpftool
dbus-1-devel
docbook-xsl-stylesheets
dwarves
fdupes
fuse-devel
gcc-32bit
gcc-c++
glib2-devel
glibc-devel-32bit
glibc-devel-static-32bit
glibc-locale
glibc-static
intltool
libacl-devel
libapparmor-devel
libblkid-devel
libbpf-devel
libbz2-devel
libcap-devel
libcap-ng-devel
libcryptsetup-devel
libcurl-devel
libdw-devel
@@ -79,34 +55,27 @@ BuildPackages=
libgcrypt-devel
libgnutls-devel
libkmod-devel
liblz4-devel
libmicrohttpd-devel
libmnl-devel
libmount-devel
libnuma-devel
libnftnl-devel
libpwquality-devel
libseccomp-devel
libselinux-devel
libxkbcommon-devel
libxslt-tools
libzstd-devel
openssl-devel
pam-devel
pciutils-devel
pcre-devel
popt-devel
python3-docutils
python3
python3-Jinja2
python3-lxml
python3-pefile
python3-pyelftools
python3-pytest
qrencode-devel
shadow
system-group-obsolete
system-user-bin
system-user-daemon
system-user-nobody
system-user-root
systemd-sysvinit
timezone
tpm2-0-tss-devel
xen-devel
zlib-devel
@@ -3,14 +3,9 @@
[Match]
Distribution=ubuntu
[Distribution]
Release=jammy
Repositories=universe
[Content]
Packages=
libbpf0
linux-virtual
BuildPackages=
linux-tools-common
@@ -5,15 +5,12 @@ Distribution=centos
Release=8
[Content]
Packages=
python39
python3.9dist(pefile)
python3.9dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
python3.9dist(psutil)
python3.9dist(pytest)
BuildPackages=
libgcrypt-devel # CentOS Stream 8 libgcrypt-devel doesn't ship a pkg-config file.
platform-python
python3.9dist(jinja2)
python3.9dist(lxml)
python3.9dist(pefile)
python3.9dist(pyelftools)
python3.9dist(pytest)
python39
@@ -0,0 +1,15 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=centos
Release=9
[Content]
BuildPackages=
pkgconfig(libgcrypt)
platform-python
python3dist(jinja2)
python3dist(lxml)
python3dist(pefile)
python3dist(pyelftools)
python3dist(pytest)
@@ -0,0 +1,19 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# mkosi adds its own ssh units via the --ssh switch so disable the default ones.
disable ssh.service
disable sshd.service
# These are started manually in integration tests so don't start them by default.
disable dnsmasq.service
disable isc-dhcp-server.service
disable isc-dhcp-server6.service
# Pulled in via dracut-network by kexec-tools on Fedora.
disable NetworkManager.service
# Make sure dbus-broker is started by default on Debian/Ubuntu.
enable dbus-broker.service
# systemd-networkd is disabled by default on Fedora so make sure it is enabled.
enable systemd-networkd.service
@@ -0,0 +1,4 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# Make sure that services are disabled by default (primarily for Debian/Ubuntu).
disable *
+18
View File
@@ -0,0 +1,18 @@
#!/bin/sh
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [ "$1" = "build" ]; then
. /etc/os-release
if [ "$ID" = "centos" ] && [ "$VERSION" = "8" ]; then
alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
alternatives --set python3 /usr/bin/python3.9
fi
# Make sure the necessary test users are available in the build image. We do this here because the build
# script does not run as root.
for id in 1 2 3; do
getent group $id >/dev/null || echo "g testgroup$id $id -" | systemd-sysusers -
done
fi
+20
View File
@@ -0,0 +1,20 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Output]
Format=cpio
# TODO: Switch to zstd once we stop building CentOS Stream 8.
CompressOutput=xz
[Content]
BaseTrees=mkosi.output/base
MakeInitrd=yes
# Arch Linux doesn't split their gcc-libs package so we manually remove unneeded stuff here to make sure it
# doesn't end up in the initrd.
RemoveFiles=
/usr/lib/libgfortran.so*
/usr/lib/libgo.so*
/usr/lib/libgomp.so*
/usr/lib/libgphobos.so*
/usr/lib/libobjc.so*
/usr/lib/libstdc++.so*
+32
View File
@@ -0,0 +1,32 @@
#!/bin/sh
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
if [ -d "$SRCDIR"/mkosi.kernel/ ]; then
SRCDIR="$SRCDIR/mkosi.kernel"
BUILDDIR="$BUILDDIR/mkosi.kernel"
cd "$SRCDIR"
mkdir -p "$BUILDDIR"
# Ensure fast incremental builds by fixating these values which usually change for each build.
export KBUILD_BUILD_TIMESTAMP="Fri Jun 5 15:58:00 CEST 2015"
export KBUILD_BUILD_HOST="mkosi"
scripts/kconfig/merge_config.sh -O "$BUILDDIR" \
../mkosi.kernel.config \
tools/testing/selftests/bpf/config.x86_64 \
tools/testing/selftests/bpf/config
# Make sure systemd-boot boots this kernel and not the distro provided one by overriding the version.
make O="$BUILDDIR" VERSION=99 -j "$(nproc)"
KERNEL_RELEASE=$(make O="$BUILDDIR" VERSION=99 -s kernelrelease)
mkdir -p "$DESTDIR/usr/lib/modules/$KERNEL_RELEASE"
make O="$BUILDDIR" VERSION=99 INSTALL_MOD_PATH="$DESTDIR/usr" modules_install
make O="$BUILDDIR" VERSION=99 INSTALL_PATH="$DESTDIR/usr/lib/modules/$KERNEL_RELEASE" install
mkdir -p "$DESTDIR/usr/lib/kernel/selftests"
make -C tools/testing/selftests -j "$(nproc)" O="$BUILDDIR" VERSION=99 KSFT_INSTALL_PATH="$DESTDIR/usr/lib/kernel/selftests" SKIP_TARGETS="" install
mkdir -p "$DESTDIR"/usr/bin
ln -sf /usr/lib/kernel/selftests/bpf/bpftool "$DESTDIR/usr/bin/bpftool"
fi
+38
View File
@@ -0,0 +1,38 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Content]
BaseTrees=../../mkosi.output/base
ExtraTrees=../../src:/root/src
Initrds=../../mkosi.output/initrd.cpio.xz
Packages=
acl
bash-completion
coreutils
diffutils
dnsmasq
dosfstools
e2fsprogs
findutils
gcc # Sanitizer libraries
gdb
grep
kbd
kexec-tools
less
mtools
nano
nftables
openssl
qrencode
sed
strace
tree
util-linux
valgrind
wireguard-tools
xfsprogs
zsh
[Validation]
Password=
Autologin=yes
@@ -0,0 +1,25 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=arch
[Content]
Packages=
btrfs-progs
compsize
dhcp
f2fs-tools
glib2
iproute
linux
man-db
openbsd-netcat
openssh
polkit
python-pefile
python-psutil
python-pytest
python3
quota-tools
shadow
vim
@@ -0,0 +1,24 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=centos fedora
[Content]
Packages=
cryptsetup
dhcp-server
dnf
glib2
iproute
iproute-tc
kernel-core
libcap-ng-utils
netcat
openssh-server
p11-kit
pam
passwd
polkit
procps-ng
quota
vim-common
@@ -0,0 +1,27 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=debian ubuntu
[Content]
Packages=
btrfs-progs
cryptsetup-bin
dbus-broker
default-dbus-session-bus
f2fs-tools
fdisk
iproute2
isc-dhcp-server
libcap-ng-utils
netcat-openbsd
openssh-server
passwd
policykit-1
procps
python3
python3-pefile
python3-psutil
python3-pytest
quota
xxd
@@ -0,0 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=debian
[Content]
Packages=
linux-image-cloud-amd64
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=fedora
[Content]
Packages=
btrfs-progs
compsize
f2fs-tools
python3
python3dist(pefile)
python3dist(psutil)
python3dist(pytest)
@@ -0,0 +1,22 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=opensuse
[Content]
Packages=
btrfs-progs
cryptsetup
dbus-broker
f2fs-tools
glibc-locale-base
kernel-default
libcap-ng-utils
openssh-server
python3
python3-pefile
python3-psutil
python3-pytest
quota
shadow
vim
@@ -0,0 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=ubuntu
[Content]
Packages=
linux-virtual
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=centos
Release=8
[Content]
Packages=
platform-python
python3.9dist(pefile)
python3.9dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
python3.9dist(psutil)
python3.9dist(pytest)
python39
@@ -6,13 +6,8 @@ Release=9
[Content]
Packages=
platform-python
python3dist(pefile)
python3dist(pluggy) # python39-pluggy is a pytest dependency that's not installed for some reason.
python3dist(psutil)
python3dist(pytest)
BuildPackages=
pkgconfig(libgcrypt)
python3dist(jinja2)
python3dist(lxml)
python3dist(pyelftools)
@@ -0,0 +1,20 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
PathExists=mkosi.kernel/
Distribution=arch
[Content]
Packages=
alsa-lib
fuse2
libcap
libcap-ng
libelf
libmnl
numactl
popt
BuildPackages=
pahole
python-docutils
@@ -0,0 +1,34 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
PathExists=mkosi.kernel/
Distribution=centos fedora
[Content]
Packages=
alsa-lib
elfutils-libelf
fuse
glibc.i686
libcap
libcap-ng
libcap-ng-utils
libmnl
numactl-libs
popt
BuildPackages=
dwarves
glibc-devel.i686
glibc-static
glibc-static.i686
pkgconfig(alsa)
pkgconfig(fuse)
pkgconfig(libcap-ng)
pkgconfig(libcap)
pkgconfig(libelf)
pkgconfig(libmnl)
pkgconfig(numa)
pkgconfig(openssl)
pkgconfig(popt)
python3-docutils
@@ -0,0 +1,32 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
PathExists=mkosi.kernel/
Distribution=debian ubuntu
[Content]
Packages=
fuse
libasound2
libc6-i386
libcap-ng0
libcap2
libelf1
libmnl0
libnuma1
libpopt0
BuildPackages=
gcc-multilib
libasound-dev
libc6-dev
libc6-dev-i686
libcap-ng-dev
libcap-dev
libelf-dev
libfuse-dev
libmnl-dev
libnuma-dev
libpopt-dev
pahole
python3-docutils
@@ -0,0 +1,9 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
PathExists=mkosi.kernel/
Distribution=fedora
[Content]
BuildPackages=
libcap-static
@@ -0,0 +1,35 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
PathExists=mkosi.kernel/
Distribution=opensuse
[Content]
Packages=
fuse
glibc-32bit
libasound2
libcap-ng0
libcap2
libelf1
libmnl0
libnuma1
libpopt0
BuildPackages=
alsa-devel
dwarves
fuse-devel
gcc-32bit
glibc-devel-32bit
glibc-devel-static-32bit
glibc-static
libcap-devel
libcap-ng-dev
libelf-devel
liblz4-dev
libmnl-dev
libnuma-devel
pcre-devel
popt-devel
python3-docutils
@@ -0,0 +1,20 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
PathExists=mkosi.kernel/
[Content]
BuildSources=./
BuildPackages=
bc
binutils
bison
clang
flex
gcc
lld
llvm
make
make
rsync
tar
@@ -73,3 +73,10 @@ fi
# Let tmpfiles.d/systemd-resolve.conf handle the symlink
rm -f /etc/resolv.conf
. /etc/os-release
if [ "$ID" = "centos" ] && [ "$VERSION" = "8" ]; then
alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
alternatives --set python3 /usr/bin/python3.9
fi