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.
This commit is contained in:
Profpatsch 2017-08-06 22:02:50 +02:00
parent e9e25ec5fe
commit 4a8efae000

View File

@ -52,7 +52,10 @@ let
This index includes documentation for many Haskell modules. 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 in
stdenv.mkDerivation { stdenv.mkDerivation {
@ -64,6 +67,10 @@ stdenv.mkDerivation {
inherit docPackages; inherit docPackages;
buildPhase = '' 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 mkdir -p $out/share/doc/hoogle
echo importing builtin packages echo importing builtin packages
@ -76,17 +83,13 @@ stdenv.mkDerivation {
done done
echo importing other packages echo importing other packages
for i in $docPackages; do ${lib.concatMapStringsSep "\n" (el: ''
if [[ ! $i == $out ]]; then ln -sfn ${el.haddockDir} "$out/share/doc/hoogle/${el.name}"
for docdir in $i/share/doc/*-${ghcName}-*/* $i/share/doc/*; do '')
name="$(basename $docdir)" (lib.filter (el: el.haddockDir != null)
docdir=$docdir/html (builtins.map (p: { haddockDir = p.haddockDir p;
if [[ -d $docdir ]]; then name = p.pname; })
ln -sfn $docdir $out/share/doc/hoogle/$name docPackages))}
fi
done
fi
done
echo building hoogle database echo building hoogle database
hoogle generate --database $out/share/doc/hoogle/default.hoo --local=$out/share/doc/hoogle hoogle generate --database $out/share/doc/hoogle/default.hoo --local=$out/share/doc/hoogle