about summary refs log tree commit diff
path: root/nixos/tests
AgeCommit message (Collapse)AuthorFilesLines
2023-03-29Merge pull request #221851 from Ma27/postgresql-jit-supportSandro4-2/+51
postgresql: implement opt-in JIT support
2023-03-29nixos/postgresql: fix enableJITMaximilian Bosch1-4/+2
Make sure that JIT is actually available when using services.postgresql = { enable = true; enableJIT = true; package = pkgs.postgresql_15; }; The current behavior is counter-intuitive because the docs state that `enableJIT = true;` is sufficient even though it wasn't in that case because the declared package doesn't have the LLVM dependency. Fixed by using `package.withJIT` if `enableJIT = true;` and `package.jitSupport` is `false`. Also updated the postgresql-jit test to test for that case.
2023-03-29nixos/tests/postgresql: fix deprecation warningMaximilian Bosch1-1/+1
2023-03-29postgresql: implement opt-in JIT supportMaximilian Bosch3-1/+52
Closes #150801 Note: I decided against resuming directly on #150801 because the conflict was too big (and resolving it seemed too error-prone to me). Also the `this`-refactoring could be done in an easier manner, i.e. by exposing JIT attributes with the correct configuration. More on that below. This patch creates variants of the `postgresql*`-packages with JIT[1] support. Please note that a lot of the work was derived from previous patches filed by other contributors, namely dasJ, andir and abbradar, hence the co-authored-by tags below. Effectively, the following things have changed: * For JIT variants an LLVM-backed stdenv with clang is now used as suggested by dasJ[2]. We need LLVM and CLang[3] anyways to build the JIT-part, so no need to mix this up with GCC's stdenv. Also, using the `dev`-output of LLVM and clang's stdenv for building (and adding llvm libs as build-inputs) seems more cross friendly to me (which will become useful when cross-building for JIT-variants will actually be supported). * Plugins inherit the build flags from the Makefiles in `$out/lib/pgxs/src` (e.g. `-Werror=unguarded-availability-new`). Since some of the flags are clang-specific (and stem from the use of the CLang stdenv) and don't work on gcc, the stdenv of `pkgs.postgresql` is passed to the plugins. I.e., plugins for non-JIT variants are built with a gcc stdenv on Linux and plugins for JIT variants with a clang stdenv. Since `plv8` hard-codes `gcc` as `$CC` in its Makefile[4], I marked it as broken for JIT-variants of postgresql only. * Added a test-matrix to confirm that JIT works fine on each `pkgs.postgresql_*_jit` (thanks Andi for the original test in #124804!). * For each postgresql version, a new attribute `postgresql_<version>_jit` (and a corresponding `postgresqlPackages<version>JitPackages`) are now exposed for better discoverability and prebuilt artifacts in the binary cache. * In #150801 the `this`-argument was replaced by an internal recursion. I decided against this approach because it'd blow up the diff even more which makes the readability way harder and also harder to revert this if necessary. Instead, it is made sure that `this` always points to the correct variant of `postgresql` and re-using that in an additional `.override {}`-expression is trivial because the JIT-variant is exposed in `all-packages.nix`. * I think the changes are sufficiently big to actually add myself as maintainer here. * Added `libxcrypt` to `buildInputs` for versions <v13. While building things with an LLVM stdenv, these versions complained that the extern `crypt()` symbol can't be found. Not sure what this is exactly about, but since we want to switch to libxcrypt for `crypt()` usage anyways[5] I decided to add it. For >=13 it's not relevant anymore anyways[6]. * JIT support doesn't work with cross-compilation. It is attempted to build LLVM-bytecode (`%.bc` is the corresponding `make(1)`-rule) for each sub-directory in `backend/` for the JIT apparently, but with a $(CLANG) that can produce binaries for the build, not the host-platform. I managed to get a cross-build with JIT support working with `depsBuildBuild = [ llvmPackages.clang ] ++ buildInputs`, but considering that the resulting LLVM IR isn't platform-independent this doesn't give you much. In fact, I tried to test the result in a VM-test, but as soon as JIT was used to optimize a query, postgres would coredump with `Illegal instruction`. A common concern of the original approach - with llvm as build input - was the massive increase of closure size. With the new approach of using the LLVM stdenv directly and patching out references to the clang drv in `$out` the effective closure size changes are: $ nix path-info -Sh $(nix-build -A postgresql_14) /nix/store/kssxxqycwa3c7kmwmykwxqvspxxa6r1w-postgresql-14.7 306.4M $ nix path-info -Sh $(nix-build -A postgresql_14_jit) /nix/store/xc7qmgqrn4h5yr4vmdwy56gs4bmja9ym-postgresql-14.7 689.2M Most of the increase in closure-size stems from the `lib`-output of LLVM $ nix path-info -Sh /nix/store/5r97sbs5j6mw7qnbg8nhnq1gad9973ap-llvm-11.1.0-lib /nix/store/5r97sbs5j6mw7qnbg8nhnq1gad9973ap-llvm-11.1.0-lib 349.8M which is why this shouldn't be enabled by default. While this is quite much because of LLVM, it's still a massive improvement over the simple approach of adding llvm/clang as build-inputs and building with `--with-llvm`: $ nix path-info -Sh $(nix-build -E ' with import ./. {}; postgresql.overrideAttrs ({ configureFlags ? [], buildInputs ? [], ... }: { configureFlags = configureFlags ++ [ "--with-llvm" ]; buildInputs = buildInputs ++ [ llvm clang ]; })' -j0) /nix/store/i3bd2r21c6c3428xb4gavjnplfqxn27p-postgresql-14.7 1.6G Co-authored-by: Andreas Rammhold <andreas@rammhold.de> Co-authored-by: Janne Heß <janne@hess.ooo> Co-authored-by: Nikolay Amiantov <ab@fmap.me> [1] https://www.postgresql.org/docs/current/jit-reason.html [2] https://github.com/NixOS/nixpkgs/pull/124804#issuecomment-864616931 & https://github.com/NixOS/nixpkgs/pull/150801#issuecomment-1467868321 [3] This fails with the following error otherwise: ``` configure: error: clang not found, but required when compiling --with-llvm, specify with CLANG= ``` [4] https://github.com/plv8/plv8/blob/v3.1.5/Makefile#L14 [5] https://github.com/NixOS/nixpkgs/pull/181764 [6] https://github.com/postgres/postgres/commit/c45643d618e35ec2fe91438df15abd4f3c0d85ca
2023-03-28Merge pull request #223479 from dotlambda/vaultwarden-1.28.0Martin Weinelt1-2/+4
vaultwarden: 1.27.0 -> 1.28.0
2023-03-28vaultwarden: 1.27.0 -> 1.28.0Robert Schütz1-2/+4
Diff: https://github.com/dani-garcia/vaultwarden/compare/1.27.0..1.28.0 Changelog: https://github.com/dani-garcia/vaultwarden/releases/tag/1.28.0
2023-03-27Merge pull request #223388 from 06kellyjac/authelia-moveRyan Lahfa1-1/+1
authelia: move module under security and minor fixes
2023-03-27Merge pull request #222946 from RaitoBezarius/zfs-6_2-6_3-compatRyan Lahfa1-0/+7
zfsUnstable: make it compatible again with 6.2.8 and potentially 6.3
2023-03-27Merge pull request #162479 from stuebinm/feature/mattermost-secretsK9001-0/+16
nixos/mattermost: add secretFile option for declarative configs (again)
2023-03-27mattermost: add environmentFile option to allow declarative secretsstuebinm1-0/+16
This adds an option `services.mattermost.environmentFile`, intended to be useful especially when `services.mattermost.mutableConfig` is set to `false`. Since all mattermost configuration options can also be set by environment variables, this allows managing secret configuration values in a declarative manner without placing them in the nix store.
2023-03-27nixos/tests/zfs: add zfsUnstable test for systemd-stage 1Raito Bezarius1-0/+7
2023-03-27authelia: move module under security and minor fixes06kellyjac1-1/+1
Fixed test access to lib Added nixos test to passthru
2023-03-27Merge pull request #222584 from IndeedNotJames/nixos-consulSandro1-10/+20
2023-03-25Merge master into staging-nextgithub-actions[bot]7-86/+251
2023-03-25Merge pull request #220776 from Vonfry/deprecated/fcitx4Nick Cao6-86/+81
fcitx: remove version 4
2023-03-24nixos/authelia: init tests06kellyjac2-0/+170
2023-03-25Merge master into staging-nextgithub-actions[bot]1-0/+2
2023-03-24Merge pull request #222701 from jopejoe1/firefoxMartin Weinelt1-0/+2
firefox-{beta,devedition}-unwrapped: init at 112.0b6
2023-03-24firefox-beta-unwrapped: init at 112.0b6jopejoe11-0/+1
2023-03-24firefox-devedition-unwrapped: init at 112.0b6jopejoe11-0/+1
2023-03-24Merge branch 'master' into staging-nextVladimír Čunát2-0/+99
2023-03-24Merge pull request #176828 from therishidesai/luks-multi-key-filesWill Fancher2-0/+99
nixos/luksroot: add tryEmptyPassphrase option
2023-03-23Merge master into staging-nextgithub-actions[bot]3-8/+57
2023-03-23Merge pull request #222311 from NickCao/qt6-vfNick Cao2-0/+31
qt6.qtbase: add patch to fix handling of variable fonts
2023-03-23Merge pull request #222205 from NickCao/zram-writeback-deviceNick Cao1-8/+26
nixos/zram: add writebackDevice option and corresponding test
2023-03-23Merge master into staging-nextgithub-actions[bot]2-2/+5
2023-03-22Merge pull request #222372 from NixOS/nextcloud26Maximilian Bosch2-2/+5
nextcloud26: init at 26.0.0
2023-03-22nixos/nextcloud: minor fixupsMaximilian Bosch1-1/+0
* Apply review comments. * Default to PHP 8.2 for v26.
2023-03-22nixos/tests/nextcloud: do not expect failure on NC ≥26 with respect to RC4 bugRaito Bezarius1-1/+5
2023-03-22nixos/web-apps/nextcloud: introduce nextcloud26Raito Bezarius1-1/+1
2023-03-22nixos/tests/consul: stop consul cleanlyIndeedNotJames1-10/+20
This should fix the flakyness of the test. Forcefully killing the consul process can lead to a broken `/var/lib/consul/node-id` file, which will prevent consul from starting on that node again. See https://github.com/hashicorp/consul/issues/3489 So instead of crashing the whole node, which leads to this corruption from time to time, we kill the networking instead, preventing any cluster communication and then cleanly stop consul.
2023-03-22Merge master into staging-nextgithub-actions[bot]2-0/+83
2023-03-22nixos/luksroot: add tryEmptyPassphrase optionRishi Desai2-0/+99
2023-03-22keyd: add keyd service and testwoojiq2-0/+83
The keyd package already exists, but without a systemd service. Keyd requires write access to /var/run to create its socket. Currently the directory it uses can be changed with an environment variable, but the keyd repo state suggests that this may turn into a compile-time option. with that set, and some supplementary groups added, we can run the service under DynamicUser. Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
2023-03-22nixosTests.noto-fonts-cjk-qt-default-weight: initoxalica2-0/+31
2023-03-21Merge master into staging-nextgithub-actions[bot]1-3/+3
2023-03-22Merge pull request #220656 from oxzi/restic-cache-fixLassulus1-3/+3
nixos/restic: generalize cache configuration
2023-03-21Merge remote-tracking branch 'origin/master' into staging-nextMartin Weinelt1-1/+1
Conflicts: - nixos/doc/manual/release-notes/rl-2305.section.md
2023-03-21nixos/zram: add writebackDevice option and corresponding testNick Cao1-8/+26
2023-03-21Merge pull request #222228 from erictapen/gollumNick Cao1-1/+1
gollum: 5.3.0 -> 5.3.1
2023-03-20Merge master into staging-nextgithub-actions[bot]1-1/+1
2023-03-20nixos/gollum: fix deprecation warningKerstin Humm1-1/+1
2023-03-20gitea: 1.18.5 -> 1.19.0Maximilian Bosch1-1/+1
ChangeLog: https://github.com/go-gitea/gitea/releases/tag/v1.19.0
2023-03-19Merge master into staging-nextgithub-actions[bot]2-0/+35
2023-03-19Merge pull request #202995 from tomfitzhenry/sgtpuzzles-testFrancesco Gazzetta2-0/+35
nixos/tests/sgtpuzzles: init
2023-03-19Merge master into staging-nextgithub-actions[bot]1-0/+1
2023-03-19nixos/sssd: create symlinks in /etc to fix sssctlBjørn Forsman1-0/+1
Without this, sssctl fails to read its configuration. Update the NixOS test to ensure sssctl doesn't regress.
2023-03-18Merge master into staging-nextgithub-actions[bot]1-0/+7
2023-03-18Merge pull request #221838 from devusb/pomeriumLuke Granger-Brown1-0/+7
pomerium: 0.20.0 -> 0.21.2
2023-03-18Merge master into staging-nextgithub-actions[bot]4-59/+2