Skip to content

Commit

Permalink
Merge pull request #328269 from tweag/doc-no-warnings
Browse files Browse the repository at this point in the history
doc: Prevent evaluation warnings
  • Loading branch information
infinisil authored Jul 21, 2024
2 parents 80d2de8 + f01573b commit 949797e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 17 deletions.
23 changes: 15 additions & 8 deletions doc/doc-support/lib-function-docs.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,31 @@

with pkgs;

let
locationsJSON = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; };
in
stdenv.mkDerivation {
name = "nixpkgs-lib-docs";
src = ../../lib;
src = pkgs.lib.fileset.toSource {
root = ../..;
fileset = ../../lib;
};

buildInputs = [ nixdoc ];
buildInputs = [ nixdoc nix ];
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 {
name=$1
baseName=$2
description=$3
# TODO: wrap lib.$name in <literal>, make nixdoc not escape it
if [[ -e "../lib/$baseName.nix" ]]; then
nixdoc -c "$name" -d "lib.$name: $description" -l ${locationsJSON} -f "$baseName.nix" > "$out/$name.md"
if [[ -e "lib/$baseName.nix" ]]; then
nixdoc -c "$name" -d "lib.$name: $description" -l locations.json -f "lib/$baseName.nix" > "$out/$name.md"
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
echo "$out/$name.md" >> "$out/index.md"
}
Expand Down
17 changes: 8 additions & 9 deletions doc/doc-support/lib-function-locations.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
{ pkgs, nixpkgs ? { }, libsets }:
{ nixpkgsPath, revision, libsetsJSON }:
let
revision = pkgs.lib.trivial.revisionWithDefault (nixpkgs.rev or "master");
lib = import (nixpkgsPath + "/lib");
libsets = builtins.fromJSON libsetsJSON;

libDefPos = prefix: set:
builtins.concatMap
(name: [{
name = builtins.concatStringsSep "." (prefix ++ [name]);
location = builtins.unsafeGetAttrPos name set;
}] ++ nixpkgsLib.optionals
}] ++ lib.optionals
(builtins.length prefix == 0 && builtins.isAttrs set.${name})
(libDefPos (prefix ++ [name]) set.${name})
) (builtins.attrNames set);
Expand All @@ -20,8 +21,6 @@ let
})
(builtins.map (x: x.name) libsets);

nixpkgsLib = pkgs.lib;

flattenedLibSubset = { subsetname, functions }:
builtins.map
(fn: {
Expand All @@ -38,13 +37,13 @@ let
substr = builtins.substring prefixLen filenameLen filename;
in substr;

removeNixpkgs = removeFilenamePrefix (builtins.toString pkgs.path);
removeNixpkgs = removeFilenamePrefix (builtins.toString nixpkgsPath);

liblocations =
builtins.filter
(elem: elem.value != null)
(nixpkgsLib.lists.flatten
(locatedlibsets nixpkgsLib));
(lib.lists.flatten
(locatedlibsets lib));

fnLocationRelative = { name, value }:
{
Expand Down Expand Up @@ -72,4 +71,4 @@ let
relativeLocs);

in
pkgs.writeText "locations.json" (builtins.toJSON jsonLocs)
jsonLocs

0 comments on commit 949797e

Please sign in to comment.