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:
parent
9e07ce1156
commit
db7d458b5e
|
@ -3,21 +3,10 @@
|
||||||
{ system, legacyPackages, localPackages, depot, apps }:
|
{ system, legacyPackages, localPackages, depot, apps }:
|
||||||
|
|
||||||
let
|
let
|
||||||
dhallPackages = import ./dhall { inherit (localPackages) callPackage; };
|
inherit (legacyPackages) callPackage;
|
||||||
|
dhallPackages = localPackages.callPackage ./dhall { };
|
||||||
|
|
||||||
mkDhallManifest = drv:
|
genodeLabs = import ./genodelabs { nixpkgs = legacyPackages; };
|
||||||
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;
|
|
||||||
};
|
|
||||||
inherit (genodeLabs) buildUpstream;
|
inherit (genodeLabs) buildUpstream;
|
||||||
|
|
||||||
buildWorld = let
|
buildWorld = let
|
||||||
|
@ -105,10 +94,9 @@ in rec {
|
||||||
|
|
||||||
NOVA = legacyPackages.callPackage ./NOVA { };
|
NOVA = legacyPackages.callPackage ./NOVA { };
|
||||||
|
|
||||||
solo5 = let drv = callPackage' ./solo5 { };
|
solo5 = let drv = callPackage ./solo5 { };
|
||||||
in drv // { tests = addManifest drv.tests // { pname = "solo5-tests"; }; };
|
in drv // { tests = drv.tests // { pname = "solo5-tests"; }; };
|
||||||
|
|
||||||
sotest-producer = callPackage' ./sotest-producer { };
|
|
||||||
|
|
||||||
stdcxx = callPackage' ./stdcxx { };
|
stdcxx = callPackage' ./stdcxx { };
|
||||||
|
sotest-producer = callPackage ./sotest-producer { };
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ nixpkgs, addManifest }:
|
{ nixpkgs }:
|
||||||
|
|
||||||
let
|
let
|
||||||
genodeSources = let
|
genodeSources = let
|
||||||
|
@ -94,8 +94,7 @@ let
|
||||||
buildUpstream = { name, targets, portInputs ? [ ], nativeBuildInputs ? [ ]
|
buildUpstream = { name, targets, portInputs ? [ ], nativeBuildInputs ? [ ]
|
||||||
, ... }@extraAttrs:
|
, ... }@extraAttrs:
|
||||||
|
|
||||||
let
|
stdenv'.mkDerivation (extraAttrs // {
|
||||||
drv = stdenv'.mkDerivation (extraAttrs // {
|
|
||||||
pname = name;
|
pname = name;
|
||||||
inherit (genodeSources) version;
|
inherit (genodeSources) version;
|
||||||
inherit targets;
|
inherit targets;
|
||||||
|
@ -130,7 +129,6 @@ let
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
in addManifest drv;
|
|
||||||
|
|
||||||
buildOverrides = import ./targets.nix {
|
buildOverrides = import ./targets.nix {
|
||||||
inherit (nixpkgs) buildPackages;
|
inherit (nixpkgs) buildPackages;
|
||||||
|
|
|
@ -15,10 +15,20 @@ let
|
||||||
depot = genode-depot.packages.${system};
|
depot = genode-depot.packages.${system};
|
||||||
testPkgs = genodepkgs;
|
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 =
|
linux =
|
||||||
(call: ((tests call) // { block_router = call ./block_router.nix { }; }))
|
(call: ((tests call) // { block_router = call ./block_router.nix { }; }))
|
||||||
(import ./driver-linux.nix {
|
(import ./driver-linux.nix {
|
||||||
inherit apps testPkgs hostPkgs lib depot;
|
inherit apps testPkgs hostPkgs lib depot addManifest;
|
||||||
}).callTest;
|
}).callTest;
|
||||||
|
|
||||||
nova = (call:
|
nova = (call:
|
||||||
|
@ -28,7 +38,7 @@ let
|
||||||
pci = call ./pci.nix { };
|
pci = call ./pci.nix { };
|
||||||
rtc = call ./rtc.nix { };
|
rtc = call ./rtc.nix { };
|
||||||
})) (import ./driver-nova.nix {
|
})) (import ./driver-nova.nix {
|
||||||
inherit apps system testPkgs hostPkgs lib depot;
|
inherit apps system testPkgs hostPkgs lib depot addManifest;
|
||||||
}).callTest;
|
}).callTest;
|
||||||
|
|
||||||
hw = (call:
|
hw = (call:
|
||||||
|
@ -37,7 +47,7 @@ let
|
||||||
pci = call ./pci.nix { };
|
pci = call ./pci.nix { };
|
||||||
rtc = call ./rtc.nix { };
|
rtc = call ./rtc.nix { };
|
||||||
})) (import ./driver-hw.nix {
|
})) (import ./driver-hw.nix {
|
||||||
inherit apps system testPkgs hostPkgs lib depot;
|
inherit apps system testPkgs hostPkgs lib depot addManifest;
|
||||||
}).callTest;
|
}).callTest;
|
||||||
|
|
||||||
testsToList = tests:
|
testsToList = tests:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
{ system, apps, testPkgs, hostPkgs, lib, depot }:
|
{ system, apps, testPkgs, hostPkgs, lib, depot, addManifest }:
|
||||||
|
|
||||||
let
|
let
|
||||||
testDriver = with hostPkgs;
|
testDriver = with hostPkgs;
|
||||||
|
@ -40,9 +40,9 @@ let
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
||||||
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
||||||
let
|
let
|
||||||
manifest = lib.mergeManifests (with testPkgs;
|
manifest = lib.mergeManifests (map addManifest (with testPkgs;
|
||||||
[ base-hw-pc (genodeSources.make "init") sotest-producer ]
|
[ base-hw-pc (genodeSources.make "init") sotest-producer ]
|
||||||
++ testInputs);
|
++ testInputs));
|
||||||
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
||||||
testEnv' = {
|
testEnv' = {
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
{ apps, testPkgs, hostPkgs, lib, depot }:
|
{ apps, testPkgs, hostPkgs, lib, depot, addManifest }:
|
||||||
|
|
||||||
let
|
let
|
||||||
testDriver = with hostPkgs;
|
testDriver = with hostPkgs;
|
||||||
|
@ -38,8 +38,8 @@ let
|
||||||
, env ? { }, ... }:
|
, env ? { }, ... }:
|
||||||
with testPkgs;
|
with testPkgs;
|
||||||
let
|
let
|
||||||
manifest = lib.mergeManifests
|
manifest = lib.mergeManifests (map addManifest
|
||||||
(with testPkgs; [ base-linux init sotest-producer ] ++ testInputs);
|
((with testPkgs; [ base-linux init sotest-producer ] ++ testInputs)));
|
||||||
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
||||||
env' = {
|
env' = {
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
{ system, apps, testPkgs, hostPkgs, lib, depot }:
|
{ system, apps, testPkgs, hostPkgs, lib, depot, addManifest }:
|
||||||
|
|
||||||
let
|
let
|
||||||
testDriver = with hostPkgs;
|
testDriver = with hostPkgs;
|
||||||
|
@ -40,9 +40,9 @@ let
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
||||||
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
||||||
let
|
let
|
||||||
manifest = lib.mergeManifests (with testPkgs;
|
manifest = lib.mergeManifests (map addManifest (with testPkgs;
|
||||||
[ base-nova (genodeSources.make "init") sotest-producer ]
|
[ base-nova (genodeSources.make "init") sotest-producer ]
|
||||||
++ testInputs);
|
++ testInputs));
|
||||||
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
||||||
testEnv' = {
|
testEnv' = {
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
|
||||||
|
|
Loading…
Reference in New Issue