Compare commits

..

271 Commits

Author SHA1 Message Date
Daan De Meyer 67ec29d9e4 execute: Get rid of custom logging macros
We already have LOG_CONTEXT_PUSH_EXEC() which with two additions
does exactly the same as the custom logging macros, so let's get rid
of the custom logging macros and use LOG_CONTEXT_PUSH_EXEC() instead.
2025-04-18 15:12:48 +02:00
Daan De Meyer 06dd3630c8 timedate: Drop custom logging macros in favor of log context 2025-04-18 15:12:45 +02:00
Daan De Meyer 6bedb63cb2 unit: Make sure individual unit log level always takes priority
Currently LogLevelMax= can only be used to increase the max log level
for a unit but not to decrease it. Let's make sure the latter works as
well, so LogLevelMax=debug can be used to enable debug logging for specific
units without enabling debug logging globally.
2025-04-18 15:09:01 +02:00
Daan De Meyer 1b048d8e9b log: Make sure LOG_CONTEXT_SET_LOG_LEVEL() can be nested 2025-04-18 15:09:01 +02:00
Daan De Meyer b8fd3f77db
Various changes made as part of trying to run include-what-you-use on the systemd repository (#37112)
I have been trying to run
https://github.com/include-what-you-use/include-what-you-use on the
systemd repository to hopefully get a handle on the rampant numbers of
includes we have in every file with no idea if any of the symbols coming
from that file are used or not.

While I haven't got it fully working yet, these changes still make sense
IMO and can be merged already.

Except the last commit, all other changes are about removing circular
dependencies between headers which trips up include-what-you-use.
Regardless of the tool, circular dependencies between headers are a code
smell and I think we should get rid of them regardless of whether we end
up using the tool or not.
2025-04-18 15:07:33 +02:00
Daan De Meyer 44c2c9a036 tree-wide: Mark linux and sys includes as system includes
Even though these are in our tree, we should still treat them as
system includes which helps various tools (clangd, iwyu, ...) understand
that these are system includes and <> should be used instead of "".
2025-04-18 14:19:16 +02:00
Daan De Meyer 9fea5b4250 tree-wide: Remove references to src/shared/linux
This directory doesn't exist anymore.
2025-04-18 14:19:16 +02:00
Daan De Meyer 793e187718 basic: Remove circular dependency between process-util.h and pidref.h 2025-04-18 14:19:16 +02:00
Daan De Meyer 95609f3dff basic: Remove circular dep between alloc-util.h and memory-util.h 2025-04-18 14:19:16 +02:00
Daan De Meyer 5d226b2f9a basic: Move macro.h include in list.h to the top of the file
Now that the circular dependency between log.h, macro.h and list.h
is gone, we can move the include to the top.
2025-04-18 14:19:16 +02:00
Daan De Meyer 93a1f7921a basic: Stop including log.h in macro.h
Now that the necessary functions from log.h have been moved to macro.h,
we can stop including log.h in macro.h. This requires modifying source
files all over the tree to include log.h instead.
2025-04-18 14:19:15 +02:00
Daan De Meyer c68eb22064 fundamental: Always use _Static_assert for assert_cc()
Let's get rid of the assert.h include in macro-fundamental.h by always
using the builtin. Behavior is unchanged.
2025-04-18 14:19:13 +02:00
Daan De Meyer 03e17cbe6e basic: Move assertion specific functions to assert-util.h
Various functions in log.h are only used by asserts, and there's
enough assertion related stuff in macro.h to justify a separate header
which also makes it easier to avoid circular dependencies.

Let's introduce assert-util.h and an accompanying fundamental header
and move all the assertion related stuff over there. PROJECT_FILE is
moved over to macro.h.
2025-04-18 13:59:06 +02:00
Daan De Meyer edfd847d47 fundamental: Move alignment logic to memory-util-fundamental.h
Aligning is closely related to memory management, so let's move these
macros and functions to memory-util-fundamental.h. This will allow us
to move assertion related logic out of macro-fundamental.h as well in
a later commit.
2025-04-18 13:59:06 +02:00
Daan De Meyer 5a124e8ee1 macro: Move definition of dummy_t to macro-fundamental.h
There is code in macro-fundamental.h that makes use of dummy_t so
let's make sure to declare dummy_t in macro-fundamental.h as well.
2025-04-18 13:59:06 +02:00
Daan De Meyer 69ebfef1a1 basic: Remove stdio-util.h include from log.h 2025-04-18 13:59:06 +02:00
Daan De Meyer 4a52d26d2b basic: Remove list.h include from log.h 2025-04-18 13:59:06 +02:00
Daan De Meyer b14f74f9ab basic: Move trivial cleanup/ref/unref macros from macro.h to memory-util.h
Let's keep macro.h for the extremely generic macros that don't fit anywhere
else. Since CLEANUP_ARRAY() is already in memory-util-fundamental.h, we can
make a good case for moving the other cleanup macros in there as well.
2025-04-18 13:59:04 +02:00
Matthieu Baerts (NGI0) defd5060d6 ssh-proxy: add scp and rsync support
ssh-generator and ssh-proxy are great features, it is very handy to be
able to do:

    ssh vsock/1

But, because of the '/' used as a separator, scp and rsync don't
interpret 'vsock/<CID>' as a hostname, e.g.

    $ scp /etc/machine-id vsock/2222:.
    cp: cannot create regular file 'vsock/2222:.': No such file or directory

    $ rsync /etc/machine-id vsock/2222:.
    rsync: [Receiver] change_dir#3 "(...)/vsock" failed: No such file or directory (2)
    rsync error: errors selecting input/output files, dirs (code 3) at main.c(829) [Receiver=3.4.1]

An alternative is to use ',' as separator, e.g.

    $ scp /etc/machine-id vsock,2222:.

This is what is being suggested here. The names with '/' are kept not to
break anything here.

Others are possible: '%', '=', '#', '@', ':', etc. As mentioned in
commit 0abd510f7f ("ssh-proxy: add ssh ProxyCommand tool that can
connect to AF_UNIX + AF_VSOCK sockets"), it is better to avoid ':' as it
is already taken by SSH itself when doing sftp, and "@" is already taken
for separating the user name. '#' will cause some issues with some
shells like ZSH when quotes are not used.
2025-04-18 12:58:28 +02:00
Daan De Meyer a4bff6ef8e basic: Move log context functions to log-context.h 2025-04-18 11:57:33 +02:00
Marcos Alano ae04218383
hwdb: add G-Mode key support (#37175)
Add G-Mode key, usually Fn+F9.

Closes #30824
2025-04-18 17:43:26 +09:00
Yu Watanabe 2a6ca54154
hashmap: kill hashmap_free_with_destructor() and friends (#37111)
Now destructor is always set in hash_ops when necessary. Hence,
hashmap_free_with_destructor() and friends are not necessary anymore.
Let's kill them.
2025-04-18 17:40:51 +09:00
Daan De Meyer 40d60725ec basic: Move ratelimit logging functions to ratelimit.h
The ratelimit logging functions are only useful in a few scenarios
so let's move them to ratelimit.h instead of keeping them in the
generic log.h
2025-04-18 10:11:40 +02:00
Yu Watanabe 39dd06dbc4 meson: build tests for nspawn even -Dnspawn= is disabled
Follow-up for d95818f522.
Fixes #36880.
2025-04-18 09:03:33 +02:00
Zbigniew Jędrzejewski-Szmek a30684b983
udev: several follow-ups for recent change about listening fds (#37162) 2025-04-18 08:48:08 +02:00
Yu Watanabe 8e7ef6abb8 NEWS: mention integration-tests meson option is deprecated
Follow-up for 710653d3bc.
2025-04-18 09:36:29 +09:00
Yu Watanabe bdf4f200fd network: update comment as hashmap_free_with_destructor() does not exist anymore 2025-04-18 09:16:44 +09:00
Yu Watanabe 4cbc25ab4c hashmap: drop hashmap_free_with_destructor() and friends 2025-04-18 09:16:44 +09:00
Yu Watanabe 885001ed5d hashmap: drop unused free func arguments in hashmap_free() and hashmap_clear() 2025-04-18 09:16:44 +09:00
Yu Watanabe 2d4c4d9e10 set: drop unused set_free_free() 2025-04-18 09:16:44 +09:00
Yu Watanabe 828513ee3e test: make the copied set not take the ownership of elements 2025-04-18 09:16:44 +09:00
Yu Watanabe b0a2d49b61 test: use string_hash_ops_free 2025-04-18 09:16:44 +09:00
Yu Watanabe f6a2a9ba93 daemon-util: remove existing fds with the same name from fdstore
Currently, all use cases of notify_push_fd()/notify_push_fdf()
assume that the name of each fd in the fdstore is unique.
For safety, let's remove the existing fds before pushing a new one
to avoid multiple fds with the same name stored in the fdstore.
2025-04-18 09:12:43 +09:00
Yu Watanabe 1785961660 udev: re-add unintentionally dropped error log
Follow-up for 9b6bf4e10e.
2025-04-18 09:06:09 +09:00
LuK1337 edc49209f1 rules: Make ADB and fastboot work out-of-the-box
d0db47dcdf/adb.h (199)
7199051aaf/fastboot/fastboot.cpp (244)
2025-04-18 06:06:35 +09:00
Lennart Poettering 2791b2bc3d shutdown: handle gracefully if a device disappears while we detach it
Let's gracefully handle cases where a device disappears in the time we
between our discovery and when we want to detach it, due to "auto-clear"
or a similar logic.

The loopback case already handled this quite OK, do the same for MD and
swap too.

Switch to ERRNO_IS_DEVICE_ABSENT() for all checks, just in case.

Also improve debug logging for all these cases, so we know exactly what
is going on.

This is inspired by #37160, but shouldn't really fix anything there, I
am pretty sure the ENODEV seen in that output stems from the STOP_ARRAY
call, not from the open().

Note that this does not change anything for the device mapper case,
because the DM subsystem does not return useful error codes to
userspace, hence everything is a complete mess there.
2025-04-18 06:03:03 +09:00
Yu Watanabe 7baf24c949
network/manager: hash_ops related cleanups (#37121) 2025-04-18 06:00:15 +09:00
Yu Watanabe ce921df8d1
network/network: hash_ops related cleanups (#37120) 2025-04-18 05:59:47 +09:00
Yu Watanabe c96a5d9912
misc: hash_ops related cleanups (#37117) 2025-04-18 05:59:15 +09:00
Yu Watanabe 6858c1fd8b
libudev: several trivial cleanups (#37106) 2025-04-18 05:58:41 +09:00
Stefan Hansson b1236ce38b missing_fcntl: Introduce O_ACCMODE_STRICT
On musl, O_ACCMODE is defined as (03|O_SEARCH), unlike glibc which
defines it as (O_RDONLY|O_WRONLY|O_RDWR). Additionally, O_SEARCH is
simply defined as O_PATH.

This causes problems for systemd on musl, as it changes the
behaviour of open_mkdir_at_full() to return -EINVAL if O_PATH is
included in flags due to the fact that O_ACCMODE includes O_SEARCH
(i.e. O_PATH). Consequently, this makes the test-fs-util test fail.

Upstream musl seems content with this behaviour and doesn't seem
interested in matching glibc's behaviour due to that defining it this
way allows for O_SEARCH to match POSIX better by allowing it to open
directories where read permission is missing. Apparently musl does some
emulation in other places to make this work more consistently as well.

Initially I took the approach of working around this by redefining
O_SEARCH as O_RDONLY if O_SEARCH == O_PATH. This fixes the test and is
the approach taken by both XZ[1] and Gzip[2][3], but was not taken as
redefining system headers potentially could be problematic.

Instead, introduce O_ACCMODE_STRICT which just is a copy of glibc's
O_ACCMODE and use it everywhere. This way we don't have to deal with
unusual definitions of O_ACCMODE from C standard libraries other than
glibc.

 [1]: https://git.tukaani.org/?p=xz.git;a=blob;f=src/xz/file_io.c;h=8c83269b13fa31284f7ea5f3627a1dfbce7d6e14;hb=HEAD#l72
 [2]: https://git.savannah.gnu.org/cgit/gnulib.git/tree/lib/fcntl.in.h
      (lines 380 and 396, commit d7f551b30f3f2a0fa57c1b10c12f4eea41a9b89e)
 [3]: https://lists.gnu.org/archive/html/bug-gzip/2025-01/msg00000.html
2025-04-18 05:22:06 +09:00
Daan De Meyer 710653d3bc test: Use meson add_test_setup() instead of environment variables
We add a default test setup that excludes the integration-tests suite
so that the integration tests don't run by default. This allows us to
get rid of $SYSTEMD_INTEGRATION_TESTS. Then, we add two extra setups:
'integration' and 'shell'. The 'integration' setup does not exclude the
integration-tests suite, and so can be used to run the integration tests.
The 'shell' setup does the same, but additionally sets $TEST_SHELL=1,
allowing to get rid of $TEST_SHELL in the docs.
2025-04-17 20:31:08 +02:00
Daan De Meyer d9826d303b mkosi: update mkosi commit reference to dbb4020beee2cdf250f93a425794f1cf8b0fe693
* dbb4020bee mkosi: Use tools tree by default in repository config
* a2407a305c dnf: Stop messing around with plugins
* eee382ebc6 Fix mkosi help
* 8d4f9969bb mkosi-obs: simplify generation of signed UEFI auth files
*   364dfc65eb Merge pull request #3661 from septatrix/ssh-runtime
|\
| * ab3b52841c Improve Ssh= documentation
| * 79878d7e6c Add new Ssh=auto and Ssh=runtime options
*   49036322c2 Merge pull request #3682 from DaanDeMeyer/history
|\
| * 96e512fe6e installer: Make sure package manager state is preserved in the image
| * b859a7cf0a Only copy repository metadata from specific subdirs from /var
| * c8bf8e4278 Rename cache_subdirs() to package_subdirs()
* |   54b59c4a2e Merge pull request #3696 from DaanDeMeyer/history-cli
|\ \
| * | 898d89e887 Rework version bumping
| * | cc45fe3bad Only write CLI arguments to history instead of full config
| * | 1def443097 Disallow using --rerun-build-scripts with --force again
| * | 87b03ee264 Rename get_configdir() to finalize_configdir()
| * | 9c1217a217 Get rid of to_json() methods on Args and Config
| |/
* | 124f551e77 mkosi-obs: do not publish roothash
* | fc86100e51 mkosi-obs: append certs from mkosi.uefi.db/ to 'db'
* | 8bee4cb8e2 Make sure sync scripts are executable
|/
* a7e90514fa Simplify tools tree out of date error
* f9956daba7 Fail if --rerun-build-scripts is used and tools is out of date
* d94bf56ae8 mkosi-initrd: add specific configuration for plymouth in Debian
* 8235ddbc5b Take shared lock in copy_ephemeral()
* 19c74d5ba5 Two follow ups for #3678
*   0d6f15e8c3 Merge pull request #3678 from DaanDeMeyer/history
|\
| * 5410c4c7af tests: Require genkey to be run once upfront
| * 86b8c611a1 tests: Drop unused tools field
| * c3d1bd0dde Rework history <=> sandbox integration
* fce4db970f zypper: display debugging output if ARG_DEBUG is set
* 2c052b9d45 Allow PCR signing settings to be overridden in sub-images
* 00c220225b zypper: do not fail if a package configured to be removed is not found
2025-04-17 18:30:17 +01:00
Luca Boccassi 10ed8cda58 Revert "mkosi: temporarily disable panic_on_warn"
The BRTFS issue that caused a spurious WARN has been fixed and
backported to Noble, so we can enable panic_on_warm again.

This reverts commit 930d65ccca.
2025-04-17 17:03:47 +01:00
Lennart Poettering a035eaa227 netlink-socket: extend comments a bit
Follow-up for 90755dac69.
2025-04-17 14:42:02 +02:00
Daan De Meyer e8881f09c5 mkosi: Rename mkosi.prepare scripts for systemd deps to systemd.prepare
These scripts are reused by multiple images, so let's give them a
non-standard name to indicate that. Otherwise it's all too easy to add
something to mkosi.prepare for the main image and accidentally have it
included in all the subimages as well even though that's not desired.
2025-04-17 13:33:25 +02:00
Zbigniew Jędrzejewski-Szmek 60bcd98228
sd-netlink: don't fail on netlink message truncation if we pass a zero sized buffer (#37165)
Alternative to #37163
2025-04-17 13:11:13 +02:00
Lennart Poettering 90755dac69 netlink-socket: ignore ECHRNG/EXFULL errors from recvmsg_safe() if we expect truncation
When we receive a netlink messages from userspace we need to drop it
from the queue. Hence we need call recvmsg() on the socket for it. We do
this with a zero-size socket read() buffer, so that the message would be
truncated when copied to userspace, and we do not have to allocate any
memory for it, but it's still dropped.

This was broken in ad501930d7, which
turned datagram truncation into an error (rightfully so I think – for
the common case). That broke this code here, because here we *expect*
truncation, and need to handle it gracefully.

Hence simply check for the two error codes for truncated payload or
cdata, and eat it up.
2025-04-17 08:26:06 +02:00
Lennart Poettering 6d88e4a4b4 Revert "sd-netlink: prepare buffer for dropping unexpected message"
This reverts commit bf478dcffb.

I think we should avoid allocating memory needlessly just to free it
again, in particular if this can be triggered by some rogue peer.
2025-04-17 08:25:40 +02:00
Yu Watanabe bf478dcffb sd-netlink: prepare buffer for dropping unexpected message
Follow-up for c7460cce79 (v219).

Fixes #35654.
2025-04-17 01:52:17 +01:00
Beniamino Galvani ec65c29e51 network: fix handling of routing policy rule fwmask
The firewall mask should be applied even if the mark is 0, to allow defining a
value of e.g. 0/255.

Fixes #36973
2025-04-17 09:18:54 +09:00
MaxHearnden 49ff90c70d resolve: query the parent zone for DS records
RFC 4035 Section 4.2 requires that missing DS records are queried for in
the parent zone rather than the child zone, the old behaviour could
cause subdomains under home.arpa (RFC 8375) to fail validation.

This commit assumes that QDCOUNT = 1 as per RFC 9619

Fixes https://github.com/systemd/systemd/issues/19496
2025-04-17 03:24:11 +09:00
Yu Watanabe 76cb6f535e
network/netdev: hash_ops related cleanups (#37119) 2025-04-17 03:22:36 +09:00
Yu Watanabe 86aa7cb4b8 network/macsec: use hash_ops with destructor 2025-04-16 23:29:45 +09:00
Yu Watanabe c64c71fbe5 network/macsec: replace security_association_init() with structured initializer 2025-04-16 23:29:45 +09:00
Yu Watanabe 2af1f13c6f network/wireguard: use hash_ops with destructor for managing WireguardPeer 2025-04-16 23:29:45 +09:00
Yu Watanabe 643f1c1306 network/l2tp: use hash_ops with destructor for managing sessions 2025-04-16 23:29:45 +09:00
Daan De Meyer 1a4c2e8807
mkosi: Two improvements (#37155) 2025-04-16 15:12:15 +02:00
Daan De Meyer 52a82bcfc9 mkosi: Reuse main image prepare scripts in subimages
In the subimages we also want to make sure all dependencies of the
systemd packages are cached so reuse the same prepare scripts from
the main image to do that.

We only want required dependencies in the subimages, not recommended
or suggested dependendencies, so add an environment variable
$SYSTEMD_REQUIRED_DEPS_ONLY which the prepare scripts can check for
and enable it for the subimages.
2025-04-16 14:37:58 +02:00
Daan De Meyer 0ac6fc2917 mkosi: Make sure coreutils is installed in initrd/exitrd
This is already installed but Fedora/CentOS systems are nudged towards
installing coreutils-single which then later causes issues when we try
to install coreutils as a dependency of systemd so let's make sure we
pick coreutils from the beginning.
2025-04-16 14:21:45 +02:00
Lennart Poettering bbeeea4362 bootctl: replace --no-variables by --variables=BOOL
I think the current behaviour of not doing EFI variables when we are run
in a container makes a ton of sense, but in some cases it's useful to
do EFI var setup even when a set of namespaces is set up for us, for
example to recover a hosed installation from a rescue disk.

While we are at it, let's remove some duplicate checks, and
systematically output information why we skip various operations.

Fixes: #36174 #35005
2025-04-16 13:39:12 +02:00
Daan De Meyer 53628612b7 elf2efi: Add back python 3.7 compat
The walrus operator was introduced in python 3.9 so using it
accidentally bumped the minimum python version to 3.9 from 3.7 and
bluca still cares about keeping this working on 3.8 so let's remove
the usage of the walrus operator.

Follow up for d6a29eee2b
2025-04-16 13:06:27 +02:00
Yu Watanabe ef79411c31
use hashmap_dump_sorted() and friends at more several places (#37150) 2025-04-16 19:20:19 +09:00
Lennart Poettering 3d3d8f1dd2 update TODO 2025-04-16 10:48:31 +02:00
Yu Watanabe f477751b10 docs: fix mkosi section for Environment= setting 2025-04-16 08:30:25 +09:00
Yu Watanabe 667fc1d993 conf-files: use hashmap_dump_sorted() at one more place 2025-04-16 08:17:52 +09:00
Yu Watanabe dcf1c14b95 resolve: use set_dump_sorted() at one more place 2025-04-16 08:16:21 +09:00
Yu Watanabe a0fa3f1616 resolve: fix memleak
Follow-up for 5c274555c3.
2025-04-15 23:34:49 +01:00
Luca Boccassi 86cfbfae97
xattr: fix assert that breaks importctl (#37146)
getxattr_at_malloc() calls getxattr_pinned_internal() with size 0 to get
the size of the xattr, and then asserts because n > 0
```
Assertion '(size_t) n <= size' failed at src/basic/xattr-util.c:107, function getxattr_pinned_internal().
```

Follow-up for b8df25dcfe
2025-04-16 06:44:24 +09:00
Yu Watanabe 8a05dbb31a
core: remove cgroup v1 properties (#37026) 2025-04-16 06:22:46 +09:00
Yu Watanabe b2b270e1d1 cgroup-setup: use path_join() to get path to cgroup attribute
We already have the path to the cgroup. Hence, it is not necessary to
call cg_get_path() again.
2025-04-16 03:56:04 +09:00
Yu Watanabe 188286eec6 cgroup-setup: drop unnecessary controller argument
This also removes unnecessary cg_{create,attach,trim}_everywhere(),
and rename cg_enable_everywhere() -> cg_enable().
2025-04-16 03:56:04 +09:00
Yu Watanabe c35a585763 cgroup-setup: drop cgroup v1 support 2025-04-16 03:56:04 +09:00
Yu Watanabe 3988e2489a core: drop several more cgroup version check 2025-04-16 03:56:04 +09:00
Yu Watanabe 3fcb98cbff core/bpf-foreign: drop unnecessary check for cgroup v1 2025-04-16 03:56:04 +09:00
Yu Watanabe ff7f99db30 core/bpf-devices: drop cgroup v1 support 2025-04-16 03:55:00 +09:00
Yu Watanabe 4ee64e4365 core/cgroup: drop cgroup v1 specific code in unit_update_cgroup() 2025-04-16 03:42:11 +09:00
Yu Watanabe 35f88201f2 core/cgroup: drop unnecessary cgroup version check in several getters
After 2b61489e5a, these checks are not
necessary anymore.
2025-04-16 03:25:46 +09:00
Yu Watanabe 0818300288 core/cgroup: drop unnecessary _unified_ modifier from function names 2025-04-16 03:25:45 +09:00
Yu Watanabe f1c5534eb6 core/cgroup: remove logic of CGroup v1 attribute assignment 2025-04-16 03:19:16 +09:00
Yu Watanabe a7b06f6c30 core/cgroup: remove unused legacy parameters in CGroupContext 2025-04-15 22:34:22 +09:00
Yu Watanabe 3e316a6699 core/cgroup: remove CGroup v1 settings in dump message 2025-04-15 22:34:22 +09:00
Yu Watanabe 5da476ac77 bus-unit-util: refuse setting CGroup v1 properties through DBus 2025-04-15 22:34:22 +09:00
Yu Watanabe db6986e02c core: deprecate CGroup v1 DBus properties 2025-04-15 22:34:22 +09:00
Yu Watanabe 98d64ff500 core: remove deprecated CGroup v1 settings 2025-04-15 22:34:22 +09:00
Yu Watanabe 051675ea80 test: replace deprecated CGroup v1 settings with v2 ones 2025-04-15 22:34:22 +09:00
Yu Watanabe 5d902cc21f
journal: hash_ops related cleanups (#37115) 2025-04-15 22:32:15 +09:00
Yu Watanabe 9fdb01ed66
resolve: hash_ops related cleanups (#37116) 2025-04-15 22:31:57 +09:00
Yu Watanabe 7a7a9bbed3
network-tools: hash_ops related cleanups (#37118) 2025-04-15 22:31:40 +09:00
Yu Watanabe 3cb9ac88a0
journal: drop old kernels support (#37137)
This drops several codes for supporting old kernels.
Also, this cleanups code a bit.
2025-04-15 22:30:51 +09:00
Luca Boccassi bd9c55ebe2 import/export: add support for zstd 2025-04-15 12:21:30 +01:00
Yu Watanabe 7566bbc5cb journal/kmsg: drop old kernels (<3.6) support
The flags field was added by kernel v3.6:
d39f3d77c9

Now our baseline on the kernel is v5.4, so we can assume there exists
the flags field after the monotonic timestamp.

This also adds several short comments.
2025-04-15 06:19:07 +09:00
Yu Watanabe 9ec1e87bf3 journal/kmsg: modernize server_open_dev_kmsg()
Let's assign fd and event source only on success.
2025-04-15 06:18:52 +09:00
Yu Watanabe 117aa1cab4 journal/kmsg: drop Server.dev_kmsg_readable flag and use Server.read_kmsg
When /dev/kmsg is opened, the two flags have the same value.

This also adds an assertion in server_read_dev_kmsg().
2025-04-15 06:17:22 +09:00
Yu Watanabe da741d9fd9 journal/kmsg: drop support old kernels (<3.5) without reading /dev/kmsg support
/dev/kmsg is readable since kernel v3.5:
e11fea92e1

Now our baseline on the kernel is v5.4. Let's assume /dev/kmsg is always
readable.
2025-04-15 05:22:28 +09:00
Yu Watanabe d127423ce6 journal: remove old kernels (<3.2) support in monitoring hostname
Similar to cc983fc9dc.
2025-04-15 04:24:12 +09:00
Yu Watanabe b01f00e9c5 test: drop error conditions for old kernels (<3.2)
Now our baseline on the kernel is 5.4.
2025-04-15 03:41:40 +09:00
Yu Watanabe d50cfa98aa tree-wide: IFA_FLAGS is supported since kernel v3.14
Now our baseline on the kernel is v5.4.
Let's unconditionally use the IFA_FLAGS attribute, and drop the getter
and setter for the deprecated header element.

Continuation of 29c2d4e158.
2025-04-15 03:41:16 +09:00
Yu Watanabe 6dbf2c1beb sd-netlink,sd-device: drop old kernels (<4.2) support
NETLINK_LIST_MEMBERSHIPS is supported since kernel v4.2, specifically
b42be38b27

Our baseline on the kernel is v5.4. Let's drop unnecessary conditions.
2025-04-15 03:40:40 +09:00
Yu Watanabe d3d375a686 udev-builtin-net_id: drop old kernels (<4.20) support
Since kernel v4.20, specifically since
9b8b2a3230
IP-over-Infiniband driver also uses dev_port.

As our baseline on the kernel is v5.4. Let's remove the fallback code.
For more details about the fallback, see
https://github.com/systemd/systemd/pull/10082#issuecomment-421416461
2025-04-15 03:40:14 +09:00
Yu Watanabe 6d203bd830 test-condition: drop cgroup version check
After f74ca66e68, we do not check the
cgroup version of the runtime environment, and unconditionally returns 0
for "v1", and 1 for "v2".
2025-04-14 17:22:46 +01:00
Yu Watanabe cc983fc9dc resolve: drop code for supporting old kernels (<3.2)
Now our baseline on the kernel is 5.4.

Note, the removed code triggered assert_return() in
sd_event_source_set_description().
2025-04-14 22:26:40 +09:00
Yu Watanabe 5e3887e6c1 loop-util: drop workaround for kernel older than v5.0
Now our baseline on the kernel is v5.4.
2025-04-14 21:57:53 +09:00
Yu Watanabe cde55c44ed
core: hash_ops related cleanups (#37114) 2025-04-14 03:17:26 +09:00
Yu Watanabe 308a3872e9
shared/condition: remove cgroup hierarchy check (#37101) 2025-04-14 03:17:01 +09:00
Mike Yuan a04da2db6b
oomd: it's safe to assume cgv2 now 2025-04-13 18:09:40 +02:00
Mike Yuan f74ca66e68
shared/condition: remove cgroup hierarchy check 2025-04-13 18:09:04 +02:00
Mike Yuan e9f0e96234
core/taint: decrease stage array size for "cgroupsv1" removal
Follow-up for 399791eaf0
2025-04-13 18:09:02 +02:00
Yu Watanabe be1f90d97f socket-proxy: fix use-after-free
Fixes a bug in 10e41cdddc.
Fixes CID#1609061.
2025-04-13 10:24:50 +01:00
Luca Boccassi ba6c955f21 coredump: verify pidfd after parsing data in usermode helper
Ensure the pidfd is still valid before continuing

Follow-up for 313537da6f
2025-04-13 10:18:58 +01:00
Yu Watanabe 52278e0634 network/wiphy: use hash_ops with destructor for managing Wiphy objects 2025-04-13 10:15:02 +09:00
Yu Watanabe 4cf443e644 network/link: use hash_ops with destructor for managing Link objects 2025-04-13 10:15:02 +09:00
Yu Watanabe a85f73fa55 network/network: use hash_ops with destructor for managing Network objects 2025-04-13 10:15:02 +09:00
Yu Watanabe 09ddaf2af3 hashmap: introduce ordered_hashmap_free_and_replace() 2025-04-13 10:15:02 +09:00
Yu Watanabe 919aeb666a network/network: use hash_ops with destructor for managing stacked netdevs 2025-04-13 10:15:02 +09:00
Yu Watanabe 1b25b88f82 network/bridge-fdb,mdb: use hash_ops with destructor 2025-04-13 10:10:29 +09:00
Yu Watanabe 5c6e6f5ad1 network/dhcp-server: use hash_ops with destructor for static lease 2025-04-13 10:10:29 +09:00
Yu Watanabe 10d786458c network/radv: use hash_ops with destructor for managing prefixes 2025-04-13 10:10:29 +09:00
Yu Watanabe d3af116afd network,udev: use hash_ops with destructor to manage SR-IOV configs 2025-04-13 10:09:53 +09:00
Yu Watanabe 32b5deb1b2 network/ndisc: replace set_free_free() with set_free()
They uses in_addr_prefix_hash_ops_free, hence set_free() is enough.
2025-04-13 10:09:45 +09:00
Yu Watanabe 6d1a69d0f0 network: use in6_addr_hash_ops_free in Network.ipv6_proxy_ndp_addresses
This also one adjustment to network_adjust_ipv6_proxy_ndp().
2025-04-13 10:09:45 +09:00
Yu Watanabe 25a9bd72ef network: use dns_name_hash_ops_free in dnssec negative trust anchors 2025-04-13 10:09:45 +09:00
Yu Watanabe fadc825c5b test-networkd-conf: config_parse_ether_addrs() uses ether_addr_hash_ops_free
Hence, set_free() is enough to free the result.
2025-04-13 10:04:08 +09:00
Yu Watanabe 1cf4c2fc42 network-generator: use hash_ops with destructor for Network, NetDev, and Link 2025-04-13 10:03:40 +09:00
Yu Watanabe 26f8a0144a wait-online: move manager_process_link() to link.c
Then, rename it to rtnl_process_link().

No functional change, just refactoring.
2025-04-13 10:03:40 +09:00
Yu Watanabe 9f66d61a41 wait-online: use hash_ops with destructor for managing Link 2025-04-13 10:03:40 +09:00
Yu Watanabe 4100e0f207 sysv-generator: introduce hash_ops for SysvStub
This also renames free_sysvstub() -> sysvstub_free(), to follow our
usual coding style.
2025-04-13 10:00:57 +09:00
Yu Watanabe 765ffa12ee sysusers: use trivial_hash_ops_free for storing user/group name 2025-04-13 10:00:57 +09:00
Yu Watanabe 5f43554f90 sd-netlink: introduce custom hash_ops for GenericNetlinkFamily 2025-04-13 10:00:57 +09:00
Yu Watanabe 70669fa2fe sd-device-enumerator: use custom hash_ops with destructor 2025-04-13 10:00:57 +09:00
Yu Watanabe f92fac7e9b sd-device: replace set_free_free() with set_free()
These uses string_hash_ops_free, hence not set_free() is enough.
2025-04-13 10:00:57 +09:00
Yu Watanabe 855800aaec coredump: replace custom cleanup function with specific hash_ops with destructor 2025-04-13 10:00:57 +09:00
Yu Watanabe f8b0277101 analyze: replace set_free_free() with set_free()
set_put_strdup() uses &string_hash_ops_free, hence set_free() also
frees stored contents.
2025-04-13 10:00:57 +09:00
Yu Watanabe d6c8db650d resolved-dns-trust-anchor: use hash_ops with destructor for managing DnsAnswer 2025-04-13 09:58:49 +09:00
Yu Watanabe 442ac1b1b0 resolved-dns-trust-anchor: use hash_ops with destructor for managing RRs 2025-04-13 09:58:49 +09:00
Yu Watanabe f7880e58f2 resolved-dns-scope: use hash_ops with destructor for conflict_queue 2025-04-13 09:58:49 +09:00
Yu Watanabe 5c274555c3 resolve: use dns_name_hash_ops_free for dnssec negative trust anchor 2025-04-13 09:58:49 +09:00
Yu Watanabe d9856d812b journal-remote: introduce custom hash_ops with destructor for MHDDaemonWrapper
Then, we can move declaration of the type from journal-remote.c to
journal-remote-main.c, and drop several #if ... #endif.
2025-04-13 09:57:19 +09:00
Yu Watanabe 8eb4ce4118 sd-journal: use hash_ops with destructor that closes JournalFile 2025-04-13 09:57:19 +09:00
Yu Watanabe c5ed193516 journal: use hash_ops with destructor that make JournalFile offline and close 2025-04-13 09:57:19 +09:00
Yu Watanabe 83d3aed907 journal: replace unnecessary use of set_free_free() with set_free()
These uses pcre2_code_hash_ops_free, hence set_free() is enough.
2025-04-13 09:57:19 +09:00
Yu Watanabe d502816b3e unit-file: use set_free() to free paths
As it uses path_hash_ops_free.
2025-04-13 09:49:40 +09:00
Yu Watanabe 5c6ea30209 core/unit: use string_hash_ops_free for Unit.aliases 2025-04-13 09:49:40 +09:00
Yu Watanabe 5793a39dd8 core,systemctl: unit_file_find_fragment() provides names with string_hash_ops_free
names are assigned with set_put_strdup(), hence string_hash_ops_free is
used and we can use set_free() rather than set_free_free().
2025-04-13 09:49:40 +09:00
Yu Watanabe c4c4ea2fb6 core: replace unnecessary use of set_free_free() with set_free()
These variables are assigned with set_put_strv(), hence
string_hash_ops_free is used.

This also drops unnecessary call of set_ensure_allocated() with wrong
hash ops.
2025-04-13 09:49:39 +09:00
Yu Watanabe f9ae1f5cf5 install: use hash_ops with destructor for InstallInfo 2025-04-13 09:49:39 +09:00
Yu Watanabe 8d190e990e install: use path_hash_ops_free 2025-04-13 09:49:39 +09:00
Yu Watanabe e2603934d5
locale-util,kbd-util: several cleanups (#37090) 2025-04-13 09:15:02 +09:00
Mike Yuan 7065494e7e core/execute: set_get_strv() does not transfer ownership of strings
Prompted by #37090
2025-04-13 09:14:18 +09:00
Luca Boccassi 5935d74613
fstab/gpt-auto: hook up validatefs to /sysroot/usr/ rather than /sysusr/usr/ (#37109) 2025-04-12 23:05:10 +01:00
Yu Watanabe fd7f760338
socket-proxy: several cleanups (#37107) 2025-04-13 05:56:57 +09:00
Yu Watanabe 549898c6e4
stdio-bridge: minor coding style cleanup (#37110) 2025-04-13 05:20:12 +09:00
Yu Watanabe 002ff90d8c kbd-util: use string_hash_ops_free and set_to_strv() 2025-04-13 04:59:26 +09:00
Yu Watanabe 21d84e8905 locale-util: use string_hash_ops_free and set_to_strv()
Then we can drop hackish combination of use of set_free_free() and
set_free().
2025-04-13 04:59:26 +09:00
Yu Watanabe 3f23b37c5a strv: constify arguments for strv_equal_ignore_order()
Follow-up for 5072f4268b.
2025-04-13 04:59:26 +09:00
Yu Watanabe 24655047b0 set: introduce set_to_strv()
It is similar to set_get_strv(), but invalidates the set on success.
2025-04-13 04:59:26 +09:00
Yu Watanabe 4da43aeb0c locale-util: coding style cleanups 2025-04-13 04:59:26 +09:00
Yu Watanabe a4a5ee4cd1 locale-util: filter out non-UTF-8 locales even when failed to parse $SYSTEMD_LIST_NON_UTF8_LOCALES 2025-04-13 04:59:26 +09:00
Yu Watanabe 90abb64fd5 locale-util: fix argument for munmap() 2025-04-13 04:59:26 +09:00
Yu Watanabe 41c817e772 socket-proxy: reset connection only in callback functions
This makes connection_complete(), connection_start(), and friends not
reset connection on failure.
2025-04-13 04:28:35 +09:00
Yu Watanabe 37edefb33f socket-proxy: use event_source_hash_ops for managing event sources 2025-04-13 04:28:35 +09:00
Yu Watanabe 94dd3a569c event-util: use DEFINE_HASH_OPS_WITH_VALUE_DESTRUCTOR() to define event_source_hash_ops
Currently, the hash_ops is only used by set, so this does not change
anything. But, there are several benefits,
- we can drop cast in the definition,
- the hash_ops can be also used by hashmap.
2025-04-13 04:28:35 +09:00
Yu Watanabe f4a717aa4d socket-proxy: use hash_ops with destructor for managing Connection
This also renames context_clear() -> context_done(), to follow our
recent coding style.
2025-04-13 04:28:35 +09:00
Yu Watanabe 234b86a444 socket-proxy: make connection_free() return NULL
To make it follow our coding style.
2025-04-13 04:28:35 +09:00
Yu Watanabe 10e41cdddc socket-proxy: use event_reset_time_relative()
Also, split out context_reset_timer() from connection_release().
No functional change. Preparation for later change.
2025-04-13 04:28:35 +09:00
Mike Yuan c89802b5ce
stdio-bridge: use DEFAULT_SYSTEM_BUS_ADDRESS 2025-04-12 19:15:10 +02:00
Mike Yuan 6989688a51
stdio-bridge: minor modernization for parse_argv() 2025-04-12 19:15:10 +02:00
Mike Yuan e844ee0752
fstab-generator: honor x-systemd.validatefs from kernel cmdline too 2025-04-12 16:33:22 +02:00
Mike Yuan 7369c037e2
fstab/gpt-auto: hook up validatefs to /sysroot/usr/ rather than /sysusr/usr/
We carry a special logic for /usr/ in initrd that it initially gets
mounted to /sysusr/usr/ and later bind mounted to /sysroot/usr/.
When hooking up validatefs it is hence necessary to wait for
the bind mount and validate that, rather than the /sysusr/usr/
established as intermediate transport.

Alternative to #37102
2025-04-12 16:33:22 +02:00
Mike Yuan 39642b0130
gpt-auto: do not add /sysusr/usr/ -> /sysroot/usr/ after switch-root
Follow-up for 7852e301e0
2025-04-12 16:33:22 +02:00
Yu Watanabe 9ee08c8dce libudev: use 'type* func()' style rather than 'type *func()' 2025-04-12 22:30:57 +09:00
Yu Watanabe 19aa8c0f0e libudev-list: use strdup_to()
No functional change, just refactoring.
2025-04-12 22:30:57 +09:00
Yu Watanabe 3e8a4defa8 libudev-list: use hashmap_dump_sorted() 2025-04-12 22:30:57 +09:00
Yu Watanabe 76a8f5ae4b libudev-list: use custom hash_ops with destructor for udev_list_entry 2025-04-12 22:30:57 +09:00
Luca Boccassi 9f091f098a TODO: drop getenv item, done where needed 2025-04-12 11:49:00 +01:00
Busayo Dada a51804a5ff Use secure_getenv() instead of getenv() where appropriate 2025-04-12 11:48:22 +01:00
Luca Boccassi a681435015
busctl: several cleanups for introspect command (#37103) 2025-04-12 11:46:58 +01:00
Yu Watanabe c63899c149 busctl: use table to format result of introspect command 2025-04-12 12:23:13 +09:00
Yu Watanabe b2bba933b6 busctl: use set_dump_sorted() and FOREACH_ARRAY() 2025-04-12 12:23:13 +09:00
Yu Watanabe 922828a4e2 busctl: use strdup_to() and set_consume() 2025-04-12 12:23:13 +09:00
Yu Watanabe d48966ccd1 busctl: set destructor to member_hash_ops
Then, we can drop the custom destructor of 'Set *mmebers'.
2025-04-12 12:23:13 +09:00
Yu Watanabe 67bdb6bee0 network/netdev: remove support of netdevsim
netdevsim device creation by networkd was deprecated by
59a9ef1022 (v246), and it does not work
since kernel v5.2:
e05b2d141f

Now our baseline for the kernel is v5.4. Let's completely kill the
feature.
2025-04-12 09:23:27 +09:00
Yu Watanabe 012d76ab79 test: also wait for all queued events being processed
Otherwise, if already 'remove' uevent for the device is queued, then
the device node may not exist any more when 'udevadm wait' command succeeds.

Follow-up for 90941d458a.
2025-04-12 09:22:27 +09:00
Yu Watanabe 644c934348
core: drop cgroup v1 synthetic empty event logic (#37099) 2025-04-12 09:21:29 +09:00
Luca Boccassi 386b94e6f6
fido2: hook up with plymouth for notifications (#37089)
Show notifications for fido2 messages in plymouth, so that they
show up in the initrd like the passphrase prompt already does.
2025-04-12 01:06:31 +01:00
Luca Boccassi 633f07e7c9 mkosi: update debian commit reference to 91a4d114e0b5a01385477f8862caedc1056fa68b
* 91a4d114e0 Install new file for upstream profile
2025-04-11 23:07:38 +01:00
Luca Boccassi 988fae8024 mkosi: enable autologin also with --console=gui 2025-04-11 23:07:38 +01:00
Luca Boccassi fc35f5280f fido2: hook up with plymouth for notifications
Show notifications for fido2 messages in plymouth, so that they
show up in the initrd like the passphrase prompt already does.
2025-04-11 23:07:38 +01:00
Mike Yuan 66f83537f9
core: unit_watch_pidref() gracefully handles EEXIST
No need to check that at callsite.
2025-04-11 23:50:50 +02:00
Mike Yuan 55e4df21ef
core: drop cgroup v1 synthetic empty event logic
cgroup v2's empty events are reliable, hence we'd not bother
with validating it again in unit_add_to_cgroup_empty_queue()
either.
2025-04-11 23:50:50 +02:00
Yu Watanabe 1dcdad57ce udev-rules: add more verbose messages for ATTR{} and ATTRS{}
This also makes udevd/udevadm mention that the parent device rules
also tested with the device currently processing.

With the following rules file:
```
ATTRS{idVendor}=="0001", ATTRS{idProduct}=="44ff", MODE="0666", GROUP="input",
```

Before:
```
event0: /tmp/hoge.rules:1 Checking conditions for parent devices: ATTRS{idVendor}=="0001", ATTRS{idProduct}=="44ff"
event0: /tmp/hoge.rules:1 No parent device passed parent conditions.
```
After:
```
event0: /tmp/hoge.rules:1 Checking conditions for parent devices (including self): ATTRS{idVendor}=="0001", ATTRS{idProduct}=="44ff"
event0: /tmp/hoge.rules:1 ATTRS{idVendor}=="0001": Cannot read sysfs attribute: No such file or directory
input0: /tmp/hoge.rules:1 ATTRS{idVendor}=="0001": Cannot read sysfs attribute: No such file or directory
PNP0C0E:00: /tmp/hoge.rules:1 ATTRS{idVendor}=="0001": Cannot read sysfs attribute: No such file or directory
LNXSYBUS:00: /tmp/hoge.rules:1 ATTRS{idVendor}=="0001": Cannot read sysfs attribute: No such file or directory
LNXSYSTM:00: /tmp/hoge.rules:1 ATTRS{idVendor}=="0001": Cannot read sysfs attribute: No such file or directory
event0: /tmp/hoge.rules:1 No parent device passed parent conditions.
```

Prompted by #37063.
2025-04-12 06:48:09 +09:00
Yu Watanabe 09e98a3d74
udev: support reverting/serializing/deserializing configurations set by 'udevadm control' (#37067)
Previously, log level, properties, maximum number of worker processes,
and so on set by 'udevadm control' are discarded on restart. This makes
the configuration serialized on stop and deserialized in next
invocation. Also, this introduces 'udevadm control --revert' to clear
previous configurations.
2025-04-12 06:47:16 +09:00
Mike Yuan c9eff0bcfc
core/cgroup: drop v1 handling in unit_attach_pids_to_cgroup() 2025-04-11 23:44:24 +02:00
Mike Yuan 512e89e750
mount-setup: swap MountMode and condition_fn in struct
To avoid unnecessary 'NULL's in structured initializer.
2025-04-11 23:44:24 +02:00
Yu Watanabe c50606aa56 TEST-17-UDEV: add test cases for reverting/serializing/deserializing config 2025-04-12 05:08:20 +09:00
Yu Watanabe 49120a7a8f udev-config: serialize/deserialize dynamical configurations
Previously, configurations set by 'udevadm control' such as log level,
maximum number of childrens, global properties, and so on were discarded
on restart. This makes udevd serialize those configurations on stop, and
deserialize them in the next invocation.
2025-04-12 05:08:20 +09:00
Yu Watanabe 8b078c5b86 daemon-util: expose notify_remove_fd_warn() 2025-04-12 05:08:20 +09:00
Yu Watanabe c53d155d8d udevadm: introduce --revert option to call io.systemd.service.Revert 2025-04-12 05:08:16 +09:00
Yu Watanabe 1043ae3bc2 udev-varlink: introduce io.systemd.Udev.Revert method
It reverts dynamically set configurations.
2025-04-12 04:55:03 +09:00
Daan De Meyer 0a893ef3f3
mkosi: update fedora commit reference to 6646d13acae64665f63354cd60ecf963ee563b96 (#37065)
* 6646d13aca fmf: Run tests from systemd-tests rpm if possible
2025-04-11 13:46:20 +02:00
Daan De Meyer 8318cac68b mkosi: update fedora commit reference to 6646d13acae64665f63354cd60ecf963ee563b96
* 6646d13aca fmf: Run tests from systemd-tests rpm if possible
2025-04-11 12:13:31 +02:00
Daan De Meyer fc4f9c5f8b test: Work around bug in meson when installing directory symlinks
Installing symlinks pointing to directories with install_subdir() is
broken (see https://github.com/mesonbuild/meson/pull/14471). Let's work
around the issue for now by manually installing the standalone directory
until the issue is fixed upstream and available in meson in all supported
distributions.
2025-04-11 12:13:31 +02:00
Daan De Meyer 96e7472dcd meson: Fix installation directory for integration-tests when using rsync 2025-04-11 11:42:04 +02:00
Yu Watanabe 7a5a667b1a
JSON User/Group records: Add properties for UUIDs (#37024)
It is useful to have stable and unique identifiers for a security
principal. The majority of identitiy management systems in use with Unix
systems today (e.g. Active Directory objectGUID, FreeIPA ipaUniqueID,
Kanidm UUIDs) assign each account and group a unique UUID and exposing
that to applications allows them to refer to accounts in a stable
manner.

At this time we are merely adding the properties to the user/group
records. Adding ways to perform lookups by these IDs is left for a
future PR.

See [discussion](https://mastodon.social/@pid_eins/114283987142625086) and
[this comment](https://github.com/systemd/systemd/issues/24032#issuecomment-2745246757).

I'm sure there are wording aspects which could be improved, but I
believe this is a reasonable initial stab at the problem.
2025-04-11 07:10:56 +09:00
Daan De Meyer 9c8646646c integration-tests: Don't enable tpm for every single test 2025-04-11 06:20:25 +09:00
Daan De Meyer beecd4e344 test: Fix typing error in integration-test-wrapper.py 2025-04-11 06:20:25 +09:00
Daan De Meyer 1df41e6a38
mkosi: Make sure the mkosi image can be built without the source tree available (#37068)
Let's make sure the mkosi can be built (with `NO_BUILD` enabled) without
the source tree available. This allows running the integration tests
when only distribution packages are available but the source tree is
not.
2025-04-10 16:35:16 +02:00
Luca Boccassi dd85fbf6aa
Some cleanups and a CI fix for test-sd-device (#37083) 2025-04-10 14:47:02 +01:00
Daan De Meyer e2b01571d0 mkosi: Move TEST-24-CRYPTSETUP files to mkosi/ directory
If the integration tests have been installed in the systemd-tests
package, the path to these in mkosi.postinst.chroot will be wrong.
Let's fix the issue by moving these files into the mkosi/ directory
as they're only used by mkosi regardless so they make more sense to
be there anyway.
2025-04-10 15:09:29 +02:00
Daan De Meyer 8b1c66f72c mkosi: Rely on tmpfiles to put nsswitch.conf in place
Let's rely on tmpfiles to put our nsswitch.conf in place instead of
doing it in the post-install script. This moves us one step closer
to being able to build the mkosi image without having the source
tree available when NO_BUILD is used.
2025-04-10 15:09:29 +02:00
Daan De Meyer 5ec2ba5d2f mkosi: update debian commit reference to 11efce9445f987f1e588719c182a93794eba2565
* 11efce9445 Install /usr/share/factory for upstream profile
* 4c3d753649 d/t/upstream: copy mkosi key from mkosi/ subdir if it exists
* 00f2ab1bce Install etc.conf tmpfiles.d in upstream builds
* dcf5869729 Refresh patch for upstream review changes
* f94714d8cc d/copyright: use GPL URL instead of old FSF postal address
* bf005e69f5 Update changelog for 257.5-2 release
* 709e474e5b Backport new patch to workaround /lib64 symlink incompatibility
* fa6c61db40 Update changelog for 257.5-1 release
* 9c9ca29ceb Remove conflicts with dracut:arm64 and build nspawn:arm64 again
* 5899bcc55d Update changelog for 257.5-1 release
* dd5cb92d08 Drop backports, included in 257.5
* c1373fb99e d/t/upstream: run mkosi genkey before summary
* 223d7a412a Install new files for upstream
* b9d337abd9 Use Conflicts instead of Breaks/Replaces for file move
* 9379847813 d/t/upstream: write mkosi.local.conf in subdir if the rest of the configs are in subdir
* 86fc24b565 d/t/upstream: do not fail if 10-root.conf is not present
2025-04-10 15:09:13 +02:00
Zbigniew Jędrzejewski-Szmek 74cb65e45f test-sd-device: limit the number of iterations when testing device parent/child functions
The test "hangs" and times out on some arm64 machines. It actually works as
expected, but the machine has 2016 children under /sys/devices/system/memory/,
and the tests do a double loop over this, which is slow enough to hit the 120 s
limit. Add a limit on the number of iterations.

Another option would be to exclude "memory" subsystem. But we may have other
subsystems which have the same problem in the future, so I think it'll be more
robust to not try to limit the fix to a specific subsystem.
2025-04-10 13:59:27 +02:00
Zbigniew Jędrzejewski-Szmek a9cded655b test-sd-device: dedeplicate common setup fragment 2025-04-10 13:59:27 +02:00
Nick Labich 3d115fb6c8 repart: mkfs.btrfs --subvol option format change
Adapt repart mkfs.btrfs invocation to match the latest format:
(btrfs-progs@8ba72e45c8a6da1275b448ad4912d96e0a2c54b5)

Fixes #37074
2025-04-10 18:20:59 +09:00
Christian Hesse e1a932f3c5 man: mention special functionality for reload-or-restart with --marked (#37076)
We had a downstream discussion on what `systemctl reload-or-restart
--marked` does, until upstream chimed in and pointed on very special
behavior for that combination. 😜

The second references the first, but not vice versa. Let's fix this.
2025-04-10 18:19:00 +09:00
ZIHCO 1ab010cbad nspawn: replace prefix_roota() with chase() 2025-04-10 00:36:06 +02:00
Nick Labich 3b31b2e4cc vmspawn: fix --extra-drive= option
Follow-up for 369655330d.

Fixes #36807.
2025-04-10 04:38:51 +09:00
Mario Limonciello 9a224c307b backlight: Drop support for actual_brightness
Some AMD systems have support for features like custom brightness
curve or adaptive backlight management.  These features allow the
display driver to adjust the brightness based upon other factors
than just the user brightness request.

The user's brightness request is indicated in the 'brightness' file
but the effective result of the logic in the display driver is stored
in the 'actual_brightness' file.

This leads to problems when shutting the system down because the value
of 'actual_brightness' may be lower than 'brightness' and the wrong value
gets stored for the next boot.

For example if the brightness a user requested was 150, the actual_brightness
might be 130. So the next boot the brightness will be "set" to 130, but the
actual brightness might be 115. If the user reboots again it will be set to 115
for the next boot but the actual brightness might be 100. That is this gets worse
and worse each reboot cycle until the system eventually boots up at minimum
brightness.

Furthermore the kernel documentation indicates that the brightness and
actual_brightness files are not guaranteed to be the same values.

Due to this; drop the use of 'actual_brightness' when saving/restoring brightness
and instead rely only upon 'brightness'.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
2025-04-10 04:31:46 +09:00
Yu Watanabe 62146da6ce
core,run0: fixlets/tweaks around $SHELL handling (#37052)
Fixes #35007
2025-04-10 04:29:30 +09:00
Daan De Meyer a73ce47546
test: Two fixes for running the integration tests standalone (#37073) 2025-04-09 21:25:40 +02:00
Daan De Meyer 75a5ff01d3 test: Make sure symlinks in integration-tests are properly installed
meson follows symlinks by default, so make sure we use
follow_symlinks=False if meson is new enough and rsync otherwise like
we already do for other testdata subdirectories.
2025-04-09 20:47:30 +02:00
Daan De Meyer c7eda25593 test: Drop version from standalone meson file
The file won't exist if we're running tests from the systemd-tests
package so let's drop it as it's not used for anything.
2025-04-09 20:23:26 +02:00
Daan De Meyer c7bb07fff5 mkosi: update mkosi commit reference to 7e4ec15aee6b98300b2ee14265bc647a716a9f8a
* 7e4ec15aee Generate key-cert pair in config directory (fixes #3655)
* 5793e64958 Don't use gen_kernel_images() in run_depmod()
* bc497f1d17 Fix typing due to recent changes in typeshed
* e6a603a21a Add "plymouth" initrd profile
2025-04-10 02:51:37 +09:00
kmeaw e4bb033e2f shared/calendarspec: fix normalization when DST is negative
When trying to calculate the next firing of 'hourly', we'd lose the
tm_isdst value on the next iteration.

On most systems in Europe/Dublin it would cause a 100% cpu hang due to
timers restarting.

This happens in Europe/Dublin because Ireland defines the Irish Standard Time
as UTC+1, so winter time is encoded in tzdata as negative 1 hour of daylight
saving.

Before this patch:
$ env TZ=IST-1GMT-0,M10.5.0/1,M3.5.0/1 systemd-analyze calendar --base-time='Sat 2025-03-29 22:00:00 UTC' --iterations=5 'hourly'
  Original form: hourly
Normalized form: *-*-* *:00:00
    Next elapse: Sat 2025-03-29 23:00:00 GMT
       (in UTC): Sat 2025-03-29 23:00:00 UTC
       From now: 13h ago
   Iteration #2: Sun 2025-03-30 00:00:00 GMT
       (in UTC): Sun 2025-03-30 00:00:00 UTC
       From now: 12h ago
   Iteration #3: Sun 2025-03-30 00:00:00 GMT  <-- note every next iteration having the same firing time
       (in UTC): Sun 2025-03-30 00:00:00 UTC
       From now: 12h ago
...

With this patch:
$ env TZ=IST-1GMT-0,M10.5.0/1,M3.5.0/1 systemd-analyze calendar --base-time='Sat 2025-03-29 22:00:00 UTC' --iterations=5 'hourly'
  Original form: hourly
Normalized form: *-*-* *:00:00
    Next elapse: Sat 2025-03-29 23:00:00 GMT
       (in UTC): Sat 2025-03-29 23:00:00 UTC
       From now: 13h ago
   Iteration #2: Sun 2025-03-30 00:00:00 GMT
       (in UTC): Sun 2025-03-30 00:00:00 UTC
       From now: 12h ago
   Iteration #3: Sun 2025-03-30 02:00:00 IST  <-- the expected 1 hour jump
       (in UTC): Sun 2025-03-30 01:00:00 UTC
       From now: 11h ago
...

This bug isn't reproduced on Debian and Ubuntu because they mitigate it by
using the rearguard version of tzdata. ArchLinux and NixOS don't, so it would
cause pid1 to spin during DST transition.

This is how the affected tzdata looks like:
$ zdump -V -c 2024,2025 Europe/Dublin
Europe/Dublin  Sun Mar 31 00:59:59 2024 UT = Sun Mar 31 00:59:59 2024 GMT isdst=1 gmtoff=0
Europe/Dublin  Sun Mar 31 01:00:00 2024 UT = Sun Mar 31 02:00:00 2024 IST isdst=0 gmtoff=3600
Europe/Dublin  Sun Oct 27 00:59:59 2024 UT = Sun Oct 27 01:59:59 2024 IST isdst=0 gmtoff=3600
Europe/Dublin  Sun Oct 27 01:00:00 2024 UT = Sun Oct 27 01:00:00 2024 GMT isdst=1 gmtoff=0

Compare it to Europe/London:
$ zdump -V -c 2024,2025 Europe/London
Europe/London  Sun Mar 31 00:59:59 2024 UT = Sun Mar 31 00:59:59 2024 GMT isdst=0 gmtoff=0
Europe/London  Sun Mar 31 01:00:00 2024 UT = Sun Mar 31 02:00:00 2024 BST isdst=1 gmtoff=3600
Europe/London  Sun Oct 27 00:59:59 2024 UT = Sun Oct 27 01:59:59 2024 BST isdst=1 gmtoff=3600
Europe/London  Sun Oct 27 01:00:00 2024 UT = Sun Oct 27 01:00:00 2024 GMT isdst=0 gmtoff=0

Fixes #32039.
2025-04-10 02:47:27 +09:00
Mike Yuan aadb8f9784
test: add test case for PAMName= $SHELL acquisition for root 2025-04-09 19:31:58 +02:00
Mike Yuan 9c0d8b8c4f
core/exec-invoke: consult NSS for root user creds if SetLoginEnvironment=/PAMName= 2025-04-09 19:31:58 +02:00
Mike Yuan 2fb438cc88
core/exec-invoke: never override acquired user cred with fallback one 2025-04-09 19:30:17 +02:00
Mike Yuan ba7fb8cf5f
run0: make sure we submit $SHELL to remote
Normally, the service manager sets $SHELL to the target user's
login shell, but run0 always overrides that with either
originating user's shell or value from --setenv=SHELL=. In both cases
$SHELL needs to be sent.

Fixes #35007
2025-04-09 19:30:17 +02:00
Daan De Meyer 2c885a0332
Two fixes to reduce the number of unnecessary rebuilds (#37069) 2025-04-09 17:12:07 +02:00
Daan De Meyer aba3ef6616 mkosi: Set time-epoch= to fixed value
Turns out makepkg sets $SOURCE_DATE_EPOCH= to the current time for
every build if not set explicitly which causes full rebuilds if we
don't set time-epoch explicitly ourselves, so let's do that everywhere
to avoid unnecessary rebuilds.
2025-04-09 16:21:17 +02:00
Daan De Meyer d6a29eee2b elf2efi: Deal properly with empty $SOURCE_DATE_EPOCH 2025-04-09 16:21:13 +02:00
Daan De Meyer b2634bde3c meson: Use custom_target() instead of vcs_tag()
vsc_tag() always reruns even if the vcs-tag option is disabled. Let's
use custom_target() instead so that we can only enable build_always_stale
if the vcs-tag option is enabled.
2025-04-09 16:21:08 +02:00
Daan De Meyer ad04dc4116 exec-invoke: Fix two log messages 2025-04-09 16:21:03 +02:00
Luca Boccassi 5e5f792193 mkosi: drop os-release symlink for minimal-base image
[  385s] ERROR: link target doesn't exist (neither in build root nor in installed system):
[  385s]   /usr/lib/systemd/tests/mkosi/mkosi.images/minimal-base/mkosi.extra/etc/os-release -> ../usr/lib/os-release

It shouldn't be even needed, everything should look in /usr/lib/os-release too

Follow-up for a0ce5e642f
2025-04-09 15:19:18 +01:00
Luca Boccassi 4dca06cba9
udev: several trivial cleanups (#37059) 2025-04-09 10:32:42 +01:00
Yu Watanabe 3861bfb99f test: drop unnecessary comparison and use correct assertion macros
Follow-up for 8951706784.
Fixes CID#1608873 and CID#1608874.
2025-04-09 17:16:57 +09:00
hsu zangmen 3d5f31c133 po: Translated using Weblate (Chinese (Traditional) (zh_TW))
Currently translated at 100.0% (257 of 257 strings)

Co-authored-by: hsu zangmen <chzang55@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/zh_TW/
Translation: systemd/main
2025-04-09 12:30:45 +09:00
Yu Watanabe e2e37fd009 udev-manager: move functions to place related functions closer together
No functional change, just refactoring.
2025-04-09 08:57:27 +09:00
Yu Watanabe 9b6bf4e10e udev: merge manager_init() into manager_main()
It is not necessary to read cgroup path and passed fds earlier,
especially when legacy --daemon option is specified.
2025-04-09 08:57:21 +09:00
Yu Watanabe 4cd9f59b86 udev-config: restore log level set by systemd.log_level on reload
If previously log level was specified in udev.conf but not now,
then let's make 'udevadm control --reload' sets the log level
specified by systemd.log_level.
2025-04-09 08:57:12 +09:00
Yu Watanabe a6c4a7098d shell-completion/udevadm: support dissect_image builtin
Follow-up for a8b2302bc1.
2025-04-09 08:56:40 +09:00
Busayo Dada 8951706784 test: Improve coverage in test-memfd-util and use ASSERT_OK() macro and friends 2025-04-09 06:45:12 +09:00
Yu Watanabe 73a0b247c8
udev-watch: add inotify watch by manager process (#37023)
This solves potential race in simultaneous addition of inotify watches
and removal of target device(s).
2025-04-09 06:43:24 +09:00
Yu Watanabe 511619087b udev: adjust event source priorities 2025-04-09 04:26:09 +09:00
Yu Watanabe 7e50402aa3 udev-watch: add inotify watch by manager process
Previously, inotify watch on a device node was added/removed by a
worker process processing the relevant uevent. However, that could not
avoid races. For example,
1. A device node X is removed by the kernel (e.g. unplug USB memory), and
   the kernel removes the inotify watch for the device node and produces
   IN_IGNORED event and 'remove' uevent for the device.
2. Before udevd processes the 'remove' uevent of the device, a worker
   process may try to add an inotify watch on another device node Y.
   As the inotify watch on X has been already removed, the worker may
   acquire the same watch handle that was previously assigned to X.
3. Since the 'remove' uevent for X is not processed yet, the symlink
   named with the watch handle still exists and points to X. So, the
   worker process for Y cannot add the symlink...

To avoid such races, let's sequentially add/remove inotify watch by the
manager process.

Note, this potentially reduces performance on boot when there exists
huge amount of disks and/or partitions.
2025-04-09 04:26:06 +09:00
Daan De Meyer 36645ec255 mkosi: Set mitigations=off
Might as well disable mitigations for these VMs. Who knows, maybe it'll
speed something up.
2025-04-08 20:54:57 +02:00
Michal Sekletar 8b5e3be88e basic/namespace-util: obtain uid and gid before unsharing user namespace
Getting user and group after unsharing user namespace is too late
because without any mapping, i.e. just after unshare(), we are mapped to
nobody.
2025-04-09 03:06:05 +09:00
Daan De Meyer 278d5bfd7e mkosi: Make MinimumVersion= a git commit
With the latest mkosi it's possible for MinimumVersion= to be a git
commit so let's start making use of that. This will make mkosi fail
if it's executed within the systemd repository and the checked out
commit is too old.

Putting the mkosi commit sha in mkosi/mkosi.conf also allows retrieving
it without having the full source tree available.

We also make a bunch of improvements to the fetch-mkosi.py script.
2025-04-08 18:35:04 +02:00
Erin Shepherd 60cd0cc77a userdb: add support for printing the UUID from user and group records 2025-04-08 12:07:46 +00:00
Daan De Meyer a0ce5e642f test: Install files required to run integration tests standalone
Let's make it possible to run the integration tests without requiring
the sources by installing the mkosi and integration-tests directories.
2025-04-08 13:02:24 +02:00
Luca Boccassi 442d8c3f06
TEST-04-JOURNAL: include util.sh before calling cgroupfs_supports_user_xattrs() (#37039)
Fixes a bug introduced by 46322f2742
(v256).
Fixes #36991.
2025-04-08 09:52:13 +01:00
Yu Watanabe f0cf0c9ba7
TEST-17-UDEV: several follow-ups (#37042) 2025-04-08 16:43:03 +09:00
Luca Boccassi a088ab8d42
udev: fix potential stuck on exit (#37022)
If an event is requeued after termination is requested, previously
systemd-udevd never called sd_event_exit() and stuck.
2025-04-07 23:54:23 +01:00
Jules Lamur 06fadc4286 fstab-generator: fix options in systemd.mount-extra= arg
Fixes a bug introduced by 55365b0a23 (v254).

The arguments `(rd.)systemd.mount-extra` take a value that looks like
`WHAT:WHERE[:FSTYPE[:OPTIONS]]`. The `OPTIONS` were parsed into a nulstr
where a comma-separated c-string was expected. This leads to a bug where
only the first option was taken into account by the generator.

For example, if you passed `systemd.mount-extra=/x:/y:baz:ro,defaults`
to the kernel, `systemd-fstab-generator` would translate that into a
nulstr: `ro\0defaults\0`.
Since methods processing options in the generator expected a
comma-separated c-string, they would only see the first option, `ro` in
this case.
2025-04-08 07:10:07 +09:00
Luca Boccassi 5f8e5297b4 test: switch to new config keyword for bind9 >= 9.21
bind9 9.21 removed the deprecated 'managed-keys', swap it with
'trust-anchors' if the version is 9.21 or newer

[   20.654086] TEST-75-RESOLVED.sh[1217]: + delv -a /etc/bind.keys @ns1.unsigned.test signed.test
[   20.654425] TEST-75-RESOLVED.sh[1218]: + tee /tmp/tmp.D4LNomAKqY
[   20.672599] TEST-75-RESOLVED.sh[1218]: ;; /etc/bind.keys:1: option 'managed-keys' no longer exists
2025-04-08 07:09:26 +09:00
Yu Watanabe 9e372b643b TEST-04-JOURNAL: sync journal in test script, and find journal with invocation ID
Hopefully improve the stability of the test.
2025-04-08 06:56:52 +09:00
Erin Shepherd 800afbbcd7 JSON User/Group records: Add properties for UUIDs
It is useful to have stable and unique identifiers for a security principal.
The majority of identitiy management systems in use with Unix systems today
(e.g. Active Directory objectGUID, FreeIPA ipaUniqueID, Kanidm UUIDs) assign
each account and group a unique UUID and exposing that to applications allows
them to refer to accounts in a stable manner.

This change does not implement user or group lookup by UUID; that is left for
a later PR.
2025-04-07 23:50:35 +02:00
Yu Watanabe 86d59686b7 TEST-04-JOURNAL: include util.sh before calling cgroupfs_supports_user_xattrs()
Fixes a bug introduced by 46322f2742 (v256).
Fixes #36991.
2025-04-08 06:39:06 +09:00
Yu Watanabe ae84aa286a TEST-17-UDEV: fd may be >= 10
Follow-up for db5d89309a.
2025-04-08 06:16:14 +09:00
Yu Watanabe 9f7ddd2955 TEST-17-UDEV: update rules filename
Follow-up for 40959dcc02.
2025-04-08 06:15:22 +09:00
Yu Watanabe bd05126399
nspawn-oci: replace use of deprecated cgroup v1 properties with v2 ones (#37038) 2025-04-08 05:28:11 +09:00
Luca Boccassi 2a9f618276 base-filesystem: avoid creating /lib64 symlink on existing rootfs
While all distributions agree on where the basic rootfs symlinks
(/bin /sbin /lib) should point to, not all of them agree on the
target of /lib64. Debian and derivatives, expect something different
than Fedora et al. This is mostly due to the different way multiarch
vs multilib are designed.

This can lead to the situation where running systemd-nspawn on Fedora
to boot a Debian container creates an incompatible symlink in the guest
persistent, pre-created and pre-populated root filesystem, causing
issues due to these incompatibilities.

While it would be great if Debian and derivatives had the same
expectations as the rest of the world, this is baked in many places
and not likely to ever be fixable, as the multiarch vs multilib
behaviours are now very entrenched, and changing it would break
compatibilities left and right.

The core purpose of base-filesystem was to allow bringing up a system
with an empty/ephemeral/etc rootfs (and a /usr/ image on top). So as
a workaround, create /lib64 only if we detect that we have created
/bin /lib and /sbin, as that's a sure sign we are booting into an
empty rootfs that needs to be populated.
Conversely, if the filesystem _already_ has /bin /sbin and /lib,
it means it is not ephemeral and it is pre-prepared and persistent,
so it's a good idea to avoid second-guessing the image builder tool
or the package manager and override what it does, and just let them
carry on with the system however they configured it.

Reworked and reworded, original author: Helmut Grohne <helmut@subdivi.de>
2025-04-08 05:27:31 +09:00
Vitaly Kuznetsov f501830595 man: mention "overlay" as a possible option for systemd.volatile
systemd.volatile=overlay is described in the text below, however, it
is missing in the enclosed list of possible options in the beginning.
2025-04-08 02:29:29 +09:00
Yu Watanabe aed61aa382 nspawn/oci: replace use of deprecated BlockIOWeight/BlockIODeviceWeight with IOWeight/IODeviceWeight 2025-04-08 02:08:37 +09:00
Yu Watanabe 173ffdaffb nspawn/oci: replace use of deprecated CPUShares with CPUWeight 2025-04-08 02:08:37 +09:00
Yu Watanabe b7fb6ec34f nspawn/oci: also set CPUQuotaPeriodUSec DBus property 2025-04-08 02:08:37 +09:00
Yu Watanabe c019af5eed test-notify-recv: fix message string
Follow-up for 2351bc991e.
Addresses https://github.com/systemd/systemd/pull/37016#discussion_r2031363409.
2025-04-08 02:04:13 +09:00
Yu Watanabe b135cb321a udev: drop unnecessary discardment of queued events
With the previous commit, now on_post_exit() checks only events
currently being processed. Hence, it is not necessary to discard
queued events in manager_exit().

Also, as already SIGTERM is sent to all workers, kill workers timer
is not necessary anymore after manager_exit(), hence disable it.

This mostly does not change any behavior. Just refactoring and
preparation for later change.
2025-04-07 22:17:16 +09:00
Yu Watanabe 45e8c283d8 udev: do not wait for event queue being empty on exit
When the manager process is requested to terminate, if a worker process
try to lock a block device and failed, then the worker returns a
TRY_AGAIN notification and the event is requeued. Hence, the event queue
may have pending events even after manager_exit() is called. In such
situation, sd_event_exit() will never called, and udevd will stuck.

This makes, after termination is requested, it only checks whether there
are any events currently being processed.
2025-04-07 22:17:16 +09:00
Yu Watanabe b6ede8e275 udev: unconditionally send signals to workers
It is not necessary to wait for a worker processing an event before
sending SIGTERM. Workers will handle SIGTERM after they finish events
that they are currently processing. Let's send SIGTERM whenever it
necessary.
2025-04-07 22:17:16 +09:00
Yu Watanabe b75841029f udev: split out two functions from on_post()
No functional change, just refactoring and preparation for later change.
2025-04-07 22:17:16 +09:00
757 changed files with 4445 additions and 5650 deletions

View File

@ -25,7 +25,7 @@ jobs:
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: systemd/mkosi@a1a7e1f63e1726d88d5770fa06b29201d73e31a3 - uses: systemd/mkosi@dbb4020beee2cdf250f93a425794f1cf8b0fe693
# Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space # Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space
# immediately, we remove the files in the background. However, we first move them to a different location # immediately, we remove the files in the background. However, we first move them to a different location
@ -90,7 +90,6 @@ jobs:
sudo mkosi sandbox -- \ sudo mkosi sandbox -- \
meson setup \ meson setup \
--buildtype=debugoptimized \ --buildtype=debugoptimized \
-Dintegration-tests=true \
build build
- name: Build image - name: Build image
@ -120,7 +119,8 @@ jobs:
meson test \ meson test \
-C build \ -C build \
--no-rebuild \ --no-rebuild \
--suite integration-tests \ --setup=integration \
--suite=integration-tests \
--print-errorlogs \ --print-errorlogs \
--no-stdsplit \ --no-stdsplit \
--num-processes "$(($(nproc) - 1))" \ --num-processes "$(($(nproc) - 1))" \

View File

@ -120,7 +120,7 @@ jobs:
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: systemd/mkosi@a1a7e1f63e1726d88d5770fa06b29201d73e31a3 - uses: systemd/mkosi@dbb4020beee2cdf250f93a425794f1cf8b0fe693
# Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space # Freeing up disk space with rm -rf can take multiple minutes. Since we don't need the extra free space
# immediately, we remove the files in the background. However, we first move them to a different location # immediately, we remove the files in the background. However, we first move them to a different location
@ -197,7 +197,6 @@ jobs:
sudo mkosi sandbox -- \ sudo mkosi sandbox -- \
meson setup \ meson setup \
--buildtype=debugoptimized \ --buildtype=debugoptimized \
-Dintegration-tests=true \
-Dbpf-framework=disabled \ -Dbpf-framework=disabled \
build build
@ -233,7 +232,8 @@ jobs:
meson test \ meson test \
-C build \ -C build \
--no-rebuild \ --no-rebuild \
--suite integration-tests \ --setup=integration \
--suite=integration-tests \
--print-errorlogs \ --print-errorlogs \
--no-stdsplit \ --no-stdsplit \
--num-processes "$(($(nproc) - 1))" \ --num-processes "$(($(nproc) - 1))" \

4
.gitignore vendored
View File

@ -24,8 +24,8 @@ __pycache__/
/ID /ID
/build* /build*
/install-tree /install-tree
/mkosi.key /mkosi/mkosi.key
/mkosi.crt /mkosi/mkosi.crt
/mkosi.tools/ /mkosi.tools/
/mkosi.tools.manifest /mkosi.tools.manifest
/mkosi/mkosi.local.conf /mkosi/mkosi.local.conf

View File

@ -39,7 +39,7 @@ jobs:
trigger: pull_request trigger: pull_request
fmf_url: https://src.fedoraproject.org/rpms/systemd fmf_url: https://src.fedoraproject.org/rpms/systemd
# This is automatically updated by tools/fetch-distro.py --update fedora # This is automatically updated by tools/fetch-distro.py --update fedora
fmf_ref: 08ce156d74460867657fb9b201c8be93d31e07de fmf_ref: 6646d13acae64665f63354cd60ecf963ee563b96
targets: targets:
- fedora-rawhide-x86_64 - fedora-rawhide-x86_64
# testing-farm in the Fedora repository is explicitly configured to use testing-farm bare metal runners as # testing-farm in the Fedora repository is explicitly configured to use testing-farm bare metal runners as

View File

@ -32,23 +32,23 @@ The following exceptions apply:
* some sources under src/udev/ are licensed under **GPL-2.0-or-later**, * some sources under src/udev/ are licensed under **GPL-2.0-or-later**,
so all udev programs (`systemd-udevd`, `udevadm`, and the udev builtins so all udev programs (`systemd-udevd`, `udevadm`, and the udev builtins
and test programs) are also distributed under **GPL-2.0-or-later**. and test programs) are also distributed under **GPL-2.0-or-later**.
* the header files contained in src/basic/linux/ and src/shared/linux/ are copied * the header files contained in src/basic/include/linux are copied
verbatim from the Linux kernel source tree and are licensed under **GPL-2.0 WITH verbatim from the Linux kernel source tree and are licensed under **GPL-2.0 WITH
Linux-syscall-note** and are used within the scope of the Linux-syscall-note Linux-syscall-note** and are used within the scope of the Linux-syscall-note
exception provisions exception provisions
* the following sources are licensed under the **LGPL-2.0-or-later** license: * the following sources are licensed under the **LGPL-2.0-or-later** license:
- src/basic/utf8.c - src/basic/utf8.c
- src/shared/initreq.h - src/shared/initreq.h
* the src/shared/linux/bpf_insn.h header is copied from the Linux kernel * the src/basic/include/linux/bpf_insn.h header is copied from the Linux kernel
source tree and is licensed under either **BSD-2-Clause** or **GPL-2.0-only**, source tree and is licensed under either **BSD-2-Clause** or **GPL-2.0-only**,
and thus is included in the systemd build under the BSD-2-Clause license. and thus is included in the systemd build under the BSD-2-Clause license.
* The src/basic/linux/wireguard.h header is copied from the Linux kernel * The src/basic/include/linux/wireguard.h header is copied from the Linux kernel
source tree and is licensed under either **MIT** or **GPL-2.0 WITH Linux-syscall-note**, source tree and is licensed under either **MIT** or **GPL-2.0 WITH Linux-syscall-note**,
and thus is included in the systemd build under the MIT license. and thus is included in the systemd build under the MIT license.
* the following sources are licensed under the **MIT** license (in case of our * the following sources are licensed under the **MIT** license (in case of our
scripts, to facilitate copying and reuse of those helpers to other projects): scripts, to facilitate copying and reuse of those helpers to other projects):
- hwdb.d/parse_hwdb.py - hwdb.d/parse_hwdb.py
- src/basic/linux/batman_adv.h - src/basic/include/linux/batman_adv.h
- src/basic/sparse-endian.h - src/basic/sparse-endian.h
- tools/catalog-report.py - tools/catalog-report.py
* the following sources are licensed under the **CC0-1.0** license: * the following sources are licensed under the **CC0-1.0** license:

3
NEWS
View File

@ -96,6 +96,9 @@ CHANGES WITH 258 in spe:
continue to work, update to xf86-input-evdev >= 2.11.0 and continue to work, update to xf86-input-evdev >= 2.11.0 and
xf86-input-libinput >= 1.5.0 before updating to systemd >= 258. xf86-input-libinput >= 1.5.0 before updating to systemd >= 258.
* The meson option 'integration-tests' has been deprecated, and will be
removed in a future release.
— <place>, <date> — <place>, <date>
CHANGES WITH 257: CHANGES WITH 257:

9
TODO
View File

@ -59,8 +59,6 @@ Regularly:
* set_put(), hashmap_put() return values check. i.e. == 0 does not free()! * set_put(), hashmap_put() return values check. i.e. == 0 does not free()!
* use secure_getenv() instead of getenv() where appropriate
* link up selected blog stories from man pages and unit files Documentation= fields * link up selected blog stories from man pages and unit files Documentation= fields
Janitorial Clean-ups: Janitorial Clean-ups:
@ -130,6 +128,13 @@ Deprecations and removals:
Features: Features:
* loginctl: show argv[] of "leader" process in tabular list-sessions output
* loginctl: show "service identifier" in tabular list-sessions output, to make
run0 sessions easily visible.
* run0: maybe enable utmp for run0 sessions, so that they are easily visible.
* maybe replace nss-machines with logic in networkd that registers records with * maybe replace nss-machines with logic in networkd that registers records with
systemd-resolved, based on DHCP leases, so that we gain compat with VMs. systemd-resolved, based on DHCP leases, so that we gain compat with VMs.
Implementation idea: encode in an ifaltname the intended local name to expose this Implementation idea: encode in an ifaltname the intended local name to expose this

View File

@ -5,8 +5,7 @@ set -e
# Exclude following paths from the Coccinelle transformations # Exclude following paths from the Coccinelle transformations
EXCLUDED_PATHS=( EXCLUDED_PATHS=(
"src/boot/efi/*" "src/boot/efi/*"
"src/shared/linux/*" "src/basic/include/linux/*"
"src/basic/linux/*"
# Symlinked to test-bus-vtable-cc.cc, which causes issues with the IN_SET macro # Symlinked to test-bus-vtable-cc.cc, which causes issues with the IN_SET macro
"src/libsystemd/sd-bus/test-bus-vtable.c" "src/libsystemd/sd-bus/test-bus-vtable.c"
"src/libsystemd/sd-journal/lookup3.c" "src/libsystemd/sd-journal/lookup3.c"

View File

@ -20,6 +20,12 @@ they carry some identical (or at least very similar) fields.
Matches the `gr_name` field of UNIX/glibc NSS `struct group`, Matches the `gr_name` field of UNIX/glibc NSS `struct group`,
or the shadow structure `struct sgrp`'s `sg_namp` field. or the shadow structure `struct sgrp`'s `sg_namp` field.
`uuid` -> A string containing a lowercase UUID that identifies this group.
The same considerations apply to this field as they do to the corresponding field of user records.
Users and groups MUST NOT share the same UUID unless they are semantically
the same security principal e.g. if a system synthesizes a single-user group from
user records to be the user's primary group.
`realm` → The "realm" the group belongs to, conceptually identical to the same field of user records. `realm` → The "realm" the group belongs to, conceptually identical to the same field of user records.
A string in DNS domain name syntax. A string in DNS domain name syntax.

View File

@ -18,7 +18,7 @@ compiler you want to use and which part of the test suite you want to run.
To build with sanitizers in mkosi, create a file `mkosi/mkosi.local.conf` and add the following contents: To build with sanitizers in mkosi, create a file `mkosi/mkosi.local.conf` and add the following contents:
``` ```
[Content] [Build]
Environment=SANITIZERS=address,undefined Environment=SANITIZERS=address,undefined
``` ```

View File

@ -234,6 +234,13 @@ retrievable and resolvable under every name listed here, pretty much everywhere
the primary user name is. If logging in is attempted via an alias name it the primary user name is. If logging in is attempted via an alias name it
should be normalized to the primary name. should be normalized to the primary name.
`uuid` -> A string containing a lowercase UUID that identifies this user.
The UUID should be assigned to the user at creation, be the same across multiple machines,
and never change (even if the user's username, realm or other identifying attributes change).
When the user database is backed by Microsoft Active Directory, this field should contain
he value from the [objectGUID](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-ada3/937eb5c6-f6b3-4652-a276-5d6bb8979658)
attribute. The same UUID can be retrieved via `mbr_uid_to_uuid` on macOS.
`blobDirectory` → The absolute path to a world-readable copy of the user's blob `blobDirectory` → The absolute path to a world-readable copy of the user's blob
directory. See [Blob Directories](/USER_RECORD_BLOB_DIRS) for more details. directory. See [Blob Directories](/USER_RECORD_BLOB_DIRS) for more details.

View File

@ -383,6 +383,7 @@ evdev:name:gpio-keys:phys:gpio-keys/input0:ev:3:dmi:bvn*:bvr*:bd*:svncube:pni1-T
########################################################### ###########################################################
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pn*:* evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pn*:*
KEYBOARD_KEY_68=prog2 # G-Mode (Dell-specific)
KEYBOARD_KEY_81=playpause # Play/Pause KEYBOARD_KEY_81=playpause # Play/Pause
KEYBOARD_KEY_82=stopcd # Stop KEYBOARD_KEY_82=stopcd # Stop
KEYBOARD_KEY_83=previoussong # Previous song KEYBOARD_KEY_83=previoussong # Previous song

View File

@ -398,10 +398,12 @@
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>
<term><option>--no-variables</option></term> <term><option>--variables=yes|no</option></term>
<listitem><para>Do not touch the firmware's boot loader list stored in EFI variables.</para> <listitem><para>Controls whether to touch the firmware's boot loader list stored in EFI variables,
and other EFI variables. If not specified defaults to no when execution in a container runtime is
detected, yes otherwise.</para>
<xi:include href="version-info.xml" xpointer="v220"/></listitem> <xi:include href="version-info.xml" xpointer="v258"/></listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>

View File

@ -182,11 +182,12 @@
archive, possibly compressed with archive, possibly compressed with
<citerefentry project='die-net'><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry project='die-net'><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry project='die-net'><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry project='die-net'><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry project='die-net'><refentrytitle>zstd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
or or
<citerefentry project='die-net'><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry>. <citerefentry project='die-net'><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
It will then be unpacked into its own It will then be unpacked into its own
subvolume/directory. When <command>import-raw</command> is used, the file should be a qcow2 or raw subvolume/directory. When <command>import-raw</command> is used, the file should be a qcow2 or raw
disk image, possibly compressed with xz, gzip or bzip2. If the second argument (the resulting image disk image, possibly compressed with xz, gzip, zstd or bzip2. If the second argument (the resulting image
name) is not specified, it is automatically derived from the file name. If the filename is passed as name) is not specified, it is automatically derived from the file name. If the filename is passed as
<literal>-</literal>, the image is read from standard input, in which case the second argument is <literal>-</literal>, the image is read from standard input, in which case the second argument is
mandatory.</para> mandatory.</para>
@ -222,6 +223,8 @@
<citerefentry project='die-net'><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry project='die-net'><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
if it ends in <literal>.xz</literal>, with if it ends in <literal>.xz</literal>, with
<citerefentry project='die-net'><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry>, <citerefentry project='die-net'><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
if it ends in <literal>.zst</literal>, with
<citerefentry project='die-net'><refentrytitle>zstd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
and if it ends in <literal>.bz2</literal>, with and if it ends in <literal>.bz2</literal>, with
<citerefentry project='die-net'><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry>. <citerefentry project='die-net'><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
If the path ends in neither, the file is left uncompressed. If the second argument is missing, the image If the path ends in neither, the file is left uncompressed. If the second argument is missing, the image
@ -315,8 +318,8 @@
<listitem><para>When used with the <option>export-tar</option> or <option>export-raw</option> <listitem><para>When used with the <option>export-tar</option> or <option>export-raw</option>
commands, specifies the compression format to use for the resulting file. Takes one of commands, specifies the compression format to use for the resulting file. Takes one of
<literal>uncompressed</literal>, <literal>xz</literal>, <literal>gzip</literal>, <literal>uncompressed</literal>, <literal>xz</literal>, <literal>gzip</literal>,
<literal>bzip2</literal>. By default, the format is determined automatically from the output image <literal>zst</literal>, <literal>bzip2</literal>. By default, the format is determined
file name passed.</para> automatically from the output image file name passed.</para>
<xi:include href="version-info.xml" xpointer="v256"/></listitem> <xi:include href="version-info.xml" xpointer="v256"/></listitem>
</varlistentry> </varlistentry>
@ -450,6 +453,7 @@
<member><citerefentry project='die-net'><refentrytitle>tar</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> <member><citerefentry project='die-net'><refentrytitle>tar</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry project='die-net'><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> <member><citerefentry project='die-net'><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry project='die-net'><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> <member><citerefentry project='die-net'><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry project='die-net'><refentrytitle>zstd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry project='die-net'><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> <member><citerefentry project='die-net'><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
</simplelist></para> </simplelist></para>
</refsect1> </refsect1>

View File

@ -161,12 +161,12 @@
<term><varname>systemd.volatile=</varname></term> <term><varname>systemd.volatile=</varname></term>
<listitem> <listitem>
<para>This parameter controls whether the system shall boot up in volatile mode. Takes a boolean argument, or <para>This parameter controls whether the system shall boot up in volatile mode. Takes a boolean argument, or
the special value <literal>state</literal>. If false (the default), normal boot mode is selected, the root the special values <literal>state</literal> or <literal>overlay</literal>. If false (the default), normal boot
directory and <filename>/var/</filename> are mounted as specified on the kernel command line or mode is selected, the root directory and <filename>/var/</filename> are mounted as specified on the kernel
<filename>/etc/fstab</filename>, or otherwise configured. If true, full state-less boot mode is selected. In command line or <filename>/etc/fstab</filename>, or otherwise configured. If true, full state-less boot mode
this case, the root directory is mounted as volatile memory file system (<literal>tmpfs</literal>), and only is selected. In this case, the root directory is mounted as volatile memory file system (<literal>tmpfs</literal>),
<filename>/usr/</filename> is mounted from the file system configured as root device, in read-only mode. This and only <filename>/usr/</filename> is mounted from the file system configured as root device, in read-only mode.
enables fully state-less boots were the vendor-supplied OS is used as shipped, with only default This enables fully state-less boots were the vendor-supplied OS is used as shipped, with only default
configuration and no stored state in effect, as <filename>/etc/</filename> and <filename>/var/</filename> (as configuration and no stored state in effect, as <filename>/etc/</filename> and <filename>/var/</filename> (as
well as all other resources shipped in the root file system) are reset at boot and lost on shutdown. If this well as all other resources shipped in the root file system) are reset at boot and lost on shutdown. If this
setting is set to <literal>state</literal> the root file system is mounted read-only, however setting is set to <literal>state</literal> the root file system is mounted read-only, however

View File

@ -872,6 +872,7 @@
<member><citerefentry project='die-net'><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> <member><citerefentry project='die-net'><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry project='die-net'><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> <member><citerefentry project='die-net'><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry project='die-net'><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry></member> <member><citerefentry project='die-net'><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
<member><citerefentry project='die-net'><refentrytitle>zstd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
</simplelist></para> </simplelist></para>
</refsect1> </refsect1>

View File

@ -214,12 +214,13 @@ node /org/freedesktop/import1 {
to the tar or raw file to import. It should reference a file on disk, a pipe or a socket. When to the tar or raw file to import. It should reference a file on disk, a pipe or a socket. When
<function>ImportTar()</function>/<function>ImportTarEx()</function> is used the file descriptor should <function>ImportTar()</function>/<function>ImportTarEx()</function> is used the file descriptor should
refer to a tar file, optionally compressed with <citerefentry project="die-net"><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry>, refer to a tar file, optionally compressed with <citerefentry project="die-net"><refentrytitle>gzip</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry project="die-net"><refentrytitle>zstd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry project="die-net"><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry>, or <citerefentry project="die-net"><refentrytitle>bzip2</refentrytitle><manvolnum>1</manvolnum></citerefentry>, or
<citerefentry project="die-net"><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry>. <citerefentry project="die-net"><refentrytitle>xz</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
<command>systemd-importd</command> will detect the used compression scheme (if any) automatically. When <command>systemd-importd</command> will detect the used compression scheme (if any) automatically. When
<function>ImportRaw()</function>/<function>ImportRawEx()</function> is used the file descriptor should <function>ImportRaw()</function>/<function>ImportRawEx()</function> is used the file descriptor should
refer to a raw or qcow2 disk image containing an MBR or GPT disk label, also optionally compressed with refer to a raw or qcow2 disk image containing an MBR or GPT disk label, also optionally compressed with
gzip, bzip2 or xz. In either case, if the file is specified as a file descriptor on disk, progress gzip, zstd, bzip2 or xz. In either case, if the file is specified as a file descriptor on disk, progress
information is generated for the import operation (as in that case we know the total size on disk). If information is generated for the import operation (as in that case we know the total size on disk). If
a socket or pipe is specified, progress information is not available. The file descriptor argument is a socket or pipe is specified, progress information is not available. The file descriptor argument is
followed by a local name for the image. This should be a name suitable as a hostname and will be used followed by a local name for the image. This should be a name suitable as a hostname and will be used
@ -250,9 +251,9 @@ node /org/freedesktop/import1 {
name to export as their first parameter, followed by a file descriptor (opened for writing) where the name to export as their first parameter, followed by a file descriptor (opened for writing) where the
tar or raw file will be written. It may either reference a file on disk or a pipe/socket. The third tar or raw file will be written. It may either reference a file on disk or a pipe/socket. The third
argument specifies in which compression format to write the image. It takes one of argument specifies in which compression format to write the image. It takes one of
<literal>uncompressed</literal>, <literal>xz</literal>, <literal>bzip2</literal> or <literal>uncompressed</literal>, <literal>xz</literal>, <literal>bzip2</literal>,
<literal>gzip</literal>, depending on which compression scheme is required. The image written to the <literal>gzip</literal> or <literal>zstd</literal>, depending on which compression scheme is required.
specified file descriptor will be a tar file in case of The image written to the specified file descriptor will be a tar file in case of
<function>ExportTar()</function>/<function>ExportTarEx()</function> or a raw disk image in case of <function>ExportTar()</function>/<function>ExportTarEx()</function> or a raw disk image in case of
<function>ExportRaw()</function>/<function>ExportRawEx()</function>. Note that currently raw disk <function>ExportRaw()</function>/<function>ExportRawEx()</function>. Note that currently raw disk
images may not be exported as tar files, and vice versa. This restriction might be lifted images may not be exported as tar files, and vice versa. This restriction might be lifted
@ -267,8 +268,8 @@ node /org/freedesktop/import1 {
<function>PullRaw()</function>/<function>PullRawEx()</function> may be used to download, verify and <function>PullRaw()</function>/<function>PullRawEx()</function> may be used to download, verify and
import a system image from a URL. They take a URL argument which should point to a tar or raw file on import a system image from a URL. They take a URL argument which should point to a tar or raw file on
the <literal>http://</literal> or <literal>https://</literal> protocols, possibly compressed with xz, the <literal>http://</literal> or <literal>https://</literal> protocols, possibly compressed with xz,
bzip2 or gzip. The second argument is a local name for the image. It should be suitable as a hostname, bzip2, gzip or zstd. The second argument is a local name for the image. It should be suitable as a
similarly to the matching argument of the hostname, similarly to the matching argument of the
<function>ImportTar()</function>/<function>ImportTarEx()</function> and <function>ImportTar()</function>/<function>ImportTarEx()</function> and
<function>ImportRaw()</function>/<function>ImportRawEx()</function> methods above. The third argument <function>ImportRaw()</function>/<function>ImportRawEx()</function> methods above. The third argument
indicates the verification mode for the image. It may be one of <literal>no</literal>, indicates the verification mode for the image. It may be one of <literal>no</literal>,

View File

@ -477,8 +477,6 @@ node /org/freedesktop/systemd1 {
@org.freedesktop.DBus.Property.EmitsChangedSignal("const") @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly b DefaultCPUAccounting = ...; readonly b DefaultCPUAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("const") @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly b DefaultBlockIOAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly b DefaultIOAccounting = ...; readonly b DefaultIOAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("const") @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
readonly b DefaultIPAccounting = ...; readonly b DefaultIPAccounting = ...;
@ -719,8 +717,6 @@ node /org/freedesktop/systemd1 {
<!--property DefaultCPUAccounting is not documented!--> <!--property DefaultCPUAccounting is not documented!-->
<!--property DefaultBlockIOAccounting is not documented!-->
<!--property DefaultIOAccounting is not documented!--> <!--property DefaultIOAccounting is not documented!-->
<!--property DefaultIPAccounting is not documented!--> <!--property DefaultIPAccounting is not documented!-->
@ -1167,8 +1163,6 @@ node /org/freedesktop/systemd1 {
<variablelist class="dbus-property" generated="True" extra-ref="DefaultCPUAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultCPUAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultBlockIOAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultIOAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultIOAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultIPAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultIPAccounting"/>
@ -2906,10 +2900,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUWeight = ...; readonly t StartupCPUWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPerSecUSec = ...; readonly t CPUQuotaPerSecUSec = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPeriodUSec = ...; readonly t CPUQuotaPeriodUSec = ...;
@ -2940,18 +2930,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) IODeviceLatencyTargetUSec = [...]; readonly a(st) IODeviceLatencyTargetUSec = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b BlockIOAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t BlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupBlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIODeviceWeight = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOReadBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOWriteBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryAccounting = ...; readonly b MemoryAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...; readonly t DefaultMemoryLow = ...;
@ -2984,8 +2962,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryZSwapWriteback = ...; readonly b MemoryZSwapWriteback = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...'; readonly s DevicePolicy = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(ss) DeviceAllow = [...]; readonly a(ss) DeviceAllow = [...];
@ -3565,10 +3541,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
<!--property StartupCPUWeight is not documented!--> <!--property StartupCPUWeight is not documented!-->
<!--property CPUShares is not documented!-->
<!--property StartupCPUShares is not documented!-->
<!--property CPUQuotaPerSecUSec is not documented!--> <!--property CPUQuotaPerSecUSec is not documented!-->
<!--property CPUQuotaPeriodUSec is not documented!--> <!--property CPUQuotaPeriodUSec is not documented!-->
@ -3599,18 +3571,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
<!--property IODeviceLatencyTargetUSec is not documented!--> <!--property IODeviceLatencyTargetUSec is not documented!-->
<!--property BlockIOAccounting is not documented!-->
<!--property BlockIOWeight is not documented!-->
<!--property StartupBlockIOWeight is not documented!-->
<!--property BlockIODeviceWeight is not documented!-->
<!--property BlockIOReadBandwidth is not documented!-->
<!--property BlockIOWriteBandwidth is not documented!-->
<!--property MemoryAccounting is not documented!--> <!--property MemoryAccounting is not documented!-->
<!--property DefaultMemoryLow is not documented!--> <!--property DefaultMemoryLow is not documented!-->
@ -3643,8 +3603,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
<!--property MemoryZSwapWriteback is not documented!--> <!--property MemoryZSwapWriteback is not documented!-->
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!--> <!--property DevicePolicy is not documented!-->
<!--property DeviceAllow is not documented!--> <!--property DeviceAllow is not documented!-->
@ -4237,10 +4195,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/> <variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/>
@ -4271,18 +4225,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
<variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupBlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIODeviceWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOReadBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWriteBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
@ -4315,8 +4257,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2eservice {
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/> <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
<variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/> <variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/>
@ -5113,10 +5053,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUWeight = ...; readonly t StartupCPUWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPerSecUSec = ...; readonly t CPUQuotaPerSecUSec = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPeriodUSec = ...; readonly t CPUQuotaPeriodUSec = ...;
@ -5147,18 +5083,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) IODeviceLatencyTargetUSec = [...]; readonly a(st) IODeviceLatencyTargetUSec = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b BlockIOAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t BlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupBlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIODeviceWeight = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOReadBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOWriteBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryAccounting = ...; readonly b MemoryAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...; readonly t DefaultMemoryLow = ...;
@ -5191,8 +5115,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryZSwapWriteback = ...; readonly b MemoryZSwapWriteback = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...'; readonly s DevicePolicy = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(ss) DeviceAllow = [...]; readonly a(ss) DeviceAllow = [...];
@ -5784,10 +5706,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
<!--property StartupCPUWeight is not documented!--> <!--property StartupCPUWeight is not documented!-->
<!--property CPUShares is not documented!-->
<!--property StartupCPUShares is not documented!-->
<!--property CPUQuotaPerSecUSec is not documented!--> <!--property CPUQuotaPerSecUSec is not documented!-->
<!--property CPUQuotaPeriodUSec is not documented!--> <!--property CPUQuotaPeriodUSec is not documented!-->
@ -5818,18 +5736,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
<!--property IODeviceLatencyTargetUSec is not documented!--> <!--property IODeviceLatencyTargetUSec is not documented!-->
<!--property BlockIOAccounting is not documented!-->
<!--property BlockIOWeight is not documented!-->
<!--property StartupBlockIOWeight is not documented!-->
<!--property BlockIODeviceWeight is not documented!-->
<!--property BlockIOReadBandwidth is not documented!-->
<!--property BlockIOWriteBandwidth is not documented!-->
<!--property MemoryAccounting is not documented!--> <!--property MemoryAccounting is not documented!-->
<!--property DefaultMemoryLow is not documented!--> <!--property DefaultMemoryLow is not documented!-->
@ -5862,8 +5768,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
<!--property MemoryZSwapWriteback is not documented!--> <!--property MemoryZSwapWriteback is not documented!-->
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!--> <!--property DevicePolicy is not documented!-->
<!--property DeviceAllow is not documented!--> <!--property DeviceAllow is not documented!-->
@ -6428,10 +6332,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/> <variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/>
@ -6462,18 +6362,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
<variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupBlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIODeviceWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOReadBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWriteBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
@ -6506,8 +6394,6 @@ node /org/freedesktop/systemd1/unit/avahi_2ddaemon_2esocket {
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/> <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
<variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/> <variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/>
@ -7136,10 +7022,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUWeight = ...; readonly t StartupCPUWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPerSecUSec = ...; readonly t CPUQuotaPerSecUSec = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPeriodUSec = ...; readonly t CPUQuotaPeriodUSec = ...;
@ -7170,18 +7052,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) IODeviceLatencyTargetUSec = [...]; readonly a(st) IODeviceLatencyTargetUSec = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b BlockIOAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t BlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupBlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIODeviceWeight = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOReadBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOWriteBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryAccounting = ...; readonly b MemoryAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...; readonly t DefaultMemoryLow = ...;
@ -7214,8 +7084,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryZSwapWriteback = ...; readonly b MemoryZSwapWriteback = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...'; readonly s DevicePolicy = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(ss) DeviceAllow = [...]; readonly a(ss) DeviceAllow = [...];
@ -7737,10 +7605,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
<!--property StartupCPUWeight is not documented!--> <!--property StartupCPUWeight is not documented!-->
<!--property CPUShares is not documented!-->
<!--property StartupCPUShares is not documented!-->
<!--property CPUQuotaPerSecUSec is not documented!--> <!--property CPUQuotaPerSecUSec is not documented!-->
<!--property CPUQuotaPeriodUSec is not documented!--> <!--property CPUQuotaPeriodUSec is not documented!-->
@ -7771,18 +7635,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
<!--property IODeviceLatencyTargetUSec is not documented!--> <!--property IODeviceLatencyTargetUSec is not documented!-->
<!--property BlockIOAccounting is not documented!-->
<!--property BlockIOWeight is not documented!-->
<!--property StartupBlockIOWeight is not documented!-->
<!--property BlockIODeviceWeight is not documented!-->
<!--property BlockIOReadBandwidth is not documented!-->
<!--property BlockIOWriteBandwidth is not documented!-->
<!--property MemoryAccounting is not documented!--> <!--property MemoryAccounting is not documented!-->
<!--property DefaultMemoryLow is not documented!--> <!--property DefaultMemoryLow is not documented!-->
@ -7815,8 +7667,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
<!--property MemoryZSwapWriteback is not documented!--> <!--property MemoryZSwapWriteback is not documented!-->
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!--> <!--property DevicePolicy is not documented!-->
<!--property DeviceAllow is not documented!--> <!--property DeviceAllow is not documented!-->
@ -8297,10 +8147,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/> <variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/>
@ -8331,18 +8177,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
<variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupBlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIODeviceWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOReadBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWriteBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
@ -8375,8 +8209,6 @@ node /org/freedesktop/systemd1/unit/home_2emount {
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/> <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
<variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/> <variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/>
@ -9132,10 +8964,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUWeight = ...; readonly t StartupCPUWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPerSecUSec = ...; readonly t CPUQuotaPerSecUSec = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPeriodUSec = ...; readonly t CPUQuotaPeriodUSec = ...;
@ -9166,18 +8994,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) IODeviceLatencyTargetUSec = [...]; readonly a(st) IODeviceLatencyTargetUSec = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b BlockIOAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t BlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupBlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIODeviceWeight = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOReadBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOWriteBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryAccounting = ...; readonly b MemoryAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...; readonly t DefaultMemoryLow = ...;
@ -9210,8 +9026,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryZSwapWriteback = ...; readonly b MemoryZSwapWriteback = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...'; readonly s DevicePolicy = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(ss) DeviceAllow = [...]; readonly a(ss) DeviceAllow = [...];
@ -9715,10 +9529,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
<!--property StartupCPUWeight is not documented!--> <!--property StartupCPUWeight is not documented!-->
<!--property CPUShares is not documented!-->
<!--property StartupCPUShares is not documented!-->
<!--property CPUQuotaPerSecUSec is not documented!--> <!--property CPUQuotaPerSecUSec is not documented!-->
<!--property CPUQuotaPeriodUSec is not documented!--> <!--property CPUQuotaPeriodUSec is not documented!-->
@ -9749,18 +9559,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
<!--property IODeviceLatencyTargetUSec is not documented!--> <!--property IODeviceLatencyTargetUSec is not documented!-->
<!--property BlockIOAccounting is not documented!-->
<!--property BlockIOWeight is not documented!-->
<!--property StartupBlockIOWeight is not documented!-->
<!--property BlockIODeviceWeight is not documented!-->
<!--property BlockIOReadBandwidth is not documented!-->
<!--property BlockIOWriteBandwidth is not documented!-->
<!--property MemoryAccounting is not documented!--> <!--property MemoryAccounting is not documented!-->
<!--property DefaultMemoryLow is not documented!--> <!--property DefaultMemoryLow is not documented!-->
@ -9793,8 +9591,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
<!--property MemoryZSwapWriteback is not documented!--> <!--property MemoryZSwapWriteback is not documented!-->
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!--> <!--property DevicePolicy is not documented!-->
<!--property DeviceAllow is not documented!--> <!--property DeviceAllow is not documented!-->
@ -10257,10 +10053,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/> <variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/>
@ -10291,18 +10083,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
<variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupBlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIODeviceWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOReadBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWriteBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
@ -10335,8 +10115,6 @@ node /org/freedesktop/systemd1/unit/dev_2dsda3_2eswap {
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/> <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
<variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/> <variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/>
@ -10945,10 +10723,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUWeight = ...; readonly t StartupCPUWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPerSecUSec = ...; readonly t CPUQuotaPerSecUSec = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPeriodUSec = ...; readonly t CPUQuotaPeriodUSec = ...;
@ -10979,18 +10753,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) IODeviceLatencyTargetUSec = [...]; readonly a(st) IODeviceLatencyTargetUSec = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b BlockIOAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t BlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupBlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIODeviceWeight = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOReadBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOWriteBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryAccounting = ...; readonly b MemoryAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...; readonly t DefaultMemoryLow = ...;
@ -11023,8 +10785,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryZSwapWriteback = ...; readonly b MemoryZSwapWriteback = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...'; readonly s DevicePolicy = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(ss) DeviceAllow = [...]; readonly a(ss) DeviceAllow = [...];
@ -11138,10 +10898,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
<!--property StartupCPUWeight is not documented!--> <!--property StartupCPUWeight is not documented!-->
<!--property CPUShares is not documented!-->
<!--property StartupCPUShares is not documented!-->
<!--property CPUQuotaPerSecUSec is not documented!--> <!--property CPUQuotaPerSecUSec is not documented!-->
<!--property CPUQuotaPeriodUSec is not documented!--> <!--property CPUQuotaPeriodUSec is not documented!-->
@ -11172,18 +10928,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
<!--property IODeviceLatencyTargetUSec is not documented!--> <!--property IODeviceLatencyTargetUSec is not documented!-->
<!--property BlockIOAccounting is not documented!-->
<!--property BlockIOWeight is not documented!-->
<!--property StartupBlockIOWeight is not documented!-->
<!--property BlockIODeviceWeight is not documented!-->
<!--property BlockIOReadBandwidth is not documented!-->
<!--property BlockIOWriteBandwidth is not documented!-->
<!--property MemoryAccounting is not documented!--> <!--property MemoryAccounting is not documented!-->
<!--property DefaultMemoryLow is not documented!--> <!--property DefaultMemoryLow is not documented!-->
@ -11216,8 +10960,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
<!--property MemoryZSwapWriteback is not documented!--> <!--property MemoryZSwapWriteback is not documented!-->
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!--> <!--property DevicePolicy is not documented!-->
<!--property DeviceAllow is not documented!--> <!--property DeviceAllow is not documented!-->
@ -11338,10 +11080,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/> <variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/>
@ -11372,18 +11110,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
<variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupBlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIODeviceWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOReadBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWriteBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
@ -11416,8 +11142,6 @@ node /org/freedesktop/systemd1/unit/system_2eslice {
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/> <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
<variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/> <variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/>
@ -11569,10 +11293,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUWeight = ...; readonly t StartupCPUWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupCPUShares = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPerSecUSec = ...; readonly t CPUQuotaPerSecUSec = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t CPUQuotaPeriodUSec = ...; readonly t CPUQuotaPeriodUSec = ...;
@ -11603,18 +11323,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) IODeviceLatencyTargetUSec = [...]; readonly a(st) IODeviceLatencyTargetUSec = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b BlockIOAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t BlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t StartupBlockIOWeight = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIODeviceWeight = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOReadBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(st) BlockIOWriteBandwidth = [...];
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryAccounting = ...; readonly b MemoryAccounting = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t DefaultMemoryLow = ...; readonly t DefaultMemoryLow = ...;
@ -11647,8 +11355,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly b MemoryZSwapWriteback = ...; readonly b MemoryZSwapWriteback = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly t MemoryLimit = ...;
@org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly s DevicePolicy = '...'; readonly s DevicePolicy = '...';
@org.freedesktop.DBus.Property.EmitsChangedSignal("false") @org.freedesktop.DBus.Property.EmitsChangedSignal("false")
readonly a(ss) DeviceAllow = [...]; readonly a(ss) DeviceAllow = [...];
@ -11782,10 +11488,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
<!--property StartupCPUWeight is not documented!--> <!--property StartupCPUWeight is not documented!-->
<!--property CPUShares is not documented!-->
<!--property StartupCPUShares is not documented!-->
<!--property CPUQuotaPerSecUSec is not documented!--> <!--property CPUQuotaPerSecUSec is not documented!-->
<!--property CPUQuotaPeriodUSec is not documented!--> <!--property CPUQuotaPeriodUSec is not documented!-->
@ -11816,18 +11518,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
<!--property IODeviceLatencyTargetUSec is not documented!--> <!--property IODeviceLatencyTargetUSec is not documented!-->
<!--property BlockIOAccounting is not documented!-->
<!--property BlockIOWeight is not documented!-->
<!--property StartupBlockIOWeight is not documented!-->
<!--property BlockIODeviceWeight is not documented!-->
<!--property BlockIOReadBandwidth is not documented!-->
<!--property BlockIOWriteBandwidth is not documented!-->
<!--property MemoryAccounting is not documented!--> <!--property MemoryAccounting is not documented!-->
<!--property DefaultMemoryLow is not documented!--> <!--property DefaultMemoryLow is not documented!-->
@ -11860,8 +11550,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
<!--property MemoryZSwapWriteback is not documented!--> <!--property MemoryZSwapWriteback is not documented!-->
<!--property MemoryLimit is not documented!-->
<!--property DevicePolicy is not documented!--> <!--property DevicePolicy is not documented!-->
<!--property DeviceAllow is not documented!--> <!--property DeviceAllow is not documented!-->
@ -12012,10 +11700,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/> <variablelist class="dbus-property" generated="True" extra-ref="StartupCPUWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupCPUShares"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPerSecUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="CPUQuotaPeriodUSec"/>
@ -12046,18 +11730,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
<variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/> <variablelist class="dbus-property" generated="True" extra-ref="IODeviceLatencyTargetUSec"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="StartupBlockIOWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIODeviceWeight"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOReadBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="BlockIOWriteBandwidth"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryAccounting"/>
<variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/> <variablelist class="dbus-property" generated="True" extra-ref="DefaultMemoryLow"/>
@ -12090,8 +11762,6 @@ node /org/freedesktop/systemd1/unit/session_2d1_2escope {
<variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/> <variablelist class="dbus-property" generated="True" extra-ref="MemoryZSwapWriteback"/>
<variablelist class="dbus-property" generated="True" extra-ref="MemoryLimit"/>
<variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/> <variablelist class="dbus-property" generated="True" extra-ref="DevicePolicy"/>
<variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/> <variablelist class="dbus-property" generated="True" extra-ref="DeviceAllow"/>

View File

@ -506,6 +506,9 @@ Jan 12 10:46:45 example.com bluetoothd[8900]: gatt-time-server: Input/output err
<listitem> <listitem>
<para>Reload one or more units if they support it. If not, stop and then start them instead. If the units <para>Reload one or more units if they support it. If not, stop and then start them instead. If the units
are not running yet, they will be started.</para> are not running yet, they will be started.</para>
<para>This has a slightly differing functionality when used in combination with <option>--marked</option>,
see below.</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry> <varlistentry>

View File

@ -24,7 +24,7 @@
<refsynopsisdiv> <refsynopsisdiv>
<programlisting> <programlisting>
Host unix/* vsock/* vsock-mux/* Host unix/* unix,* vsock/* vsock,* vsock-mux/* vsock-mux,*
ProxyCommand /usr/lib/systemd/systemd-ssh-proxy %h %p ProxyCommand /usr/lib/systemd/systemd-ssh-proxy %h %p
ProxyUseFdpass yes ProxyUseFdpass yes
</programlisting> </programlisting>
@ -46,7 +46,7 @@ Host unix/* vsock/* vsock-mux/*
configuration fragment like the following:</para> configuration fragment like the following:</para>
<programlisting> <programlisting>
Host unix/* vsock/* vsock-mux/* Host unix/* unix,* vsock/* vsock,* vsock-mux/* vsock-mux,*
ProxyCommand /usr/lib/systemd/systemd-ssh-proxy %h %p ProxyCommand /usr/lib/systemd/systemd-ssh-proxy %h %p
ProxyUseFdpass yes ProxyUseFdpass yes
CheckHostIP no CheckHostIP no
@ -69,7 +69,9 @@ Host .host
direct <constant>AF_VSOCK</constant> communication between the host and guests, and provide their own direct <constant>AF_VSOCK</constant> communication between the host and guests, and provide their own
multiplexer over <constant>AF_UNIX</constant> sockets. See multiplexer over <constant>AF_UNIX</constant> sockets. See
<ulink url="https://github.com/cloud-hypervisor/cloud-hypervisor/blob/main/docs/vsock.md">cloud-hypervisor VSOCK support</ulink> <ulink url="https://github.com/cloud-hypervisor/cloud-hypervisor/blob/main/docs/vsock.md">cloud-hypervisor VSOCK support</ulink>
and <ulink url="https://github.com/firecracker-microvm/firecracker/blob/main/docs/vsock.md">Using the Firecracker Virtio-vsock Device</ulink>.</para> and <ulink url="https://github.com/firecracker-microvm/firecracker/blob/main/docs/vsock.md">Using the Firecracker Virtio-vsock Device</ulink>.
Note that <literal>,</literal> can be used as a separator instead of <literal>/</literal> to be
compatible with tools like <literal>scp</literal> and <literal>rsync</literal>.</para>
<para>Moreover, connecting to <literal>.host</literal> will connect to the local host via SSH, without <para>Moreover, connecting to <literal>.host</literal> will connect to the local host via SSH, without
involving networking.</para> involving networking.</para>
@ -113,6 +115,12 @@ Host .host
<programlisting>ssh unix/run/ssh-unix-local/socket</programlisting> <programlisting>ssh unix/run/ssh-unix-local/socket</programlisting>
</example> </example>
<example>
<title>Copy local 'foo' file to a local VM with CID 1348</title>
<programlisting>scp foo vsock,1348:</programlisting>
</example>
</refsect1> </refsect1>
<refsect1> <refsect1>

View File

@ -1738,8 +1738,10 @@ NFTSet=prefix:netdev:filter:eth_ipv4_prefix</programlisting>
<term><varname>FirewallMark=</varname></term> <term><varname>FirewallMark=</varname></term>
<listitem> <listitem>
<para>Specifies the iptables firewall mark value to match (a number in the range <para>Specifies the iptables firewall mark value to match (a number in the range
1…4294967295). Optionally, the firewall mask (also a number between 1…4294967295) can be 0…4294967295). Optionally, the firewall mask (also a number between 0…4294967295) can be
suffixed with a slash (<literal>/</literal>), e.g., <literal>7/255</literal>.</para> suffixed with a slash (<literal>/</literal>), e.g., <literal>7/255</literal>. When the
mark value is non-zero and no mask is explicitly specified, all bits of the mark are
compared. </para>
<xi:include href="version-info.xml" xpointer="v235"/> <xi:include href="version-info.xml" xpointer="v235"/>
</listitem> </listitem>

View File

@ -769,6 +769,16 @@
<xi:include href="version-info.xml" xpointer="v258"/> <xi:include href="version-info.xml" xpointer="v258"/>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>--revert</option></term>
<listitem>
<para>Revert settings previously set with <command>udevadm control</command> command. When
specified, settings set with <option>-l/--log-level=</option>, <option>--trace</option>,
<option>-m/--children-max=</option>, and <option>-p/--property=</option> will be cleared.</para>
<xi:include href="version-info.xml" xpointer="v258"/>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-t</option></term> <term><option>-t</option></term>
<term><option>--timeout=<replaceable>seconds</replaceable></option></term> <term><option>--timeout=<replaceable>seconds</replaceable></option></term>

View File

@ -13,6 +13,12 @@ project('systemd', 'c',
meson_version : '>= 0.62.0', meson_version : '>= 0.62.0',
) )
add_test_setup(
'default',
exclude_suites : ['integration-tests'],
is_default : true,
)
project_major_version = meson.project_version().split('.')[0].split('~')[0] project_major_version = meson.project_version().split('.')[0].split('~')[0]
if meson.project_version().contains('.') if meson.project_version().contains('.')
project_minor_version = meson.project_version().split('.')[-1].split('~')[0] project_minor_version = meson.project_version().split('.')[-1].split('~')[0]
@ -339,7 +345,6 @@ meson_build_sh = find_program('tools/meson-build.sh')
want_tests = get_option('tests') want_tests = get_option('tests')
want_slow_tests = want_tests != 'false' and get_option('slow-tests') want_slow_tests = want_tests != 'false' and get_option('slow-tests')
want_fuzz_tests = want_tests != 'false' and get_option('fuzz-tests') want_fuzz_tests = want_tests != 'false' and get_option('fuzz-tests')
want_integration_tests = want_tests != 'false' and get_option('integration-tests')
install_tests = want_tests != 'false' and get_option('install-tests') install_tests = want_tests != 'false' and get_option('install-tests')
if add_languages('cpp', native : false, required : fuzzer_build) if add_languages('cpp', native : false, required : fuzzer_build)
@ -1988,11 +1993,12 @@ endif
conf.set_quoted('VERSION_TAG', version_tag) conf.set_quoted('VERSION_TAG', version_tag)
vcs_tag = get_option('vcs-tag') vcs_tag = get_option('vcs-tag')
version_h = vcs_tag( version_h = custom_target('version',
build_always_stale : vcs_tag,
input : 'src/version/version.h.in', input : 'src/version/version.h.in',
output : 'version.h', output : 'version.h',
fallback : '', capture : true,
command : [vcs_tag ? 'tools/vcs-tag.sh' : 'true', get_option('mode')], command : ['tools/vcs-tag.sh', '@INPUT@', get_option('mode'), vcs_tag ? '1' : '0'],
) )
shared_lib_tag = get_option('shared-lib-tag') shared_lib_tag = get_option('shared-lib-tag')
@ -2047,11 +2053,18 @@ boot_stubs = []
build_dir_include = include_directories('.') build_dir_include = include_directories('.')
basic_includes = include_directories( basic_includes = [
'src/basic', include_directories(
'src/fundamental', 'src/basic',
'src/systemd', 'src/fundamental',
'.') 'src/systemd',
'.',
),
include_directories(
'src/basic/include',
is_system : true,
),
]
libsystemd_includes = [basic_includes, include_directories( libsystemd_includes = [basic_includes, include_directories(
'src/libsystemd/sd-bus', 'src/libsystemd/sd-bus',
@ -2660,10 +2673,6 @@ endif
##################################################################### #####################################################################
mkosi = find_program('mkosi', required : false) mkosi = find_program('mkosi', required : false)
if want_integration_tests and not mkosi.found()
error('Could not find mkosi which is required to run the integration tests')
endif
mkosi_depends = public_programs mkosi_depends = public_programs
foreach executable : ['systemd-journal-remote', 'systemd-sbsign', 'systemd-keyutil'] foreach executable : ['systemd-journal-remote', 'systemd-sbsign', 'systemd-keyutil']
@ -2692,6 +2701,13 @@ if mkosi.found()
) )
endif endif
if install_tests
install_subdir('mkosi',
install_dir : testsdir,
exclude_files : ['mkosi.local.conf', 'mkosi.key', 'mkosi.crt'],
exclude_directories : ['mkosi.local'])
endif
############################################################ ############################################################
subdir('rules.d') subdir('rules.d')

View File

@ -509,7 +509,7 @@ option('install-tests', type : 'boolean', value : false,
description : 'install test executables') description : 'install test executables')
option('log-message-verification', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' }, option('log-message-verification', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'do fake printf() calls to verify format strings') description : 'do fake printf() calls to verify format strings')
option('integration-tests', type : 'boolean', value : false, option('integration-tests', type : 'boolean', value : false, deprecated : true,
description : 'run the integration tests') description : 'run the integration tests')
option('ok-color', type : 'combo', option('ok-color', type : 'combo',

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later # SPDX-License-Identifier: LGPL-2.1-or-later
[Config] [Config]
MinimumVersion=25~devel MinimumVersion=commit:dbb4020beee2cdf250f93a425794f1cf8b0fe693
Dependencies= Dependencies=
exitrd exitrd
initrd initrd
@ -39,15 +39,11 @@ WithTests=no
[Validation] [Validation]
SignExpectedPcr=yes SignExpectedPcr=yes
SignExpectedPcrKey=../mkosi.key
SignExpectedPcrCertificate=../mkosi.crt
VerityKey=../mkosi.key
VerityCertificate=../mkosi.crt
[Content] [Content]
ExtraTrees= ExtraTrees=
mkosi.extra.common mkosi.extra.common
../mkosi.crt:/usr/lib/verity.d/mkosi.crt # sysext verification key mkosi.crt:/usr/lib/verity.d/mkosi.crt # sysext verification key
%O/minimal-0.root-%a.raw:/usr/share/minimal_0.raw %O/minimal-0.root-%a.raw:/usr/share/minimal_0.raw
%O/minimal-0.root-%a-verity.raw:/usr/share/minimal_0.verity %O/minimal-0.root-%a-verity.raw:/usr/share/minimal_0.verity
%O/minimal-0.root-%a-verity-sig.raw:/usr/share/minimal_0.verity.sig %O/minimal-0.root-%a-verity-sig.raw:/usr/share/minimal_0.verity.sig
@ -82,9 +78,9 @@ KernelCommandLine=
oops=panic oops=panic
panic=-1 panic=-1
softlockup_panic=1 softlockup_panic=1
# Disabled due to BTRFS issue, waiting for the fix to become available panic_on_warn=1
panic_on_warn=0
psi=1 psi=1
mitigations=off
Packages= Packages=
acl acl
@ -137,14 +133,14 @@ Packages=
zstd zstd
[Runtime] [Runtime]
SshKey=../mkosi.key
SshCertificate=../mkosi.crt
Credentials= Credentials=
journal.storage=persistent journal.storage=persistent
tty.serial.hvc0.agetty.autologin=root tty.serial.hvc0.agetty.autologin=root
tty.serial.hvc0.login.noauth=yes tty.serial.hvc0.login.noauth=yes
tty.console.agetty.autologin=root tty.console.agetty.autologin=root
tty.console.login.noauth=yes tty.console.login.noauth=yes
tty.virtual.tty1.agetty.autologin=root
tty.virtual.tty1.login.noauth=yes
RuntimeBuildSources=yes RuntimeBuildSources=yes
RuntimeScratch=no RuntimeScratch=no
CPUs=2 CPUs=2

View File

@ -4,6 +4,7 @@
Distribution=arch Distribution=arch
[Content] [Content]
PrepareScripts=systemd.prepare
VolatilePackages= VolatilePackages=
systemd systemd
systemd-libs systemd-libs

View File

@ -17,14 +17,16 @@ for PACKAGE in "${PACKAGES[@]}"; do
sed --quiet 's/^Depends On *: //p' # Filter out everything except "Depends On:" line and fetch dependencies from it. sed --quiet 's/^Depends On *: //p' # Filter out everything except "Depends On:" line and fetch dependencies from it.
)" )"
DEPS="$DEPS $( if ! ((SYSTEMD_REQUIRED_DEPS_ONLY)); then
pacman --sync --info "$PACKAGE" | DEPS="$DEPS $(
sed '1,/^$/d' | # Only keep result from first repository (delete everything after first blank line). pacman --sync --info "$PACKAGE" |
sed --quiet '/Optional Deps/,/Conflicts With/{/Conflicts With/!p}' | # Get every line from "Optional Deps" (inclusive) until "Conflicts With" (exclusive). sed '1,/^$/d' | # Only keep result from first repository (delete everything after first blank line).
sed 's/Optional Deps *: //' | # Drop "Optional Deps :" from first line. sed --quiet '/Optional Deps/,/Conflicts With/{/Conflicts With/!p}' | # Get every line from "Optional Deps" (inclusive) until "Conflicts With" (exclusive).
sed 's/ *\(.*\):.*/\1/' | # Drop descriptions (everything after first colon for all lines). sed 's/Optional Deps *: //' | # Drop "Optional Deps :" from first line.
tr '\n' ' ' # Transform newlines to whitespace. sed 's/ *\(.*\):.*/\1/' | # Drop descriptions (everything after first colon for all lines).
)" tr '\n' ' ' # Transform newlines to whitespace.
)"
fi
done done
echo "$DEPS" | echo "$DEPS" |

View File

@ -5,6 +5,7 @@ Distribution=|centos
Distribution=|fedora Distribution=|fedora
[Content] [Content]
PrepareScripts=systemd.prepare
VolatilePackages= VolatilePackages=
systemd systemd
systemd-boot systemd-boot

View File

@ -8,5 +8,5 @@ Distribution=|fedora
Environment= Environment=
GIT_URL=https://src.fedoraproject.org/rpms/systemd.git GIT_URL=https://src.fedoraproject.org/rpms/systemd.git
GIT_BRANCH=rawhide GIT_BRANCH=rawhide
GIT_COMMIT=08ce156d74460867657fb9b201c8be93d31e07de GIT_COMMIT=6646d13acae64665f63354cd60ecf963ee563b96
PKG_SUBDIR=fedora PKG_SUBDIR=fedora

View File

@ -8,7 +8,12 @@ fi
mapfile -t PACKAGES < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG") mapfile -t PACKAGES < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG")
for DEPS in --requires --recommends --suggests; do DEP_TYPES=(--requires)
if ! ((SYSTEMD_REQUIRED_DEPS_ONLY)); then
DEP_TYPES+=(--recommends --suggests)
fi
for DEPS in "${DEP_TYPES[@]}"; do
# We need --latest-limit=1 to only consider the newest version of the packages. # We need --latest-limit=1 to only consider the newest version of the packages.
# --latest-limit=1 is per <name>.<arch> so we have to pass --arch= explicitly to make sure i686 packages # --latest-limit=1 is per <name>.<arch> so we have to pass --arch= explicitly to make sure i686 packages
# are not considered on x86-64. # are not considered on x86-64.

View File

@ -5,6 +5,7 @@ Distribution=|debian
Distribution=|ubuntu Distribution=|ubuntu
[Content] [Content]
PrepareScripts=systemd.prepare
VolatilePackages= VolatilePackages=
libnss-myhostname libnss-myhostname
libnss-mymachines libnss-mymachines

View File

@ -9,5 +9,5 @@ Environment=
GIT_URL=https://salsa.debian.org/systemd-team/systemd.git GIT_URL=https://salsa.debian.org/systemd-team/systemd.git
GIT_SUBDIR=debian GIT_SUBDIR=debian
GIT_BRANCH=debian/master GIT_BRANCH=debian/master
GIT_COMMIT=46432631232015b78071f84e5a3fb944621c83f7 GIT_COMMIT=91a4d114e0b5a01385477f8862caedc1056fa68b
PKG_SUBDIR=debian PKG_SUBDIR=debian

View File

@ -22,9 +22,14 @@ for PACKAGE in "${PACKAGES[@]}"; do
# Get all the dependencies of the systemd packages including recommended and suggested dependencies. # Get all the dependencies of the systemd packages including recommended and suggested dependencies.
PATTERNS+=( PATTERNS+=(
"?and(?reverse-depends(?exact-name($PACKAGE)), $COMMON)" "?and(?reverse-depends(?exact-name($PACKAGE)), $COMMON)"
"?and(?reverse-recommends(?exact-name($PACKAGE)), $COMMON)"
"?and(?reverse-suggests(?exact-name($PACKAGE)), $COMMON)"
) )
if ! ((SYSTEMD_REQUIRED_DEPS_ONLY)); then
PATTERNS+=(
"?and(?reverse-recommends(?exact-name($PACKAGE)), $COMMON)"
"?and(?reverse-suggests(?exact-name($PACKAGE)), $COMMON)"
)
fi
done done
mkosi-install "${PATTERNS[@]}" mkosi-install "${PATTERNS[@]}"

View File

@ -11,6 +11,7 @@ Repositories=non-oss
SandboxTrees=macros.db_backend:/etc/rpm/macros.db_backend SandboxTrees=macros.db_backend:/etc/rpm/macros.db_backend
[Content] [Content]
PrepareScripts=systemd.prepare
VolatilePackages= VolatilePackages=
libsystemd0 libsystemd0
libudev1 libudev1

View File

@ -9,11 +9,15 @@ fi
mapfile -t PACKAGES < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG") mapfile -t PACKAGES < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG")
DEPS="" DEPS=""
DEP_TYPES=(--requires)
if ! ((SYSTEMD_REQUIRED_DEPS_ONLY)); then
DEP_TYPES+=(--recommends --suggests)
fi
for PACKAGE in "${PACKAGES[@]}"; do for PACKAGE in "${PACKAGES[@]}"; do
# zypper's output is not machine readable so we make do with sed instead. # zypper's output is not machine readable so we make do with sed instead.
DEPS="$DEPS\n$( DEPS="$DEPS\n$(
zypper info --requires --recommends --suggests "$PACKAGE" | zypper info "${DEP_TYPES[@]}" "$PACKAGE" |
sed '/Requires/,$!d' | # Remove everything before Requires line sed '/Requires/,$!d' | # Remove everything before Requires line
sed --quiet 's/^ //p' # All indented lines have dependencies sed --quiet 's/^ //p' # All indented lines have dependencies
)" )"

View File

@ -22,7 +22,7 @@ if ((LLVM)) && [[ -n "$SANITIZERS" ]]; then
MKOSI_LDFLAGS="$MKOSI_LDFLAGS -Wl,-rpath=$(realpath "$(clang --print-runtime-dir)")" MKOSI_LDFLAGS="$MKOSI_LDFLAGS -Wl,-rpath=$(realpath "$(clang --print-runtime-dir)")"
fi fi
MKOSI_MESON_OPTIONS="-D mode=developer -D vcs-tag=${VCS_TAG:-true} -D b_sanitize=${SANITIZERS:-none}" MKOSI_MESON_OPTIONS="-D mode=developer -D vcs-tag=${VCS_TAG:-true} -D b_sanitize=${SANITIZERS:-none} -Dtime-epoch=1744207869"
if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then
MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe" MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe"
fi fi

View File

@ -52,7 +52,7 @@ if ((LLVM)) && [[ -n "$SANITIZERS" ]]; then
MKOSI_LDFLAGS="$MKOSI_LDFLAGS -Wl,-rpath=$(realpath "$(clang --print-runtime-dir)")" MKOSI_LDFLAGS="$MKOSI_LDFLAGS -Wl,-rpath=$(realpath "$(clang --print-runtime-dir)")"
fi fi
MKOSI_MESON_OPTIONS="-D mode=developer -D vcs-tag=${VCS_TAG:-true} -D b_sanitize=${SANITIZERS:-none}" MKOSI_MESON_OPTIONS="-D mode=developer -D vcs-tag=${VCS_TAG:-true} -D b_sanitize=${SANITIZERS:-none} -Dtime-epoch=1744207869"
if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then
MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe" MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe"
fi fi

View File

@ -22,7 +22,7 @@ if ((LLVM)) && [[ -n "$SANITIZERS" ]]; then
MKOSI_LDFLAGS="$MKOSI_LDFLAGS -Wl,-rpath=$(realpath "$(clang --print-runtime-dir)")" MKOSI_LDFLAGS="$MKOSI_LDFLAGS -Wl,-rpath=$(realpath "$(clang --print-runtime-dir)")"
fi fi
MKOSI_MESON_OPTIONS="-D mode=developer -D vcs-tag=${VCS_TAG:-true} -D b_sanitize=${SANITIZERS:-none}" MKOSI_MESON_OPTIONS="-D mode=developer -D vcs-tag=${VCS_TAG:-true} -D b_sanitize=${SANITIZERS:-none} -Dtime-epoch=1744207869"
if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then
MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe" MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe"
fi fi

View File

@ -57,7 +57,7 @@ if [[ -z "${MKOSI_LDFLAGS// }" ]]; then
MKOSI_LDFLAGS="%{nil}" MKOSI_LDFLAGS="%{nil}"
fi fi
MKOSI_MESON_OPTIONS="-D mode=developer -D vcs-tag=${VCS_TAG:-true} -D b_sanitize=${SANITIZERS:-none}" MKOSI_MESON_OPTIONS="-D mode=developer -D vcs-tag=${VCS_TAG:-true} -D b_sanitize=${SANITIZERS:-none} -Dtime-epoch=1744207869"
if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then if ((WIPE)) && [[ -d "$BUILDDIR/meson-private" ]]; then
MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe" MKOSI_MESON_OPTIONS="$MKOSI_MESON_OPTIONS --wipe"
fi fi

View File

@ -3,6 +3,9 @@
[Output] [Output]
Format=directory Format=directory
[Build]
Environment=SYSTEMD_REQUIRED_DEPS_ONLY=1
[Content] [Content]
Bootable=no Bootable=no
Locale=C.UTF-8 Locale=C.UTF-8
@ -11,6 +14,7 @@ CleanPackageMetadata=yes
MakeInitrd=yes MakeInitrd=yes
Packages= Packages=
coreutils
bash bash
[Include] [Include]

View File

@ -4,6 +4,7 @@
Distribution=arch Distribution=arch
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/arch/systemd.prepare
VolatilePackages= VolatilePackages=
systemd systemd
systemd-libs systemd-libs

View File

@ -5,5 +5,6 @@ Distribution=|centos
Distribution=|fedora Distribution=|fedora
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/centos-fedora/systemd.prepare
VolatilePackages= VolatilePackages=
systemd-standalone-shutdown systemd-standalone-shutdown

View File

@ -4,5 +4,6 @@
Distribution=debian Distribution=debian
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/debian-ubuntu/systemd.prepare
VolatilePackages= VolatilePackages=
systemd-standalone-shutdown systemd-standalone-shutdown

View File

@ -4,6 +4,7 @@
Distribution=opensuse Distribution=opensuse
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/opensuse/systemd.prepare
Packages= Packages=
diffutils diffutils
grep grep

View File

@ -4,6 +4,7 @@
Distribution=ubuntu Distribution=ubuntu
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/debian-ubuntu/systemd.prepare
VolatilePackages= VolatilePackages=
libsystemd-shared libsystemd-shared
libsystemd0 libsystemd0

View File

@ -6,10 +6,14 @@ Include=
%D/mkosi/mkosi.sanitizers %D/mkosi/mkosi.sanitizers
%D/mkosi/mkosi.coverage %D/mkosi/mkosi.coverage
[Build]
Environment=SYSTEMD_REQUIRED_DEPS_ONLY=1
[Content] [Content]
ExtraTrees=%D/mkosi/mkosi.extra.common ExtraTrees=%D/mkosi/mkosi.extra.common
Packages= Packages=
coreutils
findutils findutils
grep grep
sed sed

View File

@ -4,6 +4,7 @@
Distribution=arch Distribution=arch
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/arch/systemd.prepare
Packages= Packages=
btrfs-progs btrfs-progs
tpm2-tools tpm2-tools

View File

@ -5,6 +5,7 @@ Distribution=|centos
Distribution=|fedora Distribution=|fedora
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/centos-fedora/systemd.prepare
Packages= Packages=
tpm2-tools tpm2-tools

View File

@ -5,6 +5,7 @@ Distribution=|debian
Distribution=|ubuntu Distribution=|ubuntu
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/debian-ubuntu/systemd.prepare
Packages= Packages=
btrfs-progs btrfs-progs
tpm2-tools tpm2-tools

View File

@ -4,6 +4,7 @@
Distribution=opensuse Distribution=opensuse
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/opensuse/systemd.prepare
Packages= Packages=
btrfs-progs btrfs-progs
kmod kmod

View File

@ -3,6 +3,9 @@
[Output] [Output]
Format=directory Format=directory
[Build]
Environment=SYSTEMD_REQUIRED_DEPS_ONLY=1
[Content] [Content]
Bootable=no Bootable=no
Locale=C.UTF-8 Locale=C.UTF-8

View File

@ -4,6 +4,7 @@
Distribution=arch Distribution=arch
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/arch/systemd.prepare
Packages= Packages=
inetutils inetutils
iproute iproute

View File

@ -5,6 +5,7 @@ Distribution=|centos
Distribution=|fedora Distribution=|fedora
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/centos-fedora/systemd.prepare
Packages= Packages=
hostname hostname
iproute iproute

View File

@ -5,6 +5,7 @@ Distribution=|debian
Distribution=|ubuntu Distribution=|ubuntu
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/debian-ubuntu/systemd.prepare
Packages= Packages=
hostname hostname
iproute2 iproute2

View File

@ -4,6 +4,7 @@
Distribution=opensuse Distribution=opensuse
[Content] [Content]
PrepareScripts=%D/mkosi/mkosi.conf.d/opensuse/systemd.prepare
Packages= Packages=
diffutils diffutils
grep grep

View File

@ -1 +0,0 @@
../usr/lib/os-release

View File

@ -9,3 +9,8 @@ echo "Hello from dummy init, beautiful day, innit?"
ip link ip link
EOF EOF
chmod +x "$BUILDROOT/sbin/init" chmod +x "$BUILDROOT/sbin/init"
# Arch relies on tmpfiles.d/etc.conf but this image isn't booted
if [ ! -e "$BUILDROOT/etc/os-release" ]; then
ln -s ../usr/lib/os-release "$BUILDROOT/etc/os-release"
fi

View File

@ -34,8 +34,9 @@ done
# systemd-journald. # systemd-journald.
rm -rf "$BUILDROOT/var/log/journal" rm -rf "$BUILDROOT/var/log/journal"
# Make sure our own nsswitch.conf from the repository is used instead of the distribution's by deleting the
# distribution's and relying on tmpfiles to put ours in place during boot.
rm -f /etc/nsswitch.conf rm -f /etc/nsswitch.conf
cp "$SRCDIR/factory/etc/nsswitch.conf" /etc/nsswitch.conf
# Remove to make TEST-73-LOCALE pass on Ubuntu. # Remove to make TEST-73-LOCALE pass on Ubuntu.
rm -f /etc/default/keyboard rm -f /etc/default/keyboard
@ -58,8 +59,8 @@ SYSTEMD_REPART_MKFS_OPTIONS_EXT4="" \
--dry-run=no \ --dry-run=no \
--size=auto \ --size=auto \
--offline=true \ --offline=true \
--root test/integration-tests/TEST-24-CRYPTSETUP \ --root mkosi/mkosi.credentials \
--definitions test/integration-tests/TEST-24-CRYPTSETUP/keydev.repart \ --definitions mkosi/keydev.repart \
"$OUTPUTDIR/keydev.raw" "$OUTPUTDIR/keydev.raw"
can_test_pkcs11() { can_test_pkcs11() {
@ -132,7 +133,7 @@ EOF
certtool --generate-self-signed \ certtool --generate-self-signed \
--load-privkey="pkcs11:token=TestToken;object=RSATestKey;type=private" \ --load-privkey="pkcs11:token=TestToken;object=RSATestKey;type=private" \
--load-pubkey="pkcs11:token=TestToken;object=RSATestKey;type=public" \ --load-pubkey="pkcs11:token=TestToken;object=RSATestKey;type=public" \
--template "test/integration-tests/TEST-24-CRYPTSETUP/template.cfg" \ --template "mkosi/template.cfg" \
--outder --outfile "/tmp/rsa_test.crt" --outder --outfile "/tmp/rsa_test.crt"
pkcs11-tool --module "$SOFTHSM_MODULE" --token-label "TestToken" --pin "env:GNUTLS_PIN" --so-pin "env:GNUTLS_SO_PIN" --write-object "/tmp/rsa_test.crt" --type cert --label "RSATestKey" pkcs11-tool --module "$SOFTHSM_MODULE" --token-label "TestToken" --pin "env:GNUTLS_PIN" --so-pin "env:GNUTLS_SO_PIN" --write-object "/tmp/rsa_test.crt" --type cert --label "RSATestKey"
@ -144,7 +145,7 @@ EOF
certtool --generate-self-signed \ certtool --generate-self-signed \
--load-privkey="pkcs11:token=TestToken;object=ECTestKey;type=private" \ --load-privkey="pkcs11:token=TestToken;object=ECTestKey;type=private" \
--load-pubkey="pkcs11:token=TestToken;object=ECTestKey;type=public" \ --load-pubkey="pkcs11:token=TestToken;object=ECTestKey;type=public" \
--template "test/integration-tests/TEST-24-CRYPTSETUP/template.cfg" \ --template "mkosi/template.cfg" \
--outder --outfile "/tmp/ec_test.crt" --outder --outfile "/tmp/ec_test.crt"
pkcs11-tool --module "$SOFTHSM_MODULE" --token-label "TestToken" --pin "env:GNUTLS_PIN" --so-pin "env:GNUTLS_SO_PIN" --write-object "/tmp/ec_test.crt" --type cert --label "ECTestKey" pkcs11-tool --module "$SOFTHSM_MODULE" --token-label "TestToken" --pin "env:GNUTLS_PIN" --so-pin "env:GNUTLS_SO_PIN" --write-object "/tmp/ec_test.crt" --type cert --label "ECTestKey"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-11-28 18:16+0900\n" "POT-Creation-Date: 2024-11-28 18:16+0900\n"
"PO-Revision-Date: 2025-03-20 12:55+0000\n" "PO-Revision-Date: 2025-04-09 02:53+0000\n"
"Last-Translator: hsu zangmen <chzang55@gmail.com>\n" "Last-Translator: hsu zangmen <chzang55@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://translate.fedoraproject.org/" "Language-Team: Chinese (Traditional) <https://translate.fedoraproject.org/"
"projects/systemd/main/zh_TW/>\n" "projects/systemd/main/zh_TW/>\n"
@ -69,10 +69,9 @@ msgid "Dump the systemd state without rate limits"
msgstr "無速率限制地轉儲系統狀態" msgstr "無速率限制地轉儲系統狀態"
#: src/core/org.freedesktop.systemd1.policy.in:75 #: src/core/org.freedesktop.systemd1.policy.in:75
#, fuzzy
msgid "" msgid ""
"Authentication is required to dump the systemd state without rate limits." "Authentication is required to dump the systemd state without rate limits."
msgstr "重新載入 systemd 狀態需要驗證。" msgstr "要轉儲沒有速率限制的 systemd 狀態,必須進行驗證。"
#: src/home/org.freedesktop.home1.policy:13 #: src/home/org.freedesktop.home1.policy:13
msgid "Create a home area" msgid "Create a home area"
@ -108,9 +107,8 @@ msgid "Authentication is required to update a user's home area."
msgstr "更新用戶家區域需要認證。" msgstr "更新用戶家區域需要認證。"
#: src/home/org.freedesktop.home1.policy:53 #: src/home/org.freedesktop.home1.policy:53
#, fuzzy
msgid "Update your home area" msgid "Update your home area"
msgstr "更新一個家區域" msgstr "更新你的家區域"
#: src/home/org.freedesktop.home1.policy:54 #: src/home/org.freedesktop.home1.policy:54
msgid "Authentication is required to update your home area." msgid "Authentication is required to update your home area."
@ -134,14 +132,12 @@ msgid ""
msgstr "更改家區域密碼需要認證。" msgstr "更改家區域密碼需要認證。"
#: src/home/org.freedesktop.home1.policy:83 #: src/home/org.freedesktop.home1.policy:83
#, fuzzy
msgid "Activate a home area" msgid "Activate a home area"
msgstr "創建一個家區域" msgstr "啟動家區域"
#: src/home/org.freedesktop.home1.policy:84 #: src/home/org.freedesktop.home1.policy:84
#, fuzzy
msgid "Authentication is required to activate a user's home area." msgid "Authentication is required to activate a user's home area."
msgstr "創建用戶家區域需要身份驗證。" msgstr "啟動使用者的首頁區域需要驗證。"
#: src/home/pam_systemd_home.c:293 #: src/home/pam_systemd_home.c:293
#, c-format #, c-format
@ -166,11 +162,11 @@ msgstr "用戶 %s 的密碼不正確或不足以進行身份驗證。"
#: src/home/pam_systemd_home.c:313 #: src/home/pam_systemd_home.c:313
msgid "Sorry, try again: " msgid "Sorry, try again: "
msgstr "抱歉,請重試:" msgstr "抱歉,請重試: "
#: src/home/pam_systemd_home.c:335 #: src/home/pam_systemd_home.c:335
msgid "Recovery key: " msgid "Recovery key: "
msgstr "恢復金鑰:" msgstr "恢復金鑰: "
#: src/home/pam_systemd_home.c:337 #: src/home/pam_systemd_home.c:337
#, c-format #, c-format
@ -181,7 +177,7 @@ msgstr "用戶 %s 密碼/恢復金鑰不正確或不足以進行身份驗證。"
#: src/home/pam_systemd_home.c:338 #: src/home/pam_systemd_home.c:338
msgid "Sorry, reenter recovery key: " msgid "Sorry, reenter recovery key: "
msgstr "抱歉,重新輸入恢復金鑰:" msgstr "抱歉,重新輸入恢復金鑰: "
#: src/home/pam_systemd_home.c:358 #: src/home/pam_systemd_home.c:358
#, c-format #, c-format
@ -190,7 +186,7 @@ msgstr "用戶 %s 的安全權杖未插入。"
#: src/home/pam_systemd_home.c:359 src/home/pam_systemd_home.c:362 #: src/home/pam_systemd_home.c:359 src/home/pam_systemd_home.c:362
msgid "Try again with password: " msgid "Try again with password: "
msgstr "使用密碼重試:" msgstr "使用密碼重試: "
#: src/home/pam_systemd_home.c:361 #: src/home/pam_systemd_home.c:361
#, c-format #, c-format
@ -201,7 +197,7 @@ msgstr "密碼不正確或不足,並且未插入用戶 %s 的配寘安全權
#: src/home/pam_systemd_home.c:381 #: src/home/pam_systemd_home.c:381
msgid "Security token PIN: " msgid "Security token PIN: "
msgstr "安全權杖 PIN:" msgstr "安全權杖 PIN: "
#: src/home/pam_systemd_home.c:398 #: src/home/pam_systemd_home.c:398
#, c-format #, c-format
@ -232,7 +228,7 @@ msgstr "用戶 %s 的安全權杖 PIN 不正確。"
#: src/home/pam_systemd_home.c:438 src/home/pam_systemd_home.c:457 #: src/home/pam_systemd_home.c:438 src/home/pam_systemd_home.c:457
#: src/home/pam_systemd_home.c:476 #: src/home/pam_systemd_home.c:476
msgid "Sorry, retry security token PIN: " msgid "Sorry, retry security token PIN: "
msgstr "抱歉,請重試安全權杖 PIN:" msgstr "抱歉,請重試安全權杖 PIN: "
#: src/home/pam_systemd_home.c:456 #: src/home/pam_systemd_home.c:456
#, c-format #, c-format
@ -335,59 +331,49 @@ msgid "Get hardware serial number"
msgstr "獲取硬體序號" msgstr "獲取硬體序號"
#: src/hostname/org.freedesktop.hostname1.policy:62 #: src/hostname/org.freedesktop.hostname1.policy:62
#, fuzzy
msgid "Authentication is required to get hardware serial number." msgid "Authentication is required to get hardware serial number."
msgstr "獲取硬體序號需要身份驗證。" msgstr "需要驗證才能取得硬體序號。"
#: src/hostname/org.freedesktop.hostname1.policy:71 #: src/hostname/org.freedesktop.hostname1.policy:71
#, fuzzy
msgid "Get system description" msgid "Get system description"
msgstr "取系統描述" msgstr "取系統描述"
#: src/hostname/org.freedesktop.hostname1.policy:72 #: src/hostname/org.freedesktop.hostname1.policy:72
#, fuzzy
msgid "Authentication is required to get system description." msgid "Authentication is required to get system description."
msgstr "需要身份驗證才能獲得系統描述。" msgstr "需要驗證才能取得系統描述。"
#: src/import/org.freedesktop.import1.policy:22 #: src/import/org.freedesktop.import1.policy:22
#, fuzzy
msgid "Import a disk image" msgid "Import a disk image"
msgstr "導入磁片映像" msgstr "匯入磁碟映像"
#: src/import/org.freedesktop.import1.policy:23 #: src/import/org.freedesktop.import1.policy:23
#, fuzzy
msgid "Authentication is required to import an image." msgid "Authentication is required to import an image."
msgstr "導入映像需要身份驗證" msgstr "導入映像需要身份驗證"
#: src/import/org.freedesktop.import1.policy:32 #: src/import/org.freedesktop.import1.policy:32
#, fuzzy
msgid "Export a disk image" msgid "Export a disk image"
msgstr "匯出磁映像" msgstr "匯出磁映像"
#: src/import/org.freedesktop.import1.policy:33 #: src/import/org.freedesktop.import1.policy:33
#, fuzzy
msgid "Authentication is required to export disk image." msgid "Authentication is required to export disk image."
msgstr "匯出磁片映像需要驗證" msgstr "匯出磁片映像需要驗證"
#: src/import/org.freedesktop.import1.policy:42 #: src/import/org.freedesktop.import1.policy:42
#, fuzzy
msgid "Download a disk image" msgid "Download a disk image"
msgstr "下載磁映像" msgstr "下載磁映像"
#: src/import/org.freedesktop.import1.policy:43 #: src/import/org.freedesktop.import1.policy:43
#, fuzzy
msgid "Authentication is required to download a disk image." msgid "Authentication is required to download a disk image."
msgstr "下載磁片映像需要驗證" msgstr "下載磁片映像需要驗證"
#: src/import/org.freedesktop.import1.policy:52 #: src/import/org.freedesktop.import1.policy:52
msgid "Cancel transfer of a disk image" msgid "Cancel transfer of a disk image"
msgstr "取消磁片映像的傳輸" msgstr "取消磁片映像的傳輸"
#: src/import/org.freedesktop.import1.policy:53 #: src/import/org.freedesktop.import1.policy:53
#, fuzzy
msgid "" msgid ""
"Authentication is required to cancel the ongoing transfer of a disk image." "Authentication is required to cancel the ongoing transfer of a disk image."
msgstr "需要身份驗證才能取消正在進行的磁片映像傳輸" msgstr "需要身份驗證才能取消正在進行的磁片映像傳輸"
#: src/locale/org.freedesktop.locale1.policy:22 #: src/locale/org.freedesktop.locale1.policy:22
msgid "Set system locale" msgid "Set system locale"
@ -729,9 +715,8 @@ msgid "Set a wall message"
msgstr "設定 wall 訊息" msgstr "設定 wall 訊息"
#: src/login/org.freedesktop.login1.policy:397 #: src/login/org.freedesktop.login1.policy:397
#, fuzzy
msgid "Authentication is required to set a wall message." msgid "Authentication is required to set a wall message."
msgstr "設定 wall 訊息需要身份驗證" msgstr "設定 wall 訊息需要身份驗證"
#: src/login/org.freedesktop.login1.policy:406 #: src/login/org.freedesktop.login1.policy:406
msgid "Change Session" msgid "Change Session"
@ -800,15 +785,13 @@ msgid ""
msgstr "管理本機虛擬機器及容器需要驗證。" msgstr "管理本機虛擬機器及容器需要驗證。"
#: src/machine/org.freedesktop.machine1.policy:95 #: src/machine/org.freedesktop.machine1.policy:95
#, fuzzy
msgid "Create a local virtual machine or container" msgid "Create a local virtual machine or container"
msgstr "管理本機虛擬機器及容器" msgstr "建立本機虛擬機器或容器"
#: src/machine/org.freedesktop.machine1.policy:96 #: src/machine/org.freedesktop.machine1.policy:96
#, fuzzy
msgid "" msgid ""
"Authentication is required to create a local virtual machine or container." "Authentication is required to create a local virtual machine or container."
msgstr "管理本機虛擬機器及容器需要驗證。" msgstr "建立本機虛擬機器或容器需要驗證。"
#: src/machine/org.freedesktop.machine1.policy:106 #: src/machine/org.freedesktop.machine1.policy:106
msgid "Manage local virtual machine and container images" msgid "Manage local virtual machine and container images"
@ -997,18 +980,16 @@ msgid "Register a DNS-SD service"
msgstr "註冊 DNS-SD 服務" msgstr "註冊 DNS-SD 服務"
#: src/resolve/org.freedesktop.resolve1.policy:23 #: src/resolve/org.freedesktop.resolve1.policy:23
#, fuzzy
msgid "Authentication is required to register a DNS-SD service." msgid "Authentication is required to register a DNS-SD service."
msgstr "註冊 DNS-SD 服務需要身份驗證" msgstr "註冊 DNS-SD 服務需要身份驗證"
#: src/resolve/org.freedesktop.resolve1.policy:33 #: src/resolve/org.freedesktop.resolve1.policy:33
msgid "Unregister a DNS-SD service" msgid "Unregister a DNS-SD service"
msgstr "取消註冊 DNS-SD 服務" msgstr "取消註冊 DNS-SD 服務"
#: src/resolve/org.freedesktop.resolve1.policy:34 #: src/resolve/org.freedesktop.resolve1.policy:34
#, fuzzy
msgid "Authentication is required to unregister a DNS-SD service." msgid "Authentication is required to unregister a DNS-SD service."
msgstr "取消註冊 DNS-SD 服務需要身份驗證" msgstr "取消註冊 DNS-SD 服務需要身份驗證"
#: src/resolve/org.freedesktop.resolve1.policy:132 #: src/resolve/org.freedesktop.resolve1.policy:132
msgid "Revert name resolution settings" msgid "Revert name resolution settings"
@ -1023,92 +1004,82 @@ msgid "Subscribe query results"
msgstr "訂閱查詢結果" msgstr "訂閱查詢結果"
#: src/resolve/org.freedesktop.resolve1.policy:144 #: src/resolve/org.freedesktop.resolve1.policy:144
#, fuzzy
msgid "Authentication is required to subscribe query results." msgid "Authentication is required to subscribe query results."
msgstr "暫停系統需要驗證。" msgstr "訂閱查詢結果需要驗證。"
#: src/resolve/org.freedesktop.resolve1.policy:154 #: src/resolve/org.freedesktop.resolve1.policy:154
msgid "Dump cache" msgid "Dump cache"
msgstr "傾倒至快取" msgstr "傾倒至快取"
#: src/resolve/org.freedesktop.resolve1.policy:155 #: src/resolve/org.freedesktop.resolve1.policy:155
#, fuzzy
msgid "Authentication is required to dump cache." msgid "Authentication is required to dump cache."
msgstr "設定網域需要身份驗證。" msgstr "轉存快取記憶體需要驗證。"
#: src/resolve/org.freedesktop.resolve1.policy:165 #: src/resolve/org.freedesktop.resolve1.policy:165
msgid "Dump server state" msgid "Dump server state"
msgstr "傾倒伺服器狀態" msgstr "傾倒伺服器狀態"
#: src/resolve/org.freedesktop.resolve1.policy:166 #: src/resolve/org.freedesktop.resolve1.policy:166
#, fuzzy
msgid "Authentication is required to dump server state." msgid "Authentication is required to dump server state."
msgstr "設定 NTP 伺服器需要身份驗證。" msgstr "轉儲伺服器狀態需要身份驗證。"
#: src/resolve/org.freedesktop.resolve1.policy:176 #: src/resolve/org.freedesktop.resolve1.policy:176
msgid "Dump statistics" msgid "Dump statistics"
msgstr "傾倒統計" msgstr "傾倒統計"
#: src/resolve/org.freedesktop.resolve1.policy:177 #: src/resolve/org.freedesktop.resolve1.policy:177
#, fuzzy
msgid "Authentication is required to dump statistics." msgid "Authentication is required to dump statistics."
msgstr "設定網域需要身份驗證。" msgstr "轉儲統計資料需要驗證。"
#: src/resolve/org.freedesktop.resolve1.policy:187 #: src/resolve/org.freedesktop.resolve1.policy:187
msgid "Reset statistics" msgid "Reset statistics"
msgstr "重置統計" msgstr "重置統計"
#: src/resolve/org.freedesktop.resolve1.policy:188 #: src/resolve/org.freedesktop.resolve1.policy:188
#, fuzzy
msgid "Authentication is required to reset statistics." msgid "Authentication is required to reset statistics."
msgstr "重設 NTP 設定需要身份驗證。" msgstr "重設統計資料需要驗證。"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:35 #: src/sysupdate/org.freedesktop.sysupdate1.policy:35
msgid "Check for system updates" msgid "Check for system updates"
msgstr "檢查系統更新" msgstr "檢查系統更新"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:36 #: src/sysupdate/org.freedesktop.sysupdate1.policy:36
#, fuzzy
msgid "Authentication is required to check for system updates." msgid "Authentication is required to check for system updates."
msgstr "設定系統時間需要驗證。" msgstr "檢查系統更新需要驗證。"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:45 #: src/sysupdate/org.freedesktop.sysupdate1.policy:45
msgid "Install system updates" msgid "Install system updates"
msgstr "安裝系統更新" msgstr "安裝系統更新"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:46 #: src/sysupdate/org.freedesktop.sysupdate1.policy:46
#, fuzzy
msgid "Authentication is required to install system updates." msgid "Authentication is required to install system updates."
msgstr "設定系統時間需要驗證。" msgstr "安裝系統更新需要驗證。"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:55 #: src/sysupdate/org.freedesktop.sysupdate1.policy:55
msgid "Install specific system version" msgid "Install specific system version"
msgstr "安裝特定的系統版本" msgstr "安裝特定的系統版本"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:56 #: src/sysupdate/org.freedesktop.sysupdate1.policy:56
#, fuzzy
msgid "" msgid ""
"Authentication is required to update the system to a specific (possibly old) " "Authentication is required to update the system to a specific (possibly old) "
"version." "version."
msgstr "設定系統時區需要驗證。" msgstr "更新系統至特定 (可能是舊) 版本需要驗證。"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:65 #: src/sysupdate/org.freedesktop.sysupdate1.policy:65
msgid "Cleanup old system updates" msgid "Cleanup old system updates"
msgstr "清理舊有的系統更新" msgstr "清理舊有的系統更新"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:66 #: src/sysupdate/org.freedesktop.sysupdate1.policy:66
#, fuzzy
msgid "Authentication is required to cleanup old system updates." msgid "Authentication is required to cleanup old system updates."
msgstr "設定系統時間需要驗證。" msgstr "清理舊系統更新需要驗證。"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:75 #: src/sysupdate/org.freedesktop.sysupdate1.policy:75
msgid "Manage optional features" msgid "Manage optional features"
msgstr "管理選配功能" msgstr "管理選配功能"
#: src/sysupdate/org.freedesktop.sysupdate1.policy:76 #: src/sysupdate/org.freedesktop.sysupdate1.policy:76
#, fuzzy
msgid "Authentication is required to manage optional features." msgid "Authentication is required to manage optional features."
msgstr "管理活躍的工作階段、使用者與座位需要驗證。" msgstr "管理選購功能需要驗證。"
#: src/timedate/org.freedesktop.timedate1.policy:22 #: src/timedate/org.freedesktop.timedate1.policy:22
msgid "Set system time" msgid "Set system time"

View File

@ -77,6 +77,20 @@ ENV{DDC_DEVICE}=="?*", TAG+="uaccess"
# media player raw devices (for user-mode drivers, Android SDK, etc.) # media player raw devices (for user-mode drivers, Android SDK, etc.)
SUBSYSTEM=="usb", ENV{ID_MEDIA_PLAYER}=="?*", TAG+="uaccess" SUBSYSTEM=="usb", ENV{ID_MEDIA_PLAYER}=="?*", TAG+="uaccess"
# Android devices (ADB DbC, ADB, Fastboot)
# Used to interact with devices over Android Debug Bridge and Fastboot protocols, see:
# * https://developer.android.com/tools/adb
# * https://source.android.com/docs/setup/test/running
# * https://source.android.com/docs/setup/test/flash
#
# The bInterfaceClass and bInterfaceSubClass used are documented in source code here:
# * https://android.googlesource.com/platform/packages/modules/adb/+/d0db47dcdf941673f405e1095e6ffb5e565902e5/adb.h#199
# * https://android.googlesource.com/platform/system/core/+/7199051aaf0ddfa2849650933119307327d8669c/fastboot/fastboot.cpp#244
#
# Since it's using a generic vendor specific interface class, this can potentially result
# in a rare case where non-ADB/Fastboot device ends up with an ID_DEBUG_APPLIANCE="android".
SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:dc0201:*|*:ff4201:*|*:ff4203:*", ENV{ID_DEBUG_APPLIANCE}="android"
# software-defined radio communication devices # software-defined radio communication devices
ENV{ID_SOFTWARE_RADIO}=="?*", TAG+="uaccess" ENV{ID_SOFTWARE_RADIO}=="?*", TAG+="uaccess"
@ -111,4 +125,7 @@ SUBSYSTEM=="hidraw", ENV{ID_HARDWARE_WALLET}=="1", TAG+="uaccess"
# As defined in https://en.wikipedia.org/wiki/3Dconnexion # As defined in https://en.wikipedia.org/wiki/3Dconnexion
SUBSYSTEM=="hidraw", ENV{ID_INPUT_3D_MOUSE}=="1", TAG+="uaccess" SUBSYSTEM=="hidraw", ENV{ID_INPUT_3D_MOUSE}=="1", TAG+="uaccess"
# Debug interfaces (e.g. Android Debug Bridge)
ENV{ID_DEBUG_APPLIANCE}=="?*", TAG+="uaccess"
LABEL="uaccess_end" LABEL="uaccess_end"

View File

@ -73,7 +73,7 @@ _importctl() {
comps='no checksum signature' comps='no checksum signature'
;; ;;
--format) --format)
comps='uncompressed xz gzip bzip2' comps='uncompressed xz gzip bzip2 zstd'
;; ;;
--class) --class)
comps='machine portable sysext confext' comps='machine portable sysext confext'

View File

@ -85,7 +85,7 @@ _machinectl() {
comps=$( machinectl --verify=help 2>/dev/null ) comps=$( machinectl --verify=help 2>/dev/null )
;; ;;
--format) --format)
comps='uncompressed xz gzip bzip2' comps='uncompressed xz gzip bzip2 zstd'
;; ;;
esac esac
COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) COMPREPLY=( $(compgen -W '$comps' -- "$cur") )

View File

@ -93,7 +93,7 @@ _udevadm() {
-g --tag-match -y --sysname-match --name-match -b --parent-match -g --tag-match -y --sysname-match --name-match -b --parent-match
--prioritized-subsystem' --prioritized-subsystem'
[SETTLE]='-t --timeout -E --exit-if-exists' [SETTLE]='-t --timeout -E --exit-if-exists'
[CONTROL_STANDALONE]='-e --exit -s --stop-exec-queue -S --start-exec-queue -R --reload --ping [CONTROL_STANDALONE]='-e --exit -s --stop-exec-queue -S --start-exec-queue -R --reload --ping --revert
--load-credentials' --load-credentials'
[CONTROL_ARG]='-l --log-priority -p --property -m --children-max -t --timeout --trace' [CONTROL_ARG]='-l --log-priority -p --property -m --children-max -t --timeout --trace'
[MONITOR_STANDALONE]='-k --kernel -u --udev -p --property' [MONITOR_STANDALONE]='-k --kernel -u --udev -p --property'
@ -110,7 +110,7 @@ _udevadm() {
) )
local verbs=(info trigger settle control monitor test-builtin test verify cat wait lock) local verbs=(info trigger settle control monitor test-builtin test verify cat wait lock)
local builtins=(blkid btrfs factory_reset hwdb input_id keyboard kmod net_driver net_id net_setup_link path_id uaccess usb_id) local builtins=(blkid btrfs dissect_image factory_reset hwdb input_id keyboard kmod net_driver net_id net_setup_link path_id uaccess usb_id)
for ((i=0; i < COMP_CWORD; i++)); do for ((i=0; i < COMP_CWORD; i++)); do
if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}"; then if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}"; then

View File

@ -67,6 +67,7 @@ _udevadm_control(){
'(-p --property)'{-p,--property=}'[Set a global property for all events.]:KEY=VALUE' \ '(-p --property)'{-p,--property=}'[Set a global property for all events.]:KEY=VALUE' \
'(-m --children-max=)'{-m,--children-max=}'[Set the maximum number of events.]:N' \ '(-m --children-max=)'{-m,--children-max=}'[Set the maximum number of events.]:N' \
'--trace=[Enable/disable trace logging.]:BOOL' \ '--trace=[Enable/disable trace logging.]:BOOL' \
'--revert[Revert previously set configurations.]' \
'(-t --timeout=)'{-t,--timeout=}'[The maximum number of seconds to wait for a reply from systemd-udevd.]:SECONDS' '(-t --timeout=)'{-t,--timeout=}'[The maximum number of seconds to wait for a reply from systemd-udevd.]:SECONDS'
} }
@ -103,7 +104,7 @@ _udevadm_test-builtin(){
'(- *)'{-h,--help}'[Print help]' \ '(- *)'{-h,--help}'[Print help]' \
'(- *)'{-V,--version}'[Print version of the program]' \ '(- *)'{-V,--version}'[Print version of the program]' \
'--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \ '--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \
'*::builtins:(blkid btrfs factory_reset hwdb input_id keyboard kmod net_driver net_id net_setup_link path_id uaccess usb_id)' '*::builtins:(blkid btrfs dissect_image factory_reset hwdb input_id keyboard kmod net_driver net_id net_setup_link path_id uaccess usb_id)'
elif (( CURRENT == 3 )); then elif (( CURRENT == 3 )); then
_arguments \ _arguments \
'--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \ '--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \

View File

@ -5,6 +5,7 @@
#include "ansi-color.h" #include "ansi-color.h"
#include "battery-util.h" #include "battery-util.h"
#include "build.h" #include "build.h"
#include "log.h"
#include "main-func.h" #include "main-func.h"
#include "pretty-print.h" #include "pretty-print.h"

View File

@ -4,6 +4,7 @@
#include "analyze-compare-versions.h" #include "analyze-compare-versions.h"
#include "compare-operator.h" #include "compare-operator.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "string-util.h" #include "string-util.h"
#include "strv.h" #include "strv.h"

View File

@ -3,6 +3,7 @@
#include "sd-bus.h" #include "sd-bus.h"
#include "memory-util.h"
#include "time-util.h" #include "time-util.h"
#include "unit-def.h" #include "unit-def.h"

View File

@ -31,7 +31,7 @@ static void log_syntax_callback(const char *unit, int level, void *userdata) {
r = set_put_strdup(s, unit); r = set_put_strdup(s, unit);
if (r < 0) { if (r < 0) {
set_free_free(*s); set_free(*s);
*s = POINTER_MAX; *s = POINTER_MAX;
} }
} }
@ -265,7 +265,7 @@ static int verify_unit(Unit *u, bool check_man, const char *root) {
static void set_destroy_ignore_pointer_max(Set **s) { static void set_destroy_ignore_pointer_max(Set **s) {
if (*s == POINTER_MAX) if (*s == POINTER_MAX)
return; return;
set_free_free(*s); set_free(*s);
} }
int verify_units( int verify_units(

View File

@ -408,35 +408,6 @@ static int read_brightness(sd_device *device, unsigned max_brightness, unsigned
assert(device); assert(device);
assert(ret_brightness); assert(ret_brightness);
if (device_in_subsystem(device, "backlight")) {
r = sd_device_get_sysattr_value(device, "actual_brightness", &value);
if (r == -ENOENT) {
log_device_debug_errno(device, r, "Failed to read 'actual_brightness' attribute, "
"fall back to use 'brightness' attribute: %m");
goto use_brightness;
}
if (r < 0)
return log_device_debug_errno(device, r, "Failed to read 'actual_brightness' attribute: %m");
r = safe_atou(value, &brightness);
if (r < 0) {
log_device_debug_errno(device, r, "Failed to parse 'actual_brightness' attribute, "
"fall back to use 'brightness' attribute: %s", value);
goto use_brightness;
}
if (brightness > max_brightness) {
log_device_debug(device, "actual_brightness=%u is larger than max_brightness=%u, "
"fall back to use 'brightness' attribute", brightness, max_brightness);
goto use_brightness;
}
log_device_debug(device, "Current actual_brightness is %u", brightness);
*ret_brightness = brightness;
return 0;
}
use_brightness:
r = sd_device_get_sysattr_value(device, "brightness", &value); r = sd_device_get_sysattr_value(device, "brightness", &value);
if (r < 0) if (r < 0)
return log_device_debug_errno(device, r, "Failed to read 'brightness' attribute: %m"); return log_device_debug_errno(device, r, "Failed to read 'brightness' attribute: %m");

View File

@ -6,7 +6,6 @@
#include "alloc-util.h" #include "alloc-util.h"
#include "macro.h" #include "macro.h"
#include "memory-util.h"
void* memdup(const void *p, size_t l) { void* memdup(const void *p, size_t l) {
void *ret; void *ret;

View File

@ -7,7 +7,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "assert-util.h"
#include "macro.h" #include "macro.h"
#include "memory-util.h"
#if HAS_FEATURE_MEMORY_SANITIZER #if HAS_FEATURE_MEMORY_SANITIZER
# include <sanitizer/msan_interface.h> # include <sanitizer/msan_interface.h>
@ -266,5 +268,3 @@ _alloc_(2) static inline void *realloc0(void *p, size_t new_size) {
return q; return q;
} }
#include "memory-util.h"

View File

@ -8,6 +8,7 @@
#include "argv-util.h" #include "argv-util.h"
#include "capability-util.h" #include "capability-util.h"
#include "errno-util.h" #include "errno-util.h"
#include "log.h"
#include "missing_sched.h" #include "missing_sched.h"
#include "parse-util.h" #include "parse-util.h"
#include "path-util.h" #include "path-util.h"

View File

@ -3,6 +3,7 @@
#include <stdbool.h> #include <stdbool.h>
#include "assert-util.h"
#include "macro.h" #include "macro.h"
extern int saved_argc; extern int saved_argc;

65
src/basic/assert-util.c Normal file
View File

@ -0,0 +1,65 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <stdio.h>
#include "assert-util.h"
#include "errno-util.h"
#include "log.h"
static bool assert_return_is_critical = BUILD_MODE_DEVELOPER;
/* Akin to glibc's __abort_msg; which is private and we hence cannot
* use here. */
static char *log_abort_msg = NULL;
void log_set_assert_return_is_critical(bool b) {
assert_return_is_critical = b;
}
bool log_get_assert_return_is_critical(void) {
return assert_return_is_critical;
}
static void log_assert(
int level,
const char *text,
const char *file,
int line,
const char *func,
const char *format) {
static char buffer[LINE_MAX];
if (_likely_(LOG_PRI(level) > log_get_max_level()))
return;
DISABLE_WARNING_FORMAT_NONLITERAL;
(void) snprintf(buffer, sizeof buffer, format, text, file, line, func);
REENABLE_WARNING;
log_abort_msg = buffer;
log_dispatch_internal(level, 0, file, line, func, NULL, NULL, NULL, NULL, buffer);
}
_noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func) {
log_assert(LOG_CRIT, text, file, line, func,
"Assertion '%s' failed at %s:%u, function %s(). Aborting.");
abort();
}
_noreturn_ void log_assert_failed_unreachable(const char *file, int line, const char *func) {
log_assert(LOG_CRIT, "Code should not be reached", file, line, func,
"%s at %s:%u, function %s(). Aborting. 💥");
abort();
}
void log_assert_failed_return(const char *text, const char *file, int line, const char *func) {
if (assert_return_is_critical)
log_assert_failed(text, file, line, func);
PROTECT_ERRNO;
log_assert(LOG_DEBUG, text, file, line, func,
"Assertion '%s' failed at %s:%u, function %s(), ignoring.");
}

84
src/basic/assert-util.h Normal file
View File

@ -0,0 +1,84 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "assert-fundamental.h"
#include "macro.h"
/* Logging for various assertions */
void log_set_assert_return_is_critical(bool b);
bool log_get_assert_return_is_critical(void) _pure_;
_noreturn_ void log_assert_failed(const char *text, const char *file, int line, const char *func);
_noreturn_ void log_assert_failed_unreachable(const char *file, int line, const char *func);
void log_assert_failed_return(const char *text, const char *file, int line, const char *func);
#ifdef __COVERITY__
/* Use special definitions of assertion macros in order to prevent
* false positives of ASSERT_SIDE_EFFECT on Coverity static analyzer
* for uses of assert_se() and assert_return().
*
* These definitions make expression go through a (trivial) function
* call to ensure they are not discarded. Also use ! or !! to ensure
* the boolean expressions are seen as such.
*
* This technique has been described and recommended in:
* https://community.synopsys.com/s/question/0D534000046Yuzb/suppressing-assertsideeffect-for-functions-that-allow-for-sideeffects
*/
extern void __coverity_panic__(void);
static inline void __coverity_check__(int condition) {
if (!condition)
__coverity_panic__();
}
static inline int __coverity_check_and_return__(int condition) {
return condition;
}
#define assert_message_se(expr, message) __coverity_check__(!!(expr))
#define assert_log(expr, message) __coverity_check_and_return__(!!(expr))
#else /* ! __COVERITY__ */
#define assert_message_se(expr, message) \
do { \
if (_unlikely_(!(expr))) \
log_assert_failed(message, PROJECT_FILE, __LINE__, __func__); \
} while (false)
#define assert_log(expr, message) ((_likely_(expr)) \
? (true) \
: (log_assert_failed_return(message, PROJECT_FILE, __LINE__, __func__), false))
#endif /* __COVERITY__ */
#define assert_se(expr) assert_message_se(expr, #expr)
/* We override the glibc assert() here. */
#undef assert
#ifdef NDEBUG
#define assert(expr) ({ if (!(expr)) __builtin_unreachable(); })
#else
#define assert(expr) assert_message_se(expr, #expr)
#endif
#define assert_not_reached() \
log_assert_failed_unreachable(PROJECT_FILE, __LINE__, __func__)
#define assert_return(expr, r) \
do { \
if (!assert_log(expr, #expr)) \
return (r); \
} while (false)
#define assert_return_errno(expr, r, err) \
do { \
if (!assert_log(expr, #expr)) { \
errno = err; \
return (r); \
} \
} while (false)

View File

@ -6,6 +6,7 @@
#include "ansi-color.h" #include "ansi-color.h"
#include "build.h" #include "build.h"
#include "extract-word.h" #include "extract-word.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "string-util.h" #include "string-util.h"
#include "terminal-util.h" #include "terminal-util.h"

View File

@ -8,6 +8,7 @@
#include "capability-util.h" #include "capability-util.h"
#include "cap-list.h" #include "cap-list.h"
#include "extract-word.h" #include "extract-word.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "parse-util.h" #include "parse-util.h"
#include "stdio-util.h" #include "stdio-util.h"

View File

@ -20,6 +20,7 @@
#include "macro.h" #include "macro.h"
#include "parse-util.h" #include "parse-util.h"
#include "pidref.h" #include "pidref.h"
#include "process-util.h"
#include "stat-util.h" #include "stat-util.h"
#include "user-util.h" #include "user-util.h"

View File

@ -10,6 +10,7 @@
#include "errno-util.h" #include "errno-util.h"
#include "fd-util.h" #include "fd-util.h"
#include "fs-util.h" #include "fs-util.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "string-util.h" #include "string-util.h"

View File

@ -27,6 +27,7 @@
#include "fd-util.h" #include "fd-util.h"
#include "fileio.h" #include "fileio.h"
#include "io-util.h" #include "io-util.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "sparse-endian.h" #include "sparse-endian.h"
#include "string-table.h" #include "string-table.h"

View File

@ -19,7 +19,6 @@
#include "nulstr-util.h" #include "nulstr-util.h"
#include "path-util.h" #include "path-util.h"
#include "set.h" #include "set.h"
#include "sort-util.h"
#include "stat-util.h" #include "stat-util.h"
#include "string-util.h" #include "string-util.h"
#include "strv.h" #include "strv.h"
@ -122,29 +121,22 @@ static int files_add(
return 0; return 0;
} }
static int base_cmp(char * const *a, char * const *b) {
assert(a);
assert(b);
return path_compare_filename(*a, *b);
}
static int copy_and_sort_files_from_hashmap(Hashmap *fh, char ***ret) { static int copy_and_sort_files_from_hashmap(Hashmap *fh, char ***ret) {
_cleanup_free_ char **sv = NULL; _cleanup_free_ char **sv = NULL;
char **files; char **files;
int r;
assert(ret); assert(ret);
sv = hashmap_get_strv(fh); r = hashmap_dump_sorted(fh, (void***) &sv, /* ret_n = */ NULL);
if (!sv) if (r < 0)
return -ENOMEM; return r;
/* The entries in the array given by hashmap_get_strv() are still owned by the hashmap. */ /* The entries in the array given by hashmap_dump_sorted() are still owned by the hashmap. */
files = strv_copy(sv); files = strv_copy(sv);
if (!files) if (!files)
return -ENOMEM; return -ENOMEM;
typesafe_qsort(files, strv_length(files), base_cmp);
*ret = files; *ret = files;
return 0; return 0;
} }
@ -237,7 +229,7 @@ int conf_files_insert(char ***strv, const char *root, char **dirs, const char *p
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
int c; int c;
c = base_cmp((char* const*) *strv + i, (char* const*) &path); c = path_compare_filename((*strv)[i], path);
if (c == 0) if (c == 0)
/* Oh, there already is an entry with a matching name (the last component). */ /* Oh, there already is an entry with a matching name (the last component). */
STRV_FOREACH(dir, dirs) { STRV_FOREACH(dir, dirs) {

View File

@ -14,6 +14,7 @@
#include "errno-util.h" #include "errno-util.h"
#include "fd-util.h" #include "fd-util.h"
#include "fileio.h" #include "fileio.h"
#include "log.h"
#include "string-table.h" #include "string-table.h"
#include "utf8.h" #include "utf8.h"

View File

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "dlfcn-util.h" #include "dlfcn-util.h"
#include "log.h"
static int dlsym_many_or_warnv(void *dl, int log_level, va_list ap) { static int dlsym_many_or_warnv(void *dl, int log_level, va_list ap) {
void (**fn)(void); void (**fn)(void);

View File

@ -3,6 +3,7 @@
#include <dlfcn.h> #include <dlfcn.h>
#include "assert-util.h"
#include "macro.h" #include "macro.h"
static inline void* safe_dlclose(void *dl) { static inline void* safe_dlclose(void *dl) {

View File

@ -15,6 +15,7 @@
#include "fd-util.h" #include "fd-util.h"
#include "fileio.h" #include "fileio.h"
#include "io-util.h" #include "io-util.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "memory-util.h" #include "memory-util.h"
#include "missing_fs.h" #include "missing_fs.h"

View File

@ -7,6 +7,7 @@
#include "fd-util.h" #include "fd-util.h"
#include "fileio.h" #include "fileio.h"
#include "fs-util.h" #include "fs-util.h"
#include "log.h"
#include "string-util.h" #include "string-util.h"
#include "strv.h" #include "strv.h"
#include "tmpfile-util.h" #include "tmpfile-util.h"

View File

@ -11,6 +11,7 @@
#include "errno-util.h" #include "errno-util.h"
#include "escape.h" #include "escape.h"
#include "extract-word.h" #include "extract-word.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "parse-util.h" #include "parse-util.h"
#include "path-util.h" #include "path-util.h"
@ -546,7 +547,7 @@ char* strv_env_get_n(char * const *l, const char *name, size_t k, ReplaceEnvFlag
return NULL; return NULL;
t = strndupa_safe(name, k); t = strndupa_safe(name, k);
return getenv(t); return secure_getenv(t);
}; };
return NULL; return NULL;
@ -1105,7 +1106,7 @@ int getenv_steal_erase(const char *name, char **ret) {
* it from there. Usecase: reading passwords from the env block (which is a bad idea, but useful for * it from there. Usecase: reading passwords from the env block (which is a bad idea, but useful for
* testing, and given that people are likely going to misuse this, be thorough) */ * testing, and given that people are likely going to misuse this, be thorough) */
e = getenv(name); e = secure_getenv(name);
if (!e) { if (!e) {
if (ret) if (ret)
*ret = NULL; *ret = NULL;

View File

@ -5,6 +5,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "assert-util.h"
#include "macro.h" #include "macro.h"
/* strerror(3) says that glibc uses a maximum length of 1024 bytes. */ /* strerror(3) says that glibc uses a maximum length of 1024 bytes. */

View File

@ -8,6 +8,7 @@
#include "ether-addr-util.h" #include "ether-addr-util.h"
#include "hexdecoct.h" #include "hexdecoct.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "string-util.h" #include "string-util.h"

View File

@ -15,6 +15,7 @@
#include "fileio.h" #include "fileio.h"
#include "fs-util.h" #include "fs-util.h"
#include "io-util.h" #include "io-util.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "missing_fcntl.h" #include "missing_fcntl.h"
#include "missing_fs.h" #include "missing_fs.h"
@ -1001,13 +1002,13 @@ int fd_verify_safe_flags_full(int fd, int extra_flags) {
if (flags < 0) if (flags < 0)
return -errno; return -errno;
unexpected_flags = flags & ~(O_ACCMODE|O_NOFOLLOW|RAW_O_LARGEFILE|extra_flags); unexpected_flags = flags & ~(O_ACCMODE_STRICT|O_NOFOLLOW|RAW_O_LARGEFILE|extra_flags);
if (unexpected_flags != 0) if (unexpected_flags != 0)
return log_debug_errno(SYNTHETIC_ERRNO(EREMOTEIO), return log_debug_errno(SYNTHETIC_ERRNO(EREMOTEIO),
"Unexpected flags set for extrinsic fd: 0%o", "Unexpected flags set for extrinsic fd: 0%o",
(unsigned) unexpected_flags); (unsigned) unexpected_flags);
return flags & (O_ACCMODE | extra_flags); /* return the flags variable, but remove the noise */ return flags & (O_ACCMODE_STRICT | extra_flags); /* return the flags variable, but remove the noise */
} }
int read_nr_open(void) { int read_nr_open(void) {
@ -1132,7 +1133,7 @@ int fds_are_same_mount(int fd1, int fd2) {
} }
const char* accmode_to_string(int flags) { const char* accmode_to_string(int flags) {
switch (flags & O_ACCMODE) { switch (flags & O_ACCMODE_STRICT) {
case O_RDONLY: case O_RDONLY:
return "ro"; return "ro";
case O_WRONLY: case O_WRONLY:

View File

@ -8,6 +8,7 @@
#include <sys/socket.h> #include <sys/socket.h>
#include "macro.h" #include "macro.h"
#include "memory-util.h"
#include "missing_fcntl.h" #include "missing_fcntl.h"
#include "stdio-util.h" #include "stdio-util.h"

View File

@ -1,6 +1,8 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* SPDX-License-Identifier: LGPL-2.1-or-later */
#include "format-ifname.h" #include "format-ifname.h"
#include "log.h"
#include "stdio-util.h"
#include "string-util.h" #include "string-util.h"
assert_cc(STRLEN("%") + DECIMAL_STR_MAX(int) <= IF_NAMESIZE); assert_cc(STRLEN("%") + DECIMAL_STR_MAX(int) <= IF_NAMESIZE);

View File

@ -1036,7 +1036,7 @@ int open_mkdir_at_full(int dirfd, const char *path, int flags, XOpenFlags xopen_
if (flags & ~(O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_EXCL|O_NOATIME|O_NOFOLLOW|O_PATH)) if (flags & ~(O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_EXCL|O_NOATIME|O_NOFOLLOW|O_PATH))
return -EINVAL; return -EINVAL;
if ((flags & O_ACCMODE) != O_RDONLY) if ((flags & O_ACCMODE_STRICT) != O_RDONLY)
return -EINVAL; return -EINVAL;
/* Note that O_DIRECTORY|O_NOFOLLOW is implied, but we allow specifying it anyway. The following /* Note that O_DIRECTORY|O_NOFOLLOW is implied, but we allow specifying it anyway. The following

View File

@ -4,6 +4,7 @@
#include "gcrypt-util.h" #include "gcrypt-util.h"
#include "hexdecoct.h" #include "hexdecoct.h"
#include "log.h"
static void *gcrypt_dl = NULL; static void *gcrypt_dl = NULL;

View File

@ -11,6 +11,7 @@
#include "dlfcn-util.h" #include "dlfcn-util.h"
#include "macro.h" #include "macro.h"
#include "memory-util.h"
extern DLSYM_PROTOTYPE(gcry_md_close); extern DLSYM_PROTOTYPE(gcry_md_close);
extern DLSYM_PROTOTYPE(gcry_md_copy); extern DLSYM_PROTOTYPE(gcry_md_copy);

View File

@ -8,6 +8,7 @@
#include "dirent-util.h" #include "dirent-util.h"
#include "errno-util.h" #include "errno-util.h"
#include "glob-util.h" #include "glob-util.h"
#include "log.h"
#include "macro.h" #include "macro.h"
#include "path-util.h" #include "path-util.h"
#include "strv.h" #include "strv.h"

View File

@ -12,6 +12,7 @@
#include "alloc-util.h" #include "alloc-util.h"
#include "fileio.h" #include "fileio.h"
#include "hashmap.h" #include "hashmap.h"
#include "log.h"
#include "logarithm.h" #include "logarithm.h"
#include "macro.h" #include "macro.h"
#include "memory-util.h" #include "memory-util.h"
@ -912,24 +913,20 @@ static void hashmap_free_no_clear(HashmapBase *h) {
free(h); free(h);
} }
HashmapBase* _hashmap_free(HashmapBase *h, free_func_t default_free_key, free_func_t default_free_value) { HashmapBase* _hashmap_free(HashmapBase *h) {
if (h) { if (h) {
_hashmap_clear(h, default_free_key, default_free_value); _hashmap_clear(h);
hashmap_free_no_clear(h); hashmap_free_no_clear(h);
} }
return NULL; return NULL;
} }
void _hashmap_clear(HashmapBase *h, free_func_t default_free_key, free_func_t default_free_value) { void _hashmap_clear(HashmapBase *h) {
free_func_t free_key, free_value;
if (!h) if (!h)
return; return;
free_key = h->hash_ops->free_key ?: default_free_key; if (h->hash_ops->free_key || h->hash_ops->free_value) {
free_value = h->hash_ops->free_value ?: default_free_value;
if (free_key || free_value) {
/* If destructor calls are defined, let's destroy things defensively: let's take the item out of the /* If destructor calls are defined, let's destroy things defensively: let's take the item out of the
* hash table, and only then call the destructor functions. If these destructors then try to unregister * hash table, and only then call the destructor functions. If these destructors then try to unregister
@ -941,11 +938,11 @@ void _hashmap_clear(HashmapBase *h, free_func_t default_free_key, free_func_t de
v = _hashmap_first_key_and_value(h, true, &k); v = _hashmap_first_key_and_value(h, true, &k);
if (free_key) if (h->hash_ops->free_key)
free_key(k); h->hash_ops->free_key(k);
if (free_value) if (h->hash_ops->free_value)
free_value(v); h->hash_ops->free_value(v);
} }
} }
@ -1780,7 +1777,7 @@ HashmapBase* _hashmap_copy(HashmapBase *h HASHMAP_DEBUG_PARAMS) {
} }
if (r < 0) if (r < 0)
return _hashmap_free(copy, NULL, NULL); return _hashmap_free(copy);
return copy; return copy;
} }
@ -1805,6 +1802,23 @@ char** _hashmap_get_strv(HashmapBase *h) {
return sv; return sv;
} }
char** set_to_strv(Set **s) {
assert(s);
/* This is similar to set_get_strv(), but invalidates the set on success. */
char **v = new(char*, set_size(*s) + 1);
if (!v)
return NULL;
for (char **p = v; (*p = set_steal_first(*s)); p++)
;
assert(set_isempty(*s));
*s = set_free(*s);
return v;
}
void* ordered_hashmap_next(OrderedHashmap *h, const void *key) { void* ordered_hashmap_next(OrderedHashmap *h, const void *key) {
struct ordered_hashmap_entry *e; struct ordered_hashmap_entry *e;
unsigned hash, idx; unsigned hash, idx;

Some files were not shown because too many files have changed in this diff Show More