summaryrefslogtreecommitdiffstats
path: root/mkosi.functions
diff options
context:
space:
mode:
Diffstat (limited to 'mkosi.functions')
-rw-r--r--mkosi.functions57
1 files changed, 57 insertions, 0 deletions
diff --git a/mkosi.functions b/mkosi.functions
new file mode 100644
index 0000000..993f2e8
--- /dev/null
+++ b/mkosi.functions
@@ -0,0 +1,57 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+make_sysext_unsigned() {
+ if ! ((SYSEXT)); then
+ return
+ fi
+
+ mkdir -p /usr/lib/systemd/repart/definitions/sysext-unsigned.repart.d
+ cat >/usr/lib/systemd/repart/definitions/sysext-unsigned.repart.d/10-root.conf <<EOF
+[Partition]
+Type=root
+Format=erofs
+CopyFiles=/usr/
+Minimize=best
+EOF
+
+ . /usr/lib/os-release
+
+ mkdir -p "$1"/usr/lib/extension-release.d
+ cat >"$1"/usr/lib/extension-release.d/extension-release.systemd <<EOF
+ID=$ID
+SYSEXT_ID=systemd
+SYSEXT_SCOPE=system
+ARCHITECTURE=$ARCHITECTURE
+EOF
+
+ if [[ -n "$VERSION_ID" ]]; then
+ cat >>"$1"/usr/lib/extension-release.d/extension-release.systemd <<EOF
+VERSION_ID=$VERSION_ID
+EOF
+ fi
+
+ if [[ -n "$SYSEXT_LEVEL" ]]; then
+ cat >>"$1"/usr/lib/extension-release.d/extension-release.systemd <<EOF
+SYSEXT_LEVEL=$SYSEXT_LEVEL
+EOF
+ fi
+
+ rm -f "$BUILDDIR"/systemd.raw
+
+ local fstype
+
+ if command -v mkfs.erofs; then
+ fstype=erofs
+ else
+ fstype=squashfs
+ fi
+
+ env SYSTEMD_REPART_OVERRIDE_FSTYPE_ROOT="$fstype" \
+ "$BUILDDIR"/systemd-repart \
+ --make-ddi=sysext-unsigned \
+ --copy-source="$1" \
+ --pretty=no \
+ "$BUILDDIR"/systemd.raw
+
+ cp "$BUILDDIR"/systemd.raw "$OUTPUTDIR"
+}