# # \brief Example for hosting the genode.org website on Genode # \author Norman Feske # \date 2012-08-16 # # This run script uses the lighttpd web server to host the genode.org website. # When executed the first time, the genode.org website is downloaded to # 'bin/genode_org/website'. When the web server is up, you may point your web # browser to http://localhost:5555 # if {[have_spec odroid_xu]} { puts "Run script does not support this platform." exit 0 } set build_components { core init timer app/lighttpd lib/vfs/lwip } set use_usb_driver [expr [have_spec omap4] || [have_spec arndale] || [have_spec rpi]] set use_nic_driver [expr !$use_usb_driver] if {$use_usb_driver} { set network_driver "usb_drv" } if {$use_nic_driver} { set network_driver "nic_drv" } lappend_if $use_usb_driver build_components drivers/usb lappend_if $use_nic_driver build_components drivers/nic lappend_if [have_spec gpio] build_components drivers/gpio proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv } if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv } return gpio_drv } source ${genode_dir}/repos/base/run/platform_drv.inc append_platform_drv_build_components build $build_components create_boot_directory append config { } append_if [have_spec gpio] config " " append_if $use_usb_driver config { } append_if $use_nic_driver config { } append_platform_drv_config append config { } append config { } install_config $config # # Create TAR archive containting the web-server configuration and the # website content. # # lighttpd configuration exec mkdir -p bin/genode_org/etc/lighttpd set fd [open "bin/genode_org/etc/lighttpd/lighttpd.conf" w] puts $fd { server.port = 80 server.document-root = "/website" server.event-handler = "select" server.network-backend = "write" server.max-keep-alive-requests = 0 index-file.names = ( "index", "index.html", "index.htm" ) mimetype.assign = ( ".png" => "image/png", ".jpg" => "image/jpeg", ".jpeg" => "image/jpeg", ".gif" => "image/gif", ".css" => "text/css", ".html" => "text/html", ".htm" => "text/html", "" => "text/html", ) } close $fd # mirror of genode.org website if {![file exists bin/genode_org/website/index]} { puts "mirroring genode.org website to bin/genode_org/website..." exec mkdir -p bin/genode_org/website # ignore wget errors catch { exec wget -nH -Lrc -P bin/genode_org/website http://genode.org } } exec tar cfv bin/genode_org.tar -h -C bin/genode_org . # # Boot modules # # generic modules set boot_modules { core init timer ld.lib.so libc.lib.so libm.lib.so posix.lib.so vfs.lib.so vfs_lwip.lib.so zlib.lib.so libcrypto.lib.so libssl.lib.so lighttpd genode_org.tar } # platform-specific modules lappend_if $use_usb_driver boot_modules usb_drv lappend_if $use_nic_driver boot_modules [nic_drv_binary] lappend_if [have_spec gpio] boot_modules [gpio_drv] append_platform_drv_boot_modules build_boot_image $boot_modules proc qemu_nic_model {} { if [have_spec x86] { return e1000 } if [have_spec lan9118] { return lan9118 } return nic_model_missing } append qemu_args " -netdev user,id=net0,hostfwd=tcp::5555-:80 " append qemu_args " -net nic,model=[qemu_nic_model],netdev=net0 " append qemu_args " -nographic -serial mon:stdio " run_genode_until forever