Update Genode Dhall library
Freeze the library when committing to the Nix store. The Init.toStart function now lowers an only-child automatically, so adjust the Timer service routes in tests accordingly.
This commit is contained in:
parent
895c06ee0b
commit
36f682ccd4
|
@ -31,6 +31,7 @@
|
||||||
inherit system legacyPackages;
|
inherit system legacyPackages;
|
||||||
depot = thisSystem genode-depot.packages;
|
depot = thisSystem genode-depot.packages;
|
||||||
apps = self.apps.${localSystem};
|
apps = self.apps.${localSystem};
|
||||||
|
dhallApps = dhall-haskell.apps.${localSystem};
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultPackage = packages.genode.base-linux;
|
defaultPackage = packages.genode.base-linux;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
{ system, legacyPackages, depot, apps }:
|
{ system, legacyPackages, depot, apps, dhallApps }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (legacyPackages) callPackage;
|
inherit (legacyPackages) callPackage;
|
||||||
|
|
||||||
dhallPackages = legacyPackages.dhallPackages // (callPackage ./dhall { });
|
dhallPackages = legacyPackages.dhallPackages // (callPackage ./dhall { inherit dhallApps; });
|
||||||
|
|
||||||
mkDhallManifest = drv:
|
mkDhallManifest = drv:
|
||||||
legacyPackages.runCommand "${drv.name}.dhall" { inherit drv; }
|
legacyPackages.runCommand "${drv.name}.dhall" { inherit drv; }
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
{ callPackage }:
|
{ callPackage, dhallApps }:
|
||||||
|
|
||||||
rec {
|
rec {
|
||||||
prelude = prelude_11_0_0;
|
prelude = prelude_11_0_0;
|
||||||
prelude_11_0_0 = callPackage ./prelude-11.0.0.nix { };
|
prelude_11_0_0 = callPackage ./prelude-11.0.0.nix { };
|
||||||
prelude_9_0_0 = callPackage ./prelude-9.0.0.nix { };
|
prelude_9_0_0 = callPackage ./prelude-9.0.0.nix { };
|
||||||
genode = callPackage ./genode.nix { };
|
genode = callPackage ./genode.nix { inherit dhallApps prelude; };
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,21 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
{ fetchgit }:
|
{ stdenv, fetchgit, dhallApps, prelude }:
|
||||||
|
|
||||||
fetchgit {
|
stdenv.mkDerivation {
|
||||||
url = "https://git.sr.ht/~ehmry/dhall-genode";
|
name = "dhall-genode";
|
||||||
rev = "07e16f711038cae1167a8aba22db6f12cc1215c5";
|
src = fetchgit {
|
||||||
sha256 = "1r6sz729bzwmp5vcwcf9vx1ppyqx2zhgy4zxxqv8bvn3nm8z82dz";
|
url = "https://git.sr.ht/~ehmry/dhall-genode";
|
||||||
|
rev = "472a300141766e58a68b605568eb881e0a944eca";
|
||||||
|
sha256 = "03lxxrzyfkgf9c31ds93ndr1bl3a4rlynj377n9rhniz9xzl11y3";
|
||||||
|
};
|
||||||
|
DHALL_PRELUDE = prelude + "/package.dhall";
|
||||||
|
buildCommand = ''
|
||||||
|
export XDG_CACHE_HOME=$TMPDIR
|
||||||
|
cp -r $src $out
|
||||||
|
chmod +w -R $out
|
||||||
|
echo $DHALL_PRELUDE > $out/Prelude.dhall
|
||||||
|
find $out -type f -exec \
|
||||||
|
${dhallApps.dhall.program} freeze --all --inplace {} \;
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,32 +4,9 @@ let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
let Prelude = Genode.Prelude
|
let Prelude = Genode.Prelude
|
||||||
|
|
||||||
let ChildEntry = Prelude.Map.Entry Text Genode.Init.Start.Type
|
|
||||||
|
|
||||||
let toChildEntry =
|
|
||||||
λ(init : Genode.Init.Type)
|
|
||||||
→ let childCount = Prelude.List.length ChildEntry init.children
|
|
||||||
|
|
||||||
let onlyChild = Prelude.Natural.lessThan childCount 2
|
|
||||||
|
|
||||||
let child =
|
|
||||||
if onlyChild
|
|
||||||
|
|
||||||
then Prelude.Optional.fold
|
|
||||||
ChildEntry
|
|
||||||
(Prelude.List.head ChildEntry init.children)
|
|
||||||
ChildEntry
|
|
||||||
(λ(child : ChildEntry) → child)
|
|
||||||
{ mapKey = ""
|
|
||||||
, mapValue = Genode.Init.Start::{ binary = "" }
|
|
||||||
}
|
|
||||||
|
|
||||||
else { mapKey = "init", mapValue = Genode.Init.toStart init }
|
|
||||||
|
|
||||||
in child
|
|
||||||
|
|
||||||
in λ(boot : Genode.Boot.Type)
|
in λ(boot : Genode.Boot.Type)
|
||||||
→ let child = toChildEntry boot.config
|
→ let child =
|
||||||
|
{ mapKey = "test", mapValue = Genode.Init.toStart boot.config }
|
||||||
|
|
||||||
in { config =
|
in { config =
|
||||||
Genode.Init::{
|
Genode.Init::{
|
||||||
|
|
|
@ -23,7 +23,7 @@ in λ(args : Args)
|
||||||
, provides = [ "Timer" ]
|
, provides = [ "Timer" ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, { mapKey = "init", mapValue = Genode.Init.toStart args.config }
|
, { mapKey = "test", mapValue = Genode.Init.toStart args.config }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, rom =
|
, rom =
|
||||||
|
|
|
@ -4,32 +4,9 @@ let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
let Prelude = Genode.Prelude
|
let Prelude = Genode.Prelude
|
||||||
|
|
||||||
let ChildEntry = Prelude.Map.Entry Text Genode.Init.Start.Type
|
|
||||||
|
|
||||||
let toChildEntry =
|
|
||||||
λ(init : Genode.Init.Type)
|
|
||||||
→ let childCount = Prelude.List.length ChildEntry init.children
|
|
||||||
|
|
||||||
let onlyChild = Prelude.Natural.lessThan childCount 2
|
|
||||||
|
|
||||||
let child =
|
|
||||||
if onlyChild
|
|
||||||
|
|
||||||
then Prelude.Optional.fold
|
|
||||||
ChildEntry
|
|
||||||
(Prelude.List.head ChildEntry init.children)
|
|
||||||
ChildEntry
|
|
||||||
(λ(child : ChildEntry) → child)
|
|
||||||
{ mapKey = ""
|
|
||||||
, mapValue = Genode.Init.Start::{ binary = "" }
|
|
||||||
}
|
|
||||||
|
|
||||||
else { mapKey = "init", mapValue = Genode.Init.toStart init }
|
|
||||||
|
|
||||||
in child
|
|
||||||
|
|
||||||
in λ(boot : Genode.Boot.Type)
|
in λ(boot : Genode.Boot.Type)
|
||||||
→ let child = toChildEntry boot.config
|
→ let child =
|
||||||
|
{ mapKey = "test", mapValue = Genode.Init.toStart boot.config }
|
||||||
|
|
||||||
in { config =
|
in { config =
|
||||||
Genode.Init::{
|
Genode.Init::{
|
||||||
|
|
|
@ -12,7 +12,6 @@ in { config =
|
||||||
, binary = "test-signal"
|
, binary = "test-signal"
|
||||||
, exitPropagate = True
|
, exitPropagate = True
|
||||||
, resources = { caps = 500, ram = Genode.units.MiB 10 }
|
, resources = { caps = 500, ram = Genode.units.MiB 10 }
|
||||||
, routes = [ Genode.ServiceRoute.parent "Timer" ]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@ in λ(testBinary : Genode.Prelude.Map.Entry Text Text)
|
||||||
, binary = testBinary.mapKey
|
, binary = testBinary.mapKey
|
||||||
, exitPropagate = True
|
, exitPropagate = True
|
||||||
, resources = { caps = 256, ram = Genode.units.MiB 3 }
|
, resources = { caps = 256, ram = Genode.units.MiB 3 }
|
||||||
, routes = [ Genode.ServiceRoute.parent "Timer" ]
|
|
||||||
, config =
|
, config =
|
||||||
Some
|
Some
|
||||||
( Genode.Prelude.XML.element
|
( Genode.Prelude.XML.element
|
||||||
|
|
Loading…
Reference in New Issue