mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 16:33:15 +00:00
pkgs/build-support: refactor drvs using __structuredAttrs = true
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.
This commit is contained in:
parent
8bc5104a6e
commit
c8f5c30c37
@ -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
|
# 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).
|
# nix copy --to file:///some/path and usable as a substituter (with the file:// prefix).
|
||||||
@ -19,15 +19,10 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
|
|
||||||
PATH = lib.makeBinPath (with buildPackages; [ coreutils jq python3 nix xz ]);
|
nativeBuildInputs = [ coreutils jq python3 nix xz ];
|
||||||
|
|
||||||
builder = builtins.toFile "builder" ''
|
buildCommand = ''
|
||||||
. .attrs.sh
|
mkdir -p $out/nar
|
||||||
|
|
||||||
export out=''${outputs[out]}
|
|
||||||
|
|
||||||
mkdir $out
|
|
||||||
mkdir $out/nar
|
|
||||||
|
|
||||||
python ${./make-binary-cache.py}
|
python ${./make-binary-cache.py}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
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"]
|
closures = json.load(f)["closure"]
|
||||||
|
|
||||||
os.chdir(os.environ["out"])
|
os.chdir(os.environ["out"])
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
# "nix-store --load-db" and "nix-store --register-validity
|
# "nix-store --load-db" and "nix-store --register-validity
|
||||||
# --hash-given".
|
# --hash-given".
|
||||||
|
|
||||||
{ stdenv, buildPackages }:
|
{ stdenv, coreutils, jq }:
|
||||||
|
|
||||||
{ rootPaths }:
|
{ rootPaths }:
|
||||||
|
|
||||||
@ -19,18 +19,16 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
|
|
||||||
PATH = "${buildPackages.coreutils}/bin:${buildPackages.jq}/bin";
|
nativeBuildInputs = [ coreutils jq ];
|
||||||
|
|
||||||
builder = builtins.toFile "builder"
|
buildCommand =
|
||||||
''
|
''
|
||||||
. .attrs.sh
|
|
||||||
|
|
||||||
out=''${outputs[out]}
|
out=''${outputs[out]}
|
||||||
|
|
||||||
mkdir $out
|
mkdir $out
|
||||||
|
|
||||||
jq -r ".closure | map(.narSize) | add" < .attrs.json > $out/total-nar-size
|
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' < .attrs.json | head -n -1 > $out/registration
|
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 < .attrs.json > $out/store-paths
|
jq -r '.closure[].path' < "$NIX_ATTRS_JSON_FILE" > $out/store-paths
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
@ -6,11 +6,8 @@ path: runCommand "closure-paths"
|
|||||||
exportReferencesGraph.graph = path;
|
exportReferencesGraph.graph = path;
|
||||||
__structuredAttrs = true;
|
__structuredAttrs = true;
|
||||||
preferLocalBuild = true;
|
preferLocalBuild = true;
|
||||||
PATH = "${coreutils}/bin:${python3}/bin";
|
nativeBuildInputs = [ coreutils python3 ];
|
||||||
builder = builtins.toFile "builder"
|
}
|
||||||
''
|
''
|
||||||
. .attrs.sh
|
python3 ${./closure-graph.py} "$NIX_ATTRS_JSON_FILE" graph > ''${outputs[out]}
|
||||||
python3 ${./closure-graph.py} .attrs.json graph > ''${outputs[out]}
|
''
|
||||||
'';
|
|
||||||
}
|
|
||||||
""
|
|
||||||
|
Loading…
Reference in New Issue
Block a user