Fix runInMachine

It requires a writable /nix/store to store the build result.  Also,
wait until we've reached multi-user.target before doing the build, and
do a sync at the end to ensure all data to $out is properly written.

http://hydra.nixos.org/build/6496716
This commit is contained in:
Eelco Dolstra 2013-10-16 11:36:09 +02:00
parent e0db0aaa4d
commit 6dafee8d67
3 changed files with 9 additions and 7 deletions

@ -176,7 +176,10 @@ rec {
let
vm = buildVM { }
[ machine
{ key = "hostname"; networking.hostName = "client"; }
{ key = "run-in-machine";
networking.hostName = "client";
nix.readOnlyStore = false;
}
];
buildrunner = writeText "vm-build" ''
@ -192,9 +195,11 @@ rec {
testscript = ''
startAll;
$client->waitForUnit("multi-user.target");
${preBuild}
$client->succeed("env -i ${pkgs.bash}/bin/bash ${buildrunner} /tmp/xchg/saved-env >&2");
${postBuild}
$client->succeed("sync"); # flush all data before pulling the plug
'';
vmRunCommand = writeText "vm-run" ''

@ -295,7 +295,7 @@ in
boot.initrd.postMountCommands =
''
# Mark this as a NixOS machinex.
# Mark this as a NixOS machine.
mkdir -p $targetRoot/etc
echo -n > $targetRoot/etc/NIXOS
@ -303,7 +303,6 @@ in
chmod 1777 $targetRoot/tmp
mkdir -p $targetRoot/boot
mount -o remount,ro $targetRoot/nix/store
${optionalString cfg.writableStore ''
mkdir -p /unionfs-chroot/ro-store
mount --rbind $targetRoot/nix/store /unionfs-chroot/ro-store

@ -1,10 +1,8 @@
{ nixpkgs ? <nixpkgs>
, system ? builtins.currentSystem
}:
{ system ? builtins.currentSystem }:
with import ../lib/testing.nix { inherit system; };
runInMachine {
drv = (import nixpkgs { inherit system; }).aterm;
drv = pkgs.patchelf;
machine = { config, pkgs, ... }: { services.sshd.enable = true; };
}