Skip to content

Commit

Permalink
VM tests: Initialize the Nix database with correct NAR hashes/sizes
Browse files Browse the repository at this point in the history
  • Loading branch information
edolstra committed Feb 7, 2018
1 parent cc0caac commit 5193807
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 41 deletions.
11 changes: 10 additions & 1 deletion nixos/tests/misc.nix
@@ -1,11 +1,13 @@
# Miscellaneous small tests that don't warrant their own VM run.

import ./make-test.nix ({ pkgs, ...} : {
import ./make-test.nix ({ pkgs, ...} : rec {
name = "misc";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ eelco chaoflow ];
};

foo = pkgs.writeText "foo" "Hello World";

machine =
{ config, lib, pkgs, ... }:
with lib;
Expand All @@ -27,10 +29,17 @@ import ./make-test.nix ({ pkgs, ...} : {
security.sudo = { enable = true; wheelNeedsPassword = false; };
boot.kernel.sysctl."vm.swappiness" = 1;
boot.kernelParams = [ "vsyscall=emulate" ];
system.extraDependencies = [ foo ];
};

testScript =
''
subtest "nix-db", sub {
my $json = $machine->succeed("nix path-info --json ${foo}");
$json =~ /"narHash":"sha256:0afw0d9j1hvwiz066z93jiddc33nxg6i6qyp26vnqyglpyfivlq5"/ or die "narHash not set";
$json =~ /"narSize":128/ or die "narSize not set";
};
subtest "nixos-version", sub {
$machine->succeed("[ `nixos-version | wc -w` = 2 ]");
};
Expand Down
55 changes: 15 additions & 40 deletions pkgs/build-support/closure-info.nix
Expand Up @@ -8,51 +8,26 @@

{ rootPaths }:

#if builtins.langVersion >= 5 then
# FIXME: it doesn't work on Hydra, failing to find mkdir;
# perhaps .attrs.sh clobbers PATH with new nix?
if false then
assert builtins.langVersion >= 5;

# Nix >= 1.12: Include NAR hash / size info.
stdenv.mkDerivation {
name = "closure-info";

stdenv.mkDerivation {
name = "closure-info";
__structuredAttrs = true;

__structuredAttrs = true;
exportReferencesGraph.closure = rootPaths;

exportReferencesGraph.closure = rootPaths;
PATH = "${coreutils}/bin:${jq}/bin";

PATH = "${coreutils}/bin:${jq}/bin";
builder = builtins.toFile "builder"
''
if [ -e .attrs.sh ]; then . .attrs.sh; fi
builder = builtins.toFile "builder"
''
if [ -e .attrs.sh ]; then . .attrs.sh; fi
out=''${outputs[out]}
out=''${outputs[out]}
mkdir $out
mkdir $out
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
'';
}

else

# Nix < 1.12

stdenv.mkDerivation {
name = "closure-info";

exportReferencesGraph =
map (x: [("closure-" + baseNameOf x) x]) rootPaths;

buildInputs = [ perl ];

buildCommand =
''
mkdir $out
printRegistration=1 perl ${pathsFromGraph} closure-* > $out/registration
perl ${pathsFromGraph} closure-* > $out/store-paths
'';
}
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
'';
}

0 comments on commit 5193807

Please sign in to comment.