diff options
author | Daan De Meyer <daan.j.demeyer@gmail.com> | 2024-04-07 20:23:56 +0200 |
---|---|---|
committer | Daan De Meyer <daan.j.demeyer@gmail.com> | 2024-04-08 11:36:40 +0200 |
commit | 8440ea8f21e1f979c704818a6ccea3ca48803b5d (patch) | |
tree | b5d18b923cac7801ddbe7bf9d16747b26a825ffc /mkosi.images/system | |
parent | Update pkg/debian/ to latest (diff) | |
download | systemd-8440ea8f21e1f979c704818a6ccea3ca48803b5d.tar.xz systemd-8440ea8f21e1f979c704818a6ccea3ca48803b5d.zip |
Install build dependencies into final image
This allows us to build and install after booting without having to
build a new image. Together with
https://github.com/systemd/mkosi/pull/2601 and after enabling
RuntimeBuildSources=yes, after booting, "meson install -C /work/build"
can be used to do an incremental build and install. This won't build
proper packages, but will be invaluable for having a quick compile,
edit, test cycle without having to rebuild the image all the time.
Diffstat (limited to 'mkosi.images/system')
6 files changed, 57 insertions, 67 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 131f7d8e68..9c2e152c3a 100644 --- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf +++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf @@ -20,8 +20,10 @@ Packages= cryptsetup dbus-broker dbus-broker-units + debugedit dhcp f2fs-tools + fakeroot git gnutls iproute @@ -31,6 +33,7 @@ Packages= openssh openssl pacman + pkgconf polkit quota-tools sbsigntools @@ -41,8 +44,3 @@ Packages= InitrdPackages= btrfs-progs tpm2-tools - -BuildPackages= - fakeroot - pkgconf - debugedit 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 24c91e5665..2a0ef35965 100755 --- a/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.prepare +++ b/mkosi.images/system/mkosi.conf.d/10-arch/mkosi.prepare @@ -2,23 +2,25 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e +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 exit 1 fi -if [ "$1" = "final" ]; then - # We get depends and optdepends from .SRCINFO as getting them from the PKGBUILD is rather complex. - sed --expression 's/^[ \t]*//' "pkg/$PKG_SUBDIR/.SRCINFO" | - grep --regexp '^depends =' --regexp '^optdepends =' | - sed --expression 's/^depends = //' --expression 's/^optdepends = //' --expression 's/:.*//' | - xargs --delimiter '\n' mkosi-install -else - # 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 - UPSTREAM=1 . "pkg/$PKG_SUBDIR/PKGBUILD" +# We get depends and optdepends from .SRCINFO as getting them from the PKGBUILD is rather complex. +sed --expression 's/^[ \t]*//' "pkg/$PKG_SUBDIR/.SRCINFO" | + grep --regexp '^depends =' --regexp '^optdepends =' | + sed --expression 's/^depends = //' --expression 's/^optdepends = //' --expression 's/:.*//' | + xargs --delimiter '\n' mkosi-install - # shellcheck disable=SC2154 - mkosi-install "${makedepends[@]}" -fi +# 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 +UPSTREAM=1 . "pkg/$PKG_SUBDIR/PKGBUILD" + +# shellcheck disable=SC2154 +mkosi-install "${makedepends[@]}" 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 5bcb1ad481..dd78f730ea 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 @@ -2,33 +2,29 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e +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 exit 1 fi -if [ "$1" = "final" ]; then - DEPS="--requires" -else - DEPS="--buildrequires" -fi - -mkosi-chroot \ - rpmspec \ - --with upstream \ - --query \ - "$DEPS" \ - --define "_topdir /var/tmp" \ - --define "_sourcedir pkg/$PKG_SUBDIR" \ - "pkg/$PKG_SUBDIR/systemd.spec" | - grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev | - sort --unique | - tee /tmp/buildrequires | - xargs --delimiter '\n' mkosi-install - -if [ "$1" = "final" ]; then - exit 0 -fi +for DEPS in --requires --buildrequires; do + mkosi-chroot \ + rpmspec \ + --with upstream \ + --query \ + "$DEPS" \ + --define "_topdir /var/tmp" \ + --define "_sourcedir pkg/$PKG_SUBDIR" \ + "pkg/$PKG_SUBDIR/systemd.spec" | + grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev | + sort --unique | + tee /tmp/buildrequires | + xargs --delimiter '\n' mkosi-install +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. 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 e2be181fe2..364f7b54ff 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 @@ -36,6 +36,7 @@ Packages= dbus-broker dbus-user-session dmsetup + dpkg-dev f2fs-tools fdisk git-core @@ -59,6 +60,3 @@ Packages= InitrdPackages= btrfs-progs tpm2-tools - -BuildPackages= - dpkg-dev 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 ae0d6fd92f..47e7f32789 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 @@ -2,7 +2,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e -if [ "$1" = "final" ]; then +if [ "$1" = "build" ]; then exit 0 fi 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 a35a8f3bba..42bf05677f 100755 --- a/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.prepare +++ b/mkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.prepare @@ -2,33 +2,29 @@ # SPDX-License-Identifier: LGPL-2.1-or-later set -e +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 exit 1 fi -if [ "$1" = "final" ]; then - DEPS="--requires" -else - DEPS="--buildrequires" -fi - -mkosi-chroot \ - rpmspec \ - --with upstream \ - --query \ - "$DEPS" \ - --define "_topdir /var/tmp" \ - --define "_sourcedir pkg/$PKG_SUBDIR" \ - "pkg/$PKG_SUBDIR/systemd.spec" | - grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev | - sort --unique | - tee /tmp/buildrequires | - xargs --delimiter '\n' mkosi-install - -if [ "$1" = "final" ]; then - exit 0 -fi +for DEPS in --requires --buildrequires; do + mkosi-chroot \ + rpmspec \ + --with upstream \ + --query \ + "$DEPS" \ + --define "_topdir /var/tmp" \ + --define "_sourcedir pkg/$PKG_SUBDIR" \ + "pkg/$PKG_SUBDIR/systemd.spec" | + grep --invert-match --regexp systemd --regexp /bin/sh --regexp "rpmlib(" --regexp udev | + sort --unique | + tee /tmp/buildrequires | + xargs --delimiter '\n' mkosi-install +done until mkosi-chroot \ rpmbuild \ |