setup.py
author TK Soh <teekaysoh@yahoo.com>
Sun, 13 Jan 2008 06:17:30 +0000
changeset 629 71fa0ab981e8
parent 476 617c2552703b
child 938 69675240256b
permissions -rw-r--r--
hggtk/history: only refresh log window if new rev is checked out
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
149
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     1
# setup.py
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     2
# A distutils setup script to register TortoiseHg COM server
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     3
#
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     4
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
     5
# To build stand-alone package, use 'python setup.py py2exe' then use
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
     6
# InnoSetup to build the installer.  By default, the installer will be
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
     7
# created as dist\Output\setup.exe.
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
     8
399
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
     9
# To build a source installer for use with the Mercurial NSI
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    10
# installer, use 
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    11
# 'python setup.py bdist_wininst --install-script=thg_postinstall.py'
149
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    12
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    13
import time
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    14
import sys
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    15
import os
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    16
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    17
# ModuleFinder can't handle runtime changes to __path__, but win32com uses them
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    18
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    19
try:
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    20
    # if this doesn't work, try import modulefinder
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    21
    import py2exe.mf as modulefinder
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    22
    import win32com
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    23
    for p in win32com.__path__[1:]:
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    24
        modulefinder.AddPackagePath("win32com", p)
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    25
    for extra in ["win32com.shell"]: #,"win32com.mapi"
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    26
        __import__(extra)
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    27
        m = sys.modules[extra]
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    28
        for p in m.__path__[1:]:
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    29
            modulefinder.AddPackagePath(extra, p)
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    30
except ImportError:
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    31
    # no build path setup, no worries.
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    32
    pass
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    33
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    34
from distutils.core import setup
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    35
import py2exe
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    36
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    37
_data_files = []
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    38
extra = {}
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    39
hgextmods = []
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    40
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    41
if 'py2exe' in sys.argv:
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    42
    # FIXME: quick hack to include installed hg extensions in py2exe binary
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    43
    import hgext
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    44
    hgextdir = os.path.dirname(hgext.__file__)
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    45
    hgextmods = set(["hgext." + os.path.splitext(f)[0]
254
497323c43ee8 setup: quick hack to force py2exe to include hgext modules
TK Soh <teekaysoh@yahoo.com>
parents: 251
diff changeset
    46
                  for f in os.listdir(hgextdir)])
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    47
    _data_files = [(root, [os.path.join(root, file_) for file_ in files])
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    48
                        for root, dirs, files in os.walk('icons')]
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    49
    extra['windows'] = [{"script":"hggtk/tracelog.py",
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    50
                        "icon_resources": [(1, "icons/tortoise/python.ico")]}]
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    51
    extra['com_server'] = ["tortoisehg"]
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    52
    extra['console'] = ["hg", "hgproc.py", "hgutils/simplemerge"]
399
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    53
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    54
elif 'bdist_msi' in sys.argv or 'bdist_wininst' in sys.argv:
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    55
    # C:\Python25\share\tortoisehg\icons\...
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    56
    _data_files = [(os.path.join('share/tortoisehg', root),
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    57
                [os.path.join(root, file_) for file_ in files])
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    58
                for root, dirs, files in os.walk('icons')]
399
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    59
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    60
    # C:\Python25\share\tortoisehg\*.bat, *.py
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    61
    _data_files.append(('share/tortoisehg',
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    62
        ['hgproc.py', 'hgproc.bat', 'tortoisehg.py']))
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    63
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    64
    # C:\Python25\mercurial\hgrc.d\tortoisehg.rc
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    65
    _data_files.append(('mercurial/hgrc.d', ['installer/tortoisehg.rc']))
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    66
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    67
    # C:\Python25\Scripts\tracelog.bat, thg_postinstall.py
326f53e7e0e6 setup: add bdist_wininst source installer target
Steve Borho <steve@borho.org>
parents: 317
diff changeset
    68
    extra['scripts'] = ['installer/tracelog.bat', 'installer/thg_postinstall.py']
251
ba8e47eb7b6e setup: revise commments on py2exe build
TK Soh <teekaysoh@yahoo.com>
parents: 250
diff changeset
    69
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    70
opts = {
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    71
   "py2exe" : {
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    72
       # Don't pull in all this MFC stuff used by the makepy UI.
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    73
       "excludes" : "pywin,pywin.dialogs,pywin.dialogs.list",
149
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    74
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    75
       # add library files to support PyGtk-based dialogs/windows
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    76
       # Note:
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    77
       #    after py2exe build, copy GTK's etc and lib directories into
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    78
       #    the dist directory created by py2exe.
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    79
       #    also needed is the GTK's share/themes (as dist/share/themes), 
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    80
       #    for dialogs to display in MS-Windows XP theme.
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    81
       "includes" : "pango,atk,pangocairo,cairo,gobject," + ",".join(hgextmods),
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    82
   }
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    83
}
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    84
476
617c2552703b setup: use tortoise version number
Steve Borho <steve@borho.org>
parents: 457
diff changeset
    85
# specify version string, otherwise 'hg identify' will be used:
617c2552703b setup: use tortoise version number
Steve Borho <steve@borho.org>
parents: 457
diff changeset
    86
version = ''
617c2552703b setup: use tortoise version number
Steve Borho <steve@borho.org>
parents: 457
diff changeset
    87
617c2552703b setup: use tortoise version number
Steve Borho <steve@borho.org>
parents: 457
diff changeset
    88
import tortoise.version
617c2552703b setup: use tortoise version number
Steve Borho <steve@borho.org>
parents: 457
diff changeset
    89
tortoise.version.remember_version(version)
617c2552703b setup: use tortoise version number
Steve Borho <steve@borho.org>
parents: 457
diff changeset
    90
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    91
setup(name="TortoiseHg",
476
617c2552703b setup: use tortoise version number
Steve Borho <steve@borho.org>
parents: 457
diff changeset
    92
        version=tortoise.version.get_version(),
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    93
        author='TK Soh',
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    94
        author_email='teekaysoh@gmail.com',
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    95
        url='http://tortoisehg.sourceforge.net',
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    96
        description='Windows shell extension for Mercurial VCS',
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    97
        license='GNU GPL2',
457
1cdede091b78 setup: no longer ship hgwin package
Steve Borho <steve@borho.org>
parents: 399
diff changeset
    98
        packages=['tortoise', 'hggtk'],
317
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
    99
        data_files = _data_files,
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
   100
        options=opts,
dfbc57ca3e0a setup: begin work on MSI source installer
Steve Borho <steve@borho.org>
parents: 314
diff changeset
   101
        **extra
149
cb24a9cc2a90 add support for DLL/EXE with py2exe
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   102
    )