about summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/hoogle.nix
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2017-08-06 22:02:50 +0200
committerProfpatsch <mail@profpatsch.de>2017-08-06 22:02:50 +0200
commit4a8efae000a0a9f8e61abfc76189259077b4a3ea (patch)
tree4398b2205ab09aef75ecd76a25068b6d71c7ae81 /pkgs/development/haskell-modules/hoogle.nix
parente9e25ec5fe773ef6bae9363e8f87fd0909f3ee56 (diff)
pkgs/haskell-modules/hoogle.nix: find haddocks by `haddockDir`
Previously a few clumsy shell globs were used to find haddock output, which
broke every time something in `generic-builder.nix` changed.
Use the new `haddockDir` identifier exported by haskell packages.
Diffstat (limited to 'pkgs/development/haskell-modules/hoogle.nix')
-rw-r--r--pkgs/development/haskell-modules/hoogle.nix27
1 files changed, 15 insertions, 12 deletions
diff --git a/pkgs/development/haskell-modules/hoogle.nix b/pkgs/development/haskell-modules/hoogle.nix
index b6063f6ef9778..65124d4c7006c 100644
--- a/pkgs/development/haskell-modules/hoogle.nix
+++ b/pkgs/development/haskell-modules/hoogle.nix
@@ -52,7 +52,10 @@ let
       This index includes documentation for many Haskell modules.
     '';
 
-  docPackages = lib.closePropagation packages;
+  # TODO: closePropagation is deprecated; replace
+  docPackages = lib.closePropagation
+    # we grab the doc outputs
+    (map (lib.getOutput "doc") packages);
 
 in
 stdenv.mkDerivation {
@@ -64,6 +67,10 @@ stdenv.mkDerivation {
   inherit docPackages;
 
   buildPhase = ''
+    ${lib.optionalString (packages != [] -> docPackages == [])
+       ("echo WARNING: localHoogle package list empty, even though"
+       + " the following were specified: "
+       + lib.concatMapStringsSep ", " (p: p.name) packages)}
     mkdir -p $out/share/doc/hoogle
 
     echo importing builtin packages
@@ -76,17 +83,13 @@ stdenv.mkDerivation {
     done
 
     echo importing other packages
-    for i in $docPackages; do
-      if [[ ! $i == $out ]]; then
-        for docdir in $i/share/doc/*-${ghcName}-*/* $i/share/doc/*; do
-          name="$(basename $docdir)"
-          docdir=$docdir/html
-          if [[ -d $docdir ]]; then
-            ln -sfn $docdir $out/share/doc/hoogle/$name
-          fi
-        done
-      fi
-    done
+    ${lib.concatMapStringsSep "\n" (el: ''
+        ln -sfn ${el.haddockDir} "$out/share/doc/hoogle/${el.name}"
+      '')
+      (lib.filter (el: el.haddockDir != null)
+        (builtins.map (p: { haddockDir = p.haddockDir p;
+                            name = p.pname; })
+          docPackages))}
 
     echo building hoogle database
     hoogle generate --database $out/share/doc/hoogle/default.hoo --local=$out/share/doc/hoogle