summaryrefslogtreecommitdiffstats
path: root/mkosi.images/system
diff options
context:
space:
mode:
authorDaan De Meyer <daan.j.demeyer@gmail.com>2024-04-07 20:23:56 +0200
committerDaan De Meyer <daan.j.demeyer@gmail.com>2024-04-08 11:36:40 +0200
commit8440ea8f21e1f979c704818a6ccea3ca48803b5d (patch)
treeb5d18b923cac7801ddbe7bf9d16747b26a825ffc /mkosi.images/system
parentUpdate pkg/debian/ to latest (diff)
downloadsystemd-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')
-rw-r--r--mkosi.images/system/mkosi.conf.d/10-arch/mkosi.conf8
-rwxr-xr-xmkosi.images/system/mkosi.conf.d/10-arch/mkosi.prepare30
-rwxr-xr-xmkosi.images/system/mkosi.conf.d/10-centos-fedora/mkosi.prepare40
-rw-r--r--mkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.conf4
-rwxr-xr-xmkosi.images/system/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare2
-rwxr-xr-xmkosi.images/system/mkosi.conf.d/10-opensuse/mkosi.prepare40
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 \