Commit Graph

399 Commits

Author SHA1 Message Date
Florian Klink
2403723108
Merge pull request #172652 from klemensn/systemd-optional-system-units
nixos/systemd: Package only built component units
2022-05-23 11:35:01 +02:00
Klemens Nanni
cbcc746f8f nixos/systemd: Package only built component units
Account for all `with*` options causing their respective unit files to
not be built, just like the current code `withCryptsetup` already does.

This fixes build errors like the following:
```
missing /nix/store/5fafsfms64fn3ywv274ky7arhm9yq2if-systemd-250.4/example/systemd/system/systemd-importd.service
error: builder for '/nix/store/67rdli5q5akzwmqgf8q0a1yp76jgr0px-system-units.drv' failed with exit code 1
```

Found by using a customised systemd package as follows:
```
systemd.package = pkgs.systemd-small;

nixpkgs.config.packageOverrides = pkgs: {

  "systemd-small" = pkgs.systemd.override {
    withImportd = false;
    withMachined = false;
    ...
  };

};
```
2022-05-16 16:52:25 +02:00
06kellyjac
eeff6c4933 systemd: fix reproducibility of dbus interface xml
systemd's `--bus-introspect` was generating nondeterministic xml which
is saved into our build outputs
2022-05-12 10:11:22 +01:00
Janne Heß
509e2b499e
systemd: Remove accidential sysinit re-add
0423158e10 re-introduced a previously
removed mv call.
2022-05-05 14:55:40 -07:00
github-actions[bot]
da11317d1c
Merge staging-next into staging 2022-04-27 06:01:39 +00:00
Guillaume Girol
71ca66602b systemd: mark as broken for static builds 2022-04-24 23:20:48 +02:00
Sergei Trofimovich
77a189e066 systemd: disable EFI stripping
In Issue #169693 we found out that systemd-bootaa64.efi does not have
required `#### LoaderInfo: systemd-boot 250.4 ####` marking.

It is destroyed by `nixpkgs`'s `_doStrip` hook (part of `fixupOutputHooks`).
It makes sense as PE32+ is a bit different from ELF where `.sdmagic` section
is inserted.

The change avoids stripping EFI files altogether by moving them out
of default strip directories of _doStrip for the time while `fixupPhase`
is running.

Closes: https://github.com/NixOS/nixpkgs/issues/169693
2022-04-23 18:54:48 +01:00
Janne Heß
adab6ce552
nixos/systemd-stage-1: Minor fixups
- Fix the name of the env
- Add the correct kmod to the initrd
- Add `less` to make journalctl usable
- Fix SYSTEMD_SULOGIN_FORCe for rescue.target
- Add some missing binaries
2022-04-11 11:13:01 +01:00
github-actions[bot]
c46200d454
Merge master into staging-next 2022-04-03 18:01:07 +00:00
Alyssa Ross
39eee39fd9
pkgsMusl.systemd: fix build for 250.4 2022-03-27 14:13:18 +00:00
Sergei Trofimovich
35e2c61dfd systemd: 250.3 -> 250.4
Among other things fixes build failure on linux-headers-5.17:

    ../src/basic/meson.build:389:8: ERROR: Problem encountered: found unknown filesystem(s) defined in kernel headers:

    Filesystem found in kernel header but not in filesystems-gperf.gperf: CIFS_SUPER_MAGIC
    Filesystem found in kernel header but not in filesystems-gperf.gperf: SMB2_SUPER_MAGIC
2022-03-23 08:44:15 +00:00
Will Fancher
2d4ebf1259 initrd: Optional systemd-based initrd 2022-03-22 21:28:43 -04:00
Alyssa Ross
b8734c50e2 pkgsMusl.systemdMinimal: fix build
Use latest patches from OpenEmbedded.  pkgsMusl.systemd doesn't build
yet because pkgsMusl.libnetfilter_conntrack is currently broken.
2022-03-14 12:21:51 +00:00
Florian Klink
57230883fb
Merge pull request #162949 from alyssais/systemd-typos
systemd: fix a whole bunch of typos
2022-03-06 19:59:42 +01:00
Alyssa Ross
a0bfc8e7c1 systemd: update patchShebangs comment
We can't remove this yet even though we're on 250.3, because some more
crept in and weren't fixed in time for the release.
2022-03-06 10:12:19 -08:00
Alyssa Ross
479b1cb510
systemd: fix a whole bunch of typos 2022-03-06 00:58:59 +00:00
Florian Klink
f5c243d6c2 systemd: drop -Defi-ld=gold
As reported in
https://github.com/NixOS/nixpkgs/pull/156096#pullrequestreview-900986176,
this fails to build on EFI enabled RISC-V because the requested EFI
linker (efi-ld=gold) is unsupported. According to Wikipedia gold only
supports x86, x86-64, ARM, PowerPC, TileGX.

Removing this option alltogether will cause meson to figure out the
default linker by itself.
2022-03-05 21:28:08 +01:00
Jörg Thalheim
f592c5a7c4 systemd: do not patch test files
We do not run them, so it is unnecessary work.
2022-03-05 21:27:45 +01:00
Andreas Rammhold
49267a99d2 systemd: add the release timestamp into the build
This helps systemd during runtime to make decisions about the sanity of
the system clock. See the references news article for more details on
the matter.
2022-03-05 21:27:45 +01:00
Andreas Rammhold
e6280a6397 systemd: introduce withTests flag
This allows us to make test-only dependencies optional in builds that
aren't running tests (sadly all of our builds).
2022-03-05 21:27:45 +01:00
Andreas Rammhold
0c852e1fa6 systemd: remove unused lvm2 input 2022-03-05 21:27:45 +01:00
Andreas Rammhold
3ceeae830d systemdMinimal: don't set {libfido2,p11-kit,libgcrypt} to null
We don't have to do that as we already set all the feature flags to
null. Setting individual libraries to null instead of disabling their
feature flag will lead with bad example that will cause each of the
features to be disabled with multiple flags in the systemdMinimal
variant.

If a dependency is pulled in via another feature we should disable that
rather than setting it to null. Overriding a given package should be the
last resort.
2022-03-05 21:27:45 +01:00
Andreas Rammhold
3869ce784e systemd: 249.7 -> 250.3 2022-03-05 21:27:44 +01:00
Andreas Rammhold
0423158e10 systemd: reformat code with nixpkgs-fmt 2022-03-05 21:26:05 +01:00
Jörg Thalheim
b63e6649a6
systemd: add myself as maintainer, drop eelco 2022-02-09 18:50:27 +01:00
Guillaume Girol
0d5c5e46da
Merge pull request #157053 from lheckemann/systemd-optional-cryptsetup
nixos/systemd: only use cryptsetup units if systemd was built with it
2022-01-30 16:04:17 +00:00
Linus Heckemann
4b27d4f9f8 nixos/systemd: only use cryptsetup units if systemd was built with it 2022-01-30 12:00:37 +01:00
github-actions[bot]
b74b591fbe
Merge master into staging-next 2022-01-20 00:01:46 +00:00
Andreas Rammhold
31e5b8dc21
Remove myself from maintainers
I don't have time and energy to deal with all of this anymore.
2022-01-20 00:24:52 +01:00
Josh Hoffer
e7da4b5f40 systemd: removed unknown meson options 2022-01-11 12:51:09 +00:00
github-actions[bot]
75e029e297
Merge staging-next into staging 2021-12-14 00:02:27 +00:00
github-actions[bot]
420df1e082
Merge master into staging-next 2021-12-14 00:01:45 +00:00
Janne Heß
dac4f986ad
systemd: Add switchTest to passthru 2021-12-09 12:39:30 +01:00
ajs124
e2f009e5a2 systemd: reference upstream discussion for 0019-core-handle-lookup-paths-being-symlinks.patch 2021-12-07 09:10:09 +00:00
Arian van Putten
d4e4d27dff systemd: move systemd-tmpfiles-setup-dev.service back to early boot
It was originally moved because of nixops autoLuks feature which
has been unsupported for a while.

See:
* https://github.com/NixOS/nixpkgs/issues/62211
* https://github.com/NixOS/nixops/pull/1156#issuecomment-605339705

systemd-tmpfiles-setup-dev.service needs to run very  early (even before
udev runs) because udev rules assume static device nodes already exist
even before udev is started. If these static device nodes do not exist;
systemd might have trouble mounting filesystems that require static
device nodes (like loopfs and btrfs).
2021-12-06 14:40:07 +00:00
ajs124
84a769c071 systemd: 249.5 -> 249.7 2021-12-06 14:39:16 +00:00
Florian Klink
f4c450e862
Merge pull request #146573 from SuperSandro2000/systemd-coredump-zstd
Systemd coredump zstd, enable elfutils support for stack traces in coredump
2021-11-28 23:03:19 +01:00
Sandro Jäckel
9c9dffbf7a
systemd: enable elfutils support for stack traces in coredump 2021-11-19 02:55:14 +01:00
Sandro Jäckel
78d93d3698
systemd: enable zstd compression support 2021-11-19 02:54:49 +01:00
Anund
d216b21513 systemd: fix systemd-boot keyboard handling lockup
In v248 compiler weirdness and refactoring lead to the bootloader
erroring out handling keyboard input on some systems.
See https://github.com/systemd/systemd/issues/19191

This should be redundant in v249.6 when it officially gets tagged in
systemd-stable.

Closes https://github.com/NixOS/nixpkgs/issues/143847
2021-11-05 18:09:50 +11:00
Yureka
6ac494fefb systemd: add musl patches
Fixes build of pkgsMusl.systemdMinimal (and pkgsMusl.systemd if combined with
other fixes).
These patches are applied conditionally on purpose: They are not checked to
be properly guarded. They should not block future systemd upgrades.
Also see the original RFC section around musl systemd:
https://github.com/NixOS/rfcs/blob/master/rfcs/0023-musl-libc.md#systemd
2021-10-20 11:38:57 +02:00
Alyssa Ross
28e55bce8c
systemd: 249.4 -> 249.5
Some of Andi's patches have been upstreamed, so we don't need to apply
them ourselves any more.
2021-10-18 13:23:41 +00:00
Florian Klink
6b1bac2a23 systemd: fix typo in comment 2021-10-18 13:15:55 +02:00
Thomas Tuegel
1c95c92c59
systemd: regenerate patch list according to instructions 2021-10-16 08:49:53 -05:00
Thomas Tuegel
deffa7350d
systemd: remove compatibility patch for legacy Plasma 2021-10-16 08:44:35 -05:00
github-actions[bot]
b4569f7a81
Merge staging-next into staging 2021-10-08 00:02:10 +00:00
Ryan Burns
41574158a0 libgpg-error: rename from libgpgerror
Matches pname and upstream project name
2021-10-06 18:23:43 -07:00
Yurii Matsiuk
73ac07a127
systemd: add missing TPM2 build dependencies 2021-10-01 21:16:33 +02:00
Rick van Schijndel
eabd03a551 systemd: fix cross-compilation
Instead of patching the ld path, it's now specified as meson option
2021-09-18 06:37:20 +02:00
Andreas Rammhold
64556974b6
systemd: 247.6 -> 249.4
This updates systemd to version v249.4 from version v247.6.

Besides the many new features that can be found in the upstream
repository they also introduced a bunch of cleanup which ended up
requiring a few more patches on our side.

a) 0022-core-Handle-lookup-paths-being-symlinks.patch:
  The way symlinked units were handled was changed in such that the last
  name of a unit file within one of the unit directories
  (/run/systemd/system, /etc/systemd/system, ...) is used as the name
  for the unit. Unfortunately that code didn't take into account that
  the unit directories themselves could already be symlinks and thus
  caused all our units to be recognized slightly different.

  There is an upstream PR for this new patch:
    https://github.com/systemd/systemd/pull/20479

b) The way the APIVFS is setup has been changed in such a way that we
   now always have /run. This required a few changes to the
   confinement tests which did assert that they didn't exist. Instead of
   adding another patch we can just adopt the upstream behavior. An
   empty /run doesn't seem harmful.

   As part of this work I refactored the confinement test just a little
   bit to allow better debugging of test failures. Previously it would
   just fail at some point and it wasn't obvious which of the many
   commands failed or what the unexpected string was. This should now be
   more obvious.

c) Again related to the confinement tests the way a file was tested for
   being accessible was optimized. Previously systemd would in some
   situations open a file twice during that check. This was reduced to
   one operation but required the procfs to be mounted in a units
   namespace.

   An upstream bug was filed and fixed. We are now carrying the
   essential patch to fix that issue until it is backported to a new
   release (likely only version 250). The good part about this story is
   that upstream systemd now has a test case that looks very similar to
   one of our confinement tests. Hopefully that will lead to less
   friction in the long run.

   https://github.com/systemd/systemd/issues/20514
   https://github.com/systemd/systemd/pull/20515

d) Previously we could grep for dlopen( somewhat reliably but now
   upstream started using a wrapper around dlopen that is most of the
   time used with linebreaks. This makes using grep not ergonomic
   anymore.

   With this bump we are grepping for anything that looks like a
   dynamic library name (in contrast to a dlopen(3) call) and replace
   those instead. That seems more robust. Time will tell if this holds.

   I tried using coccinelle to patch all those call sites using its
   tooling but unfornately it does stumble upon the _cleanup_
   annotations that are very common in the systemd code.

e) We now have some machinery for libbpf support in our systemd build.
   That being said it doesn't actually work as generating some skeletons
   doesn't work just yet. It fails with the below error message and is
   disabled by default (in both minimal and the regular build).

   > FAILED: src/core/bpf/socket_bind/socket-bind.skel.h
   > /build/source/tools/build-bpf-skel.py --clang_exec /nix/store/x1bi2mkapk1m0zq2g02nr018qyjkdn7a-clang-wrapper-12.0.1/bin/clang --llvm_strip_exec /nix/store/zm0kqan9qc77x219yihmmisi9g3sg8ns-llvm-12.0.1/bin/llvm-strip --bpftool_exec /nix/store/l6dg8jlbh8qnqa58mshh3d8r6999dk0p-bpftools-5.13.11/bin/bpftool --arch x86_64 ../src/core/bpf/socket_bind/socket-bind.bpf.c src/core/bpf/socket_bind/socket-bind.skel.h
   > libbpf: elf: socket_bind_bpf is not a valid eBPF object file
   > Error: failed to open BPF object file: BPF object format invalid
   > Traceback (most recent call last):
   >   File "/build/source/tools/build-bpf-skel.py", line 128, in <module>
   >     bpf_build(args)
   >   File "/build/source/tools/build-bpf-skel.py", line 92, in bpf_build
   >     gen_bpf_skeleton(bpftool_exec=args.bpftool_exec,
   >   File "/build/source/tools/build-bpf-skel.py", line 63, in gen_bpf_skeleton
   >     skel = subprocess.check_output(bpftool_args, universal_newlines=True)
   >   File "/nix/store/81lwy2hfqj4c1943b1x8a0qsivjhdhw9-python3-3.9.6/lib/python3.9/subprocess.py", line 424, in check_output
   >     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
   >   File "/nix/store/81lwy2hfqj4c1943b1x8a0qsivjhdhw9-python3-3.9.6/lib/python3.9/subprocess.py", line 528, in run
   >     raise CalledProcessError(retcode, process.args,
   > subprocess.CalledProcessError: Command '['/nix/store/l6dg8jlbh8qnqa58mshh3d8r6999dk0p-bpftools-5.13.11/bin/bpftool', 'g', 's', '../src/core/bpf/socket_bind/socket-bind.bpf.o']' returned non-zero exit status 255.
   > [102/1457] Compiling C object src/journal/libjournal-core.a.p/journald-server.c.oapture output)put)ut)
   > ninja: build stopped: subcommand failed.

  f) We do now have support for TPM2 based disk encryption in our
     systemd build. The actual bits and pieces to make use of that are
     missing but there are various ongoing efforts in that direction.
     There is also the story about systemd in our initrd to enable this
     being used for root volumes. None of this will yet work out of the
     box but we can start improving on that front.

  g) FIDO2 support was added systemd and consequently we can now use
     that. Just with TPM2 there hasn't been any integration work with
     NixOS and instead this just adds that capability to work on that.

Co-Authored-By: Jörg Thalheim <joerg@thalheim.io>
2021-09-12 23:45:49 +02:00