2020-01-20 18:53:53 +01:00
|
|
|
# SPDX-License-Identifier: CC0-1.0
|
|
|
|
|
|
|
|
{ system, apps, testPkgs, hostPkgs, lib, depot }:
|
|
|
|
|
|
|
|
let
|
|
|
|
mkTest = { name ? "unamed", testConfig, env ? { }, ... }:
|
|
|
|
let
|
|
|
|
env' = {
|
|
|
|
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
|
|
|
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
|
|
|
BASE_NOVA_MANIFEST = testPkgs.genode.base-nova.manifest;
|
|
|
|
OS_MANIFEST = testPkgs.genode.os.manifest;
|
|
|
|
SOTEST_PRODUCER_MANIFEST = testPkgs.sotest-producer.manifest;
|
|
|
|
} // env;
|
|
|
|
|
|
|
|
drv = hostPkgs.runCommand "nova-${name}-sotest" env' ''
|
2020-01-20 18:29:56 +01:00
|
|
|
${apps.nova-image.program} image.elf \
|
|
|
|
${./driver-nova-config.dhall} ${testConfig}
|
2020-01-20 18:53:53 +01:00
|
|
|
cp "${testPkgs.bender}" bender
|
|
|
|
cp "${testPkgs.NOVA}/hypervisor-x86_64" hypervisor
|
|
|
|
mkdir -p $out/nix-support
|
|
|
|
${hostPkgs.zip}/bin/zip "$out/binaries.zip" \
|
2020-01-20 18:29:56 +01:00
|
|
|
bender hypervisor image.elf
|
2020-01-20 18:53:53 +01:00
|
|
|
${apps.dhall-to-yaml.program} < ${
|
|
|
|
./sotest_config.dhall
|
|
|
|
} > "$out/sotest_config.yaml"
|
|
|
|
echo file zip $out/binaries.zip >> "$out/nix-support/hydra-build-products"
|
|
|
|
echo file config $out/sotest_config.yaml >> "$out/nix-support/hydra-build-products"
|
|
|
|
'';
|
|
|
|
|
|
|
|
in drv // {
|
|
|
|
config = hostPkgs.runCommand (name + ".dhall") env' ''
|
|
|
|
${apps.dhall.program} <<< "(${
|
|
|
|
./driver-nova-config.dhall
|
|
|
|
} ${testConfig})" > $out
|
|
|
|
'';
|
|
|
|
xml = hostPkgs.runCommand (name + ".config") env' ''
|
|
|
|
${apps.render-init.program} "(${
|
|
|
|
./driver-nova-config.dhall
|
|
|
|
} ${testConfig}).config" > $out'';
|
|
|
|
};
|
|
|
|
|
|
|
|
in {
|
|
|
|
callTest = path: args:
|
|
|
|
(import path ({
|
|
|
|
testEnv = {
|
|
|
|
inherit mkTest lib;
|
|
|
|
isLinux = false;
|
|
|
|
isNova = true;
|
|
|
|
};
|
|
|
|
pkgs = testPkgs;
|
|
|
|
inherit depot;
|
|
|
|
} // args));
|
|
|
|
}
|