#! /usr/bin/perl -W # # (c) 2009 Technische Universität Dresden # This file is part of TUD:OS and distributed under the terms of the # GNU General Public License 2. # Please see the COPYING-GPL-2 file for details. # # Adam Lackorzynski # use strict; BEGIN { unshift @INC, $ENV{L4DIR}.'/tool/lib' if $ENV{L4DIR} && -d $ENV{L4DIR}.'/tool/lib/L4';} use L4::ModList; use File::Temp qw/tempdir/; my $module_path = $ENV{SEARCHPATH} || "."; my $modulesfile = shift; my $entryname = shift; sub get_file($$) { my $command = shift; my $cmdline = shift; my $fp = L4::ModList::search_file_or_die($command, $module_path); $cmdline =~ s/^\S+\s*/ /; $cmdline =~ s/\s*$//; $fp.$cmdline; } die "No entry name given" unless defined $entryname; my %entry = L4::ModList::get_module_entry($modulesfile, $entryname); my @mods = @{$entry{mods}}; my $fiasco_ux = L4::ModList::search_file_or_die('fiasco', $module_path); my $irq0 = L4::ModList::search_file_or_die('irq0', $module_path); my $fbprog; if (defined $ENV{UX_GFX}) { $fbprog = defined $ENV{UX_GFX_CMD} ? $ENV{UX_GFX_CMD} : 'ux_con'; $fbprog = L4::ModList::search_file($fbprog, $module_path); } my $netprog; if (defined $ENV{UX_NET}) { $netprog = defined $ENV{UX_NET_CMD} ? $ENV{UX_NET_CMD} : 'ux_net'; $netprog = L4::ModList::search_file($netprog, $module_path); } @mods = map { get_file($_->{command}, $_->{cmdline}) } @mods; # skip fiasco binary together with its params, for UX launch there are just # ignored shift @mods; my $ux_cmd = $fiasco_ux." "; $ux_cmd .= join(' ', @ARGV); $ux_cmd .= " -I $irq0"; $ux_cmd .= " -G $ENV{UX_GFX} -F $fbprog" if defined $fbprog; $ux_cmd .= " -N -E $netprog" if defined $netprog; $ux_cmd .= " -S '".shift(@mods)."'"; $ux_cmd .= " -R '".shift(@mods)."'"; $ux_cmd .= ' '.join(' ', map { "-l $_" } @mods); print "$ux_cmd\n"; system("$ux_cmd");