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 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.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..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,15 +3,10 @@ [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= - PKG_SUBDIR="arch" 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-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/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.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.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-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/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.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..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,12 +4,8 @@ Distribution=|debian Distribution=|ubuntu -[Config] -InitrdInclude=initrd/ - [Content] Environment= - PKG_SUBDIR="debian" SYSTEMD_PACKAGES="systemd systemd-userdbd systemd-oomd @@ -24,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-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..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,12 +3,8 @@ [Match] Distribution=opensuse -[Config] -InitrdInclude=initrd/ - [Content] Environment= - PKG_SUBDIR="opensuse" SYSTEMD_PACKAGES="systemd udev systemd-experimental @@ -19,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. @@ -28,7 +25,6 @@ Packages= cryptsetup dbus-broker device-mapper - distribution-release docbook-xsl-stylesheets f2fs-tools gawk @@ -44,6 +40,7 @@ Packages= openssh-clients openssh-server pam + patterns-base-minimal_base python3-pefile quota rpm-build 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