2
0
Fork 0

Add package manifests at testing site

The manifests can be generated at late as possible. Also, in the future
a list of binaries in use by an init expression can be extracted and
selected from a list of input packages.
This commit is contained in:
Emery Hemingway 2020-03-26 20:54:27 +05:30
parent 9e07ce1156
commit db7d458b5e
6 changed files with 58 additions and 62 deletions

View File

@ -3,21 +3,10 @@
{ system, legacyPackages, localPackages, depot, apps }:
let
dhallPackages = import ./dhall { inherit (localPackages) callPackage; };
inherit (legacyPackages) callPackage;
dhallPackages = localPackages.callPackage ./dhall { };
mkDhallManifest = drv:
legacyPackages.runCommand "${drv.name}.dhall" { inherit drv; }
"${apps.generate-manifest.program} $drv > $out";
addManifest = drv: { manifest = mkDhallManifest drv; } // drv;
callPackage' = path: attrs:
addManifest (legacyPackages.callPackage path attrs);
genodeLabs = import ./genodelabs {
nixpkgs = legacyPackages;
inherit addManifest;
};
genodeLabs = import ./genodelabs { nixpkgs = legacyPackages; };
inherit (genodeLabs) buildUpstream;
buildWorld = let
@ -105,10 +94,9 @@ in rec {
NOVA = legacyPackages.callPackage ./NOVA { };
solo5 = let drv = callPackage' ./solo5 { };
in drv // { tests = addManifest drv.tests // { pname = "solo5-tests"; }; };
sotest-producer = callPackage' ./sotest-producer { };
solo5 = let drv = callPackage ./solo5 { };
in drv // { tests = drv.tests // { pname = "solo5-tests"; }; };
stdcxx = callPackage' ./stdcxx { };
sotest-producer = callPackage ./sotest-producer { };
}

View File

@ -1,4 +1,4 @@
{ nixpkgs, addManifest }:
{ nixpkgs }:
let
genodeSources = let
@ -94,8 +94,7 @@ let
buildUpstream = { name, targets, portInputs ? [ ], nativeBuildInputs ? [ ]
, ... }@extraAttrs:
let
drv = stdenv'.mkDerivation (extraAttrs // {
stdenv'.mkDerivation (extraAttrs // {
pname = name;
inherit (genodeSources) version;
inherit targets;
@ -130,7 +129,6 @@ let
runHook postInstall
'';
});
in addManifest drv;
buildOverrides = import ./targets.nix {
inherit (nixpkgs) buildPackages;

View File

@ -15,10 +15,20 @@ let
depot = genode-depot.packages.${system};
testPkgs = genodepkgs;
addManifest = drv:
drv // {
manifest = hostPkgs.runCommand "${drv.name}.dhall" { inherit drv; } ''
set -eu
echo -n '[' >> $out
find $drv/ -type f -printf ',{mapKey= "%f",mapValue="%p"}' >> $out
echo -n ']' >> $out
'';
};
linux =
(call: ((tests call) // { block_router = call ./block_router.nix { }; }))
(import ./driver-linux.nix {
inherit apps testPkgs hostPkgs lib depot;
inherit apps testPkgs hostPkgs lib depot addManifest;
}).callTest;
nova = (call:
@ -28,7 +38,7 @@ let
pci = call ./pci.nix { };
rtc = call ./rtc.nix { };
})) (import ./driver-nova.nix {
inherit apps system testPkgs hostPkgs lib depot;
inherit apps system testPkgs hostPkgs lib depot addManifest;
}).callTest;
hw = (call:
@ -37,7 +47,7 @@ let
pci = call ./pci.nix { };
rtc = call ./rtc.nix { };
})) (import ./driver-hw.nix {
inherit apps system testPkgs hostPkgs lib depot;
inherit apps system testPkgs hostPkgs lib depot addManifest;
}).callTest;
testsToList = tests:

View File

@ -1,6 +1,6 @@
# SPDX-License-Identifier: CC0-1.0
{ system, apps, testPkgs, hostPkgs, lib, depot }:
{ system, apps, testPkgs, hostPkgs, lib, depot, addManifest }:
let
testDriver = with hostPkgs;
@ -40,9 +40,9 @@ let
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
let
manifest = lib.mergeManifests (with testPkgs;
manifest = lib.mergeManifests (map addManifest (with testPkgs;
[ base-hw-pc (genodeSources.make "init") sotest-producer ]
++ testInputs);
++ testInputs));
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
testEnv' = {
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";

View File

@ -1,6 +1,6 @@
# SPDX-License-Identifier: CC0-1.0
{ apps, testPkgs, hostPkgs, lib, depot }:
{ apps, testPkgs, hostPkgs, lib, depot, addManifest }:
let
testDriver = with hostPkgs;
@ -38,8 +38,8 @@ let
, env ? { }, ... }:
with testPkgs;
let
manifest = lib.mergeManifests
(with testPkgs; [ base-linux init sotest-producer ] ++ testInputs);
manifest = lib.mergeManifests (map addManifest
((with testPkgs; [ base-linux init sotest-producer ] ++ testInputs)));
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
env' = {
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";

View File

@ -1,6 +1,6 @@
# SPDX-License-Identifier: CC0-1.0
{ system, apps, testPkgs, hostPkgs, lib, depot }:
{ system, apps, testPkgs, hostPkgs, lib, depot, addManifest }:
let
testDriver = with hostPkgs;
@ -40,9 +40,9 @@ let
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
let
manifest = lib.mergeManifests (with testPkgs;
manifest = lib.mergeManifests (map addManifest (with testPkgs;
[ base-nova (genodeSources.make "init") sotest-producer ]
++ testInputs);
++ testInputs));
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
testEnv' = {
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";