genode/repos/libports/run/qt5_textedit.run
Norman Feske 5a1cef6381 Make label prefixing more strict
This patch unconditionally applies the labeling of sessions and thereby
removes the most common use case of 'Child_policy::filter_session_args'.
Furthermore, the patch removes an ambiguity of the session labels of
sessions created by the parent of behalf of its child, e.g., the PD
session created as part of 'Child' now has the label "<child-name>"
whereas an unlabeled PD-session request originating from the child
has the label "<child-name> -> ". This way, the routing-policy of
'Child_policy::resolve_session_request' can differentiate both cases.

As a consequence, the stricter labeling must now be considered wherever
a precise label was specified as a key for a session route or a server-
side policy selection. The simplest way to adapt those cases is to use a
'label_prefix' instead of the 'label' attribute. Alternatively, the
'label' attribute may used by appending " -> " (note the whitespace).

Fixes #2171
2016-11-30 13:37:07 +01:00

169 lines
4.1 KiB
Plaintext

source ${genode_dir}/repos/libports/run/qt5_common.inc
#
# Build
#
if {[have_spec hw_odroid_xu]} {
puts "Run script does not support this platform."
exit 0
}
append build_components [qt5_build_components feature]
append build_components {
app/qt5/examples/textedit
}
set use_sd_card_driver [expr [have_spec omap4] || [have_spec arndale]]
set use_ahci_driver [expr [have_spec x86] && ![have_spec linux]]
lappend_if $use_sd_card_driver build_components drivers/sd_card
lappend_if $use_ahci_driver build_components drivers/ahci
lappend_if [have_spec acpi] build_components drivers/acpi
lappend_if [have_spec linux] build_components server/ram_fs
lappend_if [expr ![have_spec linux]] build_components server/ffat_fs
build $build_components
create_boot_directory
#
# Create Qt tar archive
create_qt5_fs_tar_archive "textedit" "gui"
#
# Generate config
#
append config {
<config>
<parent-provides>}
append config [qt5_parent_provides feature]
append config {
</parent-provides>
<default-route>
<any-service> <parent/> <child name="wm"/> <any-child/> </any-service>
</default-route>}
append config [qt5_start_nodes feature]
append_if $use_ahci_driver config {
<start name="ahci_drv">
<resource name="RAM" quantum="5M"/>
<provides> <service name="Block"/> </provides>
<config>
<policy label_prefix="ffat_fs" device="0" />
</config>
</start>}
append_if $use_sd_card_driver config {
<start name="sd_card_drv">
<resource name="RAM" quantum="1M" />
<provides><service name="Block"/></provides>
</start>}
append_if [have_spec linux] config {
<start name="ram_fs">
<resource name="RAM" quantum="10M"/>
<provides><service name="File_system"/></provides>
<config>
<!-- constrain sessions according to their labels -->
<policy label_prefix="textedit" root="/" writeable="yes" />
<policy label_prefix="textedit2" root="/" writeable="yes" />
</config>
</start>}
append_if [expr ![have_spec linux]] config {
<start name="ffat_fs">
<resource name="RAM" quantum="10M"/>
<provides><service name="File_system"/></provides>
<config>
<!-- constrain sessions according to their labels -->
<policy label_prefix="textedit" root="/" writeable="yes" />
</config>
</start>}
append config {
<start name="textedit">
<resource name="RAM" quantum="70M"/>
<config xpos="3" ypos="0" width="500" height="710">
<libc stdout="/dev/log" stderr="/dev/log">
<vfs>
<dir name="dev"> <log/> </dir>
<tar name="qt5_fs_textedit.tar"/>
<dir name="fs"> <fs/> </dir>
</vfs>
</libc>
</config>
</start>
<start name="textedit2">
<binary name="textedit" />
<resource name="RAM" quantum="70M"/>
<config xpos="512" ypos="0" width="500" height="710">
<libc stdout="/dev/log" stderr="/dev/log">
<vfs>
<dir name="dev"> <log/> </dir>
<tar name="qt5_fs_textedit.tar"/>
<dir name="fs"> <fs/> </dir>
</vfs>
</libc>
</config>
</start>
</config>
}
install_config $config
#
# Boot modules
#
append boot_modules [qt5_boot_modules feature]
append boot_modules {
textedit
freetype.lib.so
gallium.lib.so
icu.lib.so
ld.lib.so
libc.lib.so
libc_pipe.lib.so
libm.lib.so
libpng.lib.so
jpeg.lib.so
pthread.lib.so
qt5_core.lib.so
qt5_gui.lib.so
qt5_widgets.lib.so
qt5_xml.lib.so
zlib.lib.so
stdcxx.lib.so
qt5_fs_textedit.tar
}
# platform-specific modules
lappend_if [have_spec linux] boot_modules ram_fs
lappend_if [expr ![have_spec linux]] boot_modules ffat_fs
lappend_if $use_sd_card_driver boot_modules sd_card_drv
lappend_if $use_ahci_driver boot_modules ahci_drv
build_boot_image $boot_modules
set disk_image "bin/test.hda"
set cmd "dd if=/dev/zero of=$disk_image bs=1024 count=65536"
puts "creating disk image: $cmd"
catch { exec sh -c $cmd }
set cmd "mkfs.vfat -F32 $disk_image"
puts "formating disk image with vfat file system: $cmd"
catch { exec sh -c $cmd }
append_if $use_ahci_driver qemu_args " -drive id=disk,file=$disk_image,format=raw,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0 -boot d"
append qemu_args " -m 256 -usbdevice tablet "
run_genode_until forever