doc: Prevent evaluation warnings
Problem: `nix-build doc` gives a bunch of warnings because it inspects `lib` to figure out where all the symbols are. Solution: Move the step of figuring out where the symbols are to a Nix evaluation inside a derivation instead.
This commit is contained in:
parent
a0812b380b
commit
f01573b6ee
@ -4,24 +4,31 @@
|
|||||||
|
|
||||||
with pkgs;
|
with pkgs;
|
||||||
|
|
||||||
let
|
|
||||||
locationsJSON = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; };
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "nixpkgs-lib-docs";
|
name = "nixpkgs-lib-docs";
|
||||||
src = ../../lib;
|
src = pkgs.lib.fileset.toSource {
|
||||||
|
root = ../..;
|
||||||
|
fileset = ../../lib;
|
||||||
|
};
|
||||||
|
|
||||||
buildInputs = [ nixdoc ];
|
buildInputs = [ nixdoc nix ];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
export NIX_STATE_DIR=$(mktemp -d)
|
||||||
|
nix-instantiate --eval --strict --json ${./lib-function-locations.nix} \
|
||||||
|
--arg nixpkgsPath "./." \
|
||||||
|
--argstr revision ${nixpkgs.rev or "master"} \
|
||||||
|
--argstr libsetsJSON ${pkgs.lib.escapeShellArg (builtins.toJSON libsets)} \
|
||||||
|
> locations.json
|
||||||
|
|
||||||
function docgen {
|
function docgen {
|
||||||
name=$1
|
name=$1
|
||||||
baseName=$2
|
baseName=$2
|
||||||
description=$3
|
description=$3
|
||||||
# TODO: wrap lib.$name in <literal>, make nixdoc not escape it
|
# TODO: wrap lib.$name in <literal>, make nixdoc not escape it
|
||||||
if [[ -e "../lib/$baseName.nix" ]]; then
|
if [[ -e "lib/$baseName.nix" ]]; then
|
||||||
nixdoc -c "$name" -d "lib.$name: $description" -l ${locationsJSON} -f "$baseName.nix" > "$out/$name.md"
|
nixdoc -c "$name" -d "lib.$name: $description" -l locations.json -f "lib/$baseName.nix" > "$out/$name.md"
|
||||||
else
|
else
|
||||||
nixdoc -c "$name" -d "lib.$name: $description" -l ${locationsJSON} -f "$baseName/default.nix" > "$out/$name.md"
|
nixdoc -c "$name" -d "lib.$name: $description" -l locations.json -f "lib/$baseName/default.nix" > "$out/$name.md"
|
||||||
fi
|
fi
|
||||||
echo "$out/$name.md" >> "$out/index.md"
|
echo "$out/$name.md" >> "$out/index.md"
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
{ pkgs, nixpkgs ? { }, libsets }:
|
{ nixpkgsPath, revision, libsetsJSON }:
|
||||||
let
|
let
|
||||||
revision = pkgs.lib.trivial.revisionWithDefault (nixpkgs.rev or "master");
|
lib = import (nixpkgsPath + "/lib");
|
||||||
|
libsets = builtins.fromJSON libsetsJSON;
|
||||||
|
|
||||||
libDefPos = prefix: set:
|
libDefPos = prefix: set:
|
||||||
builtins.concatMap
|
builtins.concatMap
|
||||||
(name: [{
|
(name: [{
|
||||||
name = builtins.concatStringsSep "." (prefix ++ [name]);
|
name = builtins.concatStringsSep "." (prefix ++ [name]);
|
||||||
location = builtins.unsafeGetAttrPos name set;
|
location = builtins.unsafeGetAttrPos name set;
|
||||||
}] ++ nixpkgsLib.optionals
|
}] ++ lib.optionals
|
||||||
(builtins.length prefix == 0 && builtins.isAttrs set.${name})
|
(builtins.length prefix == 0 && builtins.isAttrs set.${name})
|
||||||
(libDefPos (prefix ++ [name]) set.${name})
|
(libDefPos (prefix ++ [name]) set.${name})
|
||||||
) (builtins.attrNames set);
|
) (builtins.attrNames set);
|
||||||
@ -20,8 +21,6 @@ let
|
|||||||
})
|
})
|
||||||
(builtins.map (x: x.name) libsets);
|
(builtins.map (x: x.name) libsets);
|
||||||
|
|
||||||
nixpkgsLib = pkgs.lib;
|
|
||||||
|
|
||||||
flattenedLibSubset = { subsetname, functions }:
|
flattenedLibSubset = { subsetname, functions }:
|
||||||
builtins.map
|
builtins.map
|
||||||
(fn: {
|
(fn: {
|
||||||
@ -38,13 +37,13 @@ let
|
|||||||
substr = builtins.substring prefixLen filenameLen filename;
|
substr = builtins.substring prefixLen filenameLen filename;
|
||||||
in substr;
|
in substr;
|
||||||
|
|
||||||
removeNixpkgs = removeFilenamePrefix (builtins.toString pkgs.path);
|
removeNixpkgs = removeFilenamePrefix (builtins.toString nixpkgsPath);
|
||||||
|
|
||||||
liblocations =
|
liblocations =
|
||||||
builtins.filter
|
builtins.filter
|
||||||
(elem: elem.value != null)
|
(elem: elem.value != null)
|
||||||
(nixpkgsLib.lists.flatten
|
(lib.lists.flatten
|
||||||
(locatedlibsets nixpkgsLib));
|
(locatedlibsets lib));
|
||||||
|
|
||||||
fnLocationRelative = { name, value }:
|
fnLocationRelative = { name, value }:
|
||||||
{
|
{
|
||||||
@ -72,4 +71,4 @@ let
|
|||||||
relativeLocs);
|
relativeLocs);
|
||||||
|
|
||||||
in
|
in
|
||||||
pkgs.writeText "locations.json" (builtins.toJSON jsonLocs)
|
jsonLocs
|
||||||
|
Loading…
Reference in New Issue
Block a user