Refactor of packaging and testing
- Remove manifests from Dhall configurations and mix all test inputs to generate test ROM maps. - All loader and timer drivers are name ld.lib.so and timer_drv. - Replace packages of multiple Genode Labs targets with functions to build individual targets. These packages are not explicitly specified unless they require inputs from the source ports or extra nativeBuildInputs. - Add support for building from Genode world repository.
This commit is contained in:
parent
2aab55dc38
commit
6d6d585f0f
|
@ -15,26 +15,9 @@ writeScriptBin "generate-manifest" ''
|
||||||
echo \'$root\' is not an existing directory >> /dev/stderr
|
echo \'$root\' is not an existing directory >> /dev/stderr
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -eu
|
set -eu
|
||||||
find="${findutils}/bin/find"
|
echo -n '['
|
||||||
echo -n '{'
|
find $root/ -type f -printf ',{mapKey= "%f",mapValue="%p"}'
|
||||||
if [ -d "$root/bin" ]; then
|
echo -n ']'
|
||||||
echo -n ',bin = {'
|
|
||||||
find $root/bin/ -type f -printf '%f "%p"\n' \
|
|
||||||
| awk '{print ", "gensub(/\..*/, "", 1, $1)"={mapKey= \""$1"\",mapValue ="$2"}"}'
|
|
||||||
echo -n '}'
|
|
||||||
fi
|
|
||||||
if [ -d "$root/lib" ]; then
|
|
||||||
echo -n ',lib = {'
|
|
||||||
find $root/lib/ -type f -name '*.lib.so' -printf '%f "%p"\n' \
|
|
||||||
| awk '{print ", "gensub(/\..*/, "", 1, $1)"={mapKey=\""$1"\",mapValue="$2"}"}'
|
|
||||||
echo -n '}'
|
|
||||||
fi
|
|
||||||
if [ -d "$root/tar" ]; then
|
|
||||||
echo -n ',tar = {'
|
|
||||||
find $root/tar/ -type f -name '*.tar' -printf '%f "%p"\n' \
|
|
||||||
| awk '{print ""gensub(/\..*/, "", 1, $1)"={mapKey=\""$1"\",mapValue="$2"}" }'
|
|
||||||
echo -n '}'
|
|
||||||
fi
|
|
||||||
echo '}'
|
|
||||||
''
|
''
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
{ stdenv, nixpkgs, dhallApps, packages }:
|
{ stdenv, nixpkgs, dhallApps, packages }:
|
||||||
|
|
||||||
let inherit (packages) base-hw-pc;
|
let inherit (packages) genodeSources base-hw-pc;
|
||||||
in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages;
|
in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages;
|
||||||
let inherit (stdenv) cc;
|
let inherit (stdenv) cc;
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages;
|
||||||
# link final image
|
# link final image
|
||||||
$LD \
|
$LD \
|
||||||
--strip-all \
|
--strip-all \
|
||||||
-T${base-hw-pc.src}/repos/base/src/ld/genode.ld \
|
-T${genodeSources}/repos/base/src/ld/genode.ld \
|
||||||
-z max-page-size=0x1000 \
|
-z max-page-size=0x1000 \
|
||||||
-Ttext=$link_address -gc-sections \
|
-Ttext=$link_address -gc-sections \
|
||||||
"$lib" "$TMPDIR/boot_modules.o"
|
"$lib" "$TMPDIR/boot_modules.o"
|
||||||
|
@ -43,7 +43,7 @@ in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages;
|
||||||
${dhallApps.dhall.program} text \
|
${dhallApps.dhall.program} text \
|
||||||
<<< "(env:DHALL_GENODE).Init.render ($@).config" \
|
<<< "(env:DHALL_GENODE).Init.render ($@).config" \
|
||||||
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
|
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
|
||||||
-schema ${packages.genode-sources}/repos/os/src/init/config.xsd - \
|
-schema ${packages.genodeSources}/repos/os/src/init/config.xsd - \
|
||||||
| sed 's/>/>/g' \
|
| sed 's/>/>/g' \
|
||||||
> $TMPDIR/config
|
> $TMPDIR/config
|
||||||
|
|
||||||
|
@ -51,8 +51,8 @@ in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages;
|
||||||
<<< "${../insert-config-rom.dhall} \"$TMPDIR/config\" ($@).rom" \
|
<<< "${../insert-config-rom.dhall} \"$TMPDIR/config\" ($@).rom" \
|
||||||
> "$TMPDIR/modules.dhall"
|
> "$TMPDIR/modules.dhall"
|
||||||
|
|
||||||
build_core "''${CORE_OBJ:-${base-hw-pc}/lib/core-hw-pc.o}" "$TMPDIR/modules.dhall" 0xffffffc000000000 > core.elf
|
build_core "''${CORE_OBJ:-${base-hw-pc.coreObj}}" "$TMPDIR/modules.dhall" 0xffffffc000000000 > core.elf
|
||||||
build_core "''${BOOTSTRAP_OBJ:-${base-hw-pc}/lib/bootstrap-hw-pc.o}" "${
|
build_core "''${BOOTSTRAP_OBJ:-${base-hw-pc.bootstrapObj}}" "${
|
||||||
../to-rom.dhall
|
../to-rom.dhall
|
||||||
} \"core.elf\" \"./core.elf\"" 0x00200000
|
} \"core.elf\" \"./core.elf\"" 0x00200000
|
||||||
'')
|
'')
|
||||||
|
|
|
@ -7,8 +7,6 @@ nixpkgs.writeScriptBin "linux-image" (with nixpkgs.buildPackages; ''
|
||||||
set -eu
|
set -eu
|
||||||
export DHALL_PRELUDE=''${DHALL_PRELUDE:-${packages.dhallPrelude}/package.dhall}
|
export DHALL_PRELUDE=''${DHALL_PRELUDE:-${packages.dhallPrelude}/package.dhall}
|
||||||
export DHALL_GENODE=''${DHALL_GENODE:-${packages.dhallGenode}/package.dhall}
|
export DHALL_GENODE=''${DHALL_GENODE:-${packages.dhallGenode}/package.dhall}
|
||||||
export BASE_LINUX_MANIFEST=''${BASE_LINUX_MANIFEST:-${packages.base-linux.manifest}}
|
|
||||||
export OS_MANIFEST=''${OS_MANIFEST:-${packages.os.manifest}}
|
|
||||||
${dhallApps.dhall.program} text <<< "${./script.dhall} ($@)" > boot.sh
|
${dhallApps.dhall.program} text <<< "${./script.dhall} ($@)" > boot.sh
|
||||||
source boot.sh
|
source boot.sh
|
||||||
rm boot.sh
|
rm boot.sh
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
{ stdenv, nixpkgs, dhallApps, packages }:
|
{ stdenv, nixpkgs, dhallApps, packages }:
|
||||||
|
|
||||||
let inherit (packages) base-nova;
|
let inherit (packages) genodeSources base-nova;
|
||||||
in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages;
|
in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages;
|
||||||
let inherit (stdenv) cc;
|
let inherit (stdenv) cc;
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages;
|
||||||
${dhallApps.dhall.program} text \
|
${dhallApps.dhall.program} text \
|
||||||
<<< "(env:DHALL_GENODE).Init.render ($@).config" \
|
<<< "(env:DHALL_GENODE).Init.render ($@).config" \
|
||||||
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
|
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
|
||||||
-schema ${packages.genode-sources}/repos/os/src/init/config.xsd - \
|
-schema ${packages.genodeSources}/repos/os/src/init/config.xsd - \
|
||||||
| sed 's/>/>/g' \
|
| sed 's/>/>/g' \
|
||||||
> $TMPDIR/config
|
> $TMPDIR/config
|
||||||
|
|
||||||
|
@ -37,10 +37,10 @@ in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages;
|
||||||
|
|
||||||
# link final image
|
# link final image
|
||||||
$LD --strip-all \
|
$LD --strip-all \
|
||||||
-T${base-nova.src}/repos/base/src/ld/genode.ld \
|
-T${genodeSources}/repos/base/src/ld/genode.ld \
|
||||||
-T${base-nova.src}/repos/base-nova/src/core/core-bss.ld \
|
-T${genodeSources}/repos/base-nova/src/core/core-bss.ld \
|
||||||
-z max-page-size=0x1000 \
|
-z max-page-size=0x1000 \
|
||||||
-Ttext=0x100000 -gc-sections \
|
-Ttext=0x100000 -gc-sections \
|
||||||
"''${CORE_OBJ:-${base-nova}/lib/core-nova.o}" "$TMPDIR/boot_modules.o"
|
"''${CORE_OBJ:-${base-nova.coreObj}}" "$TMPDIR/boot_modules.o"
|
||||||
cat a.out
|
cat a.out
|
||||||
'')
|
'')
|
||||||
|
|
|
@ -11,7 +11,7 @@ nixpkgs.writeScriptBin "render-init" (with nixpkgs.buildPackages; ''
|
||||||
<<< "(env:DHALL_GENODE).Init.render ($(cat))" \
|
<<< "(env:DHALL_GENODE).Init.render ($(cat))" \
|
||||||
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
|
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
|
||||||
-format \
|
-format \
|
||||||
-schema ${packages.genode-sources}/repos/os/src/init/config.xsd \
|
-schema ${packages.genodeSources}/repos/os/src/init/config.xsd \
|
||||||
- \
|
- \
|
||||||
| sed 's/>/>/g'
|
| sed 's/>/>/g'
|
||||||
'')
|
'')
|
||||||
|
|
|
@ -69,7 +69,7 @@ let drivers =
|
||||||
"Report"
|
"Report"
|
||||||
(Some label)
|
(Some label)
|
||||||
(Some label)
|
(Some label)
|
||||||
|
|
||||||
in [ routeReportToParent "acpi"
|
in [ routeReportToParent "acpi"
|
||||||
, routeReportToParent "pci_devices"
|
, routeReportToParent "pci_devices"
|
||||||
, routeReportToParent "usb_devices"
|
, routeReportToParent "usb_devices"
|
||||||
|
|
13
flake.lock
13
flake.lock
|
@ -55,18 +55,21 @@
|
||||||
},
|
},
|
||||||
"genode-depot": {
|
"genode-depot": {
|
||||||
"info": {
|
"info": {
|
||||||
"narHash": "sha256-7eL2MfGgeEaIwJXPc4LQ7pBa4JeGicm9th7onjKgzsE="
|
"lastModified": 1584019323,
|
||||||
|
"narHash": "sha256-/ZWsNeLI90r77T1GHABWjY5vtYFKDCUL+Io9ljfKgMA=",
|
||||||
|
"revCount": 8
|
||||||
},
|
},
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"info": {
|
"info": {
|
||||||
"narHash": "sha256-OnpEWzNxF/AU4KlqBXM2s5PWvfI5/BS6xQrPvkF5tO8="
|
"lastModified": 1584015812,
|
||||||
|
"narHash": "sha256-oDj4g9nL3fp3xh0jAPZSHiucDxkLXA/rO3uM8L6kE0Y="
|
||||||
},
|
},
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"locked": {
|
"locked": {
|
||||||
"owner": "edolstra",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "7f8d4b088e2df7fdb6b513bc2d6941f1d422a013",
|
"rev": "a3735dcbd7b2530ae3bcf73fd91e1ca6aa9449e7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -77,7 +80,7 @@
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"ref": "master",
|
"ref": "master",
|
||||||
"rev": "8c2aafed45b4075e37f1cd93de0ebf93f38c83c3",
|
"rev": "025906c2146d81fb890532c6e46dbfda4cb38ede",
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.sr.ht/~ehmry/genode-depot"
|
"url": "https://git.sr.ht/~ehmry/genode-depot"
|
||||||
},
|
},
|
||||||
|
|
10
flake.nix
10
flake.nix
|
@ -34,21 +34,11 @@
|
||||||
dhallApps = dhall-haskell.apps.${localSystem};
|
dhallApps = dhall-haskell.apps.${localSystem};
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultPackage = with packages;
|
|
||||||
lib.mergeManifests [
|
|
||||||
base-hw-pc
|
|
||||||
base-nova
|
|
||||||
base-linux
|
|
||||||
os
|
|
||||||
sotest-producer
|
|
||||||
];
|
|
||||||
|
|
||||||
devShell = legacyPackages.mkShell {
|
devShell = legacyPackages.mkShell {
|
||||||
nativeBuildInputs = [ dhall-haskell.packages.${localSystem}.dhall ];
|
nativeBuildInputs = [ dhall-haskell.packages.${localSystem}.dhall ];
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
export DHALL_PRELUDE="${packages.dhallPrelude}/package.dhall"
|
export DHALL_PRELUDE="${packages.dhallPrelude}/package.dhall"
|
||||||
export DHALL_GENODE="${packages.dhallGenode}/package.dhall"
|
export DHALL_GENODE="${packages.dhallGenode}/package.dhall"
|
||||||
export MANIFEST="${defaultPackage}"
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,24 +17,40 @@ let
|
||||||
callPackage' = path: attrs:
|
callPackage' = path: attrs:
|
||||||
addManifest (legacyPackages.callPackages path attrs);
|
addManifest (legacyPackages.callPackages path attrs);
|
||||||
|
|
||||||
buildUpstream = let f = import ./genodelabs { nixpkgs = legacyPackages; };
|
genodeLabs = import ./genodelabs {
|
||||||
in args: addManifest (f args);
|
nixpkgs = legacyPackages;
|
||||||
|
inherit addManifest;
|
||||||
|
};
|
||||||
|
inherit (genodeLabs) buildUpstream;
|
||||||
|
|
||||||
|
buildWorld = let
|
||||||
|
genodeWorld = legacyPackages.fetchFromGitHub {
|
||||||
|
owner = "genodelabs";
|
||||||
|
repo = "genode-world";
|
||||||
|
rev = "0ed545e55a90c39df23a86eb733961de71d56241";
|
||||||
|
hash = "sha256-sirmUtLmZ5YnfLKrOvOBafnZW3UW+1LtkiGu85Ma820=";
|
||||||
|
};
|
||||||
|
in attrs:
|
||||||
|
buildUpstream (attrs // {
|
||||||
|
postConfigure =
|
||||||
|
"echo REPOSITORIES += ${genodeWorld} >> build/etc/build.conf";
|
||||||
|
});
|
||||||
|
|
||||||
in rec {
|
in rec {
|
||||||
|
|
||||||
inherit (legacyPackages) stdenv;
|
inherit (legacyPackages) stdenv;
|
||||||
|
inherit (genodeLabs) genodeSources;
|
||||||
genode-sources = legacyPackages.callPackage ./genodelabs/sources.nix { };
|
|
||||||
|
|
||||||
base-hw-pc = buildUpstream {
|
base-hw-pc = buildUpstream {
|
||||||
name = "base-hw-pc";
|
name = "base-hw-pc";
|
||||||
|
outputs = [ "out" "coreObj" "bootstrapObj" ];
|
||||||
KERNEL = "hw";
|
KERNEL = "hw";
|
||||||
BOARD = "pc";
|
BOARD = "pc";
|
||||||
targets = [ "bootstrap" "core" "timer" "lib/ld" ];
|
targets = [ "bootstrap" "core" "timer" "lib/ld" ];
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/lib
|
mv $out/core-hw-pc.o $coreObj
|
||||||
mv $out/bin/*.o $out/lib/
|
mv $out/bootstrap-hw-pc.o $bootstrapObj
|
||||||
mv $out/lib/ld-hw.lib.so $out/lib/ld.lib.so
|
mv $out/ld-hw.lib.so $out/ld.lib.so
|
||||||
|
mv $out/hw_timer_drv $out/timer_drv
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -44,103 +60,30 @@ in rec {
|
||||||
targets = [ "core" "timer" "lib/ld" ];
|
targets = [ "core" "timer" "lib/ld" ];
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/lib
|
mkdir -p $out/lib
|
||||||
mv $out/lib/ld-linux.lib.so $out/lib/ld.lib.so
|
mv $out/ld-linux.lib.so $out/lib/ld.lib.so
|
||||||
|
mv $out/linux_timer_drv $out/timer_drv
|
||||||
'';
|
'';
|
||||||
HOST_INC_DIR = legacyPackages.buildPackages.glibc.dev + "/include";
|
HOST_INC_DIR = legacyPackages.buildPackages.glibc.dev + "/include";
|
||||||
};
|
};
|
||||||
|
|
||||||
base-nova = buildUpstream {
|
base-nova = buildUpstream {
|
||||||
name = "base-nova";
|
name = "base-nova";
|
||||||
|
outputs = [ "out" "coreObj" ];
|
||||||
KERNEL = "nova";
|
KERNEL = "nova";
|
||||||
targets = [ "core" "timer" "lib/ld" ];
|
targets = [ "core" "timer" "lib/ld" ];
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/lib
|
mv $out/core-nova.o $coreObj
|
||||||
mv $out/bin/*.o $out/lib/
|
mv $out/ld-nova.lib.so $out/ld.lib.so
|
||||||
mv $out/lib/ld-nova.lib.so $out/lib/ld.lib.so
|
mv $out/nova_timer_drv $out/timer_drv
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
driversPc = let directoryBlacklist = [ "repos/dde_zircon" ];
|
init = genodeSources.make "init";
|
||||||
in buildUpstream {
|
|
||||||
name = "drivers";
|
|
||||||
BOARD = "pc";
|
|
||||||
targets = [ "drivers" ];
|
|
||||||
ports = [ "dde_bsd" "dde_ipxe" "dde_linux" "libc" "openssl" "x86emu" ];
|
|
||||||
preBuild = "find ${toString directoryBlacklist} -name target.mk -delete";
|
|
||||||
};
|
|
||||||
|
|
||||||
noux = buildUpstream {
|
ssh_client = buildWorld {
|
||||||
name = "noux";
|
name = "ssh_client";
|
||||||
targets = [ "noux" "lib/libc_noux" ];
|
targets = [ "app/ssh_client" ];
|
||||||
ports = [ "libc" ];
|
portInputs = with genodeSources.ports; [ libc libssh openssl zlib ];
|
||||||
};
|
|
||||||
|
|
||||||
os = let
|
|
||||||
directoryBlacklist = [
|
|
||||||
"repos/dde_bsd"
|
|
||||||
"repos/dde_ipxe"
|
|
||||||
"repos/dde_linux"
|
|
||||||
"repos/dde_rump"
|
|
||||||
"repos/gems/src/app/mixer_gui_qt"
|
|
||||||
"repos/gems/src/server/http_block"
|
|
||||||
"repos/gems/src/server/terminal_mux"
|
|
||||||
"repos/libports"
|
|
||||||
"repos/ports"
|
|
||||||
];
|
|
||||||
in buildUpstream {
|
|
||||||
name = "os";
|
|
||||||
patches = [ ./genodelabs/capslock.patch ];
|
|
||||||
targets = [ "app" "init" "lib/vfs" "server" ];
|
|
||||||
ports = [ "jitterentropy" "libc" "libpng" "libssh" "openssl" "stb" "zlib" ];
|
|
||||||
preBuild = "find ${toString directoryBlacklist} -name target.mk -delete";
|
|
||||||
nativeBuildInputs = with legacyPackages.buildPackages; [ bison flex ];
|
|
||||||
};
|
|
||||||
|
|
||||||
vfs_lwip = buildUpstream {
|
|
||||||
name = "lwip";
|
|
||||||
targets = [ "lib/vfs/lwip" ];
|
|
||||||
ports = [ "lwip" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
vfs_rump = buildUpstream {
|
|
||||||
name = "vfs_rump";
|
|
||||||
targets = [ "lib/vfs/rump" ];
|
|
||||||
ports = [ "dde_rump" ];
|
|
||||||
buildInputs = [ legacyPackages.buildPackages.zlib ];
|
|
||||||
};
|
|
||||||
|
|
||||||
vfs_ttf = buildUpstream {
|
|
||||||
name = "vfs_ttf";
|
|
||||||
targets = [ "lib/vfs/ttf" ];
|
|
||||||
ports = [ "libc" "stb" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualbox5 = buildUpstream {
|
|
||||||
name = "virtualbox5";
|
|
||||||
targets = [ "virtualbox5" ];
|
|
||||||
ports = [ "libc" "libiconv" "qemu-usb" "stdcxx" "virtualbox5" ];
|
|
||||||
nativeBuildInputs = with legacyPackages.buildPackages; [ iasl yasm ];
|
|
||||||
KERNEL = "nova";
|
|
||||||
};
|
|
||||||
|
|
||||||
genodeTests = let
|
|
||||||
directoryBlacklist = [
|
|
||||||
"repos/base-*"
|
|
||||||
"repos/base/src/test/sanitizer"
|
|
||||||
"repos/base/src/test/xml_generator"
|
|
||||||
"repos/gems/src/test/aes_cbc_4k"
|
|
||||||
"repos/gems/src/test/decorator_stress"
|
|
||||||
"repos/gems/src/test/text_painter"
|
|
||||||
"repos/gems/src/test/text_painter"
|
|
||||||
"repos/gems/src/test/tiled_wm"
|
|
||||||
"repos/libports"
|
|
||||||
"repos/ports"
|
|
||||||
];
|
|
||||||
in buildUpstream {
|
|
||||||
name = "genode-tests";
|
|
||||||
preBuild = "find ${toString directoryBlacklist} -name target.mk -delete";
|
|
||||||
targets = [ "test" ];
|
|
||||||
ports = [ "libc" ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bender = legacyPackages.buildPackages.callPackage ./bender { };
|
bender = legacyPackages.buildPackages.callPackage ./bender { };
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
commit 6bc2bd3f4ac2c4e68d7d6dbee164a40b5a72638f
|
|
||||||
Author: Emery Hemingway <ehmry@posteo.net>
|
|
||||||
Date: Wed Feb 26 22:35:36 2020 +0100
|
|
||||||
|
|
||||||
Disable capslock/numlock requirements in driver_manager
|
|
||||||
|
|
||||||
The capslock and numlock state ROMs introduce senseless complexity.
|
|
||||||
|
|
||||||
diff --git a/repos/gems/src/app/driver_manager/main.cc b/repos/gems/src/app/driver_manager/main.cc
|
|
||||||
index 149911a717..afe62e8297 100644
|
|
||||||
--- a/repos/gems/src/app/driver_manager/main.cc
|
|
||||||
+++ b/repos/gems/src/app/driver_manager/main.cc
|
|
||||||
@@ -662,8 +662,6 @@ void Driver_manager::Main::_generate_usb_drv_config(Reporter &usb_drv_config,
|
|
||||||
xml.attribute("ehci", true);
|
|
||||||
xml.attribute("ohci", _use_ohci);
|
|
||||||
xml.attribute("xhci", true);
|
|
||||||
- xml.attribute("capslock_led", "rom");
|
|
||||||
- xml.attribute("numlock_led", "rom");
|
|
||||||
xml.node("hid", [&] () { });
|
|
||||||
xml.node("raw", [&] () {
|
|
||||||
xml.node("report", [&] () { xml.attribute("devices", true); });
|
|
|
@ -1,10 +1,37 @@
|
||||||
{ nixpkgs }:
|
{ nixpkgs, addManifest }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (nixpkgs.genodeHeaders) version src;
|
genodeSources = let
|
||||||
|
inherit (nixpkgs) stdenv;
|
||||||
|
platform = stdenv.targetPlatform;
|
||||||
|
|
||||||
sourceForgeToolchain =
|
arch = with platform;
|
||||||
nixpkgs.buildPackages.callPackage ./toolchain.nix { };
|
if isx86_64 then
|
||||||
|
"x86_64"
|
||||||
|
else
|
||||||
|
throw "unknown Genode arch for platform ${platform.system}";
|
||||||
|
|
||||||
|
toolPrefix = if platform.isx86 then
|
||||||
|
"genode-x86-"
|
||||||
|
else
|
||||||
|
throw "unknown tool prefix for Genode arch ${arch}";
|
||||||
|
in stdenv.mkDerivation {
|
||||||
|
pname = "genode-sources";
|
||||||
|
inherit (nixpkgs.genodeHeaders) src version;
|
||||||
|
nativeBuildInputs = with nixpkgs.buildPackages; [ expect gnumake tcl ];
|
||||||
|
patches = [ ./init.xsd.patch ./svn-trust-server-cert.patch ];
|
||||||
|
configurePhase = ''
|
||||||
|
patchShebangs ./tool
|
||||||
|
substituteInPlace repos/base/etc/tools.conf \
|
||||||
|
--replace "/usr/local/genode/tool/19.05/bin/" ""
|
||||||
|
substituteInPlace tool/check_abi \
|
||||||
|
--replace "exec nm" "exec ${toolPrefix}nm"
|
||||||
|
'';
|
||||||
|
dontBuild = true;
|
||||||
|
installPhase = "cp -a . $out";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceForgeToolchain = nixpkgs.buildPackages.callPackage ./toolchain.nix { };
|
||||||
|
|
||||||
stdenv' =
|
stdenv' =
|
||||||
nixpkgs.stdenvAdapters.overrideCC nixpkgs.stdenv sourceForgeToolchain;
|
nixpkgs.stdenvAdapters.overrideCC nixpkgs.stdenv sourceForgeToolchain;
|
||||||
|
@ -17,192 +44,114 @@ let
|
||||||
else
|
else
|
||||||
throw "unknown Genode arch for platform ${platform.system}";
|
throw "unknown Genode arch for platform ${platform.system}";
|
||||||
|
|
||||||
toolPrefix = if platform.isx86 then
|
preparePort = name:
|
||||||
"genode-x86-"
|
{ hash ? "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", ... }@args:
|
||||||
else
|
nixpkgs.buildPackages.stdenv.mkDerivation (args // {
|
||||||
throw "unknown tool prefix for Genode arch ${arch}";
|
outputHashMode = "recursive";
|
||||||
|
outputHash = hash;
|
||||||
|
pname = name;
|
||||||
|
inherit (genodeSources) version;
|
||||||
|
|
||||||
|
GIT_SSL_CAINFO =
|
||||||
|
"${nixpkgs.buildPackages.cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||||
|
VERBOSE = "";
|
||||||
|
# need to build in verbose mode because errors are hidden
|
||||||
|
|
||||||
|
impureEnvVars = stdenv'.lib.fetchers.proxyImpureEnvVars
|
||||||
|
++ [ "GIT_PROXY_COMMAND" "SOCKS_SERVER" ];
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
dontConfigure = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = with nixpkgs.buildPackages;
|
||||||
|
[ bison flex gitMinimal glibc glibcLocales rsync wget which ]
|
||||||
|
++ (args.nativeBuildInputs or [ ]);
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
export CONTRIB_DIR=$NIX_BUILD_TOP/contrib
|
||||||
|
mkdir $CONTRIB_DIR
|
||||||
|
${genodeSources}/tool/ports/prepare_port $pname
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
rsync $CONTRIB_DIR/* $out/ \
|
||||||
|
-lr --copy-unsafe-links \
|
||||||
|
--exclude '*.git' \
|
||||||
|
--exclude '*.svn' \
|
||||||
|
--exclude '*.gz' \
|
||||||
|
--exclude '*.xz' \
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
ports =
|
||||||
|
nixpkgs.lib.mapAttrs preparePort (import ./ports.nix nixpkgs.buildPackages);
|
||||||
|
|
||||||
|
buildUpstream = { name, targets, portInputs ? [ ], nativeBuildInputs ? [ ]
|
||||||
|
, ... }@extraAttrs:
|
||||||
|
|
||||||
mkPort = { name, hash, nativeBuildInputs ? [ ] }:
|
|
||||||
let
|
let
|
||||||
value = stdenv'.mkDerivation {
|
drv = stdenv'.mkDerivation (extraAttrs // {
|
||||||
pname = name;
|
pname = name;
|
||||||
inherit src version;
|
inherit (genodeSources) version;
|
||||||
|
inherit targets;
|
||||||
|
|
||||||
outputHashMode = "recursive";
|
dontUnpack = true;
|
||||||
outputHash = hash;
|
|
||||||
|
|
||||||
nativeBuildInputs = with nixpkgs.buildPackages;
|
nativeBuildInputs = with nixpkgs.buildPackages;
|
||||||
[ bison glibc flex gitMinimal subversion glibcLocales which wget ]
|
[ binutils bison flex stdenv.cc tcl which ] ++ nativeBuildInputs;
|
||||||
++ nativeBuildInputs;
|
|
||||||
|
|
||||||
patches = [ ./svn-trust-server-cert.patch ];
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
configurePhase = ''
|
configurePhase = let
|
||||||
|
linkPorts = toString
|
||||||
|
(builtins.map (drv: " ln -sv ${drv}/* contrib/;") portInputs);
|
||||||
|
in ''
|
||||||
runHook preConfigure
|
runHook preConfigure
|
||||||
patchShebangs ./tool/ports
|
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
|
runHook postConfigure
|
||||||
'';
|
'';
|
||||||
|
|
||||||
buildPhase = ''
|
makeFlags = [ "-C build" ] ++ targets;
|
||||||
export CONTRIB_DIR=$out
|
|
||||||
./tool/ports/prepare_port $pname
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
find build/bin -name '*.xsd' -delete
|
||||||
|
find build/bin -follow -type f -exec install -Dt $out '{}' \;
|
||||||
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
});
|
||||||
|
in addManifest drv;
|
||||||
|
|
||||||
dontInstall = true;
|
buildOverrides = import ./targets.nix {
|
||||||
|
inherit (nixpkgs) buildPackages;
|
||||||
GIT_SSL_CAINFO =
|
inherit ports;
|
||||||
"${nixpkgs.buildPackages.cacert}/etc/ssl/certs/ca-bundle.crt";
|
|
||||||
|
|
||||||
impureEnvVars = stdenv'.lib.fetchers.proxyImpureEnvVars
|
|
||||||
++ [ "GIT_PROXY_COMMAND" "SOCKS_SERVER" ];
|
|
||||||
|
|
||||||
};
|
|
||||||
in { inherit name value; };
|
|
||||||
|
|
||||||
portDrvs = with nixpkgs.buildPackages; builtins.listToAttrs (builtins.map mkPort [
|
|
||||||
{
|
|
||||||
name = "stb";
|
|
||||||
hash = "sha256-RQKF/H3wsKy6ZT9PLv4vzerJl+0Be2wqNjqsUBYZU6U=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "libc";
|
|
||||||
hash = "sha256-yx5jGJI1w6KAwS2JPHhWpPFEeEyOv7yfIeXLRgQM7l8=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "x86emu";
|
|
||||||
hash = "sha256-fKUab/HflrcZqzSk/cz/QimPtPILGwvXgHkwE4y2uQc=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "lwip";
|
|
||||||
hash = "sha256-1oOJoCME8N1nQKUxG7vRBFRtJ9MausrIfno91QchMEU=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "dde_linux";
|
|
||||||
hash = "sha256-9xD+pIjYeL9W/2HsOpJCGJs5+RgM2gmwxXC+h1Yc90Y=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "dde_bsd";
|
|
||||||
hash = "sha256-ZcF6L4maC1vB5IP1jR6L4CWlaNf5Qu4xVjqITK3Yt0w=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "dde_rump";
|
|
||||||
hash = "sha256-aU5s+sf9/bZxzSX7+9wNEn3693yxDJB/dNVWMLuJkQI=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "dde_ipxe";
|
|
||||||
hash = "sha256-UIwC0O5IlxNWQKBJYE9h5ekVWP18UTvejsgb1i6KHCs=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "openssl";
|
|
||||||
hash = "sha256-eZYdDT4L3R64mhUKGAiiQUOF9GgeEHDZlsDZbI4BM58=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "libiconv";
|
|
||||||
hash = "sha256-TN3cZAo7zq7OLXXB2lLxOnM5c98aA0GksE7ACrymVvE=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "qemu-usb";
|
|
||||||
hash = "sha256-awBouSz5MBBc9HuHZiZJK7jbabNSyqBQMX2NPXHvR0I=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "stdcxx";
|
|
||||||
hash = "sha256-hXRdT6f2prKsCXDSJ4HMF1MNaRh0/EoNMrJUBuHQeyI=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "virtualbox5";
|
|
||||||
hash = "sha256-VZPXyFLzLFCmxbbBqmZ9HP0y6E+1I+v/+Rt22IjlOrI=";
|
|
||||||
nativeBuildInputs = [
|
|
||||||
iasl
|
|
||||||
libxslt
|
|
||||||
unzip
|
|
||||||
yasm
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "expat";
|
|
||||||
hash = "sha256-CCMxMn2DpzrIkW9WMBaX1T77T/GECy8pVlsT+BpbsQs=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "jpeg";
|
|
||||||
hash = "sha256-ZUMuNV9ltGqZhny6LAn/Do1ojbypnSHa9dfQ0ZVZhUE=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "lz4";
|
|
||||||
hash = "sha256-xYohPuOwqiFBHkqwP/q0fMafmWzMg4rt3qYZqO624wk=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "mesa";
|
|
||||||
hash = "sha256-ho8t+7jFzYPi8nmHi4usFNunwHsbSBdtvVOtAlbz9Oc=";
|
|
||||||
nativeBuildInputs = [ python ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "mupdf";
|
|
||||||
hash = "sha256-7zl2DKFIPzQdX/poF0jxejn81OCWrh7QfTuNmtOA4WA=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "jitterentropy";
|
|
||||||
hash = "sha256-FnLuTDOCyQ9/jpQfx0vtyrbUymW7G3BuSM+NINKOxK4=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "libpng";
|
|
||||||
hash = "sha256-Y3DjI7m1kYGbHX8hRob3RYnTTTX4LteOt5Yqzlcq/tQ=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "libssh";
|
|
||||||
hash = "sha256-IjHv+cbvAU7RVcKJSvHJmG8ZDULpEAawr7snPzWdMsU=";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "zlib";
|
|
||||||
hash = "sha256-gWv8RKlc3TacC4sHPKXyhqVDRkM6MIXuWLqEx5gHz7s=";
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
|
|
||||||
in { name, targets, ports ? [ ], nativeBuildInputs ? [ ], ... }@extraAttrs:
|
|
||||||
|
|
||||||
let ports' = builtins.map (name: builtins.getAttr name portDrvs) ports;
|
|
||||||
|
|
||||||
in stdenv'.mkDerivation (extraAttrs // {
|
|
||||||
pname = name;
|
|
||||||
inherit version targets;
|
|
||||||
src = nixpkgs.fetchFromGitHub {
|
|
||||||
owner = "genodelabs";
|
|
||||||
repo = "genode";
|
|
||||||
rev = version;
|
|
||||||
sha256 = "0idk92ibrasla0y2xkrmyh49dx0nzg96gqkcmn6r3w5r3fdpsfjy";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = with nixpkgs.buildPackages;
|
in {
|
||||||
[ binutils bison flex stdenv.cc tcl which ] ++ nativeBuildInputs;
|
inherit buildUpstream;
|
||||||
|
genodeSources = genodeSources // {
|
||||||
|
make = target:
|
||||||
|
with builtins;
|
||||||
|
let
|
||||||
|
attrs = if hasAttr target buildOverrides then
|
||||||
|
getAttr target buildOverrides
|
||||||
|
else
|
||||||
|
{ };
|
||||||
|
in buildUpstream ({
|
||||||
|
name = builtins.replaceStrings [ "/" ] [ "-" ] target;
|
||||||
|
targets = [ target ];
|
||||||
|
} // attrs);
|
||||||
|
inherit ports;
|
||||||
|
};
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
}
|
||||||
|
|
||||||
configurePhase = ''
|
|
||||||
runHook preConfigure
|
|
||||||
patchShebangs ./tool/check_abi
|
|
||||||
patchShebangs ./tool/create_builddir
|
|
||||||
substituteInPlace repos/base/etc/tools.conf \
|
|
||||||
--replace "/usr/local/genode/tool/19.05/bin/" ""
|
|
||||||
substituteInPlace tool/check_abi \
|
|
||||||
--replace "exec nm" "exec ${toolPrefix}nm"
|
|
||||||
./tool/create_builddir ${arch} BUILD_DIR=build
|
|
||||||
substituteInPlace build/etc/build.conf \
|
|
||||||
--replace "#REPOSITORIES" "REPOSITORIES"
|
|
||||||
runHook postConfigure
|
|
||||||
'' + (if ports != [ ] then
|
|
||||||
"mkdir contrib;"
|
|
||||||
+ toString (builtins.map (drv: " ln -sv ${drv}/* contrib/;") ports')
|
|
||||||
else
|
|
||||||
"");
|
|
||||||
|
|
||||||
makeFlags = [ "-C build" ] ++ targets;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
find build/bin -name '*.xsd' -delete
|
|
||||||
find build/bin -name '*.lib.so' -exec install -Dt $out/lib '{}' \; -delete
|
|
||||||
find build/bin -exec install -Dt $out/bin '{}' \;
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru.ports = portDrvs;
|
|
||||||
})
|
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
# ports are superficially similar to Nix, but inferior in every way
|
||||||
|
|
||||||
|
nativePkgs:
|
||||||
|
with nativePkgs; {
|
||||||
|
dde_bsd.hash = "sha256-2ilZs6JkcQAvU/sQYnHunGtGRZDt7qLTpKZxQxSOf2I=";
|
||||||
|
dde_ipxe.hash = "sha256-KAmDF2t+xKzkEjWZ1bvLO8O+IlaV0ImuFsd8SIC3UQw=";
|
||||||
|
dde_linux.hash = "sha256-a1oaYF5S8OazyCOu/Jq+YOfrN4Kyb4JesLs222Vanjc=";
|
||||||
|
dde_rump = {
|
||||||
|
hash = "sha256-Wr5otGkWEa+5xImsFHQzwap5LckNEbyWA/7xbNcOreI=";
|
||||||
|
nativeBuildInputs = [ subversion ];
|
||||||
|
};
|
||||||
|
expat.hash = "sha256-m4Q/rIeBCe/nxCksipQTAOCNSl2KYF4nItswXmhdKyk=";
|
||||||
|
jitterentropy.hash = "sha256-6KS732GxtUMz0xPYKtshdn039DgdJq11vTDQesZn4Ds=";
|
||||||
|
jpeg.hash = "sha256-NyO72pMphX/QyPJl5CqX/gJbDhEIwCYbXf18HQBaFEI=";
|
||||||
|
libc = {
|
||||||
|
hash = "sha256-xAydMqf2+OTNt7nMUk0KTTil7sIIWGvn0Ytmepkc3rI=";
|
||||||
|
nativeBuildInputs = [ buildPackages.gcc subversion ];
|
||||||
|
};
|
||||||
|
libiconv.hash = "sha256-3PWJJg0rQTa789Jb5RnuHN0nfBKFnd0g+J7Vk7uXn5c=";
|
||||||
|
libpng.hash = "sha256-bAUkafClnl+BDv0X2xs1iY4rlHVHkGxnb7UfPkCSeds=";
|
||||||
|
libssh.hash = "sha256-Z/1YdhISh2kqBjWiTOLkS+usoeeekJvAuYrVUgpxnQM=";
|
||||||
|
lighttpd.hash = "sha256-aBClCnOfbPSgisCTHquNhXAzkeslFp0ckK/lazr9AoE=";
|
||||||
|
lwip.hash = "sha256-V0Lo4DcY/Ai60kQmYB92BVlNX+QRLsymM5unXAvP0VI=";
|
||||||
|
lz4.hash = "sha256-Ndpv4NmZTeB737l2ywLrnXoqKzyCaBFMZl7ULfr14lY=";
|
||||||
|
mesa = {
|
||||||
|
hash = "sha256-vkVbWFKO9OXOb8sEhkCL9x4gxxXjRhM41WXsB7YL/4Q=";
|
||||||
|
nativeBuildInputs = [ python ];
|
||||||
|
};
|
||||||
|
mupdf.hash = "sha256-AQwnVdHHWmqnHKvG3+I9zXUoC5IHD0MtS5mRh9u/V+o=";
|
||||||
|
openssl.hash = "sha256-VMMzzaSw17SMETAYwGYNgMDPPgDpMjgrPnhMV8/Pn8o=";
|
||||||
|
qemu-usb.hash = "sha256-PilJvNrJfz4iHj//mmARN47SVcA6+PTey/auTuQcs88=";
|
||||||
|
stb.hash = "sha256-9LSH1i8jcEvjRAmTvgtK+Axy9hO7uiSzmSgBvs0zkTc=";
|
||||||
|
stdcxx.hash = "sha256-Pec6B3ziRDRGFia0/XyeA3fo6fyevC0LynKU4xa8weI=";
|
||||||
|
virtualbox5 = {
|
||||||
|
hash = "sha256-UEJTSD+jWc1arZ4ODqbfzM092UMZDiQlkbysxBdFE9w=";
|
||||||
|
nativeBuildInputs = [ iasl libxslt unzip yasm ];
|
||||||
|
};
|
||||||
|
x86emu.hash = "sha256-Q/fOQjbU0Frtkj+f2rSKuYRSEIk4s569qf3UaTbElLY=";
|
||||||
|
zlib.hash = "sha256-bxTalPJBSs5yEMO2gFKvoR1PadepmkFGt6jcSZN/fgE=";
|
||||||
|
}
|
|
@ -1,10 +0,0 @@
|
||||||
{ stdenv, genodeHeaders }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
pname = "genode-sources";
|
|
||||||
inherit (genodeHeaders) version src;
|
|
||||||
patches = [ ./init.xsd.patch ./svn-trust-server-cert.patch ];
|
|
||||||
dontConfigure = true;
|
|
||||||
dontBuild = true;
|
|
||||||
installPhase = "cp -a . $out";
|
|
||||||
}
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
{ buildPackages, ports }:
|
||||||
|
|
||||||
|
with ports;
|
||||||
|
|
||||||
|
{
|
||||||
|
"app/lighttpd".portInputs = [ libc lighttpd openssl zlib ];
|
||||||
|
|
||||||
|
"drivers/framebuffer/intel" = {
|
||||||
|
BOARD = "pc";
|
||||||
|
portInputs = [ dde_linux ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"drivers/framebuffer/vesa" = {
|
||||||
|
BOARD = "pc";
|
||||||
|
portInputs = [ x86emu ];
|
||||||
|
};
|
||||||
|
|
||||||
|
"drivers/usb".portInputs = [ dde_linux ];
|
||||||
|
|
||||||
|
"lib/vfs/lwip".portInputs = [ lwip ];
|
||||||
|
"lib/vfs/ttf".portInputs = [ libc stb ];
|
||||||
|
"lib/vfs/rump" = {
|
||||||
|
portInputs = [ dde_rump ];
|
||||||
|
buildInputs = [ buildPackages.zlib ];
|
||||||
|
};
|
||||||
|
|
||||||
|
noux = {
|
||||||
|
targets = [ "noux" "lib/libc_noux" ];
|
||||||
|
portInputs = [ libc ];
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualbox5 = {
|
||||||
|
KERNEL = "nova";
|
||||||
|
portInputs = [ libc libiconv qemu-usb stdcxx virtualbox5 ];
|
||||||
|
nativeBuildInputs = with buildPackages; [ iasl yasm ];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -1,38 +0,0 @@
|
||||||
-- SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
let Genode = env:DHALL_GENODE
|
|
||||||
|
|
||||||
let Init = Genode.Init
|
|
||||||
|
|
||||||
let Child = Init.Child
|
|
||||||
|
|
||||||
let wrapHarness
|
|
||||||
: Init.Type → Child.Type
|
|
||||||
= env:DHALL_WRAP_HARNESS ? ./sotest-wrapper.dhall
|
|
||||||
|
|
||||||
in λ(boot : Genode.Boot.Type)
|
|
||||||
→ { config =
|
|
||||||
Init::{
|
|
||||||
, children =
|
|
||||||
[ { mapKey = "timer"
|
|
||||||
, mapValue =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "hw_timer_drv"
|
|
||||||
, provides = [ "Timer" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
, { mapKey = "harness", mapValue = wrapHarness boot.config }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
|
||||||
[ manifest.base-hw-pc.bin.hw_timer_drv
|
|
||||||
, manifest.base-hw-pc.lib.ld
|
|
||||||
, manifest.os.bin.init
|
|
||||||
, manifest.sotest-producer.bin.sotest-harness
|
|
||||||
]
|
|
||||||
# boot.rom
|
|
||||||
}
|
|
|
@ -34,20 +34,19 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultScript = ''run_genode_until {[init] child "harness" exited with exit value 0} 60'';
|
defaultScript =
|
||||||
|
''run_genode_until {[init] child "harness" exited with exit value 0} 60'';
|
||||||
|
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig, testInputs ? [ ]
|
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
||||||
, testEnv ? { }, qemuArgs ? [], ...
|
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
||||||
}@t:
|
|
||||||
let
|
let
|
||||||
testConfig' = "${./driver-hw-config.dhall} ${testConfig}";
|
|
||||||
manifest = lib.mergeManifests (with testPkgs;
|
manifest = lib.mergeManifests (with testPkgs;
|
||||||
[ base-hw-pc os sotest-producer ]
|
[ base-hw-pc (genodeSources.make "init") sotest-producer ]
|
||||||
++ testInputs);
|
++ testInputs);
|
||||||
|
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
||||||
testEnv' = {
|
testEnv' = {
|
||||||
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
||||||
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
|
||||||
MANIFEST = manifest;
|
MANIFEST = manifest;
|
||||||
XDG_CACHE_HOME = "/tmp";
|
XDG_CACHE_HOME = "/tmp";
|
||||||
} // testEnv;
|
} // testEnv;
|
||||||
|
@ -142,8 +141,8 @@ let
|
||||||
|
|
||||||
iso = apps.hw-iso.function testEnv' testConfig';
|
iso = apps.hw-iso.function testEnv' testConfig';
|
||||||
|
|
||||||
xml = hostPkgs.runCommand (name + ".config") testEnv' ''
|
xml = hostPkgs.runCommand (name + ".config") testEnv'
|
||||||
${apps.render-init.program} <<< "(${testConfig'}).config" > $out'';
|
''${apps.render-init.program} <<< "(${testConfig'}).config" > $out'';
|
||||||
|
|
||||||
sotest = hostPkgs.runCommand "hw-${name}-sotest" testEnv' ''
|
sotest = hostPkgs.runCommand "hw-${name}-sotest" testEnv' ''
|
||||||
cp "${testPkgs.bender}" bender
|
cp "${testPkgs.bender}" bender
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
-- SPDX-License-Identifier: CC0-1.0
|
|
||||||
let Genode = env:DHALL_GENODE
|
|
||||||
|
|
||||||
let Init = Genode.Init
|
|
||||||
|
|
||||||
let Child = Init.Child
|
|
||||||
|
|
||||||
let wrapHarness
|
|
||||||
: Init.Type → Child.Type
|
|
||||||
= env:DHALL_WRAP_HARNESS ? ./sotest-wrapper.dhall
|
|
||||||
|
|
||||||
let Child = Genode.Init.Child
|
|
||||||
|
|
||||||
in λ(boot : Genode.Boot.Type)
|
|
||||||
→ { config =
|
|
||||||
Genode.Init::{
|
|
||||||
, children =
|
|
||||||
[ { mapKey = "timer"
|
|
||||||
, mapValue =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "linux_timer_drv"
|
|
||||||
, provides = [ "Timer" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
, { mapKey = "harness", mapValue = wrapHarness boot.config }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.BootModules.toRomPaths
|
|
||||||
[ manifest.base-linux.bin.core-linux
|
|
||||||
, manifest.base-linux.bin.linux_timer_drv
|
|
||||||
, manifest.base-linux.lib.ld
|
|
||||||
, manifest.os.bin.init
|
|
||||||
, manifest.sotest-producer.bin.sotest-harness
|
|
||||||
]
|
|
||||||
# boot.rom
|
|
||||||
: Genode.BootModules.Type
|
|
||||||
}
|
|
|
@ -38,13 +38,13 @@ let
|
||||||
, env ? { }, ... }:
|
, env ? { }, ... }:
|
||||||
with testPkgs;
|
with testPkgs;
|
||||||
let
|
let
|
||||||
testConfig' = "${./driver-linux-config.dhall} ${testConfig}";
|
manifest = lib.mergeManifests
|
||||||
|
(with testPkgs; [ base-linux init sotest-producer ] ++ testInputs);
|
||||||
|
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
||||||
env' = {
|
env' = {
|
||||||
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
||||||
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
MANIFEST = manifest;
|
||||||
MANIFEST = lib.mergeManifests (with testPkgs;
|
|
||||||
[ base-linux os sotest-producer ] ++ testInputs);
|
|
||||||
XDG_CACHE_HOME = "/tmp";
|
XDG_CACHE_HOME = "/tmp";
|
||||||
} // env;
|
} // env;
|
||||||
|
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
-- SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
let Genode = env:DHALL_GENODE
|
|
||||||
|
|
||||||
let Init = Genode.Init
|
|
||||||
|
|
||||||
let Child = Init.Child
|
|
||||||
|
|
||||||
let wrapHarness
|
|
||||||
: Init.Type → Child.Type
|
|
||||||
= env:DHALL_WRAP_HARNESS ? ./sotest-wrapper.dhall
|
|
||||||
|
|
||||||
in λ(boot : Genode.Boot.Type)
|
|
||||||
→ { config =
|
|
||||||
Init::{
|
|
||||||
, children =
|
|
||||||
[ { mapKey = "timer"
|
|
||||||
, mapValue =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "nova_timer_drv"
|
|
||||||
, provides = [ "Timer" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
, { mapKey = "harness", mapValue = wrapHarness boot.config }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
|
||||||
[ manifest.base-nova.lib.ld
|
|
||||||
, manifest.base-nova.bin.nova_timer_drv
|
|
||||||
, manifest.os.bin.init
|
|
||||||
, manifest.sotest-producer.bin.sotest-harness
|
|
||||||
]
|
|
||||||
# boot.rom
|
|
||||||
}
|
|
|
@ -34,20 +34,19 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultScript = ''run_genode_until {[init] child "harness" exited with exit value 0} 60'';
|
defaultScript =
|
||||||
|
''run_genode_until {[init] child "harness" exited with exit value 0} 60'';
|
||||||
|
|
||||||
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig, testInputs ? [ ]
|
mkTest = { name ? "unamed", testScript ? defaultScript, testConfig
|
||||||
, testEnv ? { }, qemuArgs ? [], ...
|
, testInputs ? [ ], testEnv ? { }, qemuArgs ? [ ], ... }@t:
|
||||||
}@t:
|
|
||||||
let
|
let
|
||||||
testConfig' = "${./driver-nova-config.dhall} ${testConfig}";
|
|
||||||
manifest = lib.mergeManifests (with testPkgs;
|
manifest = lib.mergeManifests (with testPkgs;
|
||||||
[ base-nova os sotest-producer ]
|
[ base-nova (genodeSources.make "init") sotest-producer ]
|
||||||
++ testInputs);
|
++ testInputs);
|
||||||
|
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
|
||||||
testEnv' = {
|
testEnv' = {
|
||||||
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
||||||
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
|
||||||
MANIFEST = manifest;
|
MANIFEST = manifest;
|
||||||
XDG_CACHE_HOME = "/tmp";
|
XDG_CACHE_HOME = "/tmp";
|
||||||
} // testEnv;
|
} // testEnv;
|
||||||
|
@ -143,8 +142,8 @@ let
|
||||||
|
|
||||||
iso = apps.nova-iso.function testEnv' "${testConfig'}";
|
iso = apps.nova-iso.function testEnv' "${testConfig'}";
|
||||||
|
|
||||||
xml = hostPkgs.runCommand (name + ".config") testEnv' ''
|
xml = hostPkgs.runCommand (name + ".config") testEnv'
|
||||||
${apps.render-init.program} <<< "(${testConfig'}).config" > $out'';
|
''${apps.render-init.program} <<< "(${testConfig'}).config" > $out'';
|
||||||
|
|
||||||
sotest = hostPkgs.runCommand "nova-${name}-sotest" testEnv' ''
|
sotest = hostPkgs.runCommand "nova-${name}-sotest" testEnv' ''
|
||||||
cp "${testPkgs.bender}" bender
|
cp "${testPkgs.bender}" bender
|
||||||
|
|
|
@ -22,77 +22,136 @@ let childRomRoute =
|
||||||
→ λ(from : Text)
|
→ λ(from : Text)
|
||||||
→ ServiceRoute.childLabel "ROM" child (Some from) (None Text)
|
→ ServiceRoute.childLabel "ROM" child (Some from) (None Text)
|
||||||
|
|
||||||
let label = \(_ : Text) -> { local = _, route = _ }
|
let label = λ(_ : Text) → { local = _, route = _ }
|
||||||
|
|
||||||
in Init::{
|
in Genode.Boot::{
|
||||||
, verbose = True
|
, config =
|
||||||
, children =
|
Init::{
|
||||||
toMap
|
, verbose = True
|
||||||
{ , drivers =
|
, children =
|
||||||
Init.toChild
|
toMap
|
||||||
drivers
|
{ drivers =
|
||||||
Init.Attributes::{
|
Init.toChild
|
||||||
, provides = [ "Block", "Framebuffer", "Input" ]
|
drivers
|
||||||
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
|
Init.Attributes::{
|
||||||
, romReports = [ label "block_devices" ]
|
, provides = [ "Block", "Framebuffer", "Input" ]
|
||||||
, routes =
|
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
|
||||||
[ parentRomRoute
|
, romReports = [ label "block_devices" ]
|
||||||
"managed/input_filter"
|
, routes =
|
||||||
"input_filter.config"
|
[ parentRomRoute
|
||||||
, parentRomRoute " numlock_remap" "numlock_remap.config"
|
"managed/input_filter"
|
||||||
, childRomRoute "dynamic_rom" "capslock"
|
"input_filter.config"
|
||||||
, childRomRoute "dynamic_rom" "numlock"
|
, parentRomRoute " numlock_remap" "numlock_remap.config"
|
||||||
, childRomRoute "dynamic_rom" "system"
|
, childRomRoute "dynamic_rom" "capslock"
|
||||||
, ServiceRoute.child "Report" "_report_rom"
|
, childRomRoute "dynamic_rom" "numlock"
|
||||||
, ServiceRoute.parent "Timer"
|
, childRomRoute "dynamic_rom" "system"
|
||||||
, Genode.Init.ServiceRoute.parent "IRQ"
|
, ServiceRoute.child "Report" "_report_rom"
|
||||||
, Genode.Init.ServiceRoute.parent "IO_MEM"
|
, ServiceRoute.parent "Timer"
|
||||||
, Genode.Init.ServiceRoute.parent "IO_PORT"
|
, Genode.Init.ServiceRoute.parent "IRQ"
|
||||||
]
|
, Genode.Init.ServiceRoute.parent "IO_MEM"
|
||||||
}
|
, Genode.Init.ServiceRoute.parent "IO_PORT"
|
||||||
, dynamic_rom =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "dynamic_rom"
|
|
||||||
, resources = Resources::{ ram = Genode.units.MiB 4 }
|
|
||||||
, provides = [ "ROM" ]
|
|
||||||
, config =
|
|
||||||
Genode.Init.Config::{
|
|
||||||
, content =
|
|
||||||
[ Genode.Prelude.XML.text
|
|
||||||
''
|
|
||||||
<rom name="system">
|
|
||||||
<inline>
|
|
||||||
<system state=""/>
|
|
||||||
</inline>
|
|
||||||
<sleep milliseconds="10000"/>
|
|
||||||
</rom>
|
|
||||||
''
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
, dynamic_rom =
|
||||||
, test-driver_manager =
|
Child.flat
|
||||||
Child.flat
|
Child.Attributes::{
|
||||||
Child.Attributes::{
|
, binary = "dynamic_rom"
|
||||||
, binary = "test-driver_manager"
|
, resources = Resources::{ ram = Genode.units.MiB 4 }
|
||||||
, config =
|
, provides = [ "ROM" ]
|
||||||
Init.Config::{
|
, config =
|
||||||
, content =
|
Genode.Init.Config::{
|
||||||
[ Genode.Prelude.XML.text
|
, content =
|
||||||
''
|
[ Genode.Prelude.XML.text
|
||||||
<check_ahci_block_device label="ahci-1" block_count="65536" block_size="512" model="QEMU HARDDISK"/>
|
''
|
||||||
<check_input/>
|
<rom name="system">
|
||||||
<check_framebuffer/>
|
<inline>
|
||||||
''
|
<system state=""/>
|
||||||
|
</inline>
|
||||||
|
<sleep milliseconds="10000"/>
|
||||||
|
</rom>
|
||||||
|
''
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, test-driver_manager =
|
||||||
|
Child.flat
|
||||||
|
Child.Attributes::{
|
||||||
|
, binary = "test-driver_manager"
|
||||||
|
, config =
|
||||||
|
Init.Config::{
|
||||||
|
, content =
|
||||||
|
[ Genode.Prelude.XML.text
|
||||||
|
''
|
||||||
|
<check_ahci_block_device label="ahci-1" block_count="65536" block_size="512" model="QEMU HARDDISK"/>
|
||||||
|
<check_input/>
|
||||||
|
<check_framebuffer/>
|
||||||
|
''
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, reportRoms = [ label "block_devices" ]
|
||||||
|
, routes =
|
||||||
|
[ ServiceRoute.child "Block" "drivers"
|
||||||
|
, ServiceRoute.child "Framebuffer" "drivers"
|
||||||
|
, ServiceRoute.child "Input" "drivers"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, reportRoms = [ label "block_devices" ]
|
}
|
||||||
, routes =
|
}
|
||||||
[
|
, rom =
|
||||||
, ServiceRoute.child "Block" "drivers"
|
Genode.Boot.toRomTexts
|
||||||
, ServiceRoute.child "Framebuffer" "drivers"
|
( toMap
|
||||||
, ServiceRoute.child "Input" "drivers"
|
{ capslock = "<feature_creep/>"
|
||||||
]
|
, numlock = "<feature_creep/>"
|
||||||
|
, usb_policy = "<usb/>"
|
||||||
}
|
}
|
||||||
}
|
# [ { mapKey =
|
||||||
|
"fb_drv.config"
|
||||||
|
, mapValue =
|
||||||
|
''
|
||||||
|
<config width="1024" height="768" buffered="yes"/>
|
||||||
|
<report connectors="yes"/>
|
||||||
|
</config>
|
||||||
|
''
|
||||||
|
}
|
||||||
|
, { mapKey =
|
||||||
|
"input_filter.config"
|
||||||
|
, mapValue =
|
||||||
|
''
|
||||||
|
<config>
|
||||||
|
<input label="ps2"/>
|
||||||
|
<input label="usb"/>
|
||||||
|
<output>
|
||||||
|
<chargen>
|
||||||
|
<remap>
|
||||||
|
<key name="KEY_F11" to="KEY_RESTART"/>
|
||||||
|
<key name="KEY_F12" to="KEY_DASHBOARD"/>
|
||||||
|
<key name="KEY_LEFTMETA" to="KEY_SCREEN"/>
|
||||||
|
<merge>
|
||||||
|
<accelerate max="50" sensitivity_percent="1000" curve="127">
|
||||||
|
<button-scroll>
|
||||||
|
<input name="ps2"/>
|
||||||
|
<vertical button="BTN_MIDDLE" speed_percent="-10"/>
|
||||||
|
<horizontal button="BTN_MIDDLE" speed_percent="-10"/>
|
||||||
|
</button-scroll>
|
||||||
|
</accelerate>
|
||||||
|
<input name="usb"/>
|
||||||
|
</merge>
|
||||||
|
</remap>
|
||||||
|
<mod1>
|
||||||
|
<key name="KEY_LEFTSHIFT"/> <key name="KEY_RIGHTSHIFT"/>
|
||||||
|
</mod1>
|
||||||
|
<mod2>
|
||||||
|
<key name="KEY_LEFTCTRL"/> <key name="KEY_RIGHTCTRL"/>
|
||||||
|
</mod2>
|
||||||
|
<mod3>
|
||||||
|
<key name="KEY_RIGHTALT"/> <!-- AltGr -->
|
||||||
|
</mod3>
|
||||||
|
<repeat delay_ms="230" rate_ms="40"/>
|
||||||
|
</chargen>
|
||||||
|
</output>
|
||||||
|
</config>
|
||||||
|
''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,21 +7,33 @@ testEnv.mkTest {
|
||||||
name = "driver_manager";
|
name = "driver_manager";
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
testEnv = { drivers = ./../compositions/pc-drivers.dhall; };
|
testEnv = { drivers = ./../compositions/pc-drivers.dhall; };
|
||||||
testInputs = (with pkgs; [ genodeTests driversPc ]) ++ (with depot; [
|
testInputs = (map pkgs.genodeSources.make [
|
||||||
boot_fb_drv
|
"app/driver_manager"
|
||||||
intel_fb_drv
|
"app/rom_reporter"
|
||||||
usb_drv
|
"drivers/acpi"
|
||||||
vesa_drv
|
"drivers/ahci"
|
||||||
|
"drivers/framebuffer/boot"
|
||||||
|
"drivers/framebuffer/intel"
|
||||||
|
"drivers/framebuffer/vesa"
|
||||||
|
"drivers/input/spec/ps2"
|
||||||
|
"drivers/platform"
|
||||||
|
"drivers/rtc"
|
||||||
|
"drivers/usb"
|
||||||
|
"server/dynamic_rom"
|
||||||
|
"server/input_filter"
|
||||||
|
"server/report_rom"
|
||||||
|
"test/driver_manager"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
catch { exec dd if=/dev/zero of=hdd_disk.raw bs=1M count=32 }
|
catch { exec dd if=/dev/zero of=hdd_disk.raw bs=1M count=32 }
|
||||||
catch { exec ${hostPkgs.e2fsprogs}/bin/mke2fs -F bin/hdd_disk.raw }
|
catch { exec ${hostPkgs.e2fsprogs}/bin/mke2fs -F bin/hdd_disk.raw }
|
||||||
run_genode_until {.*all expected devices present and accessible.*} 120
|
run_genode_until {.*all expected devices present and accessible.*} 120
|
||||||
'';
|
|
||||||
testConfig = ''
|
|
||||||
{ config = ${./driver_manager.dhall}
|
|
||||||
, rom = ${./driver_manager.rom.dhall}
|
|
||||||
}
|
|
||||||
'';
|
'';
|
||||||
qemuArgs = [ "-device ahci,id=ahci" "-drive id=hdd,file=hdd_disk.raw,format=raw,if=none" "-device ide-hd,drive=hdd,bus=ahci.1"];
|
testConfig = ./driver_manager.dhall;
|
||||||
|
qemuArgs = [
|
||||||
|
"-device ahci,id=ahci"
|
||||||
|
"-drive id=hdd,file=hdd_disk.raw,format=raw,if=none"
|
||||||
|
"-device ide-hd,drive=hdd,bus=ahci.1"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
let Genode = env:DHALL_GENODE
|
|
||||||
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
|
||||||
[
|
|
||||||
, manifest.drivers.bin.acpi_drv
|
|
||||||
, manifest.drivers.bin.ahci_drv
|
|
||||||
, manifest.drivers.bin.platform_drv
|
|
||||||
, manifest.drivers.bin.ps2_drv
|
|
||||||
, manifest.drivers.bin.rtc_drv
|
|
||||||
, manifest.drivers.bin.usb_drv
|
|
||||||
, manifest.drivers.bin.vesa_fb_drv
|
|
||||||
, manifest.genode-tests.bin.test-driver_manager
|
|
||||||
, manifest.os.bin.driver_manager
|
|
||||||
, manifest.os.bin.dynamic_rom
|
|
||||||
, manifest.os.bin.input_filter
|
|
||||||
, manifest.os.bin.report_rom
|
|
||||||
, manifest.os.bin.rom_reporter
|
|
||||||
]
|
|
||||||
# Genode.Boot.toRomTexts
|
|
||||||
( toMap
|
|
||||||
{ usb_policy = "<usb/>" }
|
|
||||||
# [ { mapKey =
|
|
||||||
"fb_drv.config"
|
|
||||||
, mapValue =
|
|
||||||
''
|
|
||||||
<config width="1024" height="768" buffered="yes"/>
|
|
||||||
<report connectors="yes"/>
|
|
||||||
</config>
|
|
||||||
''
|
|
||||||
}
|
|
||||||
, { mapKey =
|
|
||||||
"input_filter.config"
|
|
||||||
, mapValue =
|
|
||||||
''
|
|
||||||
<config>
|
|
||||||
<input label="ps2"/>
|
|
||||||
<input label="usb"/>
|
|
||||||
<output>
|
|
||||||
<chargen>
|
|
||||||
<remap>
|
|
||||||
<key name="KEY_F11" to="KEY_RESTART"/>
|
|
||||||
<key name="KEY_F12" to="KEY_DASHBOARD"/>
|
|
||||||
<key name="KEY_LEFTMETA" to="KEY_SCREEN"/>
|
|
||||||
<merge>
|
|
||||||
<accelerate max="50" sensitivity_percent="1000" curve="127">
|
|
||||||
<button-scroll>
|
|
||||||
<input name="ps2"/>
|
|
||||||
<vertical button="BTN_MIDDLE" speed_percent="-10"/>
|
|
||||||
<horizontal button="BTN_MIDDLE" speed_percent="-10"/>
|
|
||||||
</button-scroll>
|
|
||||||
</accelerate>
|
|
||||||
<input name="usb"/>
|
|
||||||
</merge>
|
|
||||||
</remap>
|
|
||||||
<mod1>
|
|
||||||
<key name="KEY_LEFTSHIFT"/> <key name="KEY_RIGHTSHIFT"/>
|
|
||||||
</mod1>
|
|
||||||
<mod2>
|
|
||||||
<key name="KEY_LEFTCTRL"/> <key name="KEY_RIGHTCTRL"/>
|
|
||||||
</mod2>
|
|
||||||
<mod3>
|
|
||||||
<key name="KEY_RIGHTALT"/> <!-- AltGr -->
|
|
||||||
</mod3>
|
|
||||||
<repeat delay_ms="230" rate_ms="40"/>
|
|
||||||
</chargen>
|
|
||||||
</output>
|
|
||||||
</config>
|
|
||||||
''
|
|
||||||
}
|
|
||||||
]
|
|
||||||
)
|
|
|
@ -4,7 +4,8 @@ let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
let Child = Genode.Init.Child
|
let Child = Genode.Init.Child
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Genode.Init::{
|
Genode.Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
|
@ -22,8 +23,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths [ manifest.genode-tests.bin.test-log ]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,6 @@ testEnv.mkTest rec {
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
|
|
||||||
testConfig = ./log.dhall;
|
testConfig = ./log.dhall;
|
||||||
testInputs = [ pkgs.genodeTests ];
|
testInputs = [ (pkgs.genodeSources.make "test/log") ];
|
||||||
testScript = "run_genode_until {Test done.} 120";
|
testScript = "run_genode_until {Test done.} 120";
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,8 @@ let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
let Child = Genode.Init.Child
|
let Child = Genode.Init.Child
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Genode.Init::{
|
Genode.Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
|
@ -47,17 +48,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
|
||||||
[ manifest.bash-minimal.tar.bash-minimal
|
|
||||||
, manifest.noux.lib.libc
|
|
||||||
, manifest.noux.lib.libm
|
|
||||||
, manifest.ncurses.lib.ncurses
|
|
||||||
, manifest.noux.bin.noux
|
|
||||||
, manifest.noux.lib.libc_noux
|
|
||||||
, manifest.os.lib.vfs
|
|
||||||
, manifest.noux.lib.posix
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,8 @@ with pkgs;
|
||||||
testEnv.mkTest rec {
|
testEnv.mkTest rec {
|
||||||
name = "noux";
|
name = "noux";
|
||||||
testConfig = ./noux.dhall;
|
testConfig = ./noux.dhall;
|
||||||
testInputs = (with pkgs; [ noux ]) ++ (with depot; [
|
testInputs = [ (pkgs.genodeSources.make "noux") ]
|
||||||
bash-minimal
|
++ (with depot; [ bash-minimal ncurses ]);
|
||||||
ncurses
|
|
||||||
]);
|
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
testScript = "run_genode_until {SOTEST SUCCESS} 40";
|
testScript = "run_genode_until {SOTEST SUCCESS} 40";
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,8 @@ let ServiceRoute = Init.ServiceRoute
|
||||||
|
|
||||||
let label = λ(_ : Text) → { local = _, route = _ } : Child.Attributes.Label
|
let label = λ(_ : Text) → { local = _, route = _ } : Child.Attributes.Label
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Init::{
|
Init::{
|
||||||
, verbose = True
|
, verbose = True
|
||||||
, children =
|
, children =
|
||||||
|
@ -75,13 +76,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
|
||||||
[ manifest.drivers.bin.acpi_drv
|
|
||||||
, manifest.drivers.bin.platform_drv
|
|
||||||
, manifest.os.bin.report_rom
|
|
||||||
, manifest.genode-tests.bin.test-pci
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,8 +8,13 @@ testEnv.mkTest {
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
|
|
||||||
testConfig = ./pci.dhall;
|
testConfig = ./pci.dhall;
|
||||||
testInputs = [ pkgs.genodeTests pkgs.driversPc ];
|
testInputs = map pkgs.genodeSources.make [
|
||||||
|
"drivers/acpi"
|
||||||
|
"drivers/platform"
|
||||||
|
"server/report_rom"
|
||||||
|
"test/pci"
|
||||||
|
];
|
||||||
testScript = ''
|
testScript = ''
|
||||||
run_genode_until "--- Platform test finished ---.*\n" 60
|
run_genode_until ".*--- Platform test finished ---.*\n" 60
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,8 @@ let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
let Child = Genode.Init.Child
|
let Child = Genode.Init.Child
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Genode.Init::{
|
Genode.Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
|
@ -27,9 +28,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
|
||||||
[ manifest.genode-tests.bin.test-rtc, manifest.drivers.bin.rtc_drv ]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,6 @@ testEnv.mkTest {
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
|
|
||||||
testConfig = ./rtc.dhall;
|
testConfig = ./rtc.dhall;
|
||||||
testInputs = with pkgs; [ driversPc genodeTests ];
|
testInputs = map pkgs.genodeSources.make [ "drivers/rtc" "test/rtc" ];
|
||||||
testScript = "run_genode_until {--- RTC test finished ---} 40";
|
testScript = "run_genode_until {--- RTC test finished ---} 40";
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,8 @@ let Init = Genode.Init
|
||||||
|
|
||||||
let Child = Init.Child
|
let Child = Init.Child
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Init::{
|
Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
|
@ -25,8 +26,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths [ manifest.genode-tests.bin.test-signal ]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,6 @@ testEnv.mkTest rec {
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
|
|
||||||
testConfig = ./signal.dhall;
|
testConfig = ./signal.dhall;
|
||||||
testInputs = [ pkgs.genodeTests ];
|
testInputs = [ (pkgs.genodeSources.make "test/signal") ];
|
||||||
testScript = "run_genode_until {--- Signalling test finished ---} 120";
|
testScript = "run_genode_until {--- Signalling test finished ---} 120";
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,8 @@ let Init = Genode.Init
|
||||||
|
|
||||||
let Child = Init.Child
|
let Child = Init.Child
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Init::{
|
Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
|
@ -36,11 +37,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.BootModules.toRomPaths
|
|
||||||
[ manifest.solo5-tests.bin.solo5-test_blk
|
|
||||||
, manifest.os.bin.ram_block
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
-- SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
let Genode = env:DHALL_GENODE
|
|
||||||
|
|
||||||
in λ(boot : Genode.Boot.Type)
|
|
||||||
→ { config = boot.config
|
|
||||||
, rom =
|
|
||||||
Genode.BootModules.toRomPaths [ (env:MANIFEST).solo5.lib.solo5 ]
|
|
||||||
# boot.rom
|
|
||||||
}
|
|
|
@ -8,12 +8,12 @@ let
|
||||||
run_genode_until {SUCCESS} 30
|
run_genode_until {SUCCESS} 30
|
||||||
'';
|
'';
|
||||||
|
|
||||||
mkTest' = { name, testConfig, testScript ? defaultScript, ... }@attrs:
|
mkTest' = { name, testConfig, testScript ? defaultScript, testInputs ? [ ]
|
||||||
|
, ... }@attrs:
|
||||||
testEnv.mkTest (attrs // {
|
testEnv.mkTest (attrs // {
|
||||||
name = "solo5-" + name;
|
name = "solo5-" + name;
|
||||||
inherit testScript;
|
inherit testConfig testScript;
|
||||||
testInputs = [ pkgs.solo5 pkgs.solo5.tests pkgs.driversPc ];
|
testInputs = [ pkgs.solo5 pkgs.solo5.tests ] ++ testInputs;
|
||||||
testConfig = "(${./boot-wrapper.dhall} ${testConfig})";
|
|
||||||
});
|
});
|
||||||
|
|
||||||
applyMkTest = x: {
|
applyMkTest = x: {
|
||||||
|
@ -23,13 +23,15 @@ let
|
||||||
|
|
||||||
mkTests = testList: builtins.listToAttrs (map applyMkTest testList);
|
mkTests = testList: builtins.listToAttrs (map applyMkTest testList);
|
||||||
|
|
||||||
toSimple = name:
|
toSimple = name: ''(${./simple.dhall} \"solo5-test_${name}\")'';
|
||||||
"(${./simple.dhall} (env:MANIFEST).solo5-tests.bin.solo5-test_${name})";
|
|
||||||
|
makeGenode = pkgs.genodeSources.make;
|
||||||
|
|
||||||
tests = [
|
tests = [
|
||||||
{
|
{
|
||||||
name = "blk";
|
name = "blk";
|
||||||
testConfig = ./blk.dhall;
|
testConfig = ./blk.dhall;
|
||||||
|
testInputs = [ (makeGenode "server/ram_block") ];
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -50,11 +52,19 @@ let
|
||||||
{
|
{
|
||||||
name = "net";
|
name = "net";
|
||||||
testConfig = ./net.dhall;
|
testConfig = ./net.dhall;
|
||||||
|
testInputs =
|
||||||
|
map makeGenode [ "app/ping" "server/nic_bridge" "server/nic_loopback" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "net_2if";
|
name = "net_2if";
|
||||||
testConfig = ./net_2if.dhall;
|
testConfig = ./net_2if.dhall;
|
||||||
|
testInputs = map makeGenode [
|
||||||
|
"app/ping"
|
||||||
|
"app/sequence"
|
||||||
|
"server/nic_bridge"
|
||||||
|
"server/nic_loopback"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -73,6 +83,7 @@ let
|
||||||
] ++ (testEnv.lib.optional (!testEnv.isLinux) {
|
] ++ (testEnv.lib.optional (!testEnv.isLinux) {
|
||||||
name = "time";
|
name = "time";
|
||||||
testConfig = ./time.dhall;
|
testConfig = ./time.dhall;
|
||||||
|
testInputs = [ (makeGenode "drivers/rtc") ];
|
||||||
}
|
}
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
|
@ -10,7 +10,8 @@ let Res = Init.Resources
|
||||||
|
|
||||||
let ServiceRoute = Init.ServiceRoute
|
let ServiceRoute = Init.ServiceRoute
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Init::{
|
Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
|
@ -78,13 +79,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.BootModules.toRomPaths
|
|
||||||
[ manifest.os.bin.nic_loopback
|
|
||||||
, manifest.os.bin.nic_bridge
|
|
||||||
, manifest.os.bin.ping
|
|
||||||
, manifest.solo5-tests.bin.solo5-test_net
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,8 @@ let Child = Init.Child
|
||||||
|
|
||||||
let Res = Init.Resources
|
let Res = Init.Resources
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Init::{
|
Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
|
@ -85,14 +86,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.BootModules.toRomPaths
|
|
||||||
[ manifest.solo5-tests.bin.solo5-test_net_2if
|
|
||||||
, manifest.os.bin.sequence
|
|
||||||
, manifest.os.bin.nic_bridge
|
|
||||||
, manifest.os.bin.nic_loopback
|
|
||||||
, manifest.os.bin.ping
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,15 +10,16 @@ let Child = Init.Child
|
||||||
|
|
||||||
let Config = Init.Config
|
let Config = Init.Config
|
||||||
|
|
||||||
in λ(testBinary : Prelude.Map.Entry Text Text)
|
in λ(testBinary : Text)
|
||||||
→ { config =
|
→ Genode.Boot::{
|
||||||
|
, config =
|
||||||
Init::{
|
Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
{ solo5 =
|
{ solo5 =
|
||||||
Child.flat
|
Child.flat
|
||||||
Child.Attributes::{
|
Child.Attributes::{
|
||||||
, binary = testBinary.mapKey
|
, binary = testBinary
|
||||||
, exitPropagate = True
|
, exitPropagate = True
|
||||||
, resources =
|
, resources =
|
||||||
Init.Resources::{
|
Init.Resources::{
|
||||||
|
@ -39,5 +40,4 @@ in λ(testBinary : Prelude.Map.Entry Text Text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom = Genode.BootModules.toRomPaths [ testBinary ]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,8 @@ let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
let Child = Genode.Init.Child
|
let Child = Genode.Init.Child
|
||||||
|
|
||||||
in { config =
|
in Genode.Boot::{
|
||||||
|
, config =
|
||||||
Genode.Init::{
|
Genode.Init::{
|
||||||
, children =
|
, children =
|
||||||
toMap
|
toMap
|
||||||
|
@ -32,11 +33,4 @@ in { config =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
, rom =
|
|
||||||
let manifest = env:MANIFEST
|
|
||||||
|
|
||||||
in Genode.BootModules.toRomPaths
|
|
||||||
[ manifest.solo5-tests.bin.solo5-test_time
|
|
||||||
, manifest.drivers.bin.rtc_drv
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
-- SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
let Genode = env:DHALL_GENODE
|
|
||||||
|
|
||||||
let Init = Genode.Init
|
|
||||||
|
|
||||||
let Child = Init.Child
|
|
||||||
|
|
||||||
let wrapSotest
|
|
||||||
: Init.Type → Child.Type
|
|
||||||
= λ(init : Init.Type)
|
|
||||||
→ Child.nested
|
|
||||||
(toMap { init = Genode.Init.toChild init Init.Attributes.default })
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "sotest-harness"
|
|
||||||
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
|
|
||||||
, routes =
|
|
||||||
[ Init.ServiceRoute.parentLabel
|
|
||||||
"LOG"
|
|
||||||
(Some "SOTEST")
|
|
||||||
(Some "unlabeled")
|
|
||||||
, Init.ServiceRoute.parent "IO_MEM"
|
|
||||||
, Init.ServiceRoute.parent "IO_PORT"
|
|
||||||
, Init.ServiceRoute.parent "IRQ"
|
|
||||||
, Init.ServiceRoute.child "Timer" "timer"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
in wrapSotest
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
-- SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
let Genode = env:DHALL_GENODE
|
||||||
|
|
||||||
|
let Prelude = Genode.Prelude
|
||||||
|
|
||||||
|
let Init = Genode.Init
|
||||||
|
|
||||||
|
let Child = Init.Child
|
||||||
|
|
||||||
|
let wrapHarness
|
||||||
|
: Init.Type → Child.Type
|
||||||
|
= λ(init : Init.Type)
|
||||||
|
→ Child.nested
|
||||||
|
(toMap { init = Genode.Init.toChild init Init.Attributes.default })
|
||||||
|
Child.Attributes::{
|
||||||
|
, binary = "sotest-harness"
|
||||||
|
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
|
||||||
|
, routes =
|
||||||
|
[ Init.ServiceRoute.parentLabel
|
||||||
|
"LOG"
|
||||||
|
(Some "SOTEST")
|
||||||
|
(Some "unlabeled")
|
||||||
|
, Init.ServiceRoute.parent "IO_MEM"
|
||||||
|
, Init.ServiceRoute.parent "IO_PORT"
|
||||||
|
, Init.ServiceRoute.parent "IRQ"
|
||||||
|
, Init.ServiceRoute.child "Timer" "timer"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
let TextMapType = Prelude.Map.Type Text
|
||||||
|
|
||||||
|
in λ(boot : Genode.Boot.Type)
|
||||||
|
→ λ(inputsManifest : TextMapType (TextMapType Text))
|
||||||
|
→ boot
|
||||||
|
⫽ { config =
|
||||||
|
Init::{
|
||||||
|
, children =
|
||||||
|
[ { mapKey = "timer"
|
||||||
|
, mapValue =
|
||||||
|
Child.flat
|
||||||
|
Child.Attributes::{
|
||||||
|
, binary = "timer_drv"
|
||||||
|
, provides = [ "Timer" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, { mapKey = "harness", mapValue = wrapHarness boot.config }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, rom =
|
||||||
|
let inputRoms =
|
||||||
|
Genode.BootModules.toRomPaths
|
||||||
|
( Prelude.List.concat
|
||||||
|
(Prelude.Map.Entry Text Text)
|
||||||
|
( Prelude.Map.values
|
||||||
|
Text
|
||||||
|
(Prelude.Map.Type Text Text)
|
||||||
|
inputsManifest
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
in boot.rom # inputRoms
|
||||||
|
}
|
Loading…
Reference in New Issue