1
0
mirror of https://github.com/systemd/systemd synced 2026-03-29 11:14:50 +02:00

Compare commits

..

12 Commits

Author SHA1 Message Date
Daan De Meyer
33b0642e6a tree-wide: sizeof() fixes
- TIME_T_MAX is always time_t so the check in time-util.c was redundant
- quota-util.c was zero-ing a pointer
- smbios11.c was calling sizeof(pointer)
2025-11-25 17:34:48 +01:00
Daan De Meyer
c36942916b run0: Give --empower its own color, title and emoji
When in --empower mode, all created files will be owned by the current
user, which could be problematic when creating files outside of the
current user's home directory, as other processes running as the same
user would be able to edit those files.

While this is a bit of an edge case since users already have to go through
the effort of writing --empower to indicate they want a privileged session
as the current user, it's not unphatomable to think they could start an
empowered session which they later return to and continue using. Currently,
it's not easy to differentiate a regular run0 session and an empowered session
at a glance, so users might think they're using a regular run0 session when
they're actually using an empowered session.

To address this problem, let's give empowered session their own identify, by
making the background orange, using the pumpkin emoji as the shell prompt
prefix and giving them an orange circle as the PTY title.
2025-11-25 17:15:30 +01:00
Yu Watanabe
784f5a52f8 openssl-util: indentation fix
Follow-up for 1144f07dc69cc04138d90000b1782c4a2b27cd94.
2025-11-25 15:32:37 +01:00
Yu Watanabe
1defd69d69 TEST-02-UNITTESTS: drop outdated comment
Follow-up for 741d59b326ea25053097fcbf004864ea6b3c6299.
2025-11-25 22:52:10 +09:00
Yu Watanabe
f01daa30f1 docs/MOUNT_REQUIREMENTS: fix typo
Follow-ups for 3e94ae6f1e2bac0c6be2817ab419123ea37d8e4a.
2025-11-25 22:52:10 +09:00
Yu Watanabe
05afbcc377 process-util: fix typo
Follow-up for a08f2ea02dc4fcbd7f2f73a5a24e0af32b34fe55.
2025-11-25 22:52:10 +09:00
Daan De Meyer
d867010caa
mkosi: Add hyperscale profile (#39329)
In the CentOS Hyperscale SIG, we maintain a backport of systemd with
its own rpm spec forked from rawhide.

Let's make it easy to build upstream rpms using the Hyperscale spec
by adding a mkosi hyperscale profile.
2025-11-25 13:50:45 +01:00
Daan De Meyer
32b10d0d28 TEST-88-UPGRADE: Stop resolved hook socket before downgrading
Otherwise it'll remain active and cause networkd to get started again
during the downgrade.
2025-11-25 11:49:31 +01:00
Daan De Meyer
91af194001 mkosi: Add fixed qemu ppa for Noble temporarily
Until https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/2127974
is fixed and rolled out, let's use enr0n's ppa with the fixed qemu
to make CI pass.
2025-11-25 11:02:34 +01:00
Daan De Meyer
c41c4b2bf3 mkosi: Add hyperscale profile
In the CentOS Hyperscale SIG, we maintain a backport of systemd with
its own rpm spec forked from rawhide.

Let's make it easy to build upstream rpms using the Hyperscale spec
by adding a mkosi hyperscale profile.
2025-11-25 11:02:34 +01:00
Daan De Meyer
fb514c2f8f mkosi: Rework how the pkgenv environment variables are set
Instead of including distribution specific files in the subimages,
let's have one common mkosi.pkgenv/ directory that handles all the
matching which is then included in the subimages.

This gives us more control on exactly how we do the matching.
2025-11-25 11:02:34 +01:00
Daan De Meyer
2fe49e8a4c mkosi: update mkosi commit reference to 10544812b35a668d4aac9834c78ee8166e99bc78
* 10544812b3 Don't fix up vmlinuz locations if not required
* 9baf551923 Reduce amount of packages in default image
* 9e1a2f18b8 Add support for assert sections
* c7c6e2c0b1 ubuntu: Switch to devel as the default release
* 0822deb69c Improve logging when we can not extract kernel version from filename
* 1fd7ef3db7 Do not build default initrd if Initrds= is specified
* 611c8b46c8 Don't unconditionally sync when PackageCacheDirectory=/var
* ab37f24d38 README: add link to OBS docs for mkosi builds
* 02bf256ebb completion: add reuse ignore comments
* 10ccb0b04f Make sure not all subimages depend on default-initrd subimage
* 442e1ce0f1 mkosi-tools: systemd-boot-tools is now available for all arches
* 307fc1dba3 action: make it work when used as a submodule
* c37a55f91b config: serialize dataclass instances in our JSONEncoder
* f26cb34155 log: set terminal window title in complete_step while mkosi runs
* 280c78e681 Make sure inherited settings are applied for the default initrd
* ae4f2fd718 Fix typo
* 5644f3e83e build(deps): bump github/codeql-action from 3.29.7 to 3.30.5
* 7d7b26b8c9 build(deps): bump actions/checkout from 4.2.2 to 5.0.0
* e805253447 postmarketos: implement is_kernel_package
* dd51d2e019 postmarketos: provide missing i386-vars.fd
* e23e6de66b Do not relabel files when building extension image
* ab05ead5eb Bump various systemd version checks to 258
* 382cc8b450 preset: drop systemd-networkd-wait-online.service
* 477b6b2ed5 mkosi-initrd: install systemd-container in network profile
* 1d167c0b53 mkosi-initrd: add 89-ethernet.network for network profile
* b1e81dec3a mkosi-initrd: Install libseccomp explicitly
* 3c431a141c opensuse: repository non-oss-debug is invalid
* 62ab363149 ci: add an s390x build job for additional coverage
* 62765f2d07 mailmap: deduplicate Daan
* 47f963f40b Revert "ci: Disable PPC jobs temporarily"
* 6a48f83dda dnf: Always specify --best again
* 3702368616 sandbox: Make all relative paths absolute during argparsing
* a587af0bf7 dnf: Fix /var package cache directory check in package_subdirs()
* 56cdbc25b5 Always use repository metadata from /var package cache directory
* 669d4418a3 Add note on Encrypt=yes to Passphrase= docs
* caa129edae Drop BuildSourcesEphemeral=yes from default image config
* 7edca63478 Add devicetree-auto support for UKI
* 6cb1649074 Don't add ncdu for ppc64-le on Fedora
* e019d2d2a6 ci: Disable PPC jobs temporarily
2025-11-25 11:02:34 +01:00
34 changed files with 150 additions and 68 deletions

View File

@ -25,7 +25,7 @@ jobs:
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: systemd/mkosi@d45142e329550abc9c6fc63c1f1f86e5286d3d67
- uses: systemd/mkosi@10544812b35a668d4aac9834c78ee8166e99bc78
# 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

View File

@ -38,7 +38,7 @@ jobs:
LINTER_RULES_PATH: .github/linters
GITHUB_ACTIONS_CONFIG_FILE: actionlint.yml
- uses: systemd/mkosi@d45142e329550abc9c6fc63c1f1f86e5286d3d67
- uses: systemd/mkosi@10544812b35a668d4aac9834c78ee8166e99bc78
- name: Check that tabs are not used in Python code
run: sh -c '! git grep -P "\\t" -- src/core/generate-bpf-delegate-configs.py src/boot/generate-hwids-section.py src/ukify/ukify.py test/integration-tests/integration-test-wrapper.py'

View File

@ -167,7 +167,7 @@ jobs:
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: systemd/mkosi@d45142e329550abc9c6fc63c1f1f86e5286d3d67
- uses: systemd/mkosi@10544812b35a668d4aac9834c78ee8166e99bc78
# 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

View File

@ -19,7 +19,7 @@ actions:
post-upstream-clone:
# Use the Fedora Rawhide specfile
- git clone https://src.fedoraproject.org/rpms/systemd .packit_rpm
- bash -c 'git -C .packit_rpm checkout "$(grep GIT_COMMIT= mkosi/mkosi.conf.d/centos-fedora/mkosi.conf.d/pkgenv.conf | cut -d= -f2)"'
- bash -c 'git -C .packit_rpm checkout "$(grep GIT_COMMIT= mkosi/mkosi.pkgenv/mkosi.conf.d/centos-fedora.conf | cut -d= -f2)"'
- bash -c 'echo "%bcond upstream 1" > .packit_rpm/systemd.spec.new'
- bash -c 'echo "%define meson_extra_configure_options --werror" >> .packit_rpm/systemd.spec.new'
- bash -c 'cat .packit_rpm/systemd.spec >> .packit_rpm/systemd.spec.new'

View File

@ -44,12 +44,12 @@ if a mount point is *not* split out,
but a given subtree is part of the parent mount,
the requirements for that subtree are trivially satisfied by the parent.
A "mount point" in this document means the whole subtree of the hierachy,
A "mount point" in this document means the whole subtree of the hierarchy,
until a mountpoint lower in the hierarchy which is conceptually separate.
For example, on a system with a custom mount point located below `/var/spool/`,
most of `/var/` would be in category 2/early,
but the additional mount would be in category 3/regular.
Conversly, if some part of `/usr/` that is normally part of that subtree
Conversely, if some part of `/usr/` that is normally part of that subtree
was split out to a separate mount,
this mount point would fall into category 1/initrd
and configuration would need to be provided for it to be mounted in the initrd.

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Config]
MinimumVersion=commit:d45142e329550abc9c6fc63c1f1f86e5286d3d67
MinimumVersion=commit:10544812b35a668d4aac9834c78ee8166e99bc78
Dependencies=
exitrd
initrd
@ -156,3 +156,4 @@ KVM=yes
[Include]
Include=%D/mkosi/mkosi.sanitizers
%D/mkosi/mkosi.coverage
%D/mkosi/mkosi.pkgenv

View File

@ -1,5 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Include]
Include=%D/mkosi/mkosi.pkgenv
[Content]
Packages=
clang

View File

@ -3,9 +3,6 @@
[Match]
Distribution=arch
[Include]
Include=%D/mkosi/mkosi.conf.d/arch/mkosi.conf.d/pkgenv.conf
[Content]
Packages=
base

View File

@ -4,9 +4,6 @@
Distribution=|centos
Distribution=|fedora
[Include]
Include=%D/mkosi/mkosi.conf.d/centos-fedora/mkosi.conf.d/pkgenv.conf
[Content]
Packages=
clang-devel

View File

@ -4,9 +4,6 @@
Distribution=|debian
Distribution=|ubuntu
[Include]
Include=%D/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf.d/pkgenv.conf
[Content]
Packages=
apt

View File

@ -3,9 +3,6 @@
[Match]
Distribution=opensuse
[Include]
Include=%D/mkosi/mkosi.conf.d/opensuse/mkosi.conf.d/pkgenv.conf
[Content]
Packages=
clang

View File

@ -1,5 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=arch
[Build]
Environment=
GIT_URL=https://gitlab.archlinux.org/archlinux/packaging/packages/systemd.git

View File

@ -1,5 +1,10 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=|fedora
Distribution=|centos
Profiles=!hyperscale
[Build]
Environment=
GIT_URL=https://src.fedoraproject.org/rpms/systemd.git

View File

@ -1,5 +1,9 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=|debian
Distribution=|ubuntu
[Build]
Environment=
GIT_URL=https://salsa.debian.org/systemd-team/systemd.git

View File

@ -0,0 +1,14 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Profiles=hyperscale
[Assert]
Distribution=centos
[Build]
Environment=
GIT_URL=https://gitlab.com/CentOS/Hyperscale/rpms/systemd.git
GIT_BRANCH=c10s-sig-hyperscale
GIT_COMMIT=417b671b173ea6271c00a3c605215b5f68795a3a
PKG_SUBDIR=hyperscale

View File

@ -1,5 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=opensuse
[Build]
Environment=
GIT_URL=https://github.com/bmwiedemann/openSUSE

View File

@ -0,0 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Match]
Distribution=centos
[Distribution]
Repositories=hyperscale-packages-main

View File

@ -1,5 +1,8 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Include]
Include=%D/mkosi/mkosi.pkgenv
[Content]
SyncScripts=%D/mkosi/mkosi.sync
Packages=

View File

@ -3,9 +3,6 @@
[Match]
Distribution=arch
[Include]
Include=%D/mkosi/mkosi.conf.d/arch/mkosi.conf.d/pkgenv.conf
[Content]
PrepareScripts=%D/mkosi/mkosi.images/build/mkosi.conf.d/arch/mkosi.prepare
Packages=

View File

@ -4,9 +4,6 @@
Distribution=|fedora
Distribution=|centos
[Include]
Include=%D/mkosi/mkosi.conf.d/centos-fedora/mkosi.conf.d/pkgenv.conf
[Content]
PrepareScripts=%D/mkosi/mkosi.images/build/mkosi.conf.d/centos-fedora/mkosi.prepare
Packages=

View File

@ -4,9 +4,6 @@
Distribution=|debian
Distribution=|ubuntu
[Include]
Include=%D/mkosi/mkosi.conf.d/debian-ubuntu/mkosi.conf.d/pkgenv.conf
[Content]
PrepareScripts=%D/mkosi/mkosi.images/build/mkosi.conf.d/debian-ubuntu/mkosi.prepare
Packages=

View File

@ -3,9 +3,6 @@
[Match]
Distribution=opensuse
[Include]
Include=%D/mkosi/mkosi.conf.d/opensuse/mkosi.conf.d/pkgenv.conf
[Content]
PrepareScripts=%D/mkosi/mkosi.images/build/mkosi.conf.d/opensuse/mkosi.prepare
Packages=

View File

@ -0,0 +1,34 @@
Types: deb
URIs: https://ppa.launchpadcontent.net/enr0n/qemu/ubuntu/
Suites: noble
Components: main
Signed-By:
-----BEGIN PGP PUBLIC KEY BLOCK-----
.
mQINBGH5cH0BEADThqBQWZiPv6UdXe5FkAH6ju24sO6eYzUlVWkpJZcMjr3WBgIN
I69C2OHhwZDB3NkScPZejl1cSiMNkXN64B0lAxsahL1DxlSNkKP3mdbiuyslG89b
2fyhnIq8wLb7b7taZs8bE++CHjaua16qdlgUrbq37waOoA/UO8DiudP8L//qRWwj
j8RuELkDiUU+dwuJnJp3v3hsaDCl9PeUYnmFyfNtfh6xFQgCkZyQQaSnnfl1Ba89
V0uQ0D4LuW2e0uMSXhkG774X9kJX2vg5gMR5RWwaftMQh2Fxt6mqe00dPl+SMp95
9hpNc2ZL/VTwq/TPL+P4FU1/n/6R7fnkyh7zDw++VCn5s2Lqq/uV/mheiFbDNdsp
YYPoF4S+2iMYHMlqpmPQF4obSSr066Hq74WsuJM+fntYcgnK/Sjwt6CYcdmq+AvC
x3ZFJgsxYJPBLtPyqPmqBfBVH5F5vBiJibJq+5Ny9HVYWIcQuMwa02RcJbMdFG2/
If9TVQYysvdR3TKjk4gVmfS76dBrR1lZjbWx3Ynz5lMqfYnesbocZbrd5LFvXdRl
1uUmbLkUdyII11ZfgXveycFKnRXYUgmnj3NRI5IlYKqH5iPBd/iHneeI2l2e/NVN
6YPcC17dQVhWUKM3D5XdkjZBUFnTyf7QlqUiRnu3eomzcPypDsilMTqJXQARAQAB
tB9MYXVuY2hwYWQgUFBBIGZvciBOaWNrIFJvc2Jyb29riQJOBBMBCgA4FiEEwH5l
MEnRbPBOQRqIJhaTwJngVOUFAmH5cH0CGwMFCwkIBwIGFQoJCAsCBBYCAwECHgEC
F4AACgkQJhaTwJngVOXjtxAAxhrizeyhu3hPDqgmk4qtenEEYcLtJGdMq8DXTQZu
vKAZ7OvQiyZw456oRUHSe5gyT2tFWDz/DxJ7VU9657WupO9a2YmUlbYpoYK/npA0
6+307KssyK7g6DU63mugqjKvTKhJK3hSganYEyovhJsZUlXwPcJ4szUH5BiR0nQh
f1mKIWD9ktSd2Eywp8PtDyraX1I7h6H8OrMwPSXxKlk5BtrhLg5xh7FJOVLFw9vT
xqCziywxi3mJgGEOLZPUs13l24wiHmQpP1eG/LadPsE0Lkqurzj/eyKHjziqynz+
MTpOr7IhvUhXqnMmxNzJF76e16e5MoxEekAelagF2KzXtnmHRLWqkjU/k2cbeU5n
/T+g+eVKH5ALCRMgYS5ZFsDYD5KivGeEE6BypyTqpqge3BN8rZJs3uRji/IPRhA8
N6t030lB5z2WldBADRZB0w61Uz7v6aTr4zjafjygIvVWcgRj0plsndwYwEIddw1v
ut6ZO9XudWiNExawuyAMSTbQh3xhfltWFRIuOp6taQRqP0hPzjbyeaDBz3JXM2gj
rKS2lh3HVnEBtRKurk8+/fUXjY9zTu1xzA0AslMX3WecAexECd9QRI3U+M6ak8GJ
O8vcL5svM8nqDb7z6DWeBU6+Ejtn3fJ13oit9+fN+NQUUkHCaWMUuI6yVkgLWymb
I/U=
=JGzV
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -82,10 +82,12 @@ const char* glyph_full(Glyph code, bool force_utf) {
[GLYPH_COMPUTER_DISK] = "o",
[GLYPH_WORLD] = "W",
[GLYPH_RED_CIRCLE] = "o",
[GLYPH_ORANGE_CIRCLE] = "o",
[GLYPH_YELLOW_CIRCLE] = "o",
[GLYPH_BLUE_CIRCLE] = "o",
[GLYPH_GREEN_CIRCLE] = "o",
[GLYPH_SUPERHERO] = "S",
[GLYPH_PUMPKIN] = "P",
[GLYPH_IDCARD] = "@",
[GLYPH_HOME] = "^",
[GLYPH_ROCKET] = "^",
@ -162,10 +164,12 @@ const char* glyph_full(Glyph code, bool force_utf) {
[GLYPH_COMPUTER_DISK] = UTF8("💽"),
[GLYPH_WORLD] = UTF8("🌍"),
[GLYPH_RED_CIRCLE] = UTF8("🔴"),
[GLYPH_ORANGE_CIRCLE] = UTF8("🟠"),
[GLYPH_YELLOW_CIRCLE] = UTF8("🟡"),
[GLYPH_BLUE_CIRCLE] = UTF8("🔵"),
[GLYPH_GREEN_CIRCLE] = UTF8("🟢"),
[GLYPH_SUPERHERO] = UTF8("🦸"),
[GLYPH_PUMPKIN] = UTF8("🎃"),
[GLYPH_IDCARD] = UTF8("🪪"),
[GLYPH_HOME] = UTF8("🏠"),
[GLYPH_ROCKET] = UTF8("🚀"),

View File

@ -50,10 +50,12 @@ typedef enum Glyph {
GLYPH_COMPUTER_DISK,
GLYPH_WORLD,
GLYPH_RED_CIRCLE,
GLYPH_ORANGE_CIRCLE,
GLYPH_YELLOW_CIRCLE,
GLYPH_BLUE_CIRCLE,
GLYPH_GREEN_CIRCLE,
GLYPH_SUPERHERO,
GLYPH_PUMPKIN,
GLYPH_IDCARD,
GLYPH_HOME,
GLYPH_ROCKET,

View File

@ -1698,7 +1698,7 @@ int pidref_safe_fork_full(
/* let's disable dlopen() in the child, as a paranoia safety precaution: children should not live for
* long and only do minimal work before exiting or exec()ing. Doing dlopen() is not either. If people
* want dlopen() they should do it before forking. This is a safety precuation in particular for
* want dlopen() they should do it before forking. This is a safety precaution in particular for
* cases where the child does namespace shenanigans: we should never end up loading a module from a
* foreign environment. Note that this has no effect on NSS! (i.e. it only has effect on uses of our
* dlopen_safe(), which we use comprehensively in our codebase, but glibc NSS doesn't bother, of

View File

@ -1805,8 +1805,6 @@ int time_change_fd(void) {
_cleanup_close_ int fd = -EBADF;
assert_cc(sizeof(time_t) == sizeof(TIME_T_MAX));
/* Uses TFD_TIMER_CANCEL_ON_SET to get notifications whenever CLOCK_REALTIME makes a jump relative to
* CLOCK_MONOTONIC. */

View File

@ -270,7 +270,7 @@ static bool privileged_execution(void) {
if (arg_runtime_scope != RUNTIME_SCOPE_SYSTEM)
return false;
return become_root() || arg_empower;
return become_root();
}
static int add_timer_property(const char *name, const char *val) {
@ -883,6 +883,36 @@ static int parse_argv(int argc, char *argv[]) {
return 1;
}
static double shell_prompt_hue(void) {
if (privileged_execution())
return 0; /* red */
if (arg_empower)
return 30; /* orange */
return 60; /* yellow */
}
static Glyph shell_prompt_glyph(void) {
if (privileged_execution())
return GLYPH_SUPERHERO;
if (arg_empower)
return GLYPH_PUMPKIN;
return GLYPH_IDCARD;
}
static Glyph pty_window_glyph(void) {
if (privileged_execution())
return GLYPH_RED_CIRCLE;
if (arg_empower)
return GLYPH_ORANGE_CIRCLE;
return GLYPH_YELLOW_CIRCLE;
}
static int parse_argv_sudo_mode(int argc, char *argv[]) {
enum {
@ -1236,14 +1266,7 @@ static int parse_argv_sudo_mode(int argc, char *argv[]) {
return log_oom();
if (!arg_background && arg_stdio == ARG_STDIO_PTY) {
double hue;
if (privileged_execution())
hue = 0; /* red */
else
hue = 60 /* yellow */;
r = terminal_tint_color(hue, &arg_background);
r = terminal_tint_color(shell_prompt_hue(), &arg_background);
if (r < 0)
log_debug_errno(r, "Unable to get terminal background color, not tinting background: %m");
}
@ -1255,7 +1278,7 @@ static int parse_argv_sudo_mode(int argc, char *argv[]) {
if (!arg_shell_prompt_prefix)
return log_oom();
} else if (emoji_enabled()) {
arg_shell_prompt_prefix = strjoin(glyph(privileged_execution() ? GLYPH_SUPERHERO : GLYPH_IDCARD), " ");
arg_shell_prompt_prefix = strjoin(glyph(shell_prompt_glyph()), " ");
if (!arg_shell_prompt_prefix)
return log_oom();
}
@ -1280,7 +1303,7 @@ static int parse_argv_sudo_mode(int argc, char *argv[]) {
* this for root though, under the assumption that if a regular user temporarily transitions into
* another regular user it's a better default that the full user environment is uniformly
* available. */
if (arg_lightweight < 0 && privileged_execution())
if (arg_lightweight < 0 && (privileged_execution() || arg_empower))
arg_lightweight = true;
if (arg_lightweight >= 0) {
@ -2290,9 +2313,7 @@ static int run_context_setup_ptyfwd(RunContext *c) {
if (!isempty(arg_background))
(void) pty_forward_set_background_color(c->forward, arg_background);
(void) pty_forward_set_window_title(c->forward,
privileged_execution() ? GLYPH_RED_CIRCLE : GLYPH_YELLOW_CIRCLE,
arg_host, arg_cmdline);
(void) pty_forward_set_window_title(c->forward, pty_window_glyph(), arg_host, arg_cmdline);
return 0;
}

View File

@ -1108,7 +1108,7 @@ int digest_and_sign(
bool invalid_digest = ERR_GET_REASON(ERR_peek_last_error()) == EVP_R_INVALID_DIGEST;
r = log_openssl_errors("Failed to initialize signature context");
return invalid_digest ? -EADDRNOTAVAIL : r;
}
}
/* Determine signature size */
size_t ss;

View File

@ -42,7 +42,7 @@ int quota_query_proj_id(int fd, uint32_t proj_id, struct dqblk *ret_req) {
r = quotactl_fd_with_fallback(fd, QCMD_FIXED(Q_GETQUOTA, PRJQUOTA), proj_id, ret_req);
if (r == -ESRCH || ERRNO_IS_NEG_NOT_SUPPORTED(r) || ERRNO_IS_NEG_PRIVILEGE(r)) {
zero(ret_req);
*ret_req = (struct dqblk) {};
return false;
}
if (r < 0)

View File

@ -40,7 +40,7 @@ int read_smbios11_field(unsigned i, size_t max_size, char **ret_data, size_t *re
AT_FDCWD, p,
/* offset = */ UINT64_MAX,
max_size >= SIZE_MAX - offsetof(struct dmi_field_header, contents) ? SIZE_MAX :
sizeof(dmi_field_header) + max_size,
sizeof(struct dmi_field_header) + max_size,
/* flags = */ 0,
/* bind_name = */ NULL,
(char**) &data, &size);

View File

@ -40,7 +40,6 @@ systemctl disable --now ip6tables.service || :
# Check & report test results
# Arguments:
# $1: test path
# $2: test exit code
run_test() {
if [[ $# -ne 1 ]]; then
echo >&2 "run_test: missing arguments"

View File

@ -81,11 +81,11 @@ systemd-run --on-calendar="@$after_2h" -u upgrade_timer_test date
timer1=$(systemctl show -P TimersCalendar upgrade_timer_test.timer)
timer2=$(systemctl show -P NextElapseUSecRealtime upgrade_timer_test.timer)
dnf downgrade -y --allowerasing --disablerepo '*' "$pkgdir"/distro/*.rpm
# FIXME: See https://github.com/systemd/systemd/pull/39293
systemctl stop systemd-networkd-resolve-hook.socket || true
dnf downgrade -y --allowerasing --disablerepo '*' "$pkgdir"/distro/*.rpm
# Some distros don't ship networkd, so the test will always fail
if command -v networkctl >/dev/null; then
networkd=1

View File

@ -31,10 +31,13 @@ def parse_args():
action='store_true',
default=False,
)
p.add_argument('--profile')
return p.parse_args()
def read_config(distro: str):
cmd = ['mkosi', '--json', '-d', distro, 'summary']
if args.profile:
cmd += ['--profile', args.profile]
print(f"+ {shlex.join(cmd)}")
text = subprocess.check_output(cmd, text=True)
@ -53,14 +56,15 @@ def commit_file(distro: str, files: list[Path], commit: str, changes: str):
subprocess.check_call(cmd)
def checkout_distro(args, distro: str, config: dict):
dest = Path(f'pkg/{distro}')
if dest.exists():
print(f'{dest} already exists.')
return
url = config['Environment']['GIT_URL']
branch = config['Environment']['GIT_BRANCH']
subdir = config['Environment'].get('GIT_SUBDIR')
pkg_subdir = config['Environment']['PKG_SUBDIR']
dest = Path(f'pkg/{pkg_subdir}')
if dest.exists():
print(f'{dest} already exists.')
return
# Do not checkout the full sources if the package is in a subdirectory,
# a sparse checkout will be done after
@ -81,12 +85,12 @@ def checkout_distro(args, distro: str, config: dict):
# Sparse checkout if the package is in a subdirectory
if subdir is not None:
cmd = ['git', '-C', f'pkg/{distro}', 'sparse-checkout', 'set',
cmd = ['git', '-C', f'pkg/{pkg_subdir}', 'sparse-checkout', 'set',
'--no-cone', f'{subdir}']
print(f"+ {shlex.join(cmd)}")
subprocess.check_call(cmd)
cmd = ['git', '-C', f'pkg/{distro}', 'checkout', 'HEAD']
cmd = ['git', '-C', f'pkg/{pkg_subdir}', 'checkout', 'HEAD']
print(f"+ {shlex.join(cmd)}")
subprocess.check_call(cmd)
@ -96,18 +100,19 @@ def update_distro(args, distro: str, config: dict):
branch = config['Environment']['GIT_BRANCH']
subdir = config['Environment'].get('GIT_SUBDIR')
old_commit = config['Environment']['GIT_COMMIT']
pkg_subdir = config['Environment']['PKG_SUBDIR']
if args.fetch:
cmd = ['git', '-C', f'pkg/{distro}', 'fetch', 'origin', '-v',
cmd = ['git', '-C', f'pkg/{pkg_subdir}', 'fetch', 'origin', '-v',
f'{branch}:remotes/origin/{branch}']
print(f"+ {shlex.join(cmd)}")
subprocess.check_call(cmd)
cmd = ['git', '-C', f'pkg/{distro}', 'switch', branch]
cmd = ['git', '-C', f'pkg/{pkg_subdir}', 'switch', branch]
print(f"+ {shlex.join(cmd)}")
subprocess.check_call(cmd)
cmd = ['git', '-C', f'pkg/{distro}', 'log', '-n1', '--format=%H',
cmd = ['git', '-C', f'pkg/{pkg_subdir}', 'log', '-n1', '--format=%H',
f'refs/remotes/origin/{branch}']
if subdir is not None:
cmd += [f'{subdir}']
@ -115,10 +120,10 @@ def update_distro(args, distro: str, config: dict):
new_commit = subprocess.check_output(cmd, text=True).strip()
if old_commit == new_commit:
print(f'{distro}: commit {new_commit!s} is still fresh')
print(f'{pkg_subdir}: commit {new_commit!s} is still fresh')
return
cmd = ['git', '-C', f'pkg/{distro}', 'log', '--graph', '--first-parent',
cmd = ['git', '-C', f'pkg/{pkg_subdir}', 'log', '--graph', '--first-parent',
'--pretty=oneline', '--no-decorate', '--abbrev-commit', '--abbrev=10',
f'{old_commit}..{new_commit}']
if subdir is not None:
@ -126,8 +131,8 @@ def update_distro(args, distro: str, config: dict):
print(f"+ {shlex.join(cmd)}")
changes = subprocess.check_output(cmd, text=True).strip()
conf_dir = Path('mkosi/mkosi.conf.d')
files = conf_dir.glob('**/pkgenv.conf')
conf_dir = Path('mkosi/mkosi.pkgenv/mkosi.conf.d')
files = conf_dir.glob('*.conf')
for file in files:
s = file.read_text()
if old_commit in s: