mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-25 05:19:57 +00:00
This patch changes the way of how the client-selected sub directory is communicated to the server. The former opaque session argument is now passed as last label element, which allows for the flexible tweaking of this argument by init's session-routing and label-rewriting mechansims. In particular, it alleviates the need for creating chroot component instances. This change requires the following four adaptations at the configuration level: - Each file-system session request must now carry a path starting with / as last session arguments. Hence, <vfs> <fs> nodes that feature a 'label' attributes must extend the attribute value with " -> /". For <fs> nodes with no label attribute, "/" is used as last label argument by default. - For matching session-routing rules at init's configuration, the matching of full labels should be replaced by 'label_prefix' matches, excluding the last (path) argument. - Wherever a label of a file-system session is rewritten by using init's 'label' attribute of a <parent> or <child> target node, the new attribute 'identity' should be used instead. This replaces the identity part of the label while preserving the client's directory argument. - Analogously to the matching of session-routing rules, server-side policy-selection rules that formerly matched a concrete 'label' must be changed to match a 'label_prefix' instead. As a good practice, 'label_prefix' values should end with " ->" if possible, which clearly delimits the identity part of the label used by the matching. Issue #5445
346 lines
11 KiB
Plaintext
346 lines
11 KiB
Plaintext
create_boot_directory
|
|
|
|
import_from_depot [depot_user]/src/[base_src] \
|
|
[depot_user]/pkg/[drivers_interactive_pkg] \
|
|
[depot_user]/pkg/fonts_fs \
|
|
[depot_user]/src/init \
|
|
[depot_user]/src/dynamic_rom \
|
|
[depot_user]/src/report_rom \
|
|
[depot_user]/src/nitpicker \
|
|
[depot_user]/src/libc \
|
|
[depot_user]/src/libpng \
|
|
[depot_user]/src/zlib
|
|
|
|
install_config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="PD"/>
|
|
<service name="CPU"/>
|
|
<service name="ROM"/>
|
|
<service name="RM"/>
|
|
<service name="LOG"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="IO_PORT"/>
|
|
</parent-provides>
|
|
|
|
<default caps="100" ram="1M"/>
|
|
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>
|
|
|
|
<start name="timer">
|
|
<provides><service name="Timer"/></provides>
|
|
</start>
|
|
|
|
<start name="drivers" caps="1500" ram="64M" managing_system="yes">
|
|
<binary name="init"/>
|
|
<route>
|
|
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
|
|
<service name="Timer"> <child name="timer"/> </service>
|
|
<service name="Capture"> <child name="nitpicker"/> </service>
|
|
<service name="Event"> <child name="nitpicker"/> </service>
|
|
<any-service> <parent/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="nitpicker" ram="4M">
|
|
<provides>
|
|
<service name="Gui"/> <service name="Capture"/> <service name="Event"/>
|
|
</provides>
|
|
<config>
|
|
<capture/> <event/>
|
|
|
|
<background color="#123456"/>
|
|
<domain name="pointer" layer="1" content="client" label="no" origin="pointer" />
|
|
<domain name="default" layer="3" content="client" label="no" hover="always" />
|
|
|
|
<policy label_prefix="pointer" domain="pointer"/>
|
|
<default-policy domain="default"/>
|
|
</config>
|
|
</start>
|
|
|
|
<start name="pointer">
|
|
<route>
|
|
<service name="Gui"> <child name="nitpicker" /> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="fonts_fs_config_rom" ram="4M">
|
|
<binary name="dynamic_rom"/>
|
|
<provides> <service name="ROM"/> </provides>
|
|
<config verbose="yes">
|
|
<rom name="config">
|
|
|
|
<inline description="small">
|
|
<config>
|
|
<vfs>
|
|
<rom name="Vera.ttf"/>
|
|
<rom name="VeraMono.ttf"/>
|
|
<dir name="fonts">
|
|
<dir name="title">
|
|
<ttf name="regular" path="/Vera.ttf" size_px="18" cache="256K"/>
|
|
</dir>
|
|
<dir name="text">
|
|
<ttf name="regular" path="/Vera.ttf" size_px="14" cache="256K"/>
|
|
</dir>
|
|
<dir name="annotation">
|
|
<ttf name="regular" path="/Vera.ttf" size_px="11" cache="256K"/>
|
|
</dir>
|
|
<dir name="monospace">
|
|
<ttf name="regular" path="/VeraMono.ttf" size_px="14" cache="256K"/>
|
|
</dir>
|
|
</dir>
|
|
</vfs>
|
|
|
|
<default-policy root="/fonts" />
|
|
</config>
|
|
</inline>
|
|
|
|
<sleep milliseconds="1000" />
|
|
|
|
<inline description="big">
|
|
<config>
|
|
<vfs>
|
|
<rom name="Vera.ttf"/>
|
|
<rom name="VeraMono.ttf"/>
|
|
<dir name="fonts">
|
|
<dir name="title">
|
|
<ttf name="regular" path="/Vera.ttf" size_px="28" cache="256K"/>
|
|
</dir>
|
|
<dir name="text">
|
|
<ttf name="regular" path="/Vera.ttf" size_px="24" cache="256K"/>
|
|
</dir>
|
|
<dir name="annotation">
|
|
<ttf name="regular" path="/Vera.ttf" size_px="21" cache="256K"/>
|
|
</dir>
|
|
<dir name="monospace">
|
|
<ttf name="regular" path="/VeraMono.ttf" size_px="24" cache="256K"/>
|
|
</dir>
|
|
</dir>
|
|
</vfs>
|
|
|
|
<default-policy root="/fonts" />
|
|
</config>
|
|
</inline>
|
|
|
|
<sleep milliseconds="1000" />
|
|
|
|
</rom>
|
|
</config>
|
|
</start>
|
|
|
|
<start name="dynamic_rom" ram="4M">
|
|
<provides> <service name="ROM"/> </provides>
|
|
<config verbose="yes">
|
|
<rom name="dialog">
|
|
|
|
<inline description="dependency graph">
|
|
<dialog>
|
|
<depgraph>
|
|
<frame name="storage"> <label text="Storage"/> </frame>
|
|
<frame name="gui"> <label text="GUI"/> </frame>
|
|
<frame name="usbdev"> <label text="USB Devices"/> </frame>
|
|
|
|
<button name="s.ahci1" dep="storage"> <label text="ahci1"/> </button>
|
|
<button name="s.usb1" dep="storage"> <label text="usb1"/> </button>
|
|
<button name="s.usb2" dep="storage"> <label text="usb2"/> </button>
|
|
<button name="s.usb3" dep="storage"> <label text="usb3"/> </button>
|
|
|
|
<frame name="s.usb2.part" dep="s.usb2"> <label text="Partition"/> </frame>
|
|
<button name="s.usb2.1" dep="s.usb2.part"> <label text="1"/> </button>
|
|
<frame name="s.usb2.1.ext2fs" dep="s.usb2.1"> <label text="Ext2 FS"/> </frame>
|
|
<button name="s.usb2.2" dep="s.usb2.part"> <label text="2"/> </button>
|
|
|
|
<frame name="s.usb2.1.ext2fs.subfs" dep="s.usb2.1.ext2fs"> <label text="Sub FS"/> </frame>
|
|
|
|
<button name="g.pointer" dep="gui"> <label text="pointer"/> </button>
|
|
<button name="g.overlay" dep="gui"> <label text="overlay"/> </button>
|
|
<button name="g.primary" dep="gui"> <label text="primary"/> </button>
|
|
<button name="g.background" dep="gui"> <label text="background"/> </button>
|
|
|
|
<button name="g.pointer.new" dep="g.pointer"> <label text="+"/> </button>
|
|
<button name="g.overlay.new" dep="g.overlay"> <label text="+"/> </button>
|
|
<button name="g.background.new" dep="g.background"> <label text="+"/> </button>
|
|
|
|
<button name="u.1-2" dep="usbdev"> <label text="1-2"/> </button>
|
|
<button name="u.1-3" dep="usbdev"> <label text="1-3"/> </button>
|
|
|
|
<frame name="vbox" dep="s.usb2.1.ext2fs.subfs">
|
|
<label text="VBox5"/>
|
|
</frame>
|
|
|
|
<dep node="vbox" on="g.primary"/>
|
|
<dep node="vbox" on="s.ahci1"/>
|
|
<dep node="vbox" on="u.1-3"/>
|
|
|
|
<frame name="fs_view" dep="s.usb2.1.ext2fs.subfs">
|
|
<label text="FS View"/>
|
|
</frame>
|
|
|
|
<dep node="fs_view" from="g.primary"/>
|
|
|
|
</depgraph>
|
|
</dialog>
|
|
</inline>
|
|
|
|
<sleep milliseconds="3000" />
|
|
|
|
<inline description="dependency graph">
|
|
<dialog>
|
|
<depgraph>
|
|
<frame name="storage"> <label text="Storage"/> </frame>
|
|
<frame name="gui"> <label text="GUI"/> </frame>
|
|
<frame name="usbdev"> <label text="USB"/> </frame>
|
|
|
|
<button name="s.ahci1" dep="storage"> <label text="ahci1"/> </button>
|
|
<button name="s.usb1" dep="storage"> <label text="usb1"/> </button>
|
|
<button name="s.usb2" dep="storage"> <label text="usb2"/> </button>
|
|
<button name="s.usb3" dep="storage"> <label text="usb3"/> </button>
|
|
|
|
<frame name="s.usb2.part" dep="s.usb2"> <label text="Partition"/> </frame>
|
|
<button name="s.usb2.2" dep="s.usb2.part"> <label text="2"/> </button>
|
|
|
|
<button name="g.pointer" dep="gui"> <label text="pointer"/> </button>
|
|
<button name="g.overlay" dep="gui"> <label text="overlay"/> </button>
|
|
<button name="g.primary" dep="gui"> <label text="primary"/> </button>
|
|
<button name="g.background" dep="gui"> <label text="background"/> </button>
|
|
|
|
<button name="u.1-2" dep="usbdev"> <label text="1-2"/> </button>
|
|
<button name="u.1-3" dep="usbdev"> <label text="1-3"/> </button>
|
|
|
|
</depgraph>
|
|
</dialog>
|
|
</inline>
|
|
|
|
<sleep milliseconds="3000" />
|
|
|
|
<inline description="example menu">
|
|
<dialog>
|
|
<frame>
|
|
<hbox>
|
|
<vbox name="x">
|
|
<button name="virtualbox">
|
|
<label text="VirtualBox"/>
|
|
</button>
|
|
<button name="toolchain" hovered="yes">
|
|
<label text="Tool chain"
|
|
font="monospace/regular"/>
|
|
</button>
|
|
<button name="log" hovered="yes" selected="yes">
|
|
<label text="Log window"
|
|
font="title/regular"/>
|
|
</button>
|
|
<button name="config" selected="yes">
|
|
<label text="Configuration Configuration Configuration"
|
|
font="annotation/regular"/>
|
|
</button>
|
|
<hbox>
|
|
<button name="x1"> <label text="x1"/> </button>
|
|
<button name="x2"> <label text="x2"/> </button>
|
|
<button name="x3"> <label text="x3"/> </button>
|
|
</hbox>
|
|
<frame>
|
|
<label text="A single line" font="annotation/regular"/>
|
|
</frame>
|
|
</vbox>
|
|
<float north="yes">
|
|
<vbox>
|
|
<button name="virtualbox">
|
|
<label text="VirtualBox"/>
|
|
</button>
|
|
<button name="toolchain" hovered="yes">
|
|
<label text="Tool chain"
|
|
font="monospace/regular"/>
|
|
</button>
|
|
</vbox>
|
|
</float>
|
|
</hbox>
|
|
</frame>
|
|
</dialog>
|
|
</inline>
|
|
|
|
<sleep milliseconds="3000" />
|
|
|
|
<inline description="example menu">
|
|
<dialog>
|
|
<frame>
|
|
<vbox>
|
|
<button name="virtualbox" hovered="yes">
|
|
<label text="VirtualBox"/>
|
|
</button>
|
|
<button name="config" selected="yes" hovered="yes">
|
|
<label text="Configuration"/>
|
|
</button>
|
|
</vbox>
|
|
</frame>
|
|
</dialog>
|
|
</inline>
|
|
|
|
<sleep milliseconds="3000" />
|
|
|
|
</rom>
|
|
</config>
|
|
</start>
|
|
|
|
<start name="report_rom">
|
|
<provides> <service name="Report"/> <service name="ROM"/> </provides>
|
|
<config verbose="yes"/>
|
|
</start>
|
|
|
|
<start name="fonts_fs" caps="300" ram="8M">
|
|
<binary name="vfs"/>
|
|
<route>
|
|
<service name="ROM" label="config"> <child name="fonts_fs_config_rom"/> </service>
|
|
<any-service> <parent/> </any-service>
|
|
</route>
|
|
<provides> <service name="File_system"/> </provides>
|
|
</start>
|
|
|
|
<start name="menu_view" caps="200" ram="8M">
|
|
<config>
|
|
<report hover="yes"/>
|
|
<libc stderr="/dev/log"/>
|
|
<vfs>
|
|
<tar name="menu_view_styles.tar" />
|
|
<dir name="dev"> <log/> </dir>
|
|
<dir name="fonts"> <fs label="fonts -> /"/> </dir>
|
|
</vfs>
|
|
<dialog name="dialog" xpos="200" ypos="150"/>
|
|
<dialog name="fixed_dialog" xpos="400" ypos="50" width="400"/>
|
|
</config>
|
|
<route>
|
|
<service name="ROM" label="dialog"> <child name="dynamic_rom" /> </service>
|
|
<service name="Report" label="hover"> <child name="report_rom"/> </service>
|
|
<service name="File_system" label="fonts -> /"> <child name="fonts_fs"/> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
</config>}
|
|
|
|
build { app/menu_view }
|
|
|
|
set fd [open [run_dir]/genode/fixed_dialog w]
|
|
puts $fd {
|
|
<dialog>
|
|
<frame>
|
|
<vbox>
|
|
<button name="perf" hovered="yes">
|
|
<label text="Performance"/>
|
|
</button>
|
|
<button name="battery" selected="yes" hovered="yes">
|
|
<label text="Battery"/>
|
|
</button>
|
|
</vbox>
|
|
</frame>
|
|
</dialog>
|
|
}
|
|
close $fd
|
|
|
|
build_boot_image [build_artifacts]
|
|
|
|
run_genode_until forever
|