setup.py
author Germán Póo-Caamaño <gpoo@calcifer.org>
Sun, 20 Jul 2008 09:43:33 -0400
changeset 1181 ab9654ce0550
parent 1179 15415a973353
permissions -rw-r--r--
nautilus: add submenu support and drop opening terminal

# setup.py
# A distutils setup script to register TortoiseHg COM server

# To build stand-alone package, use 'python setup.py py2exe' then use
# InnoSetup to build the installer.  By default, the installer will be
# created as dist\Output\setup.exe.

import time
import sys
import os
from distutils.core import setup

_description = 'Graphical interface for Mercurial VCS'
_scripts = []
_packages = []
_data_files = []
_extra = {}
_options = {}

if os.name == 'nt':
    _description = 'Windows shell extension for Mercurial VCS'
    _packages = ['tortoise', 'hggtk', 'hggtk.vis', 'hggtk.iniparse']
    _data_files = [(root, [os.path.join(root, file_) for file_ in files])
                           for root, dirs, files in os.walk('icons')]

    # ModuleFinder can't handle runtime changes to __path__, but win32com uses them

    try:
        # if this doesn't work, try import modulefinder
        import py2exe.mf as modulefinder
        import win32com
        for p in win32com.__path__[1:]:
            modulefinder.AddPackagePath("win32com", p)
        for extra in ["win32com.shell"]: #,"win32com.mapi"
            __import__(extra)
            m = sys.modules[extra]
            for p in m.__path__[1:]:
                modulefinder.AddPackagePath(extra, p)
    except ImportError:
        # no build path setup, no worries.
        pass

    import py2exe

    hgextmods = []

    if 'py2exe' in sys.argv:
        # FIXME: quick hack to include installed hg extensions in py2exe binary
        import hgext
        hgextdir = os.path.dirname(hgext.__file__)
        hgextmods = set(["hgext." + os.path.splitext(f)[0]
                      for f in os.listdir(hgextdir)])
        _data_files = [(root, [os.path.join(root, file_) for file_ in files])
                            for root, dirs, files in os.walk('icons')]
        extra['windows'] = [
                {"script":"hgproc.py",
                 "icon_resources": [(1, "icons/tortoise/hg.ico")]},
                {"script":"hggtk/tracelog.py",
                 "icon_resources": [(1, "icons/tortoise/python.ico")]}
                ]
        extra['com_server'] = ["tortoisehg"]
        extra['console'] = ["contrib/hg"]

    _options = {
       "py2exe" : {
           # Don't pull in all this MFC stuff used by the makepy UI.
           "excludes" : "pywin,pywin.dialogs,pywin.dialogs.list",
           # add library files to support PyGtk-based dialogs/windows
           # Note:
           #    after py2exe build, copy GTK's etc and lib directories into
           #    the dist directory created by py2exe.
           #    also needed is the GTK's share/themes (as dist/share/themes), 
           #    for dialogs to display in MS-Windows XP theme.
           "includes" : "dbhash,pango,atk,pangocairo,cairo,gobject," + \
                        ",".join(hgextmods),
       }
    }
    _extra['options'] = _options

else: # non-NT; assume Unixish

    _scripts = ['contrib/hgtk']
    _packages = ['hggtk', 'hggtk.vis', 'hggtk.iniparse']
    _data_files = [(os.path.join('share/pixmaps/tortoisehg', root),
        [os.path.join(root, file_) for file_ in files])
        for root, dirs, files in os.walk('icons')]
    _data_files += [('lib/nautilus/extensions-2.0/python', ['contrib/nautilus-thg.py'])]


# specify version string, otherwise 'hg identify' will be used:
version = ''

import tortoise.version
tortoise.version.remember_version(version)

setup(name="TortoiseHg",
        version=tortoise.version.get_version(),
        author='TK Soh',
        author_email='teekaysoh@gmail.com',
        url='http://tortoisehg.sourceforge.net/',
        description=_description,
        license='GNU GPL2',
        scripts=_scripts,
        packages=_packages,
        data_files=_data_files,
        **_extra
    )