#
# Copyright (C) 2008 Sun Microsystems, Inc.
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the GNU
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
# 
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
# Clara, CA 95054 USA or visit http://www.sun.com if you need
# additional information or have any questions.
#

import xpcom
import sys
import platform

# this code overcomes somewhat unlucky feature of Python, where it searches
# for binaries in the same place as platfom independent modules, while
# rest of Python bindings expect _xpcom to be inside xpcom module

candidates = ['VBoxPython' + str(sys.version_info[0]) + '_' + str(sys.version_info[1]), 
              'VBoxPython' + str(sys.version_info[0]), 
              'VBoxPython']
if platform.system() == 'Darwin':
    # On Darwin (aka Mac OS X) we know exactly where things are in a normal 
    # VirtualBox installation. Also, there are two versions of python there
    # (2.3.x and 2.5.x) depending on whether the os is striped or spotty, so
    # we have to choose the right module to load.
    # 
    # XXX: This needs to be adjusted for OSE builds. A more general solution would 
    #      be to to sed the file during install and inject the VBOX_PATH_APP_PRIVATE_ARCH
    #      and VBOX_PATH_SHARED_LIBS when these are set.
    sys.path.append('/Applications/VirtualBox.app/Contents/MacOS')

cglue = None
for m in candidates:
   try:
      cglue =  __import__(m)
      break
   except:
      pass

if platform.system() == 'Darwin':
    sys.path.remove('/Applications/VirtualBox.app/Contents/MacOS')

if cglue == None:
    raise Exception, "Cannot find VBoxPython module"

sys.modules['xpcom._xpcom'] = cglue
xpcom._xpcom = cglue

