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 |
|
---|
17 | import xpcom
|
---|
18 | import sys
|
---|
19 | import 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 |
|
---|
25 | candidates = ['VBoxPython' + str(sys.version_info[0]) + '_' + str(sys.version_info[1]),
|
---|
26 | 'VBoxPython' + str(sys.version_info[0]),
|
---|
27 | 'VBoxPython']
|
---|
28 | if 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 |
|
---|
39 | cglue = None
|
---|
40 | for m in candidates:
|
---|
41 | try:
|
---|
42 | cglue = __import__(m)
|
---|
43 | break
|
---|
44 | except:
|
---|
45 | pass
|
---|
46 |
|
---|
47 | if platform.system() == 'Darwin':
|
---|
48 | sys.path.remove('/Applications/VirtualBox.app/Contents/MacOS')
|
---|
49 |
|
---|
50 | if cglue == None:
|
---|
51 | raise Exception, "Cannot find VBoxPython module"
|
---|
52 |
|
---|
53 | sys.modules['xpcom._xpcom'] = cglue
|
---|
54 | xpcom._xpcom = cglue
|
---|
55 |
|
---|