summary refs log tree commit diff
diff options
context:
space:
mode:
authorJamie McClymont <jamie@kwiius.com>2020-05-17 20:11:41 +1200
committerJamie McClymont <jamie@kwiius.com>2020-05-17 20:23:48 +1200
commit8cdc8687bffd411f6f5b5e458071f18b4c9dd109 (patch)
tree2e2148017f9060c26fddaed187b700ea102a0a15
parent6c195563e1fdaa005f448caeb976cb249f838a7d (diff)
downloadnixpkgs-8cdc8687bffd411f6f5b5e458071f18b4c9dd109.tar
nixpkgs-8cdc8687bffd411f6f5b5e458071f18b4c9dd109.tar.gz
nixpkgs-8cdc8687bffd411f6f5b5e458071f18b4c9dd109.tar.bz2
nixpkgs-8cdc8687bffd411f6f5b5e458071f18b4c9dd109.tar.lz
nixpkgs-8cdc8687bffd411f6f5b5e458071f18b4c9dd109.tar.xz
nixpkgs-8cdc8687bffd411f6f5b5e458071f18b4c9dd109.tar.zst
nixpkgs-8cdc8687bffd411f6f5b5e458071f18b4c9dd109.zip
redis: handle changes to systemd support
The 6.0 changelog notes that systemd support was rewritten. The effects
of that seem to be twofold:

* Redis will silently fail to sd_notify if not built with libsystemd,
  breaking our unit configuration.
* It also appears to misbehave if told to daemonize when running under
  systemd -- note that upstream's sample unit configuration does not
  daemonize:
  https://github.com/antirez/redis/blob/unstable/utils/systemd-redis_server.service
-rw-r--r--nixos/modules/services/databases/redis.nix3
-rw-r--r--pkgs/servers/nosql/redis/default.nix7
2 files changed, 5 insertions, 5 deletions
diff --git a/nixos/modules/services/databases/redis.nix b/nixos/modules/services/databases/redis.nix
index 5c817422aae..799c3db6216 100644
--- a/nixos/modules/services/databases/redis.nix
+++ b/nixos/modules/services/databases/redis.nix
@@ -11,12 +11,11 @@ let
     port ${toString cfg.port}
     ${condOption "bind" cfg.bind}
     ${condOption "unixsocket" cfg.unixSocket}
-    daemonize yes
+    daemonize no
     supervised systemd
     loglevel ${cfg.logLevel}
     logfile ${cfg.logfile}
     syslog-enabled ${redisBool cfg.syslog}
-    pidfile /run/redis/redis.pid
     databases ${toString cfg.databases}
     ${concatMapStrings (d: "save ${toString (builtins.elemAt d 0)} ${toString (builtins.elemAt d 1)}\n") cfg.save}
     dbfilename dump.rdb
diff --git a/pkgs/servers/nosql/redis/default.nix b/pkgs/servers/nosql/redis/default.nix
index 16d985f6559..3678f028cfe 100644
--- a/pkgs/servers/nosql/redis/default.nix
+++ b/pkgs/servers/nosql/redis/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, lua, jemalloc, nixosTests }:
+{ stdenv, fetchurl, lua, pkgconfig, systemd, jemalloc, nixosTests }:
 
 stdenv.mkDerivation rec {
   version = "6.0.1";
@@ -18,13 +18,14 @@ stdenv.mkDerivation rec {
     ''}
   '';
 
-  buildInputs = [ lua ];
+  buildInputs = [ lua pkgconfig ] ++ stdenv.lib.optional (stdenv.isLinux) systemd;
   # More cross-compiling fixes.
   # Note: this enables libc malloc as a temporary fix for cross-compiling.
   # Due to hardcoded configure flags in jemalloc, we can't cross-compile vendored jemalloc properly, and so we're forced to use libc allocator.
   # It's weird that the build isn't failing because of failure to compile dependencies, it's from failure to link them!
   makeFlags = [ "PREFIX=$(out)" ]
-    ++ stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "AR=${stdenv.cc.targetPrefix}ar" "RANLIB=${stdenv.cc.targetPrefix}ranlib" "MALLOC=libc" ];
+    ++ stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "AR=${stdenv.cc.targetPrefix}ar" "RANLIB=${stdenv.cc.targetPrefix}ranlib" "MALLOC=libc" ]
+    ++ stdenv.lib.optional (stdenv.isLinux) ["USE_SYSTEMD=yes"];
 
   enableParallelBuilding = true;