Package flumotion :: Package component :: Package producers :: Module checks
[hide private]

Source Code for Module flumotion.component.producers.checks

  1  # -*- Mode: Python -*- 
  2  # vi:si:et:sw=4:sts=4:ts=4 
  3   
  4  # Flumotion - a streaming media server 
  5  # Copyright (C) 2004,2005,2006,2007,2008,2009 Fluendo, S.L. 
  6  # Copyright (C) 2010,2011 Flumotion Services, S.A. 
  7  # All rights reserved. 
  8  # 
  9  # This file may be distributed and/or modified under the terms of 
 10  # the GNU Lesser General Public License version 2.1 as published by 
 11  # the Free Software Foundation. 
 12  # This file is distributed without any warranty; without even the implied 
 13  # warranty of merchantability or fitness for a particular purpose. 
 14  # See "LICENSE.LGPL" in the source distribution for more information. 
 15  # 
 16  # Headers in this file shall remain intact. 
 17   
 18  from twisted.internet import defer 
 19   
 20  from flumotion.common import messages 
 21  from flumotion.common.i18n import N_, gettexter 
 22   
 23  __version__ = "$Rev$" 
 24  T_ = gettexter() 
 25   
 26   
27 -def get_gst_version(gst):
28 if hasattr(gst, 'get_gst_version'): 29 return gst.get_gst_version() 30 elif hasattr(gst, 'version'): 31 return gst.version() 32 else: 33 return gst.gst_version + (0, )
34 35
36 -def get_pygst_version(gst):
37 if hasattr(gst, 'get_pygst_version'): 38 return gst.get_pygst_version() 39 else: 40 return gst.pygst_version + (0, )
41 42
43 -def checkTicket347():
44 """ 45 Check for a recent enough PyGTK to not leak python integers in message 46 processing (mostly affects soundcard, firewire) 47 """ 48 result = messages.Result() 49 import pygtk 50 pygtk.require('2.0') 51 import gobject 52 # Really, we want to check for pygobject_version, but that doesn't exist in 53 # all versions of pygtk, and this check is sufficient. 54 (major, minor, nano) = gobject.pygtk_version 55 if (major, minor, nano) < (2, 8, 6): 56 m = messages.Warning(T_( 57 N_("Version %d.%d.%d of the PyGTK library contains " 58 "a memory leak.\n"), 59 major, minor, nano), 60 mid='ticket-347') 61 m.add(T_(N_("The Soundcard and Firewire sources may leak a lot of " 62 "memory as a result, and would need to be restarted " 63 "frequently.\n"))) 64 m.add(T_(N_("Please upgrade '%s' to version %s or later."), 65 'pygtk', '2.8.6')) 66 result.add(m) 67 68 result.succeed(None) 69 return defer.succeed(result)
70 71
72 -def checkTicket348():
73 result = messages.Result() 74 import pygst 75 pygst.require('0.10') 76 import gst 77 (major, minor, nano) = gst.pygst_version 78 if (major, minor, nano) < (0, 10, 3): 79 m = messages.Warning(T_( 80 N_("Version %d.%d.%d of the gst-python library contains " 81 "a large memory leak.\n"), 82 major, minor, nano), 83 mid='ticket-348') 84 m.add(T_(N_("The Soundcard and Firewire sources may leak a lot of " 85 "memory as a result, and need to be restarted frequently.\n"))) 86 m.add(T_(N_("Please upgrade '%s' to version %s or later."), 87 'gst-python', '0.10.3')) 88 result.add(m) 89 90 result.succeed(None) 91 return defer.succeed(result)
92 93
94 -def checkTicket349():
95 result = messages.Result() 96 import pygst 97 pygst.require('0.10') 98 import gst 99 100 if get_gst_version(gst) < (0, 10, 4, 1): 101 major, minor, micro, nano = get_gst_version(gst) 102 m = messages.Error(T_( 103 N_("Version %d.%d.%d of the GStreamer library is too old.\n"), 104 major, minor, micro), 105 mid='ticket-349') 106 m.add(T_(N_("The '%s' component needs a newer version of '%s'.\n"), 107 'looper', 'gstreamer')) 108 m.add(T_(N_("Please upgrade '%s' to version %s or later."), 109 'gstreamer', '0.10.5')) 110 result.add(m) 111 112 if get_pygst_version(gst) < (0, 10, 3, 1): 113 major, minor, micro, nano = get_pygst_version(gst) 114 m = messages.Error(T_( 115 N_("Version %d.%d.%d of the gst-python library is too old.\n"), 116 major, minor, micro), 117 mid='ticket-349') 118 m.add(T_(N_("The '%s' component needs a newer version of '%s'.\n"), 119 'looper', 'gst-python')) 120 m.add(T_(N_("Please upgrade '%s' to version %s or later."), 121 'gst-python', '0.10.4')) 122 result.add(m) 123 124 result.succeed(None) 125 return defer.succeed(result)
126