summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2018-02-01 17:15:28 +0100
committerVladimír Čunát <vcunat@gmail.com>2018-02-02 15:26:36 +0100
commitbbfca0f371d8c41009e812f3e50e5b93eb457cff (patch)
treef4b9e5163aec673f5c4408e9cdc5901bffd25efe /pkgs/servers
parent9a5fe79d07204e7b4c9868892d897f501c9aa419 (diff)
downloadnixlib-bbfca0f371d8c41009e812f3e50e5b93eb457cff.tar
nixlib-bbfca0f371d8c41009e812f3e50e5b93eb457cff.tar.gz
nixlib-bbfca0f371d8c41009e812f3e50e5b93eb457cff.tar.bz2
nixlib-bbfca0f371d8c41009e812f3e50e5b93eb457cff.tar.lz
nixlib-bbfca0f371d8c41009e812f3e50e5b93eb457cff.tar.xz
nixlib-bbfca0f371d8c41009e812f3e50e5b93eb457cff.tar.zst
nixlib-bbfca0f371d8c41009e812f3e50e5b93eb457cff.zip
knot-resolver: 1.5.3 -> 2.0.0 (feature update)
Also split extraFeatures into a wrapper derivation.
So far, no changes like user renaming nor systemd unit rework.
Diffstat (limited to 'pkgs/servers')
-rw-r--r--pkgs/servers/dns/knot-resolver/default.nix71
1 files changed, 41 insertions, 30 deletions
diff --git a/pkgs/servers/dns/knot-resolver/default.nix b/pkgs/servers/dns/knot-resolver/default.nix
index 7a5aa8da550a..2ec12b81f84b 100644
--- a/pkgs/servers/dns/knot-resolver/default.nix
+++ b/pkgs/servers/dns/knot-resolver/default.nix
@@ -1,63 +1,55 @@
-{ stdenv, fetchurl, pkgconfig, hexdump, which
+{ stdenv, fetchurl, runCommand, pkgconfig, hexdump, which
 , knot-dns, luajit, libuv, lmdb, gnutls, nettle
 , cmocka, systemd, dns-root-data, makeWrapper
 , extraFeatures ? false /* catch-all if defaults aren't enough */
 , hiredis, libmemcached, luajitPackages
 }:
+let # un-indented, over the whole file
 
-let
-  inherit (stdenv.lib) optional optionals optionalString;
-in
-stdenv.mkDerivation rec {
+result = if extraFeatures then wrapped-full else unwrapped;
+
+inherit (stdenv.lib) optional optionals optionalString concatStringsSep;
+
+unwrapped = stdenv.mkDerivation rec {
   name = "knot-resolver-${version}";
-  version = "1.5.3";
+  version = "2.0.0";
 
   src = fetchurl {
     url = "http://secure.nic.cz/files/knot-resolver/${name}.tar.xz";
-    sha256 = "03sb05zz6qn966apcprdqhmirkz7kjdbx8hswbvgamk1s2xd7v6f";
+    sha256 = "b40d9dbef05031464dfff57712f476e7cddc0fda26b41daf660c5a33ea203ce0";
   };
 
   outputs = [ "out" "dev" ];
 
   configurePhase = ":";
 
-  nativeBuildInputs = [ pkgconfig which makeWrapper hexdump ];
+  nativeBuildInputs = [ pkgconfig which hexdump ];
 
   # http://knot-resolver.readthedocs.io/en/latest/build.html#requirements
   buildInputs = [ knot-dns luajit libuv gnutls nettle lmdb ]
-    ++ optional doInstallCheck cmocka
+    ++ optional doCheck cmocka
     ++ optional stdenv.isLinux systemd # sd_notify
-    ++ optionals extraFeatures [
-      hiredis libmemcached # additional cache backends
-    ];
-    ## optional dependencies; TODO: libedit, dnstap, http2 module?
+    ## optional dependencies; TODO: libedit, dnstap
+    ;
 
-  makeFlags = [ "PREFIX=$(out)" "ROOTHINTS=${dns-root-data}/root.hints" ];
+  makeFlags = [
+    "PREFIX=$(out)"
+    "ROOTHINTS=${dns-root-data}/root.hints"
+    "KEYFILE_DEFAULT=${dns-root-data}/root.ds"
+  ];
   CFLAGS = [ "-O2" "-DNDEBUG" ];
 
   enableParallelBuilding = true;
 
   doCheck = true;
-  doInstallCheck = true;
+  doInstallCheck = false; # FIXME
   preInstallCheck = ''
     patchShebangs tests/config/runtest.sh
   '';
 
   postInstall = ''
-    rm "$out"/etc/kresd/root.hints # using system-wide instead
-  ''
-  # optional: to allow auto-bootstrapping root trust anchor via https
-  + (with luajitPackages; ''
-      wrapProgram "$out/sbin/kresd" \
-        --set LUA_PATH '${
-          stdenv.lib.concatStringsSep ";"
-            (map getLuaPath [ luasec luasocket ])
-          }' \
-        --set LUA_CPATH '${
-          stdenv.lib.concatStringsSep ";"
-            (map getLuaCPath [ luasec luasocket ])
-          }'
-    '');
+    rm "$out"/etc/knot-resolver/root.hints # using system-wide instead
+  '';
 
   meta = with stdenv.lib; {
     description = "Caching validating DNS resolver, from .cz domain registry";
@@ -67,5 +59,24 @@ stdenv.mkDerivation rec {
     platforms = filter (p: p != "aarch64-linux") platforms.unix;
     maintainers = [ maintainers.vcunat /* upstream developer */ ];
   };
-}
+};
+
+wrapped-full = with luajitPackages; let
+    luaPkgs =  [ luasec luasocket ]; # TODO: cqueues and others for http2 module
+  in runCommand unwrapped.name
+  {
+    nativeBuildInputs = [ makeWrapper ];
+    preferLocalBuild = true;
+    allowSubstitutes = false;
+  }
+  ''
+    mkdir -p "$out/sbin" "$out/share"
+    makeWrapper '${unwrapped}/sbin/kresd' "$out"/sbin/kresd \
+      --set LUA_PATH  '${concatStringsSep ";" (map getLuaPath  luaPkgs)}' \
+      --set LUA_CPATH '${concatStringsSep ";" (map getLuaCPath luaPkgs)}'
+    ln -sr '${unwrapped}/share/man' "$out"/share/
+    ln -sr "$out"/{sbin,bin}
+  '';
+
+in result