From 0e4eba6fcbf7db7bb5529f006276d87194181d77 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 8 Apr 2024 17:23:21 +0200 Subject: [PATCH 1/5] mkosi: Update to latest --- .github/workflows/mkosi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mkosi.yml b/.github/workflows/mkosi.yml index 94b9fc3c56..0e87823687 100644 --- a/.github/workflows/mkosi.yml +++ b/.github/workflows/mkosi.yml @@ -74,7 +74,7 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - - uses: systemd/mkosi@4dfdf98ed2877a1e40f37234e0b8fbba0fec3584 + - uses: systemd/mkosi@1099ead1ccaa11b62b7a16ee312193bd0e6b6404 # Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space # immediately, we remove the files in the background. However, we first move them to a different location From d6f206b944d5946b39e5e6e4439302f527b607e5 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 8 Apr 2024 12:52:56 +0200 Subject: [PATCH 2/5] mkosi: Make scripts more generic We might want to run the build scripts outside of mkosi as well at some point, e.g. to build an rpm after booting the image, so let's make them more generic by using /usr/lib/os-release to figure out which pkg specs we should use instead of $PKG_SUBDIR. To make ubuntu use the debian pkg spec, we add a symlink pkg/ubuntu which points to debian/ in the same directory. --- .../mkosi.conf.d/10-arch/mkosi.build.chroot | 19 +++++++++++-------- .../system/mkosi.conf.d/10-arch/mkosi.conf | 1 - .../system/mkosi.conf.d/10-arch/mkosi.prepare | 11 +++++++---- .../10-centos-fedora/mkosi.build.chroot | 11 +++++++---- .../10-centos-fedora/mkosi.prepare | 17 ++++++++++------- .../system/mkosi.conf.d/10-centos/mkosi.conf | 3 --- .../10-debian-ubuntu/mkosi.build.chroot | 9 ++++++--- .../mkosi.conf.d/10-debian-ubuntu/mkosi.conf | 1 - .../10-debian-ubuntu/mkosi.prepare | 9 ++++++--- .../system/mkosi.conf.d/10-fedora/mkosi.conf | 3 --- .../10-opensuse/mkosi.build.chroot | 16 ++++++++++------ .../mkosi.conf.d/10-opensuse/mkosi.conf | 1 - .../mkosi.conf.d/10-opensuse/mkosi.prepare | 16 ++++++++++------ mkosi.images/system/mkosi.sync | 7 ++++--- pkg/ubuntu | 1 + 15 files changed, 72 insertions(+), 53 deletions(-) create mode 120000 pkg/ubuntu diff --git a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.build.chroot b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.build.chroot index 9cdee05b18..807823205f 100755 --- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.build.chroot +++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.build.chroot @@ -2,17 +2,20 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -ex -if [ ! -f "pkg/$PKG_SUBDIR/PKGBUILD" ]; then - echo "PKGBUILD not found at pkg/$PKG_SUBDIR/PKGBUILD, run mkosi once with -ff to make sure the PKGBUILD is cloned" >&2 +# shellcheck source=/dev/null +. /usr/lib/os-release + +if [ ! -f "pkg/$ID/PKGBUILD" ]; then + echo "PKGBUILD not found at pkg/$ID/PKGBUILD, run mkosi once with -ff to make sure the PKGBUILD is cloned" >&2 exit 1 fi # We can't configure the source or build directory so we use bind mounts instead to make sure they are in the # expected locations. -mount --mkdir --bind "$SRCDIR" "pkg/$PKG_SUBDIR/systemd-stable/" -mount --mkdir --bind "$BUILDDIR" "pkg/$PKG_SUBDIR/build/" +mount --mkdir --bind "$SRCDIR" "pkg/$ID/systemd-stable/" +mount --mkdir --bind "$BUILDDIR" "pkg/$ID/build/" # Because we run with --noextract we are responsible for making sure the source files appear in src/. -mount --mkdir --rbind "$PWD/pkg/$PKG_SUBDIR" "pkg/$PKG_SUBDIR/src/" +mount --mkdir --rbind "$PWD/pkg/$ID" "pkg/$ID/src/" # shellcheck source=/dev/null . /etc/makepkg.conf @@ -35,13 +38,13 @@ else TS="${SOURCE_DATE_EPOCH:-$(date +%s)}" fi -sed --in-place "pkg/$PKG_SUBDIR/PKGBUILD" \ +sed --in-place "pkg/$ID/PKGBUILD" \ --expression "s/^_tag=.*/_tag=$(cat meson.version)/" \ --expression "s/^pkgrel=.*/pkgrel=$(date "+%Y%m%d%H%M%S" --date "@$TS")/" # We get around makepkg's root check by setting EUID to something else. # shellcheck disable=SC2046 -env --chdir="pkg/$PKG_SUBDIR" \ +env --chdir="pkg/$ID" \ EUID=123 \ makepkg \ --noextract \ @@ -49,7 +52,7 @@ env --chdir="pkg/$PKG_SUBDIR" \ --force \ _systemd_UPSTREAM=1 \ _systemd_QUIET=1 \ - BUILDDIR="$PWD/pkg/$PKG_SUBDIR" \ + BUILDDIR="$PWD/pkg/$ID" \ PKGDEST="$OUTPUTDIR" \ PKGEXT=".pkg.tar" \ MESON_EXTRA_CONFIGURE_OPTIONS="-D mode=developer -D b_sanitize=${SANITIZERS:-none}" diff --git a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf index d11b932a02..06dec482d2 100644 --- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf @@ -10,7 +10,6 @@ InitrdInclude=initrd/ # https://gitlab.archlinux.org/archlinux/packaging/packages/systemd/-/merge_requests/8 is merged. [Content] Environment= - PKG_SUBDIR="arch" SYSTEMD_PACKAGES="systemd systemd-ukify systemd-sysvcompat systemd-resolvconf systemd-tests" Packages= diff --git a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.prepare b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.prepare index dd4ac96cb9..8ed5c7531c 100755 --- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.prepare +++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.prepare @@ -6,13 +6,16 @@ if [ "$1" = "build" ]; then exit 0 fi -if [ ! -f "pkg/$PKG_SUBDIR/PKGBUILD" ]; then - echo "PKGBUILD not found at pkg/$PKG_SUBDIR/PKGBUILD, run mkosi once with -ff to make sure the PKGBUILD is cloned" >&2 +# shellcheck source=/dev/null +. "$BUILDROOT/usr/lib/os-release" + +if [ ! -f "pkg/$ID/PKGBUILD" ]; then + echo "PKGBUILD not found at pkg/$ID/PKGBUILD, run mkosi once with -ff to make sure the PKGBUILD is cloned" >&2 exit 1 fi # We get depends and optdepends from .SRCINFO as getting them from the PKGBUILD is rather complex. -sed --expression 's/^[ \t]*//' "pkg/$PKG_SUBDIR/.SRCINFO" | +sed --expression 's/^[ \t]*//' "pkg/$ID/.SRCINFO" | grep --regexp '^depends =' --regexp '^optdepends =' | sed --expression 's/^depends = //' --expression 's/^optdepends = //' --expression 's/:.*//' | xargs --delimiter '\n' mkosi-install @@ -20,7 +23,7 @@ sed --expression 's/^[ \t]*//' "pkg/$PKG_SUBDIR/.SRCINFO" | # We get makedepends from the PKGBUILD as .SRCINFO can't encode conditional dependencies depending on # whether some environment variable is set or not. # shellcheck source=/dev/null -_systemd_UPSTREAM=1 . "pkg/$PKG_SUBDIR/PKGBUILD" +_systemd_UPSTREAM=1 . "pkg/$ID/PKGBUILD" # shellcheck disable=SC2154 mkosi-install "${makedepends[@]}" diff --git a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.build.chroot b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.build.chroot index 66bcff92d7..242fc4aa40 100755 --- a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.build.chroot +++ b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.build.chroot @@ -2,8 +2,11 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [ ! -f "pkg/$PKG_SUBDIR/systemd.spec" ]; then - echo "spec not found at pkg/$PKG_SUBDIR/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2 +# shellcheck source=/dev/null +. /usr/lib/os-release + +if [ ! -f "pkg/$ID/systemd.spec" ]; then + echo "spec not found at pkg/$ID/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2 exit 1 fi @@ -23,7 +26,7 @@ rpmbuild \ $( ((WITH_TESTS)) || echo "--nocheck") \ $( ((WITH_DOCS)) || echo "--without docs") \ --define "_topdir /var/tmp" \ - --define "_sourcedir pkg/$PKG_SUBDIR" \ + --define "_sourcedir pkg/$ID" \ --define "_rpmdir $OUTPUTDIR" \ ${BUILDDIR:+--define} \ ${BUILDDIR:+"_vpath_builddir $BUILDDIR"} \ @@ -45,6 +48,6 @@ rpmbuild \ --define "__elf_exclude_path ^/usr/lib/systemd/tests/unit-tests/.*$" \ --define "__script_requires %{nil}" \ --undefine _lto_cflags \ - "pkg/$PKG_SUBDIR/systemd.spec" + "pkg/$ID/systemd.spec" cp "$OUTPUTDIR"/*.rpm "$PACKAGEDIR" diff --git a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.prepare b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.prepare index dd78f730ea..8b10b242e0 100755 --- a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.prepare +++ b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.prepare @@ -6,8 +6,11 @@ if [ "$1" = "build" ]; then exit 0 fi -if [ ! -f "pkg/$PKG_SUBDIR/systemd.spec" ]; then - echo "spec not found at pkg/$PKG_SUBDIR/systemd.spec, run mkosi with -ff to make sure the spec is cloned" >&2 +# shellcheck source=/dev/null +. "$BUILDROOT/usr/lib/os-release" + +if [ ! -f "pkg/$ID/systemd.spec" ]; then + echo "spec not found at pkg/$ID/systemd.spec, run mkosi with -ff to make sure the spec is cloned" >&2 exit 1 fi @@ -18,8 +21,8 @@ for DEPS in --requires --buildrequires; do --query \ "$DEPS" \ --define "_topdir /var/tmp" \ - --define "_sourcedir pkg/$PKG_SUBDIR" \ - "pkg/$PKG_SUBDIR/systemd.spec" | + --define "_sourcedir pkg/$ID" \ + "pkg/$ID/systemd.spec" | grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev | sort --unique | tee /tmp/buildrequires | @@ -29,7 +32,7 @@ done # rpmbuild -br tries to build a source package which means all source files have to exist which isn't the # case when using --build-in-place so we get rid of the source file that doesn't exist to make it happy. # TODO: Use -bd instead of -br and get rid of this once we don't need to build on CentOS Stream 9 anymore. -sed '/Source0/d' --in-place "pkg/$PKG_SUBDIR/systemd.spec" +sed '/Source0/d' --in-place "pkg/$ID/systemd.spec" until mkosi-chroot \ rpmbuild \ @@ -37,9 +40,9 @@ until mkosi-chroot \ --build-in-place \ --with upstream \ --define "_topdir /var/tmp" \ - --define "_sourcedir pkg/$PKG_SUBDIR" \ + --define "_sourcedir pkg/$ID" \ --define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \ - "pkg/$PKG_SUBDIR/systemd.spec" + "pkg/$ID/systemd.spec" do EXIT_STATUS=$? if [ $EXIT_STATUS -ne 11 ]; then diff --git a/mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf index 0f57319c2a..d32eae4952 100644 --- a/mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-centos/mkosi.conf @@ -4,9 +4,6 @@ Distribution=centos [Content] -Environment= - PKG_SUBDIR="centos" - Packages= kernel-modules # For squashfs support rpmautospec-rpm-macros diff --git a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.build.chroot b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.build.chroot index e5224b8728..a811ff05e4 100755 --- a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.build.chroot +++ b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.build.chroot @@ -2,13 +2,16 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [ ! -d "pkg/$PKG_SUBDIR/debian" ]; then - echo "deb rules not found at pkg/$PKG_SUBDIR/debian, run mkosi once with -ff to make sure the rules are cloned" >&2 +# shellcheck source=/dev/null +. /usr/lib/os-release + +if [ ! -d "pkg/$ID/debian" ]; then + echo "deb rules not found at pkg/$ID/debian, run mkosi once with -ff to make sure the rules are cloned" >&2 exit 1 fi # We transplant the debian/ folder from the deb package sources into the upstream sources. -mount --mkdir --bind "$SRCDIR/pkg/$PKG_SUBDIR/debian" "$SRCDIR"/debian +mount --mkdir --bind "$SRCDIR/pkg/$ID/debian" "$SRCDIR"/debian # We hide the patches/ directory by mounting an empty directory on top so they don't get applied. TMP=$(mktemp -d) diff --git a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf index 364f7b54ff..9e5ed1e4b4 100644 --- a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf @@ -9,7 +9,6 @@ InitrdInclude=initrd/ [Content] Environment= - PKG_SUBDIR="debian" SYSTEMD_PACKAGES="systemd systemd-userdbd systemd-oomd diff --git a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare index 47e7f32789..c9b69fc2db 100755 --- a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare +++ b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare @@ -6,10 +6,13 @@ if [ "$1" = "build" ]; then exit 0 fi -if [ ! -d "pkg/$PKG_SUBDIR/debian" ]; then - echo "deb rules not found at pkg/$PKG_SUBDIR/debian, run mkosi once with -ff to make sure the rules are cloned" >&2 +# shellcheck source=/dev/null +. "$BUILDROOT/usr/lib/os-release" + +if [ ! -d "pkg/$ID/debian" ]; then + echo "deb rules not found at pkg/$ID/debian, run mkosi once with -ff to make sure the rules are cloned" >&2 exit 1 fi -cd "pkg/$PKG_SUBDIR" +cd "pkg/$ID" DEB_BUILD_PROFILES="pkg.systemd.upstream" apt-get build-dep . diff --git a/mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf index e48f9505d7..8236040c0e 100644 --- a/mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-fedora/mkosi.conf @@ -4,9 +4,6 @@ Distribution=fedora [Content] -Environment= - PKG_SUBDIR="fedora" - Packages= btrfs-progs compsize diff --git a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.build.chroot b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.build.chroot index 3d45b43117..62b329998d 100755 --- a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.build.chroot +++ b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.build.chroot @@ -2,8 +2,12 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [ ! -f "pkg/$PKG_SUBDIR/systemd.spec" ]; then - echo "spec not found at pkg/$PKG_SUBDIR/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2 +# shellcheck source=/dev/null +. /usr/lib/os-release +ID="${ID%-*}" + +if [ ! -f "pkg/$ID/systemd.spec" ]; then + echo "spec not found at pkg/$ID/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2 exit 1 fi @@ -16,7 +20,7 @@ fi # The openSUSE filelists hardcode the manpage compression extension. This causes rpmbuild errors since we # disable manpage compression as the files cannot be found. Fix the issue by removing the compression # extension. -find "pkg/$PKG_SUBDIR" -name "files.*" -exec sed --in-place 's/\.gz$//' {} \; +find "pkg/$ID" -name "files.*" -exec sed --in-place 's/\.gz$//' {} \; build() { # TODO: Replace meson_build and meson_install overrides with "--undefine __meson_verbose" once @@ -28,7 +32,7 @@ build() { --with upstream \ $( ((WITH_TESTS)) || echo --nocheck) \ --define "_topdir /var/tmp" \ - --define "_sourcedir pkg/$PKG_SUBDIR" \ + --define "_sourcedir pkg/$ID" \ --define "_rpmdir $OUTPUTDIR" \ ${BUILDDIR:+--define} \ ${BUILDDIR:+"_vpath_builddir $BUILDDIR"} \ @@ -46,7 +50,7 @@ build() { --define "__elf_exclude_path ^/usr/lib/systemd/tests/unit-tests/.*$" \ --define "__script_requires %{nil}" \ "$@" \ - "pkg/$PKG_SUBDIR/systemd.spec" + "pkg/$ID/systemd.spec" } if ! build; then @@ -58,7 +62,7 @@ if ! build; then # warnings. rm systemd.lang - cat /tmp/unpackaged-files >>"pkg/$PKG_SUBDIR/files.systemd" + cat /tmp/unpackaged-files >>"pkg/$ID/files.systemd" build --noprep --nocheck fi diff --git a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf index 06f3d21365..56bf8cda81 100644 --- a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf @@ -8,7 +8,6 @@ InitrdInclude=initrd/ [Content] Environment= - PKG_SUBDIR="opensuse" SYSTEMD_PACKAGES="systemd udev systemd-experimental diff --git a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.prepare b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.prepare index 42bf05677f..492aa0e45f 100755 --- a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.prepare +++ b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.prepare @@ -6,8 +6,12 @@ if [ "$1" = "build" ]; then exit 0 fi -if [ ! -f "pkg/$PKG_SUBDIR/systemd.spec" ]; then - echo "spec not found at pkg/$PKG_SUBDIR/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2 +# shellcheck source=/dev/null +. "$BUILDROOT/usr/lib/os-release" +ID="${ID%-*}" + +if [ ! -f "pkg/$ID/systemd.spec" ]; then + echo "spec not found at pkg/$ID/systemd.spec, run mkosi once with -ff to make sure the spec is cloned" >&2 exit 1 fi @@ -18,8 +22,8 @@ for DEPS in --requires --buildrequires; do --query \ "$DEPS" \ --define "_topdir /var/tmp" \ - --define "_sourcedir pkg/$PKG_SUBDIR" \ - "pkg/$PKG_SUBDIR/systemd.spec" | + --define "_sourcedir pkg/$ID" \ + "pkg/$ID/systemd.spec" | grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev | sort --unique | tee /tmp/buildrequires | @@ -32,9 +36,9 @@ until mkosi-chroot \ --build-in-place \ --with upstream \ --define "_topdir /var/tmp" \ - --define "_sourcedir pkg/$PKG_SUBDIR" \ + --define "_sourcedir pkg/$ID" \ --define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" \ - "pkg/$PKG_SUBDIR/systemd.spec" + "pkg/$ID/systemd.spec" do EXIT_STATUS=$? if [ $EXIT_STATUS -ne 11 ]; then diff --git a/mkosi.images/system/mkosi.sync b/mkosi.images/system/mkosi.sync index 72b5cf7c33..3e42a09b2c 100755 --- a/mkosi.images/system/mkosi.sync +++ b/mkosi.images/system/mkosi.sync @@ -2,7 +2,8 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [ -z "$(ls --almost-all "pkg/$PKG_SUBDIR")" ] || [ -f "pkg/$PKG_SUBDIR/.git" ]; then - git submodule sync "pkg/$PKG_SUBDIR" - git submodule update --init "pkg/$PKG_SUBDIR" +if [ -z "$(ls --almost-all "pkg/$DISTRIBUTION")" ] || [ -f "pkg/$DISTRIBUTION/.git" ]; then + PKG_SUBDIR="$(realpath "pkg/$DISTRIBUTION" --relative-to "$PWD")" + git submodule sync "$PKG_SUBDIR" + git submodule update --init "$PKG_SUBDIR" fi diff --git a/pkg/ubuntu b/pkg/ubuntu new file mode 120000 index 0000000000..b2f7fd3e91 --- /dev/null +++ b/pkg/ubuntu @@ -0,0 +1 @@ +debian \ No newline at end of file From e4c8e9dcbdc3b8fe10b28b3fe1f5dcd90d9e7dcb Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 8 Apr 2024 13:42:22 +0200 Subject: [PATCH 3/5] mkosi: Install openSUSE-release instead of distribution-release distribution-release is a virtual package that is by default satisfied by the openSUSE MicroOS-release package. Let's make sure we pull in the generic openSUSE-release package instead by installing patterns-base-minimal_base which has a Suggests dependency on openSUSE-release which makes sure it takes priority over the MicroOS one. --- mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf index 56bf8cda81..b9cb0a5179 100644 --- a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf @@ -27,7 +27,6 @@ Packages= cryptsetup dbus-broker device-mapper - distribution-release docbook-xsl-stylesheets f2fs-tools gawk @@ -43,6 +42,7 @@ Packages= openssh-clients openssh-server pam + patterns-base-minimal_base python3-pefile quota rpm-build From 1a2374a3f6a4cf18c70a84be1b96893f577c99fb Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 8 Apr 2024 13:57:48 +0200 Subject: [PATCH 4/5] mkosi: Unify initrd post-install scripts Just like we already have $SYSTEMD_PACKAGES for systemd packages to re-install in the main image, let's add $INITRD_PACKAGES for all systemd packages to re-install in the initrd. --- .../{mkosi.conf.d/10-opensuse => }/initrd/mkosi.postinst | 7 ++++--- mkosi.images/system/mkosi.conf | 3 +++ .../system/mkosi.conf.d/10-arch/initrd/mkosi.postinst | 5 ----- mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf | 4 +--- .../mkosi.conf.d/10-centos-fedora/initrd/mkosi.postinst | 5 ----- .../system/mkosi.conf.d/10-centos-fedora/mkosi.conf | 5 ++--- .../mkosi.conf.d/10-debian-ubuntu/initrd/mkosi.postinst | 5 ----- .../system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf | 4 +--- mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf | 4 +--- 9 files changed, 12 insertions(+), 30 deletions(-) rename mkosi.images/system/{mkosi.conf.d/10-opensuse => }/initrd/mkosi.postinst (79%) mode change 100755 => 100644 delete mode 100755 mkosi.images/system/mkosi.conf.d/10-arch/initrd/mkosi.postinst delete mode 100755 mkosi.images/system/mkosi.conf.d/10-centos-fedora/initrd/mkosi.postinst delete mode 100755 mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/initrd/mkosi.postinst diff --git a/mkosi.images/system/mkosi.conf.d/10-opensuse/initrd/mkosi.postinst b/mkosi.images/system/initrd/mkosi.postinst old mode 100755 new mode 100644 similarity index 79% rename from mkosi.images/system/mkosi.conf.d/10-opensuse/initrd/mkosi.postinst rename to mkosi.images/system/initrd/mkosi.postinst index 562bebe08e..b92bb8ae29 --- a/mkosi.images/system/mkosi.conf.d/10-opensuse/initrd/mkosi.postinst +++ b/mkosi.images/system/initrd/mkosi.postinst @@ -1,9 +1,10 @@ -#!/bin/sh +#!/bin/bash # SPDX-License-Identifier: LGPL-2.1-or-later set -e +# shellcheck disable=SC2086 +mkosi-install $INITRD_PACKAGES + # OpenSUSE insists on blacklisting erofs by default because its supposedly a legacy filesystem. # See https://github.com/openSUSE/suse-module-tools/pull/71 rm -f "$BUILDROOT/usr/lib/modprobe.d/60-blacklist_fs-erofs.conf" - -mkosi-install systemd udev systemd-experimental diff --git a/mkosi.images/system/mkosi.conf b/mkosi.images/system/mkosi.conf index 303af4acb1..7aa64c4e0e 100644 --- a/mkosi.images/system/mkosi.conf +++ b/mkosi.images/system/mkosi.conf @@ -1,5 +1,8 @@ # SPDX-License-Identifier: LGPL-2.1-or-later +[Config] +InitrdInclude=initrd/ + [Output] @Format=directory diff --git a/mkosi.images/system/mkosi.conf.d/10-arch/initrd/mkosi.postinst b/mkosi.images/system/mkosi.conf.d/10-arch/initrd/mkosi.postinst deleted file mode 100755 index ad4fe6e9a1..0000000000 --- a/mkosi.images/system/mkosi.conf.d/10-arch/initrd/mkosi.postinst +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: LGPL-2.1-or-later -set -e - -mkosi-install systemd systemd-sysvcompat diff --git a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf index 06dec482d2..457cf6e71f 100644 --- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf @@ -3,14 +3,12 @@ [Match] Distribution=arch -[Config] -InitrdInclude=initrd/ - # TODO: Switch to https://gitlab.archlinux.org/archlinux/packaging/packages/systemd once # https://gitlab.archlinux.org/archlinux/packaging/packages/systemd/-/merge_requests/8 is merged. [Content] Environment= SYSTEMD_PACKAGES="systemd systemd-ukify systemd-sysvcompat systemd-resolvconf systemd-tests" + INITRD_PACKAGES="systemd systemd-sysvcompat" Packages= bpf diff --git a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/initrd/mkosi.postinst b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/initrd/mkosi.postinst deleted file mode 100755 index 0b7a4cb6b7..0000000000 --- a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/initrd/mkosi.postinst +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: LGPL-2.1-or-later -set -e - -mkosi-install systemd systemd-udev diff --git a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.conf index c556aa8459..277d17d25c 100644 --- a/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.conf @@ -4,9 +4,6 @@ Distribution=|centos Distribution=|fedora -[Config] -InitrdInclude=initrd/ - [Content] Environment= SYSTEMD_PACKAGES="systemd @@ -22,6 +19,8 @@ Environment= systemd-oomd-defaults systemd-journal-remote systemd-networkd-defaults" + INITRD_PACKAGES="systemd systemd-udev" + Packages= bpftool cryptsetup diff --git a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/initrd/mkosi.postinst b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/initrd/mkosi.postinst deleted file mode 100755 index 640cdb1e32..0000000000 --- a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/initrd/mkosi.postinst +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -# SPDX-License-Identifier: LGPL-2.1-or-later -set -e - -mkosi-install systemd udev diff --git a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf index 9e5ed1e4b4..b6f7fdd926 100644 --- a/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf @@ -4,9 +4,6 @@ Distribution=|debian Distribution=|ubuntu -[Config] -InitrdInclude=initrd/ - [Content] Environment= SYSTEMD_PACKAGES="systemd @@ -23,6 +20,7 @@ Environment= systemd-boot systemd-ukify udev" + INITRD_PACKAGES="systemd udev" Packages= ^libasan[0-9]+$ diff --git a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf index b9cb0a5179..5d04718ef5 100644 --- a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.conf @@ -3,9 +3,6 @@ [Match] Distribution=opensuse -[Config] -InitrdInclude=initrd/ - [Content] Environment= SYSTEMD_PACKAGES="systemd @@ -18,6 +15,7 @@ Environment= systemd-portable systemd-sysvcompat systemd-testsuite" + INITRD_PACKAGES="systemd udev systemd-experimental" # We install gawk, gzip, grep, xz, sed, rsync and docbook-xsl-stylesheets here explicitly so that the busybox # versions don't get installed instead. From 07d52c7a46cf8ce4cb8341b2ac7f5ffaf39f957d Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Tue, 9 Apr 2024 11:57:38 +0200 Subject: [PATCH 5/5] mkosi: Drop out-of-date comment --- mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf | 2 -- 1 file changed, 2 deletions(-) diff --git a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf index 457cf6e71f..e9aa4080da 100644 --- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf @@ -3,8 +3,6 @@ [Match] Distribution=arch -# TODO: Switch to https://gitlab.archlinux.org/archlinux/packaging/packages/systemd once -# https://gitlab.archlinux.org/archlinux/packaging/packages/systemd/-/merge_requests/8 is merged. [Content] Environment= SYSTEMD_PACKAGES="systemd systemd-ukify systemd-sysvcompat systemd-resolvconf systemd-tests"