Skip to content

Commit

Permalink
pkgs/build-support: refactor drvs using __structuredAttrs = true
Browse files Browse the repository at this point in the history
Derivations affected by this patch set `__structuredAttrs = true;` and
provide their own `builder`, i.e. it's necessary to `source .attrs.sh`.

Rather than adding even more `if`-`source` monstrums, I decided to
modify all of those derivations to use `buildCommand` or `runCommand`,
without `builder` being set.

Then, `$stdenv/setup` is sourced already and as a result it's safe to
assume that `NIX_ATTRS_JSON_FILE`/`NIX_ATTRS_SH_FILE` point to a usable
location both in a build and a shell session.
  • Loading branch information
Ma27 committed Oct 4, 2023
1 parent 8bc5104 commit c8f5c30
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 26 deletions.
13 changes: 4 additions & 9 deletions pkgs/build-support/binary-cache/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ lib, stdenv, buildPackages }:
{ lib, stdenv, coreutils, jq, python3, nix, xz }:

# This function is for creating a flat-file binary cache, i.e. the kind created by
# nix copy --to file:///some/path and usable as a substituter (with the file:// prefix).
Expand All @@ -19,15 +19,10 @@ stdenv.mkDerivation {

preferLocalBuild = true;

PATH = lib.makeBinPath (with buildPackages; [ coreutils jq python3 nix xz ]);
nativeBuildInputs = [ coreutils jq python3 nix xz ];

builder = builtins.toFile "builder" ''
. .attrs.sh
export out=''${outputs[out]}
mkdir $out
mkdir $out/nar
buildCommand = ''
mkdir -p $out/nar
python ${./make-binary-cache.py}
Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/binary-cache/make-binary-cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import os
import subprocess

with open(".attrs.json", "r") as f:
with open(os.environ["NIX_ATTRS_JSON_FILE"], "r") as f:
closures = json.load(f)["closure"]

os.chdir(os.environ["out"])
Expand Down
14 changes: 6 additions & 8 deletions pkgs/build-support/closure-info.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# "nix-store --load-db" and "nix-store --register-validity
# --hash-given".

{ stdenv, buildPackages }:
{ stdenv, coreutils, jq }:

{ rootPaths }:

Expand All @@ -19,18 +19,16 @@ stdenv.mkDerivation {

preferLocalBuild = true;

PATH = "${buildPackages.coreutils}/bin:${buildPackages.jq}/bin";
nativeBuildInputs = [ coreutils jq ];

builder = builtins.toFile "builder"
buildCommand =
''
. .attrs.sh
out=''${outputs[out]}
mkdir $out
jq -r ".closure | map(.narSize) | add" < .attrs.json > $out/total-nar-size
jq -r '.closure | map([.path, .narHash, .narSize, "", (.references | length)] + .references) | add | map("\(.)\n") | add' < .attrs.json | head -n -1 > $out/registration
jq -r .closure[].path < .attrs.json > $out/store-paths
jq -r ".closure | map(.narSize) | add" < "$NIX_ATTRS_JSON_FILE" > $out/total-nar-size
jq -r '.closure | map([.path, .narHash, .narSize, "", (.references | length)] + .references) | add | map("\(.)\n") | add' < "$NIX_ATTRS_JSON_FILE" | head -n -1 > $out/registration
jq -r '.closure[].path' < "$NIX_ATTRS_JSON_FILE" > $out/store-paths
'';
}
13 changes: 5 additions & 8 deletions pkgs/build-support/references-by-popularity/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,8 @@ path: runCommand "closure-paths"
exportReferencesGraph.graph = path;
__structuredAttrs = true;
preferLocalBuild = true;
PATH = "${coreutils}/bin:${python3}/bin";
builder = builtins.toFile "builder"
''
. .attrs.sh
python3 ${./closure-graph.py} .attrs.json graph > ''${outputs[out]}
'';
}
""
nativeBuildInputs = [ coreutils python3 ];
}
''
python3 ${./closure-graph.py} "$NIX_ATTRS_JSON_FILE" graph > ''${outputs[out]}
''

0 comments on commit c8f5c30

Please sign in to comment.