Parcourir la source

genodeSources: 20.05 -> 20.08

nim
Emery Hemingway il y a 1 an
Parent
révision
c3385aedd0
  1. 8
      compositions/pc-drivers.dhall
  2. 82
      flake.nix
  3. 10
      nixos-modules/default.nix
  4. 35
      nixos-modules/dhall/console.dhall
  5. 1
      nixos-modules/dhall/fs-log.dhall
  6. 11
      nixos-modules/dhall/graphical-log.dhall
  7. 16
      nixos-modules/dhall/qwerty.chargen.dhall
  8. 92
      nixos-modules/dhall/root.dhall
  9. 3
      nixos-modules/dhall/show_input.dhall
  10. 23
      nixos-modules/dhall/vbox-guest.dhall
  11. 27
      nixos-modules/dhall/wm.dhall
  12. 16
      nixos-modules/dhall/workman.chargen.dhall
  13. 35
      packages/genodelabs/LIB.patch
  14. 4
      packages/genodelabs/default.nix
  15. 8
      packages/genodelabs/event_filter.patch
  16. 27
      packages/genodelabs/libc.patch
  17. 22
      packages/genodelabs/port-versions.nix
  18. 8
      packages/genodelabs/ports.nix
  19. 5
      packages/genodelabs/targets.nix
  20. 126
      packages/genodelabs/vbox-framebuffer-fail-on-fail.patch
  21. 153
      tests/driver_manager.dhall
  22. 1
      tests/log.dhall
  23. 23
      tests/posix.dhall
  24. 21
      tests/solo5/blk.dhall
  25. 3
      tests/solo5/default.nix
  26. 1
      tests/solo5/net.dhall
  27. 1
      tests/solo5/net_2if.dhall
  28. 13
      tests/solo5/solo5.dhall
  29. 1
      tests/solo5/ssp.dhall
  30. 1
      tests/solo5/time.dhall
  31. 37
      tests/test-wrapper.dhall
  32. 7
      tests/test.dhall
  33. 7
      tests/vmm_arm.dhall
  34. 3
      tests/vmm_x86.dhall
  35. 3
      tests/x86.dhall

8
compositions/pc-drivers.dhall

@ -30,7 +30,7 @@ let drivers =
, ServiceRoute.child "Block" "dynamic"
, ServiceRoute.child "Usb" "usb_drv"
, ServiceRoute.child "Platform" "platform_drv"
, ServiceRoute.child "Input" "input_filter"
, ServiceRoute.child "Input" "event_filter"
]
, children = toMap
{ rom_reporter =
@ -169,10 +169,10 @@ let drivers =
, provides = [ "Input" ]
, routes = [ ServiceRoute.child "Platform" "platform_drv" ]
}
, input_filter =
, event_filter =
Child.flat
Child.Attributes::{
, binary = "input_filter"
, binary = "event_filter"
, priority = 1
, resources = Resources::{ ram = Genode.units.MiB 2 }
, provides = [ "Input" ]
@ -180,7 +180,7 @@ let drivers =
[ ServiceRoute.parentLabel
"ROM"
(Some "config")
(Some "input_filter.config")
(Some "event_filter.config")
, ServiceRoute.childLabel
"Input"
"ps2_drv"

82
flake.nix

@ -136,31 +136,7 @@
checks =
# Checks for continous testing
forAllCrossSystems ({ system, localSystem, crossSystem }:
let
nixos = nixpkgs.lib.nixosSystem {
system = localSystem;
modules = [
self.nixosModules.genodeHost
({ modulesPath, ... }: {
imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ];
boot.loader.grub.extraEntriesBeforeNixOS = true;
virtualisation = {
cores = 2;
memorySize = 1024;
useBootLoader = true;
qemu = {
options =
[ "-machine q35" "-cpu phenom" "-serial mon:stdio" ];
networkingOptions = [
"-net nic,netdev=user.0,model=e1000"
"-netdev user,id=user.0\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}"
];
};
};
})
];
};
in import ./tests {
import ./tests {
inherit self;
apps = self.apps.${system};
localPackages = nixpkgsFor.${localSystem};
@ -176,62 +152,6 @@
self.packages.${system}.genodeSources.ports);
};
nixosModule = nixos.config.system.build.vm;
nixosXML = nixos.config.system.build.genode.xml;
nixosGuest = let
nixos = nixpkgs.lib.nixosSystem {
system = localSystem;
modules = [
self.nixosModules.genodeHost
({ modulesPath, ... }: {
imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ];
boot.loader.grub.extraEntriesBeforeNixOS = true;
virtualisation = {
cores = 2;
memorySize = 1024;
useBootLoader = true;
qemu = {
options =
[ "-machine q35" "-cpu phenom" "-serial mon:stdio" ];
networkingOptions = [
"-net nic,netdev=user.0,model=e1000"
"-netdev user,id=user.0\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}"
];
};
};
genode.guests = {
flakeCheck = {
config = { config, lib, pkgs, ... }: {
networking.firewall.allowedTCPPorts = [ 80 ];
services.mingetty.autologinUser =
lib.mkDefault "root";
services.nginx.enable = true;
services.openssh.permitRootLogin =
lib.mkDefault "yes";
services.sshd.enable = true;
users.users.root.password = "nixos";
virtualbox.memorySize = 128;
};
};
azimuth = {
bootFormat = "vdi";
config = { config, lib, pkgs, ... }: {
services.cage = {
enable = true;
program = "${pkgs.azimuth}/bin/tor-azimuth";
};
users.users.demo.isNormalUser = true;
virtualbox.memorySize = 1024;
};
};
};
})
];
};
in nixos.config.system.build.vm;
});
};

10
nixos-modules/default.nix

@ -99,23 +99,23 @@
bootDescription = buildBootDescription {
inherit initConfig;
imageInputs = [ legacyPackages'.bash pkgs'.show_input ]
++ map pkgs'.genodeSources.depot ([
imageInputs = [ legacyPackages'.bash ] ++ map pkgs'.genodeSources.depot
([
"acpi_drv"
"ahci_drv"
"cached_fs_rom"
"chroot"
"decorator"
"event_filter"
"fs_log"
"gui_fb"
"init"
"input_filter"
"ipxe_nic_drv"
"libc"
"libiconv"
"log_core"
"nit_fb"
"nitpicker"
"nic_router"
"nitpicker"
"part_block"
"platform_drv"
"posix"

35
nixos-modules/dhall/console.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude
@ -13,8 +12,8 @@ let Resources = Init.Resources
let ServiceRoute = Init.ServiceRoute
in λ(params : { bash : Text, coreutils : Text, path : Text })
let init =
in λ(params : { bash : Text, coreutils : Text, path : Text })
let init =
Init::{
, verbose = True
, routes =
@ -22,12 +21,12 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
Text
Init.ServiceRoute.Type
Init.ServiceRoute.parent
[ "Nitpicker", "Rtc", "Timer" ]
[ "Gui", "Rtc", "Timer" ]
, children = toMap
{ nit_fb =
{ gui_fb =
Child.flat
Child.Attributes::{
, binary = "nit_fb"
, binary = "gui_fb"
, config = Init.Config::{
, attributes = toMap
{ xpos = "10"
@ -71,8 +70,8 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
, ram = Genode.units.MiB 4
}
, routes =
[ ServiceRoute.child "Framebuffer" "nit_fb"
, ServiceRoute.child "Input" "nit_fb"
[ ServiceRoute.child "Framebuffer" "gui_fb"
, ServiceRoute.child "Input" "gui_fb"
, ServiceRoute.parent "File_system"
]
}
@ -141,8 +140,8 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
# Prelude.List.map
Text
XML.Type
( λ(x : Text)
XML.leaf
( λ(x : Text)
XML.leaf
{ name = "arg"
, attributes = toMap { value = x }
}
@ -157,13 +156,13 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
, routes =
[ Init.ServiceRoute.child "File_system" "vfs"
, { service =
{ name = "ROM"
, label =
Init.LabelSelector.Type.Partial
{ prefix = Some "/nix/store/"
, suffix = None Text
}
}
{ name = "ROM"
, label =
Init.LabelSelector.Type.Partial
{ prefix = Some "/nix/store/"
, suffix = None Text
}
}
, route =
Init.Route.Type.Child
{ name = "store_rom"
@ -181,7 +180,7 @@ in λ(params : { bash : Text, coreutils : Text, path : Text })
Init.Attributes::{
, routes =
[ ServiceRoute.parent "File_system"
, ServiceRoute.parent "Nitpicker"
, ServiceRoute.parent "Gui"
, ServiceRoute.parent "Rtc"
, ServiceRoute.parent "Timer"
]

1
nixos-modules/dhall/fs-log.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Init = Genode.Init

11
nixos-modules/dhall/graphical-log.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude
@ -23,12 +22,12 @@ in Init::{
Text
Init.ServiceRoute.Type
Init.ServiceRoute.parent
[ "Nitpicker", "Rtc", "Timer" ]
[ "Gui", "Rtc", "Timer" ]
, children = toMap
{ nit_fb =
{ gui_fb =
Child.flat
Child.Attributes::{
, binary = "nit_fb"
, binary = "gui_fb"
, config = Init.Config::{
, attributes = toMap
{ initial_width = "600", initial_height = "600" }
@ -64,8 +63,8 @@ in Init::{
, provides = [ "Terminal" ]
, resources = Resources::{ caps = 256, ram = Genode.units.MiB 4 }
, routes =
[ ServiceRoute.child "Framebuffer" "nit_fb"
, ServiceRoute.child "Input" "nit_fb"
[ ServiceRoute.child "Framebuffer" "gui_fb"
, ServiceRoute.child "Input" "gui_fb"
, ServiceRoute.parent "File_system"
]
}

16
nixos-modules/dhall/qwerty.chargen.dhall

@ -20,18 +20,18 @@ let Map =
let boolToAttr = λ(_ : Bool) → if _ then "yes" else "no"
let keyToXML =
λ(x : Prelude.Map.Entry Text Key)
XML.leaf
λ(x : Prelude.Map.Entry Text Key)
XML.leaf
{ name = "key"
, attributes =
[ merge
{ Ascii =
λ(_ : Natural)
{ mapKey = "ascii", mapValue = Prelude.Natural.show _ }
λ(_ : Natural)
{ mapKey = "ascii", mapValue = Prelude.Natural.show _ }
, Char = λ(_ : Text) → { mapKey = "char", mapValue = _ }
, Code =
λ(_ : Natural)
{ mapKey = "code", mapValue = Prelude.Natural.show _ }
λ(_ : Natural)
{ mapKey = "code", mapValue = Prelude.Natural.show _ }
}
x.mapValue
, { mapKey = "name", mapValue = x.mapKey }
@ -39,8 +39,8 @@ let keyToXML =
}
let mapToXML =
λ(map : Map.Type)
XML.element
λ(map : Map.Type)
XML.element
{ name = "map"
, attributes = toMap
{ mod1 = boolToAttr map.mod1

92
nixos-modules/dhall/root.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude
@ -20,22 +19,22 @@ let DefaultPolicy = Init.Config.DefaultPolicy
let LabelSelector = Init.LabelSelector
let label =
λ(label : Text)
{ local = label, route = label } : Child.Attributes.Label
λ(label : Text)
{ local = label, route = label } : Child.Attributes.Label
let rootInit =
λ ( params
: { fbDriver : Init.Child.Type
, guests : Init.Children.Type
, inputFilterChargens : List XML.Type
, partitionType : Text
, wm : Init.Type
, graphical-log : Init.Type
, fs-log : Init.Type
, systemLabel : Text
}
)
Init::{
λ ( params
: { fbDriver : Init.Child.Type
, guests : Init.Children.Type
, inputFilterChargens : List XML.Type
, partitionType : Text
, wm : Init.Type
, graphical-log : Init.Type
, fs-log : Init.Type
, systemLabel : Text
}
)
Init::{
, children = toMap
{ timer =
Child.flat
@ -113,8 +112,8 @@ let rootInit =
# Prelude.List.map
PciPolicy/Type
XML.Type
( λ(policy : PciPolicy/Type)
XML.element
( λ(policy : PciPolicy/Type)
XML.element
{ name = "policy"
, attributes = toMap
{ label_suffix = policy.labelSuffix }
@ -141,24 +140,22 @@ let rootInit =
}
}
, framebuffer = params.fbDriver
, input_filter =
, event_filter =
Child.flat
Child.Attributes::{
, binary = "input_filter"
, binary = "event_filter"
, config =
let key =
λ(name : Text)
→ XML.leaf
{ name = "key"
, attributes = toMap { name = name }
}
λ(name : Text) →
XML.leaf
{ name = "key", attributes = toMap { name } }
let remap =
λ(name : Text)
λ(to : Text)
XML.leaf
λ(name : Text)
λ(to : Text)
XML.leaf
{ name = "key"
, attributes = toMap { name = name, to = to }
, attributes = toMap { name, to }
}
in Init.Config::{
@ -243,7 +240,7 @@ let rootInit =
[ ServiceRoute.parentLabel
"ROM"
(Some "config")
(Some "config -> input_filter.config")
(Some "config -> event_filter.config")
, ServiceRoute.childLabel
"Input"
"ps2_drv"
@ -254,6 +251,7 @@ let rootInit =
"usb_drv"
(Some "usb")
(None Text)
, ServiceRoute.child "Capture" "nitpicker"
]
}
, ps2_drv =
@ -303,11 +301,11 @@ let rootInit =
Init.toChild
params.wm
Init.Attributes::{
, provides = [ "Nitpicker", "Report", "ROM" ]
, provides = [ "Capture", "Event", "Gui", "Report", "ROM" ]
, romReports = [ label "clipboard", label "shape" ]
, routes =
[ ServiceRoute.child "Framebuffer" "framebuffer"
, ServiceRoute.child "Input" "input_filter"
, ServiceRoute.child "Input" "event_filter"
]
}
, fonts_fs =
@ -408,7 +406,7 @@ let rootInit =
params.graphical-log
Init.Attributes::{
, routes =
[ ServiceRoute.child "Nitpicker" "wm"
[ ServiceRoute.child "Gui" "wm"
, ServiceRoute.child "File_system" "fonts_fs"
]
}
@ -474,8 +472,8 @@ let rootInit =
Prelude.List.map
Natural
XML.Type
( λ(i : Natural)
XML.leaf
( λ(i : Natural)
XML.leaf
{ name = "policy"
, attributes =
let partition =
@ -483,7 +481,7 @@ let rootInit =
in toMap
{ label_suffix = " ${partition}"
, partition = partition
, partition
, writeable = "yes"
}
}
@ -663,8 +661,8 @@ let rootInit =
# Prelude.List.map
Text
XML.Type
( λ(proto : Text)
XML.element
( λ(proto : Text)
XML.element
{ name = proto
, attributes = toMap
{ dst = "0.0.0.0/0"
@ -696,11 +694,11 @@ let rootInit =
Init.Attributes::{
, routes =
[ ServiceRoute.parent "VM"
, ServiceRoute.child "Nitpicker" "wm"
, ServiceRoute.child "Gui" "wm"
, { service =
{ name = "File_system"
, label = LabelSelector.last "fonts"
}
{ name = "File_system"
, label = LabelSelector.last "fonts"
}
, route =
Init.Route.Type.Child
{ name = "fonts_fs"
@ -709,9 +707,9 @@ let rootInit =
}
}
, { service =
{ name = "File_system"
, label = LabelSelector.suffix "nix/store"
}
{ name = "File_system"
, label = LabelSelector.suffix "nix/store"
}
, route =
Init.Route.Type.Child
{ name = "file_system"
@ -720,9 +718,9 @@ let rootInit =
}
}
, { service =
{ name = "File_system"
, label = LabelSelector.prefix "console"
}
{ name = "File_system"
, label = LabelSelector.prefix "console"
}
, route =
Init.Route.Type.Child
{ name = "file_system"

3
nixos-modules/dhall/show_input.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude
@ -38,5 +37,5 @@ in Child.flat
}
, resources = Resources::{ ram = Genode.units.MiB 32 }
, routes =
[ ServiceRoute.parent "File_system", ServiceRoute.parent "Nitpicker" ]
[ ServiceRoute.parent "File_system", ServiceRoute.parent "Gui" ]
}

23
nixos-modules/dhall/vbox-guest.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude
@ -14,11 +13,11 @@ let Resources = Init.Resources
let ServiceRoute = Init.ServiceRoute
let Vfs/inline =
λ(name : Text)
λ(body : Text)
XML.element
λ(name : Text)
λ(body : Text)
XML.element
{ name = "inline"
, attributes = toMap { name = name }
, attributes = toMap { name }
, content = [ XML.text body ]
}
@ -35,8 +34,8 @@ let Params
}
let toVbox =
λ(params : Params)
let vboxConfig =
λ(params : Params)
let vboxConfig =
let hardDisks =
merge
{ ISO = XML.text ""
@ -158,11 +157,9 @@ let toVbox =
, attributes = XML.emptyAttributes
, content =
let tag =
λ(name : Text)
→ XML.leaf
{ name = name
, attributes = XML.emptyAttributes
}
λ(name : Text) →
XML.leaf
{ name, attributes = XML.emptyAttributes }
let mutableVfs =
let fsNode =
@ -224,7 +221,7 @@ let toVbox =
, routes =
[ ServiceRoute.parent "File_system"
, ServiceRoute.parent "Nic"
, ServiceRoute.parent "Nitpicker"
, ServiceRoute.parent "Gui"
, ServiceRoute.parent "Rtc"
, ServiceRoute.parent "Timer"
, ServiceRoute.parent "VM"

27
nixos-modules/dhall/wm.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Prelude = Genode.Prelude
@ -20,8 +19,8 @@ let DefaultPolicy = Init.Config.DefaultPolicy
let LabelSelector = Init.LabelSelector
let label =
λ(label : Text)
{ local = label, route = label } : Child.Attributes.Label
λ(label : Text)
{ local = label, route = label } : Child.Attributes.Label
in Init::{
, children = toMap
@ -64,7 +63,7 @@ in Init::{
, attributes = toMap { domain = "default" }
}
}
, provides = [ "Nitpicker" ]
, provides = [ "Gui", "Capture", "Event" ]
, resources = Resources::{ caps = 256, ram = Genode.units.MiB 64 }
, routes =
[ ServiceRoute.parent "Framebuffer"
@ -75,7 +74,7 @@ in Init::{
Child.flat
Child.Attributes::{
, binary = "pointer"
, routes = [ ServiceRoute.child "Nitpicker" "nitpicker" ]
, routes = [ ServiceRoute.child "Gui" "nitpicker" ]
}
, wm =
Child.flat
@ -94,7 +93,7 @@ in Init::{
]
, defaultPolicy = Some DefaultPolicy::{=}
}
, provides = [ "Nitpicker", "Report", "ROM" ]
, provides = [ "Gui", "Report", "ROM" ]
, reportRoms = [ label "focus", label "resize_request" ]
, romReports =
[ label "focus_request"
@ -108,11 +107,11 @@ in Init::{
}
, routes =
[ ServiceRoute.childLabel
"Nitpicker"
"Gui"
"nitpicker"
(Some "")
(Some "focus")
, ServiceRoute.child "Nitpicker" "nitpicker"
, ServiceRoute.child "Gui" "nitpicker"
, ServiceRoute.parentLabel
"Report"
(Some "clipboard")
@ -175,7 +174,7 @@ in Init::{
''
]
}
, provides = [ "Nitpicker", "Report", "ROM" ]
, provides = [ "Gui", "Report", "ROM" ]
, romReports =
[ label "focus"
, label "resize_request"
@ -194,7 +193,7 @@ in Init::{
, caps = 256
, ram = Genode.units.MiB 8
}
, routes = [ ServiceRoute.child "Nitpicker" "wm" ]
, routes = [ ServiceRoute.child "Gui" "wm" ]
}
, decorator =
Child.flat
@ -217,20 +216,22 @@ in Init::{
]
, defaultPolicy = Some DefaultPolicy::{=}
}
, provides = [ "Nitpicker", "Report", "ROM" ]
, provides = [ "Gui", "Report", "ROM" ]
, reportRoms = [ label "window_layout", label "pointer" ]
, romReports = [ label "decorator_margins", label "hover" ]
, resources = Init.Resources::{
, caps = 128
, ram = Genode.units.MiB 12
}
, routes = [ ServiceRoute.child "Nitpicker" "wm" ]
, routes = [ ServiceRoute.child "Gui" "wm" ]
}
}
, routes = [ ServiceRoute.parent "Timer" ]
, services =
[ ServiceRoute.child "Nitpicker" "wm"
[ ServiceRoute.child "Gui" "wm"
, ServiceRoute.child "Report" "wm"
, ServiceRoute.child "ROM" "wm"
, ServiceRoute.child "Event" "Nitpicker"
, ServiceRoute.child "Capture" "Nitpicker"
]
}

16
nixos-modules/dhall/workman.chargen.dhall

@ -20,18 +20,18 @@ let Map =
let boolToAttr = λ(_ : Bool) → if _ then "yes" else "no"
let keyToXML =
λ(x : Prelude.Map.Entry Text Key)
XML.leaf
λ(x : Prelude.Map.Entry Text Key)
XML.leaf
{ name = "key"
, attributes =
[ merge
{ Ascii =
λ(_ : Natural)
{ mapKey = "ascii", mapValue = Prelude.Natural.show _ }
λ(_ : Natural)
{ mapKey = "ascii", mapValue = Prelude.Natural.show _ }
, Char = λ(_ : Text) → { mapKey = "char", mapValue = _ }
, Code =
λ(_ : Natural)
{ mapKey = "code", mapValue = Prelude.Natural.show _ }
λ(_ : Natural)
{ mapKey = "code", mapValue = Prelude.Natural.show _ }
}
x.mapValue
, { mapKey = "name", mapValue = x.mapKey }
@ -39,8 +39,8 @@ let keyToXML =
}
let mapToXML =
λ(map : Map.Type)
XML.element
λ(map : Map.Type)
XML.element
{ name = "map"
, attributes = toMap
{ mod1 = boolToAttr map.mod1

35
packages/genodelabs/LIB.patch

@ -1,6 +1,6 @@
commit 2db637f21b83701d21aa66295cd35c737649ecdc
commit b7d219220e10699dedb2c90e2d4010cbfab74a86
Author: Emery Hemingway <ehmry@posteo.net>
Date: Tue May 5 21:39:21 2020 +0530
Date: Sun Aug 30 10:47:51 2020 +0200
Produce libraries with conventional names
@ -33,10 +33,10 @@ index 190dd92aa1..6611d05d2a 100644
echo "endif") >> $(LIB_DEP_FILE)
#
diff --git a/repos/base/mk/generic.mk b/repos/base/mk/generic.mk
index d551ac205b..e23fade62f 100644
index 0531c08d58..4eefc6822c 100644
--- a/repos/base/mk/generic.mk
+++ b/repos/base/mk/generic.mk
@@ -129,7 +129,7 @@ binary_%.o: %
@@ -139,7 +139,7 @@ binary_%.o: %
# This is a problem in situations where the undefined symbol is resolved by an
# archive rather than the target. I.e., when linking posix.lib.a (which
# provides 'Libc::Component::construct'), the 'construct' function is merely
@ -45,7 +45,7 @@ index d551ac205b..e23fade62f 100644
# reference apparently does not suffice to keep the posix.lib.a's symbol. By
# adding a hard dependency, we force the linker to resolve the symbol and don't
# drop posix.lib.a.
@@ -164,12 +164,17 @@ endif
@@ -174,12 +174,17 @@ endif
# time a user of the library is linked, the ABI stub should be used instead of
# the library.
#
@ -67,10 +67,23 @@ index d551ac205b..e23fade62f 100644
- $(VERBOSE)ln -sf $(call select_so,$@) $@
+ $(VERBOSE)ln -sf $(call select_so,$@) $(patsubst liblib%,lib%,$@)
diff --git a/repos/base/mk/lib.mk b/repos/base/mk/lib.mk
index bfee2c7420..fac49c7298 100644
index c8ac049563..776aea82aa 100644
--- a/repos/base/mk/lib.mk
+++ b/repos/base/mk/lib.mk
@@ -123,14 +123,20 @@ message:
@@ -95,7 +95,12 @@ endif
#
ifneq ($(SYMBOLS),)
ABI_SO := $(addsuffix .abi.so,$(LIB))
+ifeq ($(LIB),ld)
ABI_SONAME := $(addsuffix .lib.so,$(LIB))
+else
+ABI_SONAME := $(addsuffix .so,$(addprefix lib,$(patsubst lib%,%,$(LIB))))
+endif
+
$(LIB).symbols:
$(VERBOSE)ln -sf $(SYMBOLS) $@
@@ -124,14 +129,20 @@ message:
include $(BASE_DIR)/mk/generic.mk
#
@ -93,7 +106,7 @@ index bfee2c7420..fac49c7298 100644
INSTALL_SO := $(INSTALL_DIR)/$(LIB_SO)
DEBUG_SO := $(DEBUG_DIR)/$(LIB_SO)
endif
@@ -150,7 +156,7 @@ ifneq ($(LIB_SO),)
@@ -151,7 +162,7 @@ ifneq ($(LIB_SO),)
endif
#
@ -102,7 +115,7 @@ index bfee2c7420..fac49c7298 100644
#
LIB_TAG := $(addsuffix .lib.tag,$(LIB))
all: $(LIB_TAG)
@@ -203,7 +209,7 @@ STATIC_LIBS := $(sort $(foreach l,$(ARCHIVES:.lib.a=),$(LIB_CACHE_DIR)/$l/
@@ -204,7 +215,7 @@ STATIC_LIBS := $(sort $(foreach l,$(ARCHIVES:.lib.a=),$(LIB_CACHE_DIR)/$l/
STATIC_LIBS_BRIEF := $(subst $(LIB_CACHE_DIR),$$libs,$(STATIC_LIBS))
#
@ -162,10 +175,10 @@ index 73fd407db7..554d943763 100644
diff --git a/repos/libports/src/lib/libc/kernel.cc b/repos/libports/src/lib/libc/kernel.cc
index 5dd4b2a2d6..430295e7d5 100644
index b1bca7c80f..a4bebaeae1 100644
--- a/repos/libports/src/lib/libc/kernel.cc
+++ b/repos/libports/src/lib/libc/kernel.cc
@@ -308,10 +308,10 @@ void Libc::Kernel::_clone_state_from_parent()
@@ -418,10 +418,10 @@ void Libc::Kernel::_clone_state_from_parent()
* regular startup of the child.
*/
bool const blacklisted = (name == "ld.lib.so")

4
packages/genodelabs/default.nix

@ -1,7 +1,7 @@
{ buildPackages, targetPackages }:
let
version = "20.05";
version = "20.08";
# Update ./port-versions.nix bumping the version and updateing the sources.
platform = targetPackages.targetPlatform;
@ -32,7 +32,7 @@ let
inherit version;
src = fetchurl {
url = "https://github.com/genodelabs/genode/archive/${version}.tar.gz";
hash = "sha256-5Fd8ywGbDtQF+9yDZ5xAQ7l1Vzh1jQAQeqVj+EtO1us=";
hash = "sha256-tFuLVuaN5F9lAEtn0lpd0MgPQpOcFixOtOsQ/z4TwPI=";
};
nativeBuildInputs = [ expect gnumake tcl ];
patches = [ ./LIB.patch ./binary-labels.patch ];

8
packages/genodelabs/input_filter.patch → packages/genodelabs/event_filter.patch

@ -6,11 +6,11 @@ Date: Wed Apr 29 03:34:15 2020 +0530
diff --git a/repos/os/src/server/input_filter/chargen_source.h b/repos/os/src/server/input_filter/chargen_source.h
index 06fc657c25..3525fd6f34 100644
--- a/repos/os/src/server/input_filter/chargen_source.h
+++ b/repos/os/src/server/input_filter/chargen_source.h
--- a/repos/os/src/server/event_filter/chargen_source.h
+++ b/repos/os/src/server/event_filter/chargen_source.h
@@ -684,9 +684,10 @@ class Input_filter::Chargen_source : public Source, Source::Sink
node.for_each_sub_node("key", [&] (Xml_node key_node) {
Key_name const name = key_node.attribute_value("name", Key_name());
- Input::Keycode const key = key_code_by_name(name);
-
@ -20,5 +20,5 @@ index 06fc657c25..3525fd6f34 100644
+ new (_alloc) Modifier(_modifiers, id, key);
+ } catch (Unknown_key) { warning("unrecognized key name ", name); }
});
node.for_each_sub_node("rom", [&] (Xml_node rom_node) {

27
packages/genodelabs/libc.patch

@ -85,30 +85,3 @@ index 150640ddf3..e511897600 100644
DUMMY(int , -1, getpriority, (int, int))
DUMMY(int , -1, getrusage, (int, rusage *))
DUMMY_SILENT(uid_t , 0, getuid, (void))
commit c3d87d0a79f9e30aebdf26d3b684c6b1b2214c51
Author: Emery Hemingway <ehmry@posteo.net>
Date: Wed Jun 10 20:15:44 2020 +0530
libc: add newlocale and freelocale dummies
Fix #3777
diff --git a/repos/libports/src/lib/libc/nolocale.cc b/repos/libports/src/lib/libc/nolocale.cc
index 9d43c35acb..ec37b81336 100644
--- a/repos/libports/src/lib/libc/nolocale.cc
+++ b/repos/libports/src/lib/libc/nolocale.cc
@@ -64,4 +64,14 @@ char *setlocale(int, const char *)
return (char*)"C";
}
+
+locale_t newlocale(int, const char *locale, locale_t)
+{
+ Genode::warning("cannot set \"", locale, "\" locale, not implemented");
+ return NULL;
+}
+
+
+void freelocale(locale_t) { }
+
}

22
packages/genodelabs/port-versions.nix

@ -1,8 +1,7 @@
# The file is generated by the "genodeSources" derivation.
{
acpica = "5c1c54";
ada-runtime = "db8987";
arora = "e8f003";
ada-runtime = "fabce1";
bash = "02edac";
bbl = "b9358c";
binutils = "62d309";
@ -14,7 +13,6 @@
dde_ipxe = "b68f4e";
dde_linux = "173719";
dde_rump = "9afe56";
dde_zircon = "49e3d9";
diffutils = "ee502a";
drm = "01858a";
e2fsprogs = "2a09cd";
@ -31,23 +29,22 @@
gcc = "20345a";
gcov = "a6f852";
gdb = "8eddf0";
getdns = "030233";
gmp = "855680";
gnupg = "c784d4";
grep = "b96a88";
grub2 = "8cf62c";
grub2 = "856f99";
icu = "62f13b";
jbig2dec = "682269";
jitterentropy = "6017e1";
jpeg = "5effdd";
less = "e7a42c";
libarchive = "7ce310";
libc = "2e544d";
libc = "771dcc";
libdrm = "c1cce0";
libgcrypt = "37159a";
libiconv = "3f5ca3";
libpng = "ac05f3";
libsparkcrypto = "d479dc";
libsparkcrypto = "924de3";
libssh = "a475cc";
libusb = "633358";
libyaml = "1cde80";
@ -74,23 +71,22 @@
pistachio = "68c8c3";
qemu-usb = "2ff18f";
qoost = "014d68";
qt5 = "084385";
qt5-host = "ad5edc";
qt5 = "1b1c56";
qt5-host = "21e078";
readline = "a0bfb0";
sanitizer = "181889";
sanitizer = "3ac05b";
sed = "459979";
sel4 = "793548";
sel4_tools = "4ee1b9";
seoul = "e8d696";
solo5 = "55dd4f";
stb = "ab8f50";
stdcxx = "79ad88";
stdcxx = "722e94";
tar = "19aea4";
tcl = "842b1a";
ttf-bitstream-vera = "cd3684";
uboot = "f3fd6b";
vim = "53caaa";
virtualbox5 = "e93407";
virtualbox5 = "e60d97";
which = "91c953";
x86emu = "8a1c3a";
xz = "45203f";

8
packages/genodelabs/ports.nix

@ -4,7 +4,7 @@
{ buildPackages }:
with buildPackages; {
binutils = {
hash = "sha256-gTYP9YNx+x6KVfIMjTD+UAReWwUg93TCkJIWwAau9eA=";
hash = "sha256-Y6EwEb2uFNzJ/6Q+7Jia7LZu5iRt1XkzkogUxiC93t8=";
nativeBuildInputs = [ autoconf ];
};
dde_bsd.hash = "sha256-Z2piyoOrNmXyEEp+kX5w/q4JTylYdSOocUrFeqjz13A=";
@ -26,7 +26,7 @@ with buildPackages; {
jitterentropy.hash = "sha256-6KS732GxtUMz0xPYKtshdn039DgdJq11vTDQesZn4Ds=";
jpeg.hash = "sha256-RLVnlrnYGrhqr3Feikoi/BNditCaKN0u3t9/UDpl2wQ=";
libc = {
hash = "sha256-ONmUhqY7rVtH6Z+K7VCY0OMLNi1SF1XCHFjiVY3MW3c=";
hash = "sha256-bD0Kqho7ABMHxFYOAkQlvJgzSIsomy5OTtpKE+JAVUY=";
nativeBuildInputs = [ buildPackages.gcc ];
};
libiconv.hash = "sha256-25YcW5zo1fE33ZolGQroR+KZO8wHEdN1QXa7+MhwS78=";
@ -44,9 +44,9 @@ with buildPackages; {
openssl.hash = "sha256-epRL3SobYQ7xf8qwp6D5xu/Ms2T/LhUjjs273ywWRWg=";
qemu-usb.hash = "sha256-F4ZXeH5sx3FOcD42zFOxKFMsqGookKdav1NJ7YgVw98=";
stb.hash = "sha256-9LSH1i8jcEvjRAmTvgtK+Axy9hO7uiSzmSgBvs0zkTc=";
stdcxx.hash = "sha256-iiE009fL1yE3XJ7HkaJakOiS++m7qONwwGrdJjBXQ7k=";
stdcxx.hash = "sha256-4Gn/TyA/q83kyO8f5Wr+gv8fNYR5YPDNZIk7+Ty5fn4=";
virtualbox5 = {
hash = "sha256-HLga/0pHQkjdMH7mU194B7pTFJoOoww69Yii4Ixmkxo=";
hash = "sha256-ERI+j2thvyMj+TJSHDdA9sOQdIxrXfNfMNJIa8VRE0M=";
nativeBuildInputs = [ iasl libxslt unzip yasm ];
};
x86emu.hash = "sha256-QY6OL+cDVjQ67JItP1rS4ufPRGZf43AZtWxwza/0q0w=";

5
packages/genodelabs/targets.nix

@ -11,13 +11,10 @@ let
vbox5' = {
nativeBuildInputs = with buildPackages; [ iasl yasm ];
patches = [ ./vbox-framebuffer-fail-on-fail.patch ];
portInputs = [ libc libiconv qemu-usb stdcxx virtualbox5 ];
};
in {
cached_fs_rom.patches = [ ./cached_fs_rom.patch ];
fb_sdl = with buildPackages; {
nativeBuildInputs = [ pkgconfig ];
buildInputs = [ SDL ];
@ -28,7 +25,7 @@ in {
init.patches = [ ./sandbox.patch ];
input_filter.patches = [ ./input_filter.patch ];
event_filter.patches = [ ./event_filter.patch ];
intel_fb_drv = {
BOARD = "pc";

126
packages/genodelabs/vbox-framebuffer-fail-on-fail.patch

@ -1,126 +0,0 @@
commit d2a28a33f6a2bda7000ce201d52ff99714895640
Author: Emery Hemingway <ehmry@posteo.net>
Date: Fri May 15 11:28:10 2020 +0530
vbox: use Nitpicker mode for initial resolution
diff --git a/repos/ports/src/virtualbox5/frontend/fb.h b/repos/ports/src/virtualbox5/frontend/fb.h
index 95a7db8602..bf2d65d7c1 100644
--- a/repos/ports/src/virtualbox5/frontend/fb.h
+++ b/repos/ports/src/virtualbox5/frontend/fb.h
@@ -40,7 +40,7 @@ class Genodefb :
Nitpicker::Connection &_nitpicker;
Fb_Genode::Session &_fb { *_nitpicker.framebuffer() };
View_handle _view;
- Fb_Genode::Mode _fb_mode { 1024, 768, Fb_Genode::Mode::RGB565 };
+ Fb_Genode::Mode _fb_mode { _nitpicker.mode() };
/*
* The mode currently used by the VM. Can be smaller than the
commit b6bf91067a4c1c6d5b3508aedd949c8e1a7fe4b3
Author: Emery Hemingway <ehmry@posteo.net>
Date: Fri May 15 11:20:47 2020 +0530
vbox: fail on invalid framebuffer dataspace
VirtualBox can hang during initialization if Nitpicker returns an
invalid dataspace due to insufficient server-side resources. Make
an invalid dataspace a critical rather than silent error.
diff --git a/repos/ports/src/virtualbox5/frontend/fb.h b/repos/ports/src/virtualbox5/frontend/fb.h
index dce00fe4eb..95a7db8602 100644
--- a/repos/ports/src/virtualbox5/frontend/fb.h
+++ b/repos/ports/src/virtualbox5/frontend/fb.h
@@ -21,6 +21,9 @@
#include <os/texture_rgb888.h>
#include <os/dither_painter.h>
+#include <base/attached_dataspace.h>
+#include <util/reconstructible.h>
+
/* VirtualBox includes */
#include "Global.h"
@@ -35,7 +38,7 @@ class Genodefb :
Genode::Env &_env;
Nitpicker::Connection &_nitpicker;
- Fb_Genode::Session &_fb;
+ Fb_Genode::Session &_fb { *_nitpicker.framebuffer() };
View_handle _view;
Fb_Genode::Mode _fb_mode { 1024, 768, Fb_Genode::Mode::RGB565 };
@@ -43,18 +46,18 @@ class Genodefb :
* The mode currently used by the VM. Can be smaller than the
* framebuffer mode.
*/
- Fb_Genode::Mode _virtual_fb_mode;
+ Fb_Genode::Mode _virtual_fb_mode { _initial_setup() };
+
+ Genode::Reconstructible<Genode::Attached_dataspace>
+ _fb_dataspace { _env.rm(), _fb.dataspace() };
- void *_fb_base;
RTCRITSECT _fb_lock;
void _clear_screen()
{
- if (!_fb_base) return;
-
size_t const max_h = Genode::min(_fb_mode.height(), _virtual_fb_mode.height());
size_t const num_pixels = _fb_mode.width() * max_h;
- memset(_fb_base, 0, num_pixels * _fb_mode.bytes_per_pixel());
+ memset(_fb_dataspace->local_addr<char>(), 0, num_pixels * _fb_mode.bytes_per_pixel());
_fb.refresh(0, 0, _virtual_fb_mode.width(), _virtual_fb_mode.height());
}
@@ -91,10 +94,7 @@ class Genodefb :
Genodefb (Genode::Env &env, Nitpicker::Connection &nitpicker)
:
_env(env),
- _nitpicker(nitpicker),
- _fb(*nitpicker.framebuffer()),
- _virtual_fb_mode(_initial_setup()),
- _fb_base(env.rm().attach(_fb.dataspace()))
+ _nitpicker(nitpicker)
{
int rc = RTCritSectInit(&_fb_lock);
Assert(rc == VINF_SUCCESS);
@@ -109,16 +109,11 @@ class Genodefb :
_fb_mode = mode;
- if (_fb_base)
- _env.rm().detach(_fb_base);
+ _fb_dataspace.destruct();
_adjust_buffer();
- try {
- _fb_base = _env.rm().attach(_fb.dataspace());
- } catch (...) {
- _fb_base = nullptr;
- }
+ _fb_dataspace.construct(_env.rm(), _fb.dataspace());
Unlock();
}
@@ -201,8 +196,6 @@ class Genodefb :
PRUint32 imageSize,
PRUint8 *image) override
{
- if (!_fb_base) return S_OK;
-
Lock();
Nitpicker::Area const area_fb = Nitpicker::Area(_fb_mode.width(),
@@ -215,7 +208,7 @@ class Genodefb :
typedef Pixel_rgb565 Pixel_dst;
Texture<Pixel_src> texture((Pixel_src *)image, nullptr, area_vm);
- Surface<Pixel_dst> surface((Pixel_dst *)_fb_base, area_fb);
+ Surface<Pixel_dst> surface(_fb_dataspace->local_addr<Pixel_dst>(), area_fb);
Dither_painter::paint(surface, texture, Surface_base::Point(o_x, o_y));

153
tests/driver_manager.dhall

@ -1,153 +0,0 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let drivers = env:drivers ? ../compositions/pc-drivers.dhall
let Genode = Test.Genode
let Init = Genode.Init
let Child = Init.Child
let Resources = Init.Resources
let ServiceRoute = Init.ServiceRoute
let parentRomRoute =
λ(from : Text)
→ λ(to : Text)
→ ServiceRoute.parentLabel "ROM" (Some from) (Some to)
let childRomRoute =
λ(child : Text)
→ λ(from : Text)
→ ServiceRoute.childLabel "ROM" child (Some from) (None Text)
let label = λ(_ : Text) → { local = _, route = _ }
let init =
Init::{
, verbose = True
, routes = [ ServiceRoute.parent "Timer" ]
, children = toMap
{ drivers =
Init.toChild
drivers
Init.Attributes::{
, provides = [ "Block", "Framebuffer", "Input" ]
, resources = Init.Resources::{ ram = Genode.units.MiB 4 }
, romReports = [ label "block_devices" ]
, routes =
[ parentRomRoute "managed/input_filter" "input_filter.config"
, parentRomRoute " numlock_remap" "numlock_remap.config"
, childRomRoute "dynamic_rom" "capslock"
, childRomRoute "dynamic_rom" "numlock"
, childRomRoute "dynamic_rom" "system"
, ServiceRoute.child "Report" "_report_rom"
, ServiceRoute.parent "IRQ"
, ServiceRoute.parent "IO_MEM"
, ServiceRoute.parent "IO_PORT"
, ServiceRoute.parent "Timer"
]
}
, 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>
''
]
}
}
, 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"
]
}
}
}
let rom =
Genode.Boot.toRomTexts
( toMap
{ 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>
''
}
]
)
in Test::{ children = Test.initToChildren init, rom = rom }

1
tests/log.dhall

@ -1,4 +1,3 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode

23
tests/posix.dhall

@ -1,4 +1,3 @@
let Test = ./test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode
@ -11,8 +10,8 @@ let Init = Genode.Init
let Child = Init.Child
in λ(params : { bash : Text, coreutils : Text, script : Text })
let init =
in λ(params : { bash : Text, coreutils : Text, script : Text })
let init =
Init::{
, verbose = True
, routes =
@ -83,8 +82,8 @@ in λ(params : { bash : Text, coreutils : Text, script : Text })
# Prelude.List.map
Text
XML.Type
( λ(x : Text)
XML.leaf
( λ(x : Text)
XML.leaf
{ name = "arg"
, attributes = toMap { value = x }
}
@ -99,13 +98,13 @@ in λ(params : { bash : Text, coreutils : Text, script : Text })
, routes =
[ Init.ServiceRoute.child "File_system" "vfs"
, { service =
{ name = "ROM"
, label =
Init.LabelSelector.Type.Partial
{ prefix = Some "/nix/store/"
, suffix = None Text
}
}
{ name = "ROM"
, label =
Init.LabelSelector.Type.Partial
{ prefix = Some "/nix/store/"
, suffix = None Text
}
}
, route =
Init.Route.Type.Child
{ name = "store_rom"

21
tests/solo5/blk.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Init = Genode.Init
@ -25,11 +24,25 @@ let init =
, block =
Child.flat
Child.Attributes::{
, binary = "ram_block"
, binary = "vfs_block"
, provides = [ "Block" ]
, resources = Init.Resources::{ ram = Genode.units.MiB 9 }
, resources = Init.Resources::{ ram = Genode.units.MiB 12 }
, config = Init.Config::{
, attributes = toMap { size = "8M", block_size = "4096" }
, content =
[ Genode.Prelude.XML.text
''
<vfs>
<ram/>
<import>
<zero name="block.raw" size="8M"/>
</import>
</vfs>
''
]
, defaultPolicy = Some Init.Config.DefaultPolicy::{
, attributes = toMap
{ file = "block.raw", writeable = "yes" }
}
}
}
}

3
tests/solo5/default.nix

@ -21,10 +21,11 @@ in map solo5Test [
if pkgs.stdenv.hostPlatform.isAarch64 then "True" else "False"
} }";
inputs = map genodeMake [ "app/ping" ] ++ (map genodeDepot [
"ram_block"
"nic_bridge"
"nic_loopback"
"sequence"
"vfs_block"
"vfs_import"
]);
};
}

1
tests/solo5/net.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Init = Genode.Init

1
tests/solo5/net_2if.dhall

@ -1,4 +1,3 @@
let Genode = env:DHALL_GENODE
let Init = Genode.Init

13
tests/solo5/solo5.dhall

@ -1,4 +1,3 @@
let Test = ../test.dhall ? env:DHALL_GENODE_TEST
let Genode = Test.Genode
@ -12,8 +11,8 @@ let Child = Init.Child
let Config = Init.Config
let toSimple =
λ(testName : Text)
Child.flat
λ(testName : Text)
Child.flat
Child.Attributes::{
, binary = "solo5-test_${testName}"
, resources = Init.Resources::{ caps = 256, ram = Genode.units.MiB 3 }
@ -28,8 +27,8 @@ let toSimple =
}
}
in λ(params : { isAarch64 : Bool })
let tests
in λ(params : { isAarch64 : Bool })
let tests
: Prelude.Map.Type Text Child.Type
= toMap
{ quiet = toSimple "quiet"
@ -40,10 +39,8 @@ in λ(params : { isAarch64 : Bool })
, net = ./net.dhall
, net_2if = ./net_2if.dhall