Commit Graph

83892 Commits

Author SHA1 Message Date
Lennart Poettering
0fb453ebd0 hostname: explain a bit why hostnames should be single DNS labels, not fqdns
(cherry picked from commit 4362d942c4)
2025-12-10 15:40:24 +00:00
Ricardo Salveti
803ef2a579 boot: handle empty initrd files (#40040)
Commit f8fa4222c9 added extra logic to
account for the size of the initrds before allocating the required memory pages,
but missed checking if the initrds were empty before allocating memory.

Extend the initrd options only when the initrd is valid, and add extra
check for validating that there is at least one valid initrd file before
allocating memory, fixing the following crash when booting with empty
initrd files:

src/boot/log.c:30@efi_assert: systemd-boot: Assertion
 'BS->AllocatePages(type, memory_type, n_pages, &addr) == EFI_SUCCESS'
failed at /usr/src/debug/systemd-boot/257.8/src/boot/util.h:95@xmalloc_pages, halting.

Fixes: f8fa4222c9
("boot: Make initrd_prepare() semantically equivalent to combine_initrds()")

(cherry picked from commit a40f4ba1a8)
2025-12-10 15:40:24 +00:00
Pasquale van Heumen
60b7afbcfa resolve: always read /etc/resolv.conf on reload systemd-resolved
When systemd-resolved is used in resolv.conf foreign mode, reloading the
systemd-resolved daemon does not read resolv.conf when not touched since
the last time resolved read the file. Since the DNS servers list is
flushed during a reload, resolved forgets about the servers
in /etc/resolv.conf

When reloading the daemon it is expected that all configuration is
reloaded regardless of the disk timestamps.

(cherry picked from commit ca1d2ae5d6)
2025-12-10 15:40:24 +00:00
Antonio Álvarez Feijoo
f197239ae2 kernel-install: exit with option --json=help (#39974)
In that case, `parse_json_argument()` returns 0.

Follow-up for bdd36c003d (v255).

(cherry picked from commit 4ae16cf9b7)
2025-12-10 15:40:24 +00:00
Frantisek Sumsal
4c98cb8739 sd-journal: fix a copy-paste error
Dereference the Directory pointer in the debug message instead of the
(probably already freed) JournalFile one.

(cherry picked from commit ade882f16f)
2025-12-10 15:40:24 +00:00
Antonio Alvarez Feijoo
0f506a9093 run: fix two minor memory leaks
```
==19541== 8 bytes in 1 blocks are still reachable in loss record 1 of 3
==19541==    at 0x4841744: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==19541==    by 0x50125C9: strdup (strdup.c:42)
==19541==    by 0x4C55925: getusername_malloc (user-util.c:154)
==19541==    by 0x1121D6: parse_argv_sudo_mode (run.c:1098)
==19541==    by 0x123B13: run (run.c:3032)
==19541==    by 0x124198: main (run.c:3100)
==19541==
==19541== 11 bytes in 1 blocks are still reachable in loss record 2 of 3
==19541==    at 0x4841744: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==19541==    by 0x50125C9: strdup (strdup.c:42)
==19541==    by 0x112A9C: parse_argv_sudo_mode (run.c:1182)
==19541==    by 0x123B13: run (run.c:3032)
==19541==    by 0x124198: main (run.c:3100)
```

(cherry picked from commit 7599d26436)
2025-12-10 15:40:24 +00:00
Lennart Poettering
c0e4ce2ddf tree-wide: fix lseek() parameter order
The offset must be specified first, 'whence' second. Fix that.

Except for one case this fix doesn't actually fix any real bug, since
SEEK_SET is defined as 0 anyway, hence the swapped arguments have no
effect.

The one exception is the MTD smartmedia code, which I guess indicates
that noone has been using that hw anymore in a long time?

(cherry picked from commit f5452477d4)
2025-12-10 15:40:24 +00:00
Lennart Poettering
5c1ef95aeb efivars: seek back to beginning in each efi_get_variable() loop
We try to read again from the beginning, hence let's seek back.
Apparently efivarfs doesn't strictly require this, but it's really weird
that it doesn't.

(cherry picked from commit dbc25d84ae)
2025-12-10 15:40:24 +00:00
Lennart Poettering
a1e0eb4633 efivars: validate we are actually talking about a regular file
We already have the stat data, let's actually check if things are
alright before relying on .st_size

(cherry picked from commit 40cb2aa4f8)
2025-12-10 15:40:24 +00:00
Lennart Poettering
e83c56bfc5 efivars: fix size checks in efi_get_variable()
writev() returns the full size, not just the payload size, hence always
add sizeof(attr) where necessary.

Let's also change a couple of "4" into sizeof(attr) all over the place,
to make clear what they are about.

Fixes: #39695
Follow-up for: 9db9d6806e

(cherry picked from commit ab69a04600)
2025-12-10 15:40:24 +00:00
Lennart Poettering
e1ddaced16 efivars: don't bother with realloc() if we have no interest in the old data
We shouldn't ask glibc to keep the old data around (which realloc() is
about), given we overwrite it entirely anyway. Let's hence speed things
up here, and allow glibc to just allocate a new block for us (and
shorten the code a bit)

(cherry picked from commit 88e26303ce)
2025-12-10 15:40:24 +00:00
gvenugo3
b3c462cb81 systemctl: support --global and --root in edit and cat
Make bus acquisition conditional in verb_edit() and verb_cat(), following
the same pattern used in verb_enable(). When install_client_side() returns
non-zero (indicating --global, --root, offline, or similar scenarios), skip
acquiring a D-Bus connection and perform all operations client-side.

Changes:
- Only acquire bus when install_client_side() returns NO
- Use mangle_names() instead of expand_unit_names() in client-side mode
- Pass force_client_side flag based on bus availability
- Skip bus-dependent operations (need_daemon_reload, etc.) when bus is NULL

This allows 'systemctl edit --global' and 'systemctl cat --global' to work
correctly, fixing the regression introduced by commit d77d42ed3a.

Test cases added to verify:
- Creating and editing global user units with --runtime
- Reading global units with cat --global
- Proper detection and rejection of masked units in client-side mode
- Tests use /run/ instead of /etc/ for safer temporary testing

Fixes https://github.com/systemd/systemd/issues/31272

(cherry picked from commit ebd222b1c8)
2025-12-10 15:40:24 +00:00
gvenugo3
8e582951fb systemctl: check if unit is masked in unit_find_paths()
When operating in client-side mode (force_client_side=true), unit_find_paths()
now checks if the unit file is masked (symlinked to /dev/null or empty) and
returns -ERFKILL, matching the behavior of the server-side path.

This centralizes masked unit detection in one place, making it consistent
across both client-side and server-side operations.

(cherry picked from commit 423a8ffccc)
2025-12-10 15:40:24 +00:00
gvenugo3
573a5991ca systemctl: drop unnecessary unit_is_masked() check in edit
The unit_is_masked() check will be performed later by unit_find_paths(),
making this early check redundant.

(cherry picked from commit cedc98c581)
2025-12-10 15:40:24 +00:00
Zbigniew Jędrzejewski-Szmek
e99c69ab7a ssh-generator: filter out bogus vsock addresses
When VirtIO VSOCK device is not present, IOCTL_VM_SOCKETS_GET_LOCAL_CID
returns VMADDR_CID_LOCAL/1, and we issue a hint to connect to vsock%1.
This does not work. Filter out VMADDR_CID_LOCAL and VMADDR_CID_HOST,
those are not real addresses that can be used from the outside.

(cherry picked from commit 492ae9ec4e)
2025-12-10 15:40:24 +00:00
Zbigniew Jędrzejewski-Szmek
e1789bfa5f basic/vsock: report result of IOCTL_VM_SOCKETS_GET_LOCAL_CID
(cherry picked from commit 3bfdc950f7)
2025-12-10 15:40:24 +00:00
Jeremy Kerr
8612c4c5e5 udev-builtin-net_id: fix construction of USB specifier-based names
Commit 0bac1ed242 ("tree-wide: Fix constness issues with newer glibc")
split a temporary var in get_usb_specifier to const and non-const
versions, but missed converting a couple of uses. This means we get
names of with components of:

 port: uN
 config: cC.I
 interface: iC.I

instead of:

 port: uN
 config: cC
 interface: iI

This results in net names like enu1c1.0i1.0, as we also no longer hit
the config==1 and interf==0 elision cases.

Change the config portion handling to start from the correct position,
and the earlier check for NULL.

(cherry picked from commit b10b4303c6)
2025-12-10 15:40:24 +00:00
Luca Boccassi
b5c189f699 test: use -force with unsquashfs for test reruns
In case a test is reran or a directory reused, overwrite it
instead of failing

(cherry picked from commit af80c9c224)
2025-12-10 15:40:24 +00:00
Luca Boccassi
0359c8f456 shell-completion: fix portablectl path completion with preceding params
The completion fails to complete to paths for verbs that need them when
a --param is the previous word, e.g.:

portablectl attach --runtime <tab>

fails to complete to paths

(cherry picked from commit 2abb433ca1)
2025-12-10 15:40:24 +00:00
Lukáš Zaoral
a3e959e137 ukify: prefer compression.zstd when available
Python 3.14 introduced support for zstd in the standard library [1].  Therefore,
let's prefer it when available to decrease the number of necessary  external
dependencies.

[1] https://docs.python.org/3/whatsnew/3.14.html#whatsnew314-zstandard

(cherry picked from commit 1e5498e237)
2025-12-10 15:40:24 +00:00
David Tardon
9d02b314d2 find-esp: consistently quote paths in log messages
(cherry picked from commit 7cfd4f3f51)
2025-12-10 15:40:24 +00:00
David Tardon
5b7d0d63ea find-esp: replace assert by a runtime check
The path--as a whole--is no longer being opened with O_DIRECTORY, hence
the assertion is not valid.

Reproducer:
 # SYSTEMD_RELAX_ESP_CHECKS=1 bootctl list --esp-path=`pwd`/README
 Assertion 'S_ISDIR(sxa.stx_mode)' failed at src/shared/find-esp.c:295, function verify_fsroot_dir(). Aborting.

Follow-up-for: 63105f33ed

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2417917
(cherry picked from commit 50482aced5)
2025-12-10 15:40:24 +00:00
Luca Boccassi
ed7bda70c6 portabled: list new methods in D-Bus policy
Access to these methods is also managed via polkit,
but they were never added to the access list in the
D-Bus policy.

Follow-up for 907952bbc9

(cherry picked from commit 28c68dbea0)
2025-12-10 15:40:24 +00:00
q66
4ded158f6a vcs-tag.sh: use portable sed argument order
(cherry picked from commit 3d64cb9a54)
2025-12-10 15:40:24 +00:00
q66
2b1d472372 meson: try BSD-style stat(1) syntax when failing mtime check
The system may be using a stat(1) implementation that follows
BSD-style syntax. Try that as a fallback, but do fail for real
if that also fails.

(cherry picked from commit 57f911973a)
2025-12-10 15:40:24 +00:00
q66
e4e97e5c8f meson: drop ln --relative check
The coreutils release that included this was in 2012. Since then,
systemd requires a newer meson, mostly uses install_symlink, and
so on. Additionally, where it does use this feature, it uses the
'-r' short flag. There are implementations of 'ln' that do have
support for '-r' but no longopts. Things will still work on those
but this check will fail.

(cherry picked from commit f40bd7af20)
2025-12-10 15:40:24 +00:00
Luca Boccassi
34077d029d test-network: drop unused variable
Follow-up for e2fbcee030

(cherry picked from commit afcc0ca509)
2025-12-10 15:40:24 +00:00
Luca Boccassi
d9c48e8124 tests: log when qemu crashed and the test is re-ran
Follow-up for 0d7f5a9ae6

(cherry picked from commit e66f6d3b23)
2025-12-10 15:40:24 +00:00
Yu Watanabe
f81e1f1caa mkosi: RuntimeScratch=/--runtime-scratch= are deprecated
See 054d0690b0

(cherry picked from commit f0feff731c)
2025-12-10 15:40:24 +00:00
Yu Watanabe
251efd8593 mkosi: update mkosi commit reference to 5a476a92deca8ad54869e5d416217aa1bb137b25
* 5a476a92de Use Path.relative_to instead of Path.parts
* 03f41faf9f Update doc for mkosi ssh to mention sd v256 sshd-vsock
* e054976d18 Rewrite note on fw deps of kernel modules in manpage
* a046243a50 Add python3-pefile to fedora tools conf
* 0bab54087e Fix truthy condition
* 01c38544b2 code review
* 563dca41da code review
* 6074d14c0e code review
* 7e842db3b1 Don't discard ordering of include/exclude entries in KernelModules=
* 0047b64785 build(deps): bump github/codeql-action from 4.31.2 to 4.31.6
* f13325bc4b build(deps): bump actions/checkout from 5.0.0 to 6.0.0
* 9ac31d1795 Add zram and nfnetlink to default initrd
* 4bdb47b6da verity: copy signing certificate to /usr/lib/verity.d/
* 8865afde9e Improve manpage output using pandoc lua filter (#4005)
* a425313c58 Pass environment to systemd-sysusers invocation
* 23f09d5de7 Make Ruff check for dangling whitespace
* abeed73d13 qemu: Add missing sandbox
* a05872e523 Ssh=yes maps to Ssh=always, update the manpage
* 79489534ca Warn of mkosi's sshd lacking support in distros' SElinux policy
* 696f99da43 Manpage: Update supported output formats
* 21675c4822 Silence swtpm SHA1 signature deprecation warning
* df53510982 DOC: update Ssh= to note sd-v256+ already generates sshd-vsock
* 50ccef7926 Configure default tools tree with ToolsTree=yes
* 0b701c690d opensuse: do not install openSUSE-release for Leap >= 16.0
* 4bababf421 opensuse: fix mirror URL for Leap >= 16.0
* c43123398c config.py: add config_default_proxy_exclude()
* 07a0a2be67 installer: Only mount configured state subdirs into sandbox
* d5efbf6f8c build(deps): bump github/codeql-action from 3.30.5 to 4.31.2
* 2912ed20d5 PTY forward fixes
* 66dab75259 sandbox: Drop all capabilities that don't make sense in userns
* 8fe5df4400 Respect SYSTEMD_TINT_BACKGROUND and SYSTEMD_ADJUST_TERMINAL_TITLE
* b9d208789d log: Drop konsole hack
* 7fa6eac65c Clarify that mkosi.images is not picked up in mkosi.conf.d
* 08a0f768dd vmspawn: Support BindUser=
* c7c3eaee4e mkosi-vm: Enable universe repository for ubuntu in mkosi-vm
* 688e77f1a8 vmspawn: Use --grow-image
* c47b7fe57b arch: Switch to the newly established fastly mirror
* 7db8f2cda3 Match compressed pacman packages too
* e3b3b93c50 Prevent using Overlay=yes with Format=portable
* 83a25324b3 Make sure apt sources are installed when BaseTrees= is in the mix
* f6fa2fd6a0 test: add unit tests for parents_below() utility function
* 1eafbd8d03 Don't print newlines in stash_terminal_title()
* bbaf92b50e Don't print newline after ansi sequences
* d1b84f5fb3 Look for .sdmagic before we consider a PE binary a UKI/addon
* b4efdbf14e Treat /opt the same as /usr for the sandbox
* 71ffced0f1 Rework PACKAGE_GLOBS to be a PackageManager classmethod
* 29605c2757 Various SPDX and whitespace fixes

(cherry picked from commit feb9e19ae4)
2025-12-10 15:40:24 +00:00
Luca Boccassi
58973738cd test-network: fix invalid captive portal URL with dnsmasq 2.92 (#40011)
dnsmasq 2.92 started converting binary content to ascii so the previous
invalid URL is no longer invalid as it's escaped.

So the test started failing: https://bugs.debian.org/1122015

Use a '|' character instead, which is not a valid URL character but it's
also not escaped by dnsmasq.

Follow-up for 1219391c9f

(cherry picked from commit e2fbcee030)
2025-12-10 15:40:24 +00:00
Yu Watanabe
87cb1f9173 test-network: also stop nftables.service
It is a firewall service used in postmarketOS.
When it is active, then e.g. DHCP packets are filtered, and many
tests will be failed.

(cherry picked from commit 193626bd8b)
2025-12-10 15:40:24 +00:00
Yu Watanabe
59b25c5a74 ci: pass --no-stdsplit to meson test
Hopefully, we will get more informative logs on failure.

(cherry picked from commit a5d0e0ebb2)
2025-12-10 15:40:24 +00:00
David Tardon
8998e01bf9 udev-rules: use the right variable
We carefully prepare a copy of a local buffer to save in device cache
and then save the buffer there instead... This leads to abort in free()
on exit (also, copied is leaked).

Reproducer:
 # udevadm test /sys/block/sr0

Follow-up-for: a9559ebcbc

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2406118
(cherry picked from commit d23a7eb4c0)
2025-12-10 15:40:24 +00:00
Colin Walters
ef090eee6f man: Clarify secure-boot-enroll defaults
Clarify in the docs that `if-safe` is the default by noting
that in the text for it, but also moving it to the first mentioned
option.

Make explicit in `man systemd-boot` that the `secure-boot-enroll`
option is specified in the `loader.conf`

Update an outdated comment in boot.c around the same.

Signed-off-by: Colin Walters <walters@verbum.org>
(cherry picked from commit 3c85d99c79)
2025-12-10 15:40:24 +00:00
Luca Boccassi
676d5ba894 sysupdate: also mention patterns to match in error log on failure
The gpt uuid is not the only thing that needs to match, the pattern
does as well, so mention it in the error log if present

(cherry picked from commit eb98ddd8b8)
2025-12-10 15:40:24 +00:00
Yu Watanabe
62c6fa9147 include: update kernel headers from v6.18
(cherry picked from commit 26b2085d54)
2025-12-10 15:40:24 +00:00
Alexandru Tocar
8a7c6e30a7 man: drop --import-credential mention from systemd-nspawn(1)
(cherry picked from commit 1d9a8e439c)
2025-12-10 15:40:24 +00:00
Antonio Alvarez Feijoo
5a8357d7b5 man/inhibit: mention handle-reboot-key operation
(cherry picked from commit 6b892f85e2)
2025-12-10 15:40:24 +00:00
dependabot[bot]
91235710d5 build(deps): bump softprops/action-gh-release from 2.4.1 to 2.5.0
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release) from 2.4.1 to 2.5.0.
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](6da8fa9354...a06a81a03e)

---
updated-dependencies:
- dependency-name: softprops/action-gh-release
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 0413c780ae)
2025-12-10 15:40:24 +00:00
dependabot[bot]
24850db59a build(deps): bump super-linter/super-linter from 7.4.0 to 8.3.0
Bumps [super-linter/super-linter](https://github.com/super-linter/super-linter) from 7.4.0 to 8.3.0.
- [Release notes](https://github.com/super-linter/super-linter/releases)
- [Changelog](https://github.com/super-linter/super-linter/blob/main/CHANGELOG.md)
- [Commits](12150456a7...502f4fe48a)

---
updated-dependencies:
- dependency-name: super-linter/super-linter
  dependency-version: 8.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 05cfef4a92)
2025-12-10 15:40:24 +00:00
Mike Gilbert
fd291518bc test-kernel-install: respect TMPDIR in expected output
(cherry picked from commit 1a88817b83)
2025-12-10 15:40:24 +00:00
Zbigniew Jędrzejewski-Szmek
6c3628f1eb sd-notify: print a debug message when sd_notify() succeds
… and also when it fails, in the few cases where this wasn't done already.
When I was debugging https://github.com/systemd/systemd/issues/39048, it
was quite confusing that we print copious information about D-Bus messages
and all other steps we're undertaking, but nothing about the sd-notify
messages which are much more important. Add some debug messages for the
cases where we didn't print anything. (The case where $NOTIFY_SOCKET is
not set in left unchanged. The variable is often left unset and we don't
need to spam logs in that trivial case.)

(cherry picked from commit 21eb636aaa)
2025-12-10 15:40:24 +00:00
Zbigniew Jędrzejewski-Szmek
87011e12b6 systemctl: stop showing last message from previous run
--lines=1 means that we show the last message about the unit, whatever it is:

$ SYSTEMD_LOG_LEVEL=debug systemctl --verbose start demo2
...
Invoking 'journalctl -q --follow --no-pager --lines=1 --synchronize-on-exit=yes --unit=demo2.service' as child.
...
Directory /var/log/journal/7d16833bfa924410851e2a193bcfd4ba added.
Journal effective settings seal=no keyed_hash=yes compress=ZSTD compress_threshold_bytes=8B
...
Reiterating files to get inotify watches established.
Considering root directory '/run/log/journal'.
Considering root directory '/var/log/journal'.
Considering directory '/var/log/journal/7d16833bfa924410851e2a193bcfd4ba'.
Nov 26 17:24:35 rawhide systemd[1]: Finished demo2.service.
...
Executing dbus call org.freedesktop.systemd1.Manager StartUnit(demo2.service, replace)
...
Job for demo2.service finished.
Got result done/Success for job demo2.service.
journal: Sending message: {"method":"io.systemd.Journal.Synchronize","parameters":{"offline":false}}
Nov 27 13:05:30 rawhide systemd[1]: Starting demo2.service...
Nov 27 13:05:30 rawhide systemd[1]: demo2.service: Deactivated successfully.
Nov 27 13:05:30 rawhide systemd[1]: Finished demo2.service.
...

We obviously should only show _new_ messages, hence change to --lines=0.
This works properly after the fix in the previous commit.

Fixes #39048.

(cherry picked from commit f943ab6efb)
2025-12-10 15:40:24 +00:00
Zbigniew Jędrzejewski-Szmek
d3eb065fe0 journal: send READY=1 also when --lines=0 is given
If --lines=0 is given, we'd skip the setup and not invoke sd_notify,
potentially blocking the caller. Change the condition for the callback
to also include that case. Since then the callback would always be
set, the 'if' statement is not necessary anymore.

(cherry picked from commit ef90afd59e)
2025-12-10 15:40:24 +00:00
Daan De Meyer
61a2c4b2b7 fsprg: Drop const from gcry_mpi_t arguments
gcry_mpi_t is defined as "typedef struct gcry_mpi *gcry_mpi_t;".
When const is applied to this type, it resolves to
"struct gcry_mpi *const" instead of what we expect ("const struct gcry_mpi *").

So we end up with a const pointer to a mutable object instead of a mutable
pointer to a const object. Since the pointer passed to the function
is copied regardless, making it const has zero benefit.

You'd think we could instead stop using gcry_mpi_t and replace it with
"const struct gcry_mpi *", except that gcrypt leaked this mess into its
api, so it expects const pointers to mutable objects as well, which means
we can't take pointers to const objects as arguments, as we'd discard the qualifier
when calling a gcrypt function.

To avoid confusion, let's drop the const qualifiers from the gcry_mpi_t arguments.

(cherry picked from commit c421392811)
2025-12-10 15:40:24 +00:00
Daan De Meyer
4e86d48d3c tree-wide: sizeof() fixes
- TIME_T_MAX is always time_t so the check in time-util.c was redundant
- quota-util.c was zero-ing a pointer
- smbios11.c was calling sizeof(pointer)

(cherry picked from commit 33b0642e6a)
2025-12-10 15:40:23 +00:00
Yu Watanabe
26ce84e7c3 docs/MOUNT_REQUIREMENTS: fix typo
Follow-ups for 3e94ae6f1e.

(cherry picked from commit f01daa30f1)
2025-12-10 15:40:23 +00:00
Daan De Meyer
33b7d584e0 mkosi: Add hyperscale profile
In the CentOS Hyperscale SIG, we maintain a backport of systemd with
its own rpm spec forked from rawhide.

Let's make it easy to build upstream rpms using the Hyperscale spec
by adding a mkosi hyperscale profile.

(cherry picked from commit c41c4b2bf3)
2025-12-10 15:40:23 +00:00
Daan De Meyer
37c29d5010 mkosi: Rework how the pkgenv environment variables are set
Instead of including distribution specific files in the subimages,
let's have one common mkosi.pkgenv/ directory that handles all the
matching which is then included in the subimages.

This gives us more control on exactly how we do the matching.

(cherry picked from commit fb514c2f8f)
2025-12-10 15:40:23 +00:00