From d4a15733f438e204a092fc2338b85ef3e5244cc0 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Tue, 06 Oct 2009 16:36:45 +0000 Subject: debug logs for the presence service and connection managers not working #927 --- diff --git a/bin/sugar-emulator b/bin/sugar-emulator index 99856dc..800ca33 100644..100755 --- a/bin/sugar-emulator +++ b/bin/sugar-emulator @@ -1,169 +1,9 @@ -#!/usr/bin/env python -# Copyright (C) 2006-2008, Red Hat, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#!/bin/sh -import os -import random -import subprocess -import time -from optparse import OptionParser +# Source debug definitions +if [ -f ~/.sugar/debug ]; then + . ~/.sugar/debug +fi -import gtk -import gobject - -from sugar import env - -default_dimensions = (800, 600) -def _run_xephyr(display, dpi, dimensions, fullscreen): - cmd = [ 'Xephyr' ] - cmd.append(':%d' % display) - cmd.append('-ac') - - screen_size = (gtk.gdk.screen_width(), gtk.gdk.screen_height()) - - if (not dimensions) and (fullscreen is None) and \ - (screen_size < default_dimensions) : - # no forced settings, screen too small => fit screen - fullscreen = True - elif (not dimensions) : - # screen is big enough or user has en/disabled fullscreen manually - # => use default size (will get ignored for fullscreen) - dimensions = '%dx%d' % default_dimensions - - if not dpi : - dpi = gtk.settings_get_default().get_property('gtk-xft-dpi') / 1024 - - if fullscreen : - cmd.append('-fullscreen') - - if dimensions : - cmd.append('-screen') - cmd.append(dimensions) - - if dpi : - cmd.append('-dpi') - cmd.append('%d' % dpi) - - result = gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH) - pid = result[0] - - os.environ['DISPLAY'] = ":%d" % (display) - os.environ['SUGAR_EMULATOR_PID'] = str(pid) - -def _check_xephyr(display): - result = subprocess.call(['xdpyinfo', '-display', ':%d' % display], - stdout=open(os.devnull, "w"), - stderr=open(os.devnull, "w")) - return result == 0 - -def _start_xephyr(dpi, dimensions, fullscreen): - # FIXME evil workaround until F10 Xephyr is fixed - if os.path.exists('/etc/fedora-release'): - if open('/etc/fedora-release').read().startswith('Fedora release 10'): - display = random.randint(100, 500) - _run_xephyr(display, dpi, dimensions, fullscreen) - return display - - for display in range(100, 110): - if not _check_xephyr(display): - _run_xephyr(display, dpi, dimensions, fullscreen) - - tries = 10 - while tries > 0: - if _check_xephyr(display): - return display - else: - tries -= 1 - time.sleep(0.1) - -def _start_window_manager(display): - cmd = ['metacity'] - - cmd.extend(['--no-force-fullscreen', '-d', ':%d' % display]) - - gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH) - -def _setup_env(): - os.environ['SUGAR_EMULATOR'] = 'yes' - os.environ['GABBLE_LOGFILE'] = os.path.join( - env.get_profile_path(), 'logs', 'telepathy-gabble.log') - os.environ['SALUT_LOGFILE'] = os.path.join( - env.get_profile_path(), 'logs', 'telepathy-salut.log') - os.environ['STREAM_ENGINE_LOGFILE'] = os.path.join( - env.get_profile_path(), 'logs', 'telepathy-stream-engine.log') - - path = os.path.join(os.environ.get("HOME"), '.i18n') - if os.path.exists(path): - fd = open(path, "r") - lines = fd.readlines() - fd.close() - - language_env_variable = None - lang_env_variable = None - - for line in lines: - if line.startswith("LANGUAGE="): - lang = line[9:].replace('"', '') - language_env_variable = lang.strip() - elif line.startswith("LANG="): - lang_env_variable = line[5:].replace('"', '') - - # There might be cases where .i18n may not contain a LANGUAGE field - if language_env_variable is not None: - os.environ['LANGUAGE'] = language_env_variable - if lang_env_variable is not None: - os.environ['LANG'] = lang_env_variable - -def main(): - """Script-level operations""" - - parser = OptionParser() - parser.add_option('-d', '--dpi', dest='dpi', type="int", - help='Emulator dpi') - parser.add_option('-s', '--scaling', dest='scaling', - help='Sugar scaling in %') - parser.add_option('-i', '--dimensions', dest='dimensions', - help='Emulator dimensions (ex. 1200x900)') - parser.add_option('-f', '--fullscreen', dest='fullscreen', - action='store_true', default=None, - help='Run emulator in fullscreen mode') - parser.add_option('-F', '--no-fullscreen', dest='fullscreen', - action='store_false', - help='Do not run emulator in fullscreen mode') - (options, args) = parser.parse_args() - - _setup_env() - - display = _start_xephyr(options.dpi, options.dimensions, options.fullscreen) - - if options.scaling: - os.environ['SUGAR_SCALING'] = options.scaling - - command = ['dbus-launch', 'dbus-launch', '--exit-with-session'] - - if not args: - command.extend(['sugar', '-d', ':%d' % display]) - else: - _start_window_manager(display) - - if args[0].endswith('.py'): - command.append('python') - - command.append(args[0]) - - os.execlp(*command) - -main() +# Start emulator +python -c "import sys; from jarabe.util import emulator; sys.argv[0]='$0'; emulator.main()" "$@" diff --git a/src/jarabe/util/Makefile.am b/src/jarabe/util/Makefile.am index 4046fe8..8bda3d6 100644 --- a/src/jarabe/util/Makefile.am +++ b/src/jarabe/util/Makefile.am @@ -2,5 +2,6 @@ SUBDIRS = \ telepathy sugardir = $(pythondir)/jarabe/util -sugar_PYTHON = \ - __init__.py +sugar_PYTHON = \ + __init__.py \ + emulator.py diff --git a/src/jarabe/util/emulator.py b/src/jarabe/util/emulator.py new file mode 100644 index 0000000..d2dacb5 --- /dev/null +++ b/src/jarabe/util/emulator.py @@ -0,0 +1,166 @@ +# Copyright (C) 2006-2008, Red Hat, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import os +import random +import subprocess +import time +from optparse import OptionParser + +import gtk +import gobject + +from sugar import env + +default_dimensions = (800, 600) +def _run_xephyr(display, dpi, dimensions, fullscreen): + cmd = [ 'Xephyr' ] + cmd.append(':%d' % display) + cmd.append('-ac') + + screen_size = (gtk.gdk.screen_width(), gtk.gdk.screen_height()) + + if (not dimensions) and (fullscreen is None) and \ + (screen_size < default_dimensions) : + # no forced settings, screen too small => fit screen + fullscreen = True + elif (not dimensions) : + # screen is big enough or user has en/disabled fullscreen manually + # => use default size (will get ignored for fullscreen) + dimensions = '%dx%d' % default_dimensions + + if not dpi : + dpi = gtk.settings_get_default().get_property('gtk-xft-dpi') / 1024 + + if fullscreen : + cmd.append('-fullscreen') + + if dimensions : + cmd.append('-screen') + cmd.append(dimensions) + + if dpi : + cmd.append('-dpi') + cmd.append('%d' % dpi) + + result = gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH) + pid = result[0] + + os.environ['DISPLAY'] = ":%d" % (display) + os.environ['SUGAR_EMULATOR_PID'] = str(pid) + +def _check_xephyr(display): + result = subprocess.call(['xdpyinfo', '-display', ':%d' % display], + stdout=open(os.devnull, "w"), + stderr=open(os.devnull, "w")) + return result == 0 + +def _start_xephyr(dpi, dimensions, fullscreen): + # FIXME evil workaround until F10 Xephyr is fixed + if os.path.exists('/etc/fedora-release'): + if open('/etc/fedora-release').read().startswith('Fedora release 10'): + display = random.randint(100, 500) + _run_xephyr(display, dpi, dimensions, fullscreen) + return display + + for display in range(100, 110): + if not _check_xephyr(display): + _run_xephyr(display, dpi, dimensions, fullscreen) + + tries = 10 + while tries > 0: + if _check_xephyr(display): + return display + else: + tries -= 1 + time.sleep(0.1) + +def _start_window_manager(display): + cmd = ['metacity'] + + cmd.extend(['--no-force-fullscreen', '-d', ':%d' % display]) + + gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH) + +def _setup_env(): + os.environ['SUGAR_EMULATOR'] = 'yes' + os.environ['GABBLE_LOGFILE'] = os.path.join( + env.get_profile_path(), 'logs', 'telepathy-gabble.log') + os.environ['SALUT_LOGFILE'] = os.path.join( + env.get_profile_path(), 'logs', 'telepathy-salut.log') + os.environ['STREAM_ENGINE_LOGFILE'] = os.path.join( + env.get_profile_path(), 'logs', 'telepathy-stream-engine.log') + + path = os.path.join(os.environ.get("HOME"), '.i18n') + if os.path.exists(path): + fd = open(path, "r") + lines = fd.readlines() + fd.close() + + language_env_variable = None + lang_env_variable = None + + for line in lines: + if line.startswith("LANGUAGE="): + lang = line[9:].replace('"', '') + language_env_variable = lang.strip() + elif line.startswith("LANG="): + lang_env_variable = line[5:].replace('"', '') + + # There might be cases where .i18n may not contain a LANGUAGE field + if language_env_variable is not None: + os.environ['LANGUAGE'] = language_env_variable + if lang_env_variable is not None: + os.environ['LANG'] = lang_env_variable + +def main(): + """Script-level operations""" + + parser = OptionParser() + parser.add_option('-d', '--dpi', dest='dpi', type="int", + help='Emulator dpi') + parser.add_option('-s', '--scaling', dest='scaling', + help='Sugar scaling in %') + parser.add_option('-i', '--dimensions', dest='dimensions', + help='Emulator dimensions (ex. 1200x900)') + parser.add_option('-f', '--fullscreen', dest='fullscreen', + action='store_true', default=None, + help='Run emulator in fullscreen mode') + parser.add_option('-F', '--no-fullscreen', dest='fullscreen', + action='store_false', + help='Do not run emulator in fullscreen mode') + (options, args) = parser.parse_args() + + _setup_env() + + display = _start_xephyr(options.dpi, options.dimensions, options.fullscreen) + + if options.scaling: + os.environ['SUGAR_SCALING'] = options.scaling + + command = ['dbus-launch', 'dbus-launch', '--exit-with-session'] + + if not args: + command.extend(['sugar', '-d', ':%d' % display]) + else: + _start_window_manager(display) + + if args[0].endswith('.py'): + command.append('python') + + command.append(args[0]) + + os.execlp(*command) -- cgit v0.9.1