287 Commits
Author SHA1 Message Date
Christian Brauner 5e4fa24313 mkosi: install python3-clang in the tools image
tools/check-argument-comments.py needs the libclang python bindings.
2026-11-04 23:19:54 +01:00
Adrian Reber bbb570204f test: add an integration test for systemd-firstboot --addon=
Creates an image with an ESP via repart, writes an addon into it with
all settings systemd-firstboot can provision, and checks what ended up
in the image: the sections of the (unsigned) addon, and the credentials
in its cpio. Also covers replacing an addon, a second one next to it,
the combinations that are refused, and an image without an ESP.
2026-11-04 07:13:41 +00:00
Daan De Meyer 803cbea80f mkosi: stop installing liburing
The images and tools trees install liburing so we could experiment with
io_uring in sd-event. We're going to add io_uring support to sd-event without
liburing, so let's stop installing it.
2026-11-02 09:26:57 +01:00
Michael Vogt 7321925477 units: add optional varlink-sftp socket and service
With the varlink protocol upgrade feature we can use provide
file system access via varlink easily by re-using the existing
sftp standard. SFTP is independant of ssh and provides a well
defined and widely used file transfer protocol.

So here we add two new (optional) varlink interfaces:
- io.systemd.Sftp.Root.Connect
- io.systemd.Sftp.RootReadOnly.Connect

They are behind polkit auth as io.systemd.sftp.root{,-read-only}.

Note that handing this is out is equivalent for giving root
access: even ReadOnly mode will allow to read secrets like
/etc/shadow so its inherently risky. The two actions mostly
exist to prevent accidents not as a (strong) protection
boundary. The unit description warns about this and the polkit
prompt also describes the full implications.

The use cases are:
- file access via the varlink-http-bridge [1]
- file access over AF_VSOCK

The install is optional and turned off by default.

[1] https://github.com/systemd/varlink-http-bridge
2026-10-30 20:06:11 +01:00
Daan De Meyer 12d8bb84b1 mkosi: share packaging pins with other build tools
The packaging references are part of mkosi's configuration, so tine can't
build a checkout with the same pinned spec. Let's share the pins in one
JSON file keyed by distro and keep mkosi, the packaging updater and
Packit using it.
2026-10-30 13:20:54 +01:00
Luca Boccassi feb1e5fbae ci: switch deb packaging repo to github
salsa is very flaky and CI jobs constantly fail when pulling from it.
Switch to github repo in our org so that it is more reliable
(if it's down, the CI jobs are down as well by definition, so no
combinatorial probability of outages
2026-10-28 11:04:15 +00:00
Christian Brauner f9c9576b79 mkosi: install mkosi.crt into the VOA hierarchy of the test images
Place the certificate the test images are signed with below
/usr/share/voa/<ID>/kernel-keyring/{dm-verity,fs-verity}/x509/ in the
host image and in the initrd so systemd-keyring-setup enrolls it into
the .dm-verity and .fs-verity keyrings at boot. The initrd mirrors the
copy mkosi installs there for userspace verification.

Add a test CA in keyring-setup-ca.{crt,key} and install its certificate
among the trust anchors for .dm-verity so trust anchors are enrolled as
well. keyring-setup-ca.py mints the certificates without a subject key
identifier that the tests need for the serial number fallback. OpenSSL's
x509 tool adds that extension to every certificate it signs so they
can't be produced with it.

systemd-keyring-setup.service isn't enabled by default but the
integration tests rely on it provisioning the keyrings from the initrd.
So enable it via the mkosi presets.

machine_supports_verity_keyring() looked for the mkosi certificate
anywhere in /proc/keys. Now that .fs-verity holds it as well that
doesn't imply dm-verity signature support anymore. So only look at the
keyrings dm-verity actually consults.

With the service enabled, VMs booted with dm_verity.keyring_unsealed=1
come up with the .dm-verity keyring provisioned and sealed already and
the manual provisioning in TEST-90 fails. So TEST-90 now looks at the
state of the keyring first:

- sealed at boot: the certificate is in place already, check that a
  self-signed stranger is refused
- sealed empty: systemd-keyring-setup enrolled nothing, fail
- left open although the kernel left it unsealed and
  systemd-keyring-setup is enabled: the service didn't provision it,
  fail
- otherwise provision it by hand like before and skip when the kernel
  sealed it at boot

Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-10-26 18:55:53 +01:00
Luca Boccassi b76cc13632 mkosi: install QEMU and firmware on Debian and Ubuntu (#44382)
The other distributions get QEMU through the recommends of their systemd
packaging, Debian's doesn't list it, so the tests that boot guests with
systemd-vmspawn (TEST-87-AUX-UTILS-VM, TEST-97-VMSPAWN-MEMORY) have been
skipping on Debian and Ubuntu. Add qemu-system and the matching EDK2
firmware package for the architectures CI runs.
2026-10-26 17:39:56 +00:00
Christian Brauner 021112961b rust: support programs written in Rust (#44324)
Lennart asked in #44114 to split the preparatory stuff out so it can
be merged in smaller PRs. So this is a stack of four, each based on
the one before it and each showing only its own commits:

1. #44323, the C helpers (merged)
2. #44324, support for programs written in Rust
3. #44325, the systemd_shared wrappers systemd-keyring-setup needs
4. #44114, systemd-keyring-setup itself

This one is 2.

This adds support for writing systemd programs in Rust. It replaces
#43551 and reworks it along the lines the maintainers agreed on at the
Berlin hackfest:

- Rust is only used for new leaf components. Existing C code isn't
  ported and nothing that other components depend on is written in
  Rust.
- No cargo. Everything is built with meson.
- Only the core, alloc and libc crates. Rust code is no_std and there
  are no other crates. The libc crate isn't needed yet, the bindings
  generated from the tree's own headers cover libc. And like the
  kernel we don't use alloc either. Its collections abort when memory
  runs out. systemd_shared has its own Box and Vec instead, which work
  like the kernel's: everything that allocates returns an error and
  there's no global allocator.
- C linkage only. libsystemd-shared and the dlopen machinery stay as
  they are. A program written in Rust links libsystemd-shared
  dynamically just like the C programs do and declares its dlopen()
  dependencies in .note.dlopen. The Rust crates are linked statically
  into the programs using them.

So nothing of the Rust standard library ends up in a program or in
libsystemd-shared. Per HACKING.md the stripped test-cli-rust binary is
32 KB with LTO against 20 KB for its C twin.

Rust support is optional via -Drust= and auto by default.

The bindings for libsystemd-shared are generated at build time by
bindgen from the same headers, flags and include stack the library is
built with. On top of that sits the systemd_shared crate which programs
are written against. It mirrors the C conventions: errno based errors,
the log_*() family, define_main!() and the command line framework of the
C programs. A Rust program prints the same --help, parses options the
same way and answers --introspect-cli exactly like a C program.
test-cli-parity.sh checks that byte for byte.

Secrets go into Vec<u8, Erasing>. Erasing allocates like malloc() but
frees with erase_and_free(). In C that's a convention every caller has
to remember. Here it's part of the type.

You need rustc >= 1.85, bindgen >= 0.71.1 and meson >= 1.4.0 which is
what Debian 13 ships. The tree keeps its meson floor and -Drust=auto
turns itself off on older meson. The mkosi builds of the distributions
that have the toolchain pass -Drust=enabled and the linter runs rustfmt,
the bindings header check and clippy. HACKING.md and CODING_STYLE.md
document how a program is written and what the rules are.

Note that the Arch and openSUSE OBS builds fail because their packaging
builds with --auto-features=enabled and doesn't pull in rustc and
bindgen. They need either -Drust=disabled or build dependencies on both.

It was based on #44323 only because bindings.h lists every header in
src/basic/ and src/shared/ and so has to know voa-util.h. That's merged
now and this PR targets main. The first program written against it is
systemd-keyring-setup in #44114, with the wrappers it needs in
#44325.

Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-10-24 08:21:59 +02:00
Christian Hesse 9004bd5560 mkosi: update arch commit reference to 1a366822100fc46edec7308b8cb2424fde7f037f 2026-10-23 22:30:28 +01:00
Christian Brauner 43863cb02b mkosi,ci: build with Rust where the toolchain is available
Add rustc and bindgen to the build images and tools trees so
-Drust=auto turns Rust support on wherever the packages are new enough.
That's Debian 13 and testing, Fedora, CentOS Stream 10, openSUSE
Tumbleweed and Arch. Ubuntu noble's rustc is too old so Rust stays off
there. Add rustfmt and clippy to the tools trees where the distribution
packages them separately.

The mkosi images of the distributions whose toolchain is known to be
new enough are built with -Drust=enabled so a toolchain that quietly
stops being found fails the build instead of silently dropping Rust.
Debian 13 ships exactly the floors, rustc 1.85.0, bindgen 0.71.1 and
meson 1.7.0, so its image doubles as the check for the oldest supported
toolchain.

rustfmt, the bindings header check and clippy run in the linter
workflow whose tools tree is Fedora rawhide. So that covers the newest
toolchain. Changes to Rust code get the rust label.

Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-10-23 16:34:47 +02:00
Paul Meyer e26a9e1d7b mkosi: install QEMU and firmware on Debian and Ubuntu
The other distributions get QEMU through the recommends of their
systemd packaging, Debian's doesn't list it, so the tests that boot
guests with systemd-vmspawn (TEST-87-AUX-UTILS-VM, TEST-97-VMSPAWN-MEMORY)
have been skipping on Debian and Ubuntu. Add qemu-system and the
matching EDK2 firmware package for the architectures CI runs.

Signed-off-by: Paul Meyer <katexochen0@gmail.com>
2026-10-23 15:31:15 +02:00
Lennart Poettering bb830c1ee4 ci: add testsuite for ptybroker 2026-10-21 13:19:49 +02:00
Zbigniew Jędrzejewski-Szmek 0986b5ae64 miscellaneous test tweaks from Ubuntu (#44300)
These patches are currently in Ubuntu 26.10 do get the test working on
our infra.
2026-10-20 08:29:38 +02:00
Nick Rosbrook 75a26a9ba8 mkosi: remove systemd from minimal-base on ubuntu
The minimal-base is not supposed to have systemd installed, and some
tests (e.g. TEST-13-NSPAWN) rely on this to build dummy containers.
But, the systemd package does get pulled in on Ubuntu, so explicitly
remove it in the mkosi config.
2026-10-19 21:36:36 -05:00
Lennart Poettering c8be828ca1 test: cover --compression= and --verify-decoded= of systemd-import/systemd-pull
Exercises the new switches against every compression algorithm available
in the test image: detection vs. explicitly configured algorithm, "none"
taking the data as is, a mismatching algorithm being strictly used (and
hence failing), and --verify-decoded= checking the decompressed rather
than the downloaded data, also in combination with systemd-pull's
--verify=. A failed digest check must not leave an image in place. The
tar code paths are covered too.
2026-10-19 21:39:53 +02:00
Nick Rosbrook 15fa3f1eda mkosi: explicitly add mount package to initrd image for Ubuntu
This was missing during Ubuntu autopkgtest in the development series,
causing all tests to fail. Add it explicitly.
2026-10-19 13:54:39 -05:00
Lennart Poettering 01d871821a mkosi: build minimal images without validatefs xattrs
The split out root partitions of the minimal images are used by the
test suite as bare file system images with external Verity data (via
RootImage=, portablectl, systemd-nspawn --image=, …). The validatefs
GPT constraints systemd-repart adds by default can never be fulfilled
for such bare file system images, hence turn them off.

Override mkosi's repart definitions for Format=portable with a
copy that sets AddValidateFS=no (which mkosi supports since the last
update).
2026-10-17 17:44:29 +02:00
Lennart Poettering 54eb59e7db mkosi: update mkosi ref to 131adaca5eb5f1551bc564ae4497ff940890a374
* ed3eed38f2 Fix key-file path for extension/portable
 \
  * 43e8b2d35a Handle repart definitions for extension/portable
* 04816c3b82 Add oci-archive output format
* 7a9c94b63a Install ruff on recent Debian
* 4a7b08985e Change contextlb.contextmanager typing to Generator
 \
  * 5ca453ab6b Make OUTPUT variable available in postoutput scripts
* 90463ff04d Add tests for BuildStream support
 \
  * d36b138612 Add BuildStream support
* 2ca0d9c8ce ci: Sync claude-review workflow with systemd
* 1d1763f25a codespell: add "prFiles" to ignore-words-list
* 54b2897425 Revert "Symlink man pages on the website"
 \
  * 0c087181ed tests: fix pytest deprecation warning
* c9bbec224c docs: bump year in footer
* ae665678e2 Symlink man pages on the website
 \
  * 5895cd7596 Revert "Symlink man pages on the website"
* a09d5348ed docs: symlink man pages and assign them to the documentation heading
 \
  * 0bd378b7cb man: use YAML front matter
* 922e4a7f43 build(deps): bump aws-actions/configure-aws-credentials
* 05dfd295d3 initrd: add uas to the default list
* 2d52cc80db Pass through TERMINFO and TERMINFO_DIRS to tput (#4455)
* caa3c3235d Revert "dnf: Only read repositories and variables from the sandbox tree"
* 29b5f4d0d1 Add --umask to sandbox and UMask= setting
* d2e27ab62b Renaming remaining postmarketOS to Nura
2026-10-17 17:44:22 +02:00
Martin Pitt 4eda0eb363 vmspawn: support firmware with a host-side UEFI variable store
On aarch64 there is no SMM to protect Secure Boot variables from the
guest, so Fedora ships aarch64 Secure Boot capable firmware only with
the `host-uefi-vars` feature: it keeps its variables in QEMU's uefi-vars
device instead of pflash. vmspawn previously skipped these firmware
descriptors, so `--secure-boot=yes` failed on aarch64:

> Skipping /usr/share/qemu/firmware/91-edk2-aarch64-qemuvars-sb.json,
> firmware does not have an NVRAM template.
> Failed to find OVMF config: No such file or directory

Select such firmware if its descriptor declares a variable store
template, and give it the `uefi-vars` device. This is backed by a JSON
state file with the same semantics as the pflash NVRAM state. Its
`--efi-nvram-state=auto` path gets a different suffix, so that switching
between the two firmware types never feeds a state file to the wrong
one.

Descriptors are still picked in sort order, so when pflash firmware
satisfies the requested features and is sorted first (as with Fedora's
x86 descriptors), it does not change behaviour.

Signed-off-by: Martin Pitt <martin@amutable.com>
2026-10-15 06:41:05 +02:00
Luca Boccassi 5a42e16a1d boot: case fold Type #2 entry IDs with boot counter or profile ID (#44092)
Entry IDs are matched case insensitively by folding the patterns and
relying on the IDs being lower case already (see 23742af522).

Since 4301ad00ef the ID of a`Type #2` entry is rebuilt from the file
name without the boot counter, but it is only
folded when there is no counter, and since 941b91600c the profile ID
appended for secondary UKI profiles is not folded either.

So `EFI/Linux/Foo+3.efi` or a profile with `ID=Profile1` is never
matched by `default`, `preferred`, `@saved`, `bootctl set-default` or
`systemctl reboot --boot-loader-entry=`, while `bootctl list` (which
folds) shows it as the default. Type #1 entries are fine, they fold
after parsing the counter.

This PR folds the ID unconditionally like Type #1 does, and the same for
the profile suffix as well. The second commit extends the existing tests
to cover the capitalized case as well.

Follow-up for 4301ad00ef and
941b91600c.
2026-10-12 09:48:27 +02:00
Lennart Poettering 8c64c6ad90 test: cover logind metrics 2026-10-10 10:40:03 +02:00
Lennart Poettering 202a1ea32d test: cover journald message counter metrics 2026-10-10 10:40:03 +02:00
Florian Franzen 3937823293 test: cover case folding of Type #2 entry IDs in TEST-86
Rename the UKI to a mixed case file name with a boot counter before
selecting the first profile, and give the second profile a mixed case
ID, so that both are only reachable if systemd-boot folds the entry IDs
of Type #2 entries with boot counter and of secondary profiles.

The entry IDs passed to bootctl set-default are spelled lower case and
without the counter, like loader.conf(5) documents and bootctl list
shows them.
2026-10-08 19:54:35 +02:00
Yu Watanabe 6645aa57a2 mkosi: update nura commit reference to 7a6b81a4f1a7a510d088a5874bebcf2b200b69b3
* 7a6b81a4f1 Revert "systemd/systemd: build with SELinux support"
* 1e70e1b89a systemd/systemd: add patch to fix nsresourced failure

Alpine updated linux-pam 1.7.1-r3 to 1.7.1-r4, which disables SELinux
support again [1]. Hence, systemd also needs to be built without
SELinux support [2]. Otherwise, all operations that require PAM fail.

[1] https://gitlab.alpinelinux.org/alpine/aports/-/commit/f3734bec196117b7972c32545594f3ab3a53a111
[2] https://gitlab.postmarketos.org/postmarketOS/pmaports/-/commit/7a6b81a4f1a7a510d088a5874bebcf2b200b69b3
2026-10-08 07:25:37 +09:00
Daan De Meyer 87856fdc97 mkosi: keep our systemd-update-helper in openSUSE images
The openSUSE spec installs its own systemd-update-helper shell script over
the systemd-update-helper that meson builds. The integration tests on
openSUSE therefore run the shell script instead of the C implementation.
The introspect-cli subtest of TEST-74-AUX-UTILS fails there, because the
shell script treats --help as an unknown verb:

    TEST-74-AUX-UTILS.sh[2883]: ++ systemd-update-helper --help
    TEST-74-AUX-UTILS.sh[2883]: Unknown verb '--help'

Remove the install line from the spec, as the build script already does
for other parts of the spec that conflict with the source tree.
2026-10-07 09:25:34 +02:00
Daan De Meyer b6a28a2604 test: Beef up TEST-88-UPGRADE a little
- Only download distro systemd packages in mkosi.prepare, set up the
devel sytemd packages in mkosi.postinst so that they're always up to
date.
- Use systemd-analyze for version comparisons
- Add test to make sure units are stopped on downgrade
- Add test to make sure removing a package with a frozen user session
doesn't blow up
2026-10-05 19:36:16 +02:00
Paul Meyer ac52e61158 test: verify snp attestation report (#43940) 2026-10-05 17:32:03 +02:00
Paul Meyer 36a0a64017 test: verify snp attestation report
Sign a system report through the io.systemd.Report pipeline in the
SNP guest and export the resulting signed report to the host. The host
takes the role of a remote verifier: the tsm signature record must carry
the digest of the signed report bytes, that digest must be embedded in
the REPORT_DATA field of the enclosed SNP attestation report, and the
attestation report must verify against the AMD certificate chain with
snpguest, which is added to the Fedora test image. Certificates must be
pre-provisioned on the host in a sirectory named 'snp-certs' and bound
into the test container via $TEST_BIND_DIRS.

Signed-off-by: Paul Meyer <katexochen0@gmail.com>
2026-10-05 13:14:36 +02:00
LevitatingBusinessMan (Rein Fernhout)andYu Watanabe e9090fe180 mkosi,test: rename postmarketos to nura
Recently, postmarketOS is renamed to Nura:
See https://postmarketos.org/blog/2026/09/27/nura-rename/

mkosi already renamed postmarketOS to Nura:
https://github.com/systemd/mkosi/commit/580c4d94d75ef18f2a0983626cfd80bea9c44ece

Co-authored-by: Yu Watanabe <watanabe.yu+github@gmail.com>
2026-10-02 21:16:22 +09:00
LevitatingBusinessMan (Rein Fernhout) b2b8be184e mkosi: update mkosi ref to 71d7b67e01dc47ab5c51f24866c3e2195b9701d2
* 117d382486 nura: use modern url for Alpine binary repos
* 7872fd58f7 nura: drop x86
* 3533864541 gitignore: add mkosi.pkgcache
* 580c4d94d7 Rename postmarketOS --> Nura
* ba96aba91e Bump version to 28~devel
2026-10-02 21:02:53 +09:00
Yu Watanabe 280dd84243 mkosi: update mkosi ref to ecf7f5702bb2052b7a69cab3fe7d37bc3b9ad77b
* ecf7f5702b Release 27.1
* ca08e2ccef docs: add notes on nsresourced in execution flow
* 146b5dd4de docs: add a few notes on package manager specific behaviour
* 344e42ee20 Update NEWS
* dde1bf020f debian: fix debian-security/debug url when using a mirror
* 699aa3b565 mkosi: upgrade debug message about fallback path to info
* cb6da3f3ce mkosi: move fallback environment variable check to bypass nsresourced fully
* 88c716a6b9 config: add delegate_ranges
* f4de9a102a mkosi: use the foreign UID range only when requested when running as root
* d091fed134 mkosi: only delegate UID ranges if we're not already root
* 165bc99675 sandbox: rename delegate to delegate_ranges
* bba53c50d0 sandbox: use equality check instead of boolean not for delegate
* a033d03f59 summary: add foreign uid range
* f13e96eb95 user: drop unused variable SUBRANGE
* 847d113863 mkosi-obs: Only configure MakeScriptsExecutable in the main image
* 568b1bce56 dnf: Only read repositories and variables from the sandbox tree
* 938d6a1c21 obs: use policy signing data when available
* 19d045e5e9 Rename sysupdate configuration files to .transfer
* 9539f1771a action: bump fallback apk version to 3.0.8
* 8de4d25596 sandbox: add force_fallback to acquire_privileges and wire it up via env
* af97d6ffef opensuse: tolerate missing RPM keyring
* 0f2b7e0656 initrd: don't fail when encountering directories among ucode files
* 5240191893 Allow using SignInitrdPCRs with SplitArtifacts=pcrs
* ce90009686 Bump ukify required version from 261.999 to 262~ for SignInitrdPCRs
* 58bbd63aca news: fix v27 `DiskType=` setting typo
* 1da3299aec tests: skip test_fork_and_wait if on rc 1
* 5658e7abc9 Bump version to 28~devel
* 4736cd8361 Release 27
* 97f305bf0a action: make shell style consistent
* dd7140cbae action: only use apk version from API if non-empty
* 2cfe0cefb8 news: update NEWS
* 7bca598fa4 action: support container-based self-hosted runners
* 08c86a25e1 action: bump fallback APK version
* cc0fcef38f action: reduce timeouts and number of API calls
* 211993d5d2 action: download latest version of apk
| * f33cc45db3 Add ToolsTreeSnapshot= for pinning the default tools tree
| * ddfc5a2cb5 tests: join options and their values with f-strings
| * a497ff0251 doc: add missing matchers
* | 589226cfd4 apk: disable grub's update-grub trigger during package installation
 /
| * 595451bb4b debian: add new split-out systemd packages
| * 7ce1851901 Revert "mkosi-tools: Install systemd-tpm on Debian"
| * 50a1137be5 ci: pin resolved release for integration tests
| * e30b0a0ba4 tests: drop obsolete @ prefix
| * e7f4d57fac news: update NEWS
|/
* bf2addb2ec build(deps): bump aws-actions/configure-aws-credentials
* a58ded6a2a build(deps): bump actions/checkout from 6.0.2 to 7.0.1
* 9b7d87a170 add support for prebuilt UKIs
* 75fdb9be15 mkosi-tools: Install systemd-tpm on Debian
* d5ff0d0d98 Fall back to unprivileged user namespace on polkit denial
* 0e4d5546ac Bump 261~devel version checks to 261
* 180d4a5329 Use systemd nightly OBS version in signing PCR policies auto detection
* f7401bdc8d Add support for signing PCR policies for the initrd
* 33d17b2b92 sandbox: Don't create shared propagation peer group
* a078088f8e sandbox: Declare MS_PRIVATE as well
* e1e9eafc87 kmod: eliminate duplication in calls to modinfo
* df68b27e8e tools: add mount to Debian tools tree
* 205dcedd45 util: don't drop single-character variable names in read_env_file
* 35a9d38ea0 distribution: report the actual architecture in unsupported-arch errors
* d4f44d212c sandbox: handle case where dev node for tty doesn't exist better
* acf08c5eca build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1
* b3ec53743a tests: Pass --output-directory to vm() and boot()
* 9bc430a7fa config: Isolate build history per output directory
* fd3d9bfe57 tests: Add regression test for build history lookup via configured output dir
| * 55ab00bb13 Fix tar exclude patterns for apivfs paths
|/
* 699da862f8 sandbox: Split a chroot() context manager out of chase()
* 70ce10d132 sandbox: Default FSOperation.execute oldroot/newroot to /
* 610b38538f Forbid AI attribution in commit messages
* b7425bbe42 ci: Sync claude-review workflow with systemd
* b9d4c06239 action: Make apk installation configurable and reliable again
2026-10-02 21:01:12 +09:00
Yu Watanabe decaca4020 mkosi: update postmarketos commit reference to f908244ec2a0f85a84f44927183711160a798705
* f908244ec2 systemd: move tmpfiles.d/systemd-network.conf to networkd subpackage

Fixes the following warning on mkosi build:
```
‣ [default-initrd]  Copying in extra file trees…
‣ [default-initrd]  Generating system users
‣ [default-initrd]  Generating volatile files
/buildroot/usr/lib/tmpfiles.d/systemd-network.conf:13: Failed to resolve user 'systemd-network': Unknown user
‣ [default-initrd]  Applying presets…
```
2026-09-26 19:50:21 +02:00
Yu Watanabe bc5de99fd0 mkosi/postmarketos: drop unnecessary musl-utils
It was installed for ldconfig.service, but it is disabled now:
https://gitlab.postmarketos.org/postmarketOS/pmaports/-/commit/131f1be52ebec9cc6697b42c226581e1322558f7
2026-09-24 09:07:38 +02:00
Yu Watanabe 35034dbdcd mkosi: update postmarketos commit reference to 07ea0bed8fbbafe06b2bf68b6bfabcf86c2e4449
* 07ea0bed8f systemd: drop unnecessary dependencies
* 45eb7f88dc systemd/systemd: upgrade to 262
* cb9121da2c systemd/systemd: upgrade to 262_rc3
* 6c223d3566 systemd: drop pre-install script, re-exec on upgrade
* 10591797ee systemd: upgrade to 262-rc2
* 7d5b4e3816 systemd/systemd: build with SELinux support
* bb647faf54 systemd: upgrade to 262-rc1
* 369c5ac3b6 extra-repos/systemd: backport timesyncd DNSSEC NTP fix
* 2bf2f3329e treewide: remove pmb:strict from options
* 9c68abf912 systemd/systemd: upgrade to 261.2
* 3004382975 systemd: remove eudev provide
* 131f1be52e systemd/systemd: disable ldconfig
* 6e90d14c4d systemd/systemd-stage0: disable unnecessary options
* a372a2f2c5 systemd/systemd: backport patch adding inhibit support to pam_systemd
* 994ed89373 systemd/systemd: add Ollie as co-maintainer
* 14897810c9 systemd: disable compat-sysv-interfaces
* 5e5a451de1 systemd: remove unnecessary provider_priority's
* 61ee5c6fe8 treewide: remove contributor comments
* f36462e85b systemd/systemd: upgrade to 261.1
* 5ff3f5ed44 systemd/systemd: adds libbz2 dependency
2026-09-24 09:07:38 +02:00
Yu Watanabe fd1f164b1b mkosi: drop unnecessary packages
This partially reverts 77b3ddf2aa.

Testing with musl is now done by postmarketOS. Hence, these packages
are not necessary anymore.
2026-09-23 16:47:25 +02:00
Christian Hesse 327061908a mkosi: update arch commit reference to 4749b653ee7b9210bcd46fe43065508aa58b779a 2026-09-23 14:52:39 +02:00
Luca Boccassi a7ee2a5ea4 mkosi: update opensuse commit reference to 60fbc2d95581a933f9dcdfdb8d7e27d2a7d13e35
* 60fbc2d955 Update systemd to version 261.2 / rev 473 via SR 1368021
* c32d9727e6 Update systemd to version 261.1 / rev 472 via SR 1365923
* 74fd672013 Update systemd to version 260.3 / rev 471 via SR 1362701
* 769e1c4254 Update systemd to version 260.2 / rev 470 via SR 1361320
2026-09-03 05:48:24 +09:00
Luca Boccassi 25c0b10671 mkosi: update debian commit reference to 70dd6c36578ecaa214992f54701eeedaa3b57aed
* 70dd6c3657 Update changelog for 262~rc1-2 release
* 84ccf4ddbf Install 60-tpm2-id.rules on all architectures
* 20cd9d23cf Update changelog for 262~rc1-1 release
* e479c1d28e Update d/copyright
* fac1cd6d40 Update Lintian overrides for new units
* 448fa0e577 Update symbols file for upstream release
* dd467c4e44 Install new files for upstream build
* cbcc96360e d/systemd.links: stop creating cryptdisks{,-early}.service masks (LP: #2153836)
2026-09-02 12:13:42 +09:00
Chris Down df3c9c9ef0 test: Add a test for Type=dbus services surviving a broker restart 2026-09-01 03:03:46 +09:00
Zbigniew Jędrzejewski-Szmek 3d0ef4aefe various: mark files with the usual license tags
For .clang-format and pytest.ini, MIT-0 is used because people might want
to copy those.
2026-08-28 06:26:09 +09:00
Luca Boccassi 11a9b02493 mkosi: hack SUSE spec to remove bin/sd-sysupdate 2026-08-26 19:51:31 +01:00
Luca Boccassi bc4d0fde7c mkosi: update debian commit reference to b12500baf3363288c692d47814c53b55f13e424e
* b12500baf3 Drop sd-sysupdate for upstream builds, experimental again
* 674dd1e684 d/t/localed-locale: skip in Debian, not supported
* 9bd985d014 d/t/localed-locale: clean up on any error with a trap
* 56153a917f d/t/control: add dependencies missing for incus image
2026-08-26 19:51:31 +01:00
Yu Watanabe 18b4c1525c mkosi: update debian commit reference to 9badaae1c4c08db447b4e409784688f32d3f04f3
* 9badaae1c4 Drop deprecated meson option
* 8700e5c4e5 Install new files for upstream build
* 7aaf05335d Update d/copyright
* 68b634db29 Update changelog for 261.2-1 release
* 07591e4f9a Open changelog for 261.2-1 release
* 2bd7f0db1f d/libnss-systemd.nss: install after files and compat in nsswitch.conf
* c2e3b3135c Drop OBS workarounds and use pkg.systemd.obs build profile
* aff99fcc49 d/control: clarify systemd-imds Description
* b5006dc64a d/systemd.links: drop procps.service alias (LP: #2153900)
* b630d1569f Make systemd-networkd example consistent with systemd.network(5)
2026-08-18 02:10:53 +09:00
Christian Brauner 7849500cd9 mkosi: install bpftool in Debian/Ubuntu test images
The centos-fedora, opensuse and postmarketos image configurations all
install bpftool but the Debian/Ubuntu ones never did. Only their build
image gets it via the packaging's Build-Depends. So the
TEST-90-RESTRICT-FSACCESS guard and overlay subtests, both gated on
'command -v bpftool', just silently skip there.

Mirror what the build image does. Plain bpftool everywhere except Ubuntu
jammy and noble which still bundle it in linux-tools-generic.

Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
2026-08-10 16:09:06 +02:00
Luca Boccassi f029c336e9 mkosi: stage volatile deb packages for upgrade test
Prepare scripts run before volatile packages are installed, so parse
the list from the config to ensure they are all included to avoid
failures due to some packages missing from the list.

Follow-up for 28e1f84d6a
2026-07-30 09:13:35 +01:00
Luca Boccassi bbc5511d6a test: add deb coverage and a few more sanity checks to TEST-88-UPGRADE (#43162) 2026-07-26 17:41:16 +01:00
Luca Boccassi 28e1f84d6a test: add deb coverage to TEST-88-UPGRADE 2026-07-26 13:45:28 +01:00
Yu Watanabe 1acd30aa1f mkosi/sanitizers: also wrap mkfs.erofs
Fixes the following failure on Fedora 44:
```
TEST-58-REPART.sh[932]: Executing mkfs command: /usr/bin/mkfs.erofs -U 45745a56-aa2f-4619-8ca7-9cb63667c2ae -zlz4hc,level=3 /dev/loop0 /var/tmp/.#reparteb739e8b8cae7b70
TEST-58-REPART.sh[932]: Successfully forked off '(mkfs)' as PID 933.
TEST-58-REPART.sh[933]: ==933==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD.
TEST-58-REPART.sh[932]: '(mkfs)' failed with exit status 1.
```
2026-07-26 20:46:12 +09:00
Yu Watanabe facb0c20af mkosi: drop references to EOL fedora releases 2026-07-26 20:45:43 +09:00