rsync package overrides
This commit is contained in:
parent
a60ccd13e2
commit
e4ed185e8b
|
@ -1,6 +1,9 @@
|
|||
final: prev:
|
||||
with prev;
|
||||
let
|
||||
overrideHost = drv: attrs:
|
||||
if hostPlatform.isGenode then drv.override attrs else drv;
|
||||
|
||||
overrideHostAttrs = drv: f:
|
||||
if hostPlatform.isGenode then drv.overrideAttrs f else drv;
|
||||
|
||||
|
@ -89,6 +92,8 @@ in {
|
|||
"rm $out/bin/c_rehash"; # eliminate the perl runtime dependency
|
||||
});
|
||||
|
||||
rsync = overrideHost rsync { enableACLs = false; };
|
||||
|
||||
solo5-tools = callPackage ./solo5-tools { };
|
||||
|
||||
tup = prev.tup.overrideAttrs (attrs: { setupHook = ./tup/setup-hook.sh; });
|
||||
|
|
|
@ -24,11 +24,13 @@ in λ(params : { bash : Text, coreutils : Text, script : Text }) →
|
|||
Child.Attributes::{
|
||||
, binary = "vfs"
|
||||
, config = Init.Config::{
|
||||
, attributes = toMap { ld_verbose = "yes" }
|
||||
, content =
|
||||
[ Prelude.XML.text
|
||||
''
|
||||
<vfs>
|
||||
<dir name="dev"> <log name="stdout" label="stdout"/> <log name="stderr" label="stderr"/> <null/> <pipe/> <rtc/> <zero/> </dir>
|
||||
<dir name="dev"> <log name="stdout" label="stdout"/> <log name="stderr" label="stderr"/> <null/> <rtc/> <zero/> </dir>
|
||||
<dir name="pipe"> <pipe/> </dir>
|
||||
<dir name="usr"><dir name="bin"><symlink name="env" target="${params.coreutils}/bin/env"/></dir></dir>
|
||||
<dir name="tmp"><ram/></dir>
|
||||
<dir name="nix"><fs label="nix" root="nix"/></dir>
|
||||
|
@ -41,7 +43,7 @@ in λ(params : { bash : Text, coreutils : Text, script : Text }) →
|
|||
}
|
||||
, provides = [ "File_system" ]
|
||||
, resources = Genode.Init.Resources::{
|
||||
, caps = 256
|
||||
, caps = 512
|
||||
, ram = Genode.units.MiB 8
|
||||
}
|
||||
, routes =
|
||||
|
@ -58,7 +60,7 @@ in λ(params : { bash : Text, coreutils : Text, script : Text }) →
|
|||
, provides = [ "ROM" ]
|
||||
, resources = Init.Resources::{
|
||||
, caps = 256
|
||||
, ram = Genode.units.MiB 4
|
||||
, ram = Genode.units.MiB 8
|
||||
}
|
||||
, routes =
|
||||
[ Init.ServiceRoute.parentLabel
|
||||
|
@ -75,7 +77,7 @@ in λ(params : { bash : Text, coreutils : Text, script : Text }) →
|
|||
, content =
|
||||
[ Prelude.XML.text
|
||||
''
|
||||
<libc stdin="/dev/null" stdout="/dev/stdout" stderr="/dev/stderr" pipe="/dev/pipe" rtc="/dev/rtc"/>
|
||||
<libc stdin="/dev/null" stdout="/dev/stdout" stderr="/dev/stderr" pipe="/pipe" rtc="/dev/rtc"/>
|
||||
<vfs> <fs/> </vfs>
|
||||
''
|
||||
]
|
||||
|
@ -92,8 +94,8 @@ in λ(params : { bash : Text, coreutils : Text, script : Text }) →
|
|||
}
|
||||
, exitPropagate = True
|
||||
, resources = Genode.Init.Resources::{
|
||||
, caps = 256
|
||||
, ram = Genode.units.MiB 8
|
||||
, caps = 1024
|
||||
, ram = Genode.units.MiB 32
|
||||
}
|
||||
, routes =
|
||||
[ Init.ServiceRoute.child "File_system" "vfs"
|
||||
|
|
|
@ -0,0 +1,121 @@
|
|||
let Test = ./test.dhall ? env:DHALL_GENODE_TEST
|
||||
|
||||
let Genode = Test.Genode
|
||||
|
||||
let Prelude = Genode.Prelude
|
||||
|
||||
let XML = Prelude.XML
|
||||
|
||||
let Init = Genode.Init
|
||||
|
||||
let Child = Init.Child
|
||||
|
||||
in λ(params : { bash : Text, coreutils : Text, script : Text }) →
|
||||
let init =
|
||||
Init::{
|
||||
, verbose = True
|
||||
, routes =
|
||||
[ Init.ServiceRoute.parent "Timer"
|
||||
, Init.ServiceRoute.parent "Rtc"
|
||||
]
|
||||
, children = toMap
|
||||
{ vfs =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "vfs"
|
||||
, config = Init.Config::{
|
||||
, content =
|
||||
[ Prelude.XML.text
|
||||
''
|
||||
<vfs>
|
||||
<dir name="dev"> <log name="stdout" label="stdout"/> <log name="stderr" label="stderr"/> <null/> <rtc/> <zero/> </dir>
|
||||
<dir name="pipe"> <pipe/> </dir>
|
||||
<dir name="usr"><dir name="bin"><symlink name="env" target="${params.coreutils}/bin/env"/></dir></dir>
|
||||
<dir name="tmp"><ram/></dir>
|
||||
<dir name="nix"><fs label="nix" root="nix"/></dir>
|
||||
</vfs>
|
||||
''
|
||||
]
|
||||
, defaultPolicy = Some Init.Config.DefaultPolicy::{
|
||||
, attributes = toMap { root = "/", writeable = "yes" }
|
||||
}
|
||||
}
|
||||
, provides = [ "File_system" ]
|
||||
, resources = Genode.Init.Resources::{
|
||||
, caps = 256
|
||||
, ram = Genode.units.MiB 8
|
||||
}
|
||||
, routes =
|
||||
Prelude.List.map
|
||||
Text
|
||||
Init.ServiceRoute.Type
|
||||
Init.ServiceRoute.parent
|
||||
[ "File_system", "Rtc" ]
|
||||
}
|
||||
, store_rom =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "cached_fs_rom"
|
||||
, provides = [ "ROM" ]
|
||||
, resources = Init.Resources::{
|
||||
, caps = 256
|
||||
, ram = Genode.units.MiB 4
|
||||
}
|
||||
, routes =
|
||||
[ Init.ServiceRoute.parentLabel
|
||||
"File_system"
|
||||
(None Text)
|
||||
(Some "nix")
|
||||
]
|
||||
}
|
||||
, shell =
|
||||
Child.flat
|
||||
Child.Attributes::{
|
||||
, binary = "bash"
|
||||
, config = Genode.Init.Config::{
|
||||
, content =
|
||||
[ Prelude.XML.text
|
||||
''
|
||||
<libc stdin="/dev/null" stdout="/dev/stdout" stderr="/dev/stderr" pipe="/pipe" rtc="/dev/rtc"/>
|
||||
<vfs> <fs/> </vfs>
|
||||
''
|
||||
]
|
||||
# Prelude.List.map
|
||||
Text
|
||||
XML.Type
|
||||
( λ(x : Text) →
|
||||
XML.leaf
|
||||
{ name = "arg"
|
||||
, attributes = toMap { value = x }
|
||||
}
|
||||
)
|
||||
[ "bash", params.script ]
|
||||
}
|
||||
, exitPropagate = True
|
||||
, resources = Genode.Init.Resources::{
|
||||
, caps = 1024
|
||||
, ram = Genode.units.MiB 32
|
||||
}
|
||||
, routes =
|
||||
[ Init.ServiceRoute.child "File_system" "vfs"
|
||||
, { service =
|
||||
{ name = "ROM"
|
||||
, label =
|
||||
Init.LabelSelector.Type.Partial
|
||||
{ prefix = Some "/nix/store/"
|
||||
, suffix = None Text
|
||||
}
|
||||
}
|
||||
, route =
|
||||
Init.Route.Type.Child
|
||||
{ name = "store_rom"
|
||||
, label = None Text
|
||||
, diag = None Bool
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
in Test::{ children = Test.initToChildren init }
|
|
@ -0,0 +1,30 @@
|
|||
{ pkgs, legacyPackages, ... }:
|
||||
with pkgs;
|
||||
|
||||
let
|
||||
inherit (legacyPackages) bash coreutils;
|
||||
script = with legacyPackages;
|
||||
writeTextFile {
|
||||
name = "rsync.sh";
|
||||
text = ''
|
||||
export PATH=${
|
||||
lib.makeSearchPathOutput "bin" "bin"
|
||||
(with legacyPackages; [ bash coreutils rsync ])
|
||||
}
|
||||
set -v
|
||||
rsync --version
|
||||
rsync -r /nix
|
||||
'';
|
||||
};
|
||||
in rec {
|
||||
name = "rsync";
|
||||
machine = {
|
||||
config = ''
|
||||
${
|
||||
./posix.dhall
|
||||
} { bash = \"${bash}\", coreutils = \"${coreutils}\", script = \"${script}\" }'';
|
||||
inputs = map pkgs.genodeSources.depot [ "libc" "posix" "vfs_pipe" "vfs" ]
|
||||
++ [ bash ];
|
||||
extraPaths = [ script ] ++ (with legacyPackages; [ coreutils rsync ]);
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue