VirtualBox

source: vbox/trunk/src/libs/xpcom18a4/python/vboxxpcom.py@ 13371

Last change on this file since 13371 was 12207, checked in by vboxsync, 16 years ago
  • versioned loader
  • Property svn:eol-style set to native
File size: 2.0 KB
Line 
1#
2# Copyright (C) 2008 Sun Microsystems, Inc.
3#
4# This file is part of VirtualBox Open Source Edition (OSE), as
5# available from http://www.virtualbox.org. This file is free software;
6# you can redistribute it and/or modify it under the terms of the GNU
7# General Public License (GPL) as published by the Free Software
8# Foundation, in version 2 as it comes in the "COPYING" file of the
9# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
10# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
11#
12# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
13# Clara, CA 95054 USA or visit http://www.sun.com if you need
14# additional information or have any questions.
15#
16
17import xpcom
18import sys
19import platform
20
21# this code overcomes somewhat unlucky feature of Python, where it searches
22# for binaries in the same place as platfom independent modules, while
23# rest of Python bindings expect _xpcom to be inside xpcom module
24
25candidates = ['VBoxPython' + str(sys.version_info[0]) + '_' + str(sys.version_info[1]),
26 'VBoxPython' + str(sys.version_info[0]),
27 'VBoxPython']
28if platform.system() == 'Darwin':
29 # On Darwin (aka Mac OS X) we know exactly where things are in a normal
30 # VirtualBox installation. Also, there are two versions of python there
31 # (2.3.x and 2.5.x) depending on whether the os is striped or spotty, so
32 # we have to choose the right module to load.
33 #
34 # XXX: This needs to be adjusted for OSE builds. A more general solution would
35 # be to to sed the file during install and inject the VBOX_PATH_APP_PRIVATE_ARCH
36 # and VBOX_PATH_SHARED_LIBS when these are set.
37 sys.path.append('/Applications/VirtualBox.app/Contents/MacOS')
38
39cglue = None
40for m in candidates:
41 try:
42 cglue = __import__(m)
43 break
44 except:
45 pass
46
47if platform.system() == 'Darwin':
48 sys.path.remove('/Applications/VirtualBox.app/Contents/MacOS')
49
50if cglue == None:
51 raise Exception, "Cannot find VBoxPython module"
52
53sys.modules['xpcom._xpcom'] = cglue
54xpcom._xpcom = cglue
55
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette