Hmmm, this breaks the nixos-build-vms command, because it no longer produces a derivation. Any idea how to fix it?
-----Original Message----- From: [email protected] on behalf of Eelco Dolstra Sent: Sun 1/16/2011 3:21 PM To: [email protected] Subject: [Nix-commits] SVN commit: nix - r25586 - nixos/trunk/lib Author: eelco Date: Sun Jan 16 14:21:47 2011 New Revision: 25586 URL: https://svn.nixos.org/websvn/nix/?rev=25586&sc=1 Log: * Remove "nix-build tests -A foo.vms; ./result/bin/run-vms" as a way to run the VMs of a test. Instead, you can do $ nix-build tests -A foo.driver $ ./result/bin/nixos-run-vms This uses the test driver infrastructure, which is necessary in order to set up the VDE switches. Modified: nixos/trunk/lib/build-vms.nix nixos/trunk/lib/testing.nix Modified: nixos/trunk/lib/build-vms.nix ============================================================================== --- nixos/trunk/lib/build-vms.nix Sun Jan 16 13:04:40 2011 (r25585) +++ nixos/trunk/lib/build-vms.nix Sun Jan 16 14:21:47 2011 (r25586) @@ -12,42 +12,10 @@ # Build a virtual network from an attribute set `{ machine1 = # config1; ... machineN = configN; }', where `machineX' is the - # hostname and `configX' is a NixOS system configuration. The - # result is a script that starts a QEMU instance for each virtual - # machine. Each machine is given an arbitrary IP address in the - # virtual network. + # hostname and `configX' is a NixOS system configuration. Each + # machine is given an arbitrary IP address in the virtual network. buildVirtualNetwork = - { nodes }: - - let nodes_ = lib.mapAttrs (n: buildVM nodes_) (assignIPAddresses nodes); in - - stdenv.mkDerivation { - name = "vms"; - buildCommand = - '' - ensureDir $out/vms - ${ - lib.concatMapStrings (vm: - '' - ln -sn ${vm.config.system.build.vm} $out/vms/${vm.config.networking.hostName} - '' - ) (lib.attrValues nodes_) - } - - ensureDir $out/bin - cat > $out/bin/run-vms <<EOF - #! ${stdenv.shell} - port=8080 - for i in $out/vms/*; do - port2=\$((port++)) - echo "forwarding localhost:\$port2 to \$(basename \$i):80" - QEMU_OPTS="-redir tcp:\$port2::80" \$i/bin/run-*-vm & - done - EOF - chmod +x $out/bin/run-vms - ''; # */ - passthru = { nodes = nodes_; }; - }; + nodes: let nodesOut = lib.mapAttrs (n: buildVM nodesOut) (assignIPAddresses nodes); in nodesOut; buildVM = Modified: nixos/trunk/lib/testing.nix ============================================================================== --- nixos/trunk/lib/testing.nix Sun Jan 16 13:04:40 2011 (r25585) +++ nixos/trunk/lib/testing.nix Sun Jan 16 14:21:47 2011 (r25586) @@ -121,21 +121,24 @@ call = f: f { inherit pkgs nixpkgs system; }; complete = t: t // rec { - nodes = + nodes = buildVirtualNetwork ( if t ? nodes then t.nodes else if t ? machine then { machine = t.machine; } - else { }; - - vms = buildVirtualNetwork { inherit nodes; }; - + else { } ); + testScript = # Call the test script with the computed nodes. if builtins.isFunction t.testScript - then t.testScript { inherit (vms) nodes; } + then t.testScript { inherit nodes; } else t.testScript; - # Generate a convenience wrapper for running the test driver - # interactively with the specified network. + vlans = map (m: m.config.virtualisation.vlans) (lib.attrValues nodes); + + vms = map (m: m.config.system.build.vm) (lib.attrValues nodes); + + # Generate onvenience wrappers for running the test driver + # interactively with the specified network, and for starting the + # VMs from the command line. driver = runCommand "nixos-test-driver" { buildInputs = [ makeWrapper]; inherit testScript; @@ -143,13 +146,18 @@ '' mkdir -p $out/bin echo "$testScript" > $out/test-script - ln -s ${vms}/bin/* $out/bin/ - ln -s ${testDriver}/bin/* $out/bin/ + ln -s ${testDriver}/bin/nixos-test-driver $out/bin/ + vms="$(for i in ${toString vms}; do echo $i/bin/run-*-vm; done)" wrapProgram $out/bin/nixos-test-driver \ - --add-flags "${vms}/vms/*/bin/run-*-vm" \ + --add-flags "$vms" \ --run "testScript=\"\$(cat $out/test-script)\"" \ --set testScript '"$testScript"' \ - --set VLANS '"${toString (map (m: m.config.virtualisation.vlans) (lib.attrValues vms.nodes))}"' \ + --set VLANS '"${toString vlans}"' + ln -s ${testDriver}/bin/nixos-test-driver $out/bin/nixos-run-vms + wrapProgram $out/bin/nixos-run-vms \ + --add-flags "$vms" \ + --set tests '"startAll; sleep 1e9;"' \ + --set VLANS '"${toString vlans}"' ''; # " test = runTests driver; _______________________________________________ nix-commits mailing list [email protected] http://mail.cs.uu.nl/mailman/listinfo/nix-commits
_______________________________________________ nix-dev mailing list [email protected] https://mail.cs.uu.nl/mailman/listinfo/nix-dev
