From a0ee487a401f63805d760c4a2003c2c434864b70 Mon Sep 17 00:00:00 2001 From: Mike C. Fletcher Date: Sun, 22 Apr 2007 03:01:56 +0000 Subject: Restructure to not execute code on speculative import Add logging messages at "info" level to provide feedback while launching in order to make debugging unsuccessful launches easier. --- diff --git a/sugar-emulator b/sugar-emulator index 29b0260..dbbaab9 100755 --- a/sugar-emulator +++ b/sugar-emulator @@ -19,6 +19,10 @@ import os import sys import socket +import logging + +log = logging.getLogger( 'sugar-emulator' ) +log.setLevel( logging.DEBUG ) import pygtk pygtk.require('2.0') @@ -27,6 +31,7 @@ import gobject def _get_display_number(): """Find a free display number trying to connect to 6000+ ports""" + log.info( "Attempting to find free port for X11 (Xephyr)" ) retries = 20 display_number = 1 display_is_free = False @@ -43,6 +48,10 @@ def _get_display_number(): display_is_free = True if display_is_free: + log.info( + ' Found free port: #%s (%s)', + display_number, display_number+6000 + ) return display_number else: logging.error('Cannot find a free display.') @@ -50,6 +59,7 @@ def _get_display_number(): def _start_xephyr(): display = _get_display_number() + log.info( 'Starting the Xephyr nested X display on display %s', display ) cmd = [ 'Xephyr' ] cmd.append(':%d' % display) @@ -66,6 +76,7 @@ def _start_xephyr(): cmd.append('-dpi') cmd.append('%d' % int(dpi/1024)) + log.debug( 'Xephyr command: %s', " ".join( cmd ) ) result = gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH) pid = result[0] @@ -73,11 +84,13 @@ def _start_xephyr(): os.environ['SUGAR_EMULATOR_PID'] = str(pid) def _start_matchbox(): + log.info( 'Starting the matchbox window manager' ) cmd = ['matchbox-window-manager'] cmd.extend(['-use_titlebar', 'no']) cmd.extend(['-theme', 'olpc']) + log.debug( 'Matchbox command: %s', " ".join( cmd) ) gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH) def _setup_env(): @@ -89,23 +102,32 @@ def _setup_env(): if os.environ.has_key('PYTHONPATH'): path = os.environ['PYTHONPATH'] os.environ['PYTHONPATH'] = source_dir + ':' + path + log.info( 'Set PYTHONPATH=%s', os.environ['PYTHONPATH'] ) -_setup_env() -_start_xephyr() - -from sugar import env - -if env.is_emulator(): - gtkrc_filename = 'sugar.gtkrc' -else: - gtkrc_filename = 'sugar-xo.gtkrc' - -os.environ['GTK2_RC_FILES'] = env.get_data_path(gtkrc_filename) - -if len(sys.argv) == 1: - program = 'sugar-shell' -else: - _start_matchbox() - program = sys.argv[1] +def main(): + """Script-level operations""" + logging.basicConfig() + _setup_env() + _start_xephyr() + + from sugar import env + + if env.is_emulator(): + gtkrc_filename = 'sugar.gtkrc' + else: + gtkrc_filename = 'sugar-xo.gtkrc' + + os.environ['GTK2_RC_FILES'] = env.get_data_path(gtkrc_filename) + + if len(sys.argv) == 1: + program = 'sugar-shell' + else: + _start_matchbox() + program = sys.argv[1] + + command = ['dbus-launch', 'dbus-launch', '--exit-with-session', program] + log.info( "Attempting to launch sugar to replace this process: %s", " ".join(command) ) + os.execlp( *command ) -os.execlp('dbus-launch', 'dbus-launch', '--exit-with-session', program) +if __name__ == "__main__": + main() -- cgit v0.9.1