mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 08:23:09 +00:00
VM tests: Initialize the Nix database with correct NAR hashes/sizes
This commit is contained in:
parent
cc0caac098
commit
5193807750
@ -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;
|
||||
@ -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 ]");
|
||||
};
|
||||
|
@ -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
|
||||
'';
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user