mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-20 14:13:09 +00:00
47a129c6af
This function returns the information whether the used platform relies on USB HID for interactive scenarios by default as is the case for most ARM platforms. In contrast, for x86 the USB driver can be omitted because we can use the PS/2 driver (that is readily available in repos/os/).
229 lines
5.7 KiB
Plaintext
229 lines
5.7 KiB
Plaintext
#
|
|
# Uncomment the following line when working on the VIM source code. Otherwise,
|
|
# the package may get recompiled, yet it does not get reinstalled into 'bin/'.
|
|
#
|
|
#exec rm -rf noux-pkg/bash bin/bash
|
|
|
|
set build_components {
|
|
core init drivers/timer noux/minimal lib/libc_noux
|
|
drivers/framebuffer drivers/input
|
|
server/terminal server/ram_fs
|
|
test/libports/ncurses
|
|
}
|
|
|
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
|
|
|
lappend_if [have_spec x86] build_components drivers/rtc
|
|
lappend_if [need_usb_hid] build_components drivers/usb
|
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
|
|
|
#
|
|
# Build Noux packages only once
|
|
#
|
|
foreach pkg {bash coreutils vim diffutils less} {
|
|
lappend_if [expr ![file exists bin/$pkg]] build_components noux-pkg/$pkg }
|
|
|
|
append_platform_drv_build_components
|
|
|
|
build $build_components
|
|
|
|
# write default vimrc file
|
|
set vimrc_fd [open "bin/vim/share/vim/vimrc" w]
|
|
puts $vimrc_fd {
|
|
set noloadplugins
|
|
set hls
|
|
set nocompatible
|
|
set laststatus=2
|
|
set noswapfile
|
|
set viminfo=}
|
|
close $vimrc_fd
|
|
|
|
# strip all binaries prior archiving
|
|
exec sh -c "find bin/bash/ bin/vim/ bin/coreutils/ -type f | (xargs [cross_dev_prefix]strip || true) 2>/dev/null"
|
|
|
|
exec tar cfv bin/bash.tar -h -C bin/bash .
|
|
exec tar cfv bin/coreutils.tar -h -C bin/coreutils .
|
|
exec tar cfv bin/vim.tar -h -C bin/vim .
|
|
exec tar cfv bin/diffutils.tar -h -C bin/diffutils .
|
|
exec tar cfv bin/less.tar -h -C bin/less .
|
|
|
|
create_boot_directory
|
|
|
|
append config {
|
|
<config verbose="yes">
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="LOG"/>
|
|
<service name="RAM"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="PD"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="IO_MEM"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Timer"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec x86] config {
|
|
<start name="rtc_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Rtc"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec sdl] config {
|
|
<start name="fb_sdl">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<provides>
|
|
<service name="Input"/>
|
|
<service name="Framebuffer"/>
|
|
</provides>
|
|
</start>}
|
|
|
|
append_platform_drv_config
|
|
|
|
append_if [have_spec framebuffer] config {
|
|
<start name="fb_drv">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<provides><service name="Framebuffer"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec ps2] config {
|
|
<start name="ps2_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Input"/></provides>
|
|
</start> }
|
|
|
|
append_if [have_spec gpio] config {
|
|
<start name="gpio_drv">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<provides><service name="Gpio"/></provides>
|
|
<config/>
|
|
</start>}
|
|
|
|
append_if [need_usb_hid] config {
|
|
<start name="usb_drv">
|
|
<resource name="RAM" quantum="12M"/>
|
|
<provides><service name="Input"/></provides>
|
|
<config uhci="yes" ehci="yes" xhci="yes"> <hid/> </config>
|
|
</start> }
|
|
|
|
append config {
|
|
<start name="terminal">
|
|
<resource name="RAM" quantum="2M"/>
|
|
<provides><service name="Terminal"/></provides>
|
|
<config>
|
|
<keyboard layout="de"/>
|
|
<font size="12" />
|
|
</config>
|
|
</start>
|
|
<start name="ram_fs">
|
|
<resource name="RAM" quantum="10M"/>
|
|
<provides><service name="File_system"/></provides>
|
|
<config>
|
|
<!-- preload RAM file system with some ROM images -->
|
|
<content>
|
|
<dir name="tmp">
|
|
<rom name="init" as="blubb" />
|
|
</dir>
|
|
<dir name="home">
|
|
<dir name="user">
|
|
<!-- just a place holder -->
|
|
<rom name="timer" />
|
|
<inline name="diff_me_a.txt">
|
|
Hello world ?!
|
|
</inline>
|
|
<inline name="diff_me_b.txt">
|
|
Hello world !!
|
|
</inline>
|
|
</dir>
|
|
</dir>
|
|
</content>
|
|
<!-- constrain sessions according to their labels -->
|
|
<policy label="noux -> root" root="/" />
|
|
<policy label="noux -> home" root="/home/user" writeable="yes" />
|
|
<policy label="noux -> tmp" root="/tmp" writeable="yes" />
|
|
</config>
|
|
</start>
|
|
<start name="noux">
|
|
<resource name="RAM" quantum="1G" />
|
|
<config>
|
|
<fstab>
|
|
<tar name="coreutils.tar" />
|
|
<tar name="vim.tar" />
|
|
<tar name="diffutils.tar" />
|
|
<tar name="less.tar" />
|
|
<tar name="bash.tar" />
|
|
|
|
<!-- Example of how to impose policy onto a file system
|
|
session. The label attached to the 'fs' node is used
|
|
as a key to select the policy of 'ram_fs' -->
|
|
|
|
<dir name="home"> <fs label="home" /> </dir>
|
|
|
|
<!-- The entirety of ram_fs is mounted within the '/ram'
|
|
directory. -->
|
|
|
|
<dir name="ram"> <fs label="root" /> </dir>
|
|
<dir name="tmp"> <fs label="tmp" /> </dir>
|
|
|
|
<dir name="dev">}
|
|
|
|
append_if [have_spec x86] config {
|
|
<rtc/>}
|
|
append config {
|
|
<zero/> <null/>
|
|
</dir>
|
|
</fstab>
|
|
<start name="/bin/bash">
|
|
<env name="TERM" value="linux" />
|
|
</start>
|
|
</config>
|
|
</start>
|
|
</config>
|
|
}
|
|
|
|
install_config $config
|
|
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
# generic modules
|
|
set boot_modules {
|
|
core init timer ld.lib.so noux terminal ram_fs
|
|
libc.lib.so libm.lib.so libc_noux.lib.so ncurses.lib.so
|
|
bash.tar coreutils.tar diffutils.tar less.tar vim.tar
|
|
}
|
|
|
|
# platform-specific modules
|
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
|
lappend_if [have_spec x86] boot_modules rtc_drv
|
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
|
lappend_if [need_usb_hid] boot_modules usb_drv
|
|
lappend_if [have_spec gpio] boot_modules gpio_drv
|
|
|
|
append_platform_drv_boot_modules
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
if {[have_spec x86_64]} {
|
|
# bash.tar is really huge when built for x86_64
|
|
append qemu_args " -m 320 "
|
|
}
|
|
|
|
run_genode_until forever
|
|
|
|
exec rm bin/bash.tar
|
|
exec rm bin/coreutils.tar
|
|
exec rm bin/diffutils.tar
|
|
exec rm bin/less.tar
|
|
exec rm bin/vim.tar
|