]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mkosi: Build a sysext if SYSEXT=1 is specified 33683/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 10 Jul 2024 08:07:05 +0000 (10:07 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 10 Jul 2024 08:55:33 +0000 (10:55 +0200)
.github/workflows/mkosi.yml
mkosi.clean
mkosi.conf.d/10-centos-fedora/mkosi.build.chroot
mkosi.conf.d/10-opensuse/mkosi.build.chroot
mkosi.functions [new file with mode: 0644]

index a394e121cf7cfcc83e9b281038680625cb8f56f2..020f7638521a2cc89651832612a2ec73000062d6 100644 (file)
@@ -140,6 +140,7 @@ jobs:
                 SANITIZERS=${{ matrix.sanitizers }}
                 MESON_OPTIONS=--werror
                 LLVM=${{ matrix.llvm }}
+                SYSEXT=1
 
         [Host]
         QemuMem=4G
index 64810b795712e13d805e51063a15176d9b2d0273..bcd1ae42c89aedf51c433cf771aa37c0b18b78ff 100755 (executable)
@@ -2,4 +2,4 @@
 set -e
 set -o nounset
 
-rm -f "$OUTPUTDIR"/*.{rpm,deb,pkg.tar}
+rm -f "$OUTPUTDIR"/*.{rpm,deb,pkg.tar} "$OUTPUTDIR"/systemd.raw
index 21f106292bbb3038f8840a7757dde6be2c696b79..37a4377f2f17a4f6fad57212d375ebbda45442d4 100755 (executable)
@@ -2,6 +2,8 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -e
 
+. mkosi.functions
+
 if ((NO_BUILD)); then
     exit 0
 fi
@@ -120,3 +122,5 @@ CXX_LD="$( ((LLVM)) && echo lld)" \
 
 cp "$OUTPUTDIR"/*.rpm "$PACKAGEDIR"
 cp "$OUTPUTDIR"/*.rpm "$BUILDDIR"
+
+make_sysext_unsigned /var/tmp/BUILD/*/BUILDROOT
index 67481d0b10c55894e32379608767771bd03f3cbc..e9f1e8a123e3865508f973c85d56b2d46e9c9a00 100755 (executable)
@@ -2,6 +2,8 @@
 # SPDX-License-Identifier: LGPL-2.1-or-later
 set -e
 
+. mkosi.functions
+
 if ((NO_BUILD)); then
     exit 0
 fi
@@ -139,3 +141,5 @@ fi
 
 cp "$OUTPUTDIR"/*.rpm "$PACKAGEDIR"
 cp "$OUTPUTDIR"/*.rpm "$BUILDDIR"
+
+make_sysext_unsigned /var/tmp/BUILD/*/BUILDROOT
diff --git a/mkosi.functions b/mkosi.functions
new file mode 100644 (file)
index 0000000..c19c1aa
--- /dev/null
@@ -0,0 +1,49 @@
+# 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
+
+    env --unset=SYSTEMD_REPART_OVERRIDE_FSTYPE_ROOT \
+    "$BUILDDIR"/systemd-repart \
+        --make-ddi=sysext-unsigned \
+        --copy-source="$1" \
+        --pretty=no \
+        "$BUILDDIR"/systemd.raw
+
+    cp "$BUILDDIR"/systemd.raw "$OUTPUTDIR"
+}