 855a12eacf
			
		
	
	
		855a12eacf
		
	
	
	
	
		
			
			This reverts commit 5e8545e72341887bb371407a71a723bc0e9c7844. It breaks eval: attribute 'rev' missing, at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/eval-0-gleber.ewr1.nix.ci/pkgs/top-level/make-tarball.nix:106:39
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { pkgs ? (import ./.. { }), nixpkgs ? { }}:
 | |
| let
 | |
|   revision = pkgs.lib.trivial.revisionWithDefault (nixpkgs.revision or "master");
 | |
| 
 | |
|   libDefPos = set:
 | |
|     builtins.map
 | |
|       (name: {
 | |
|         name = name;
 | |
|         location = builtins.unsafeGetAttrPos name set;
 | |
|       })
 | |
|       (builtins.attrNames set);
 | |
| 
 | |
|   libset = toplib:
 | |
|     builtins.map
 | |
|       (subsetname: {
 | |
|         subsetname = subsetname;
 | |
|         functions = libDefPos toplib.${subsetname};
 | |
|       })
 | |
|       (builtins.filter
 | |
|         (name: builtins.isAttrs toplib.${name})
 | |
|         (builtins.attrNames toplib));
 | |
| 
 | |
|   nixpkgsLib = pkgs.lib;
 | |
| 
 | |
|   flattenedLibSubset = { subsetname, functions }:
 | |
|   builtins.map
 | |
|     (fn: {
 | |
|       name = "lib.${subsetname}.${fn.name}";
 | |
|       value = fn.location;
 | |
|     })
 | |
|     functions;
 | |
| 
 | |
|   locatedlibsets = libs: builtins.map flattenedLibSubset (libset libs);
 | |
|   removeFilenamePrefix = prefix: filename:
 | |
|     let
 | |
|     prefixLen = (builtins.stringLength prefix) + 1; # +1 to remove the leading /
 | |
|       filenameLen = builtins.stringLength filename;
 | |
|       substr = builtins.substring prefixLen filenameLen filename;
 | |
|       in substr;
 | |
| 
 | |
|   removeNixpkgs = removeFilenamePrefix (builtins.toString pkgs.path);
 | |
| 
 | |
|   liblocations =
 | |
|     builtins.filter
 | |
|       (elem: elem.value != null)
 | |
|       (nixpkgsLib.lists.flatten
 | |
|         (locatedlibsets nixpkgsLib));
 | |
| 
 | |
|   fnLocationRelative = { name, value }:
 | |
|     {
 | |
|       inherit name;
 | |
|       value = value // { file = removeNixpkgs value.file; };
 | |
|     };
 | |
| 
 | |
|   relativeLocs = (builtins.map fnLocationRelative liblocations);
 | |
|   sanitizeId = builtins.replaceStrings
 | |
|     [ "'"      ]
 | |
|     [ "-prime" ];
 | |
| 
 | |
|   urlPrefix = "https://github.com/NixOS/nixpkgs/blob/${revision}";
 | |
|   xmlstrings = (nixpkgsLib.strings.concatMapStrings
 | |
|       ({ name, value }:
 | |
|       ''
 | |
|       <section><title>${name}</title>
 | |
|         <para xml:id="${sanitizeId name}">
 | |
|         Located at
 | |
|         <link
 | |
|           xlink:href="${urlPrefix}/${value.file}#L${builtins.toString value.line}">${value.file}:${builtins.toString value.line}</link>
 | |
|         in  <literal><nixpkgs></literal>.
 | |
|         </para>
 | |
|         </section>
 | |
|       '')
 | |
|       relativeLocs);
 | |
| 
 | |
| in pkgs.writeText
 | |
|     "locations.xml"
 | |
|     ''
 | |
|     <section xmlns="http://docbook.org/ns/docbook"
 | |
|          xmlns:xlink="http://www.w3.org/1999/xlink"
 | |
|          version="5">
 | |
|          <title>All the locations for every lib function</title>
 | |
|          <para>This file is only for inclusion by other files.</para>
 | |
|          ${xmlstrings}
 | |
|     </section>
 | |
|     ''
 |