diff --git a/packages/default.nix b/packages/default.nix index 9585cef..f893bdf 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -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 { }; } diff --git a/packages/genodelabs/default.nix b/packages/genodelabs/default.nix index 171dd9f..49adc41 100644 --- a/packages/genodelabs/default.nix +++ b/packages/genodelabs/default.nix @@ -1,4 +1,4 @@ -{ nixpkgs, addManifest }: +{ nixpkgs }: let genodeSources = let @@ -94,43 +94,41 @@ let buildUpstream = { name, targets, portInputs ? [ ], nativeBuildInputs ? [ ] , ... }@extraAttrs: - let - drv = stdenv'.mkDerivation (extraAttrs // { - pname = name; - inherit (genodeSources) version; - inherit targets; + stdenv'.mkDerivation (extraAttrs // { + pname = name; + inherit (genodeSources) version; + inherit targets; - dontUnpack = true; + dontUnpack = true; - nativeBuildInputs = with nixpkgs.buildPackages; - [ binutils bison flex stdenv.cc tcl which ] ++ nativeBuildInputs; + nativeBuildInputs = with nixpkgs.buildPackages; + [ binutils bison flex stdenv.cc tcl which ] ++ nativeBuildInputs; - enableParallelBuilding = true; + enableParallelBuilding = true; - configurePhase = let - linkPorts = toString - (builtins.map (drv: " ln -sv ${drv}/* contrib/;") portInputs); - in '' - runHook preConfigure - export CONTRIB_DIR=$NIX_BUILD_TOP/contrib - export BUILD_DIR=$NIX_BUILD_TOP/build - ${genodeSources}/tool/create_builddir ${arch} - substituteInPlace build/etc/build.conf \ - --replace "#REPOSITORIES" "REPOSITORIES" - mkdir $CONTRIB_DIR; ${linkPorts} - runHook postConfigure - ''; + configurePhase = let + linkPorts = toString + (builtins.map (drv: " ln -sv ${drv}/* contrib/;") portInputs); + in '' + runHook preConfigure + export CONTRIB_DIR=$NIX_BUILD_TOP/contrib + export BUILD_DIR=$NIX_BUILD_TOP/build + ${genodeSources}/tool/create_builddir ${arch} + substituteInPlace build/etc/build.conf \ + --replace "#REPOSITORIES" "REPOSITORIES" + mkdir $CONTRIB_DIR; ${linkPorts} + runHook postConfigure + ''; - makeFlags = [ "-C build" ] ++ targets; + makeFlags = [ "-C build" ] ++ targets; - installPhase = '' - runHook preInstall - find build/bin -name '*.xsd' -delete - find build/bin -follow -type f -exec install -Dt $out '{}' \; - runHook postInstall - ''; - }); - in addManifest drv; + installPhase = '' + runHook preInstall + find build/bin -name '*.xsd' -delete + find build/bin -follow -type f -exec install -Dt $out '{}' \; + runHook postInstall + ''; + }); buildOverrides = import ./targets.nix { inherit (nixpkgs) buildPackages; diff --git a/tests/default.nix b/tests/default.nix index accce0e..ca14042 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -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: diff --git a/tests/driver-hw.nix b/tests/driver-hw.nix index 182093d..159e81f 100644 --- a/tests/driver-hw.nix +++ b/tests/driver-hw.nix @@ -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"; diff --git a/tests/driver-linux.nix b/tests/driver-linux.nix index 6d7e4b3..8e1ccf9 100644 --- a/tests/driver-linux.nix +++ b/tests/driver-linux.nix @@ -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"; diff --git a/tests/driver-nova.nix b/tests/driver-nova.nix index 9662bd8..826f3f1 100644 --- a/tests/driver-nova.nix +++ b/tests/driver-nova.nix @@ -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";