1
1
#! /usr/bin/env python
3
# This is an installation script for bzr. Run it with
4
# './setup.py install', or
5
# './setup.py --help' for more options
3
"""Installation script for bzr.
5
'./setup.py install', or
6
'./setup.py --help' for more options
10
# META INFORMATION FOR SETUP
12
META_INFO = {'name': 'bzr',
14
'author': 'Canonical Ltd',
15
'author_email': 'bazaar-ng@lists.ubuntu.com',
16
'url': 'http://www.bazaar-vcs.org/',
17
'description': 'Friendly distributed version control system',
18
'license': 'GNU GPL v2',
21
BZRLIB = {'packages': ['bzrlib',
24
'bzrlib.bundle.serializer',
29
'bzrlib.plugins.launchpad',
31
'bzrlib.store.revision',
32
'bzrlib.store.versioned',
34
'bzrlib.tests.blackbox',
35
'bzrlib.tests.branch_implementations',
36
'bzrlib.tests.bzrdir_implementations',
37
'bzrlib.tests.interrepository_implementations',
38
'bzrlib.tests.interversionedfile_implementations',
39
'bzrlib.tests.repository_implementations',
40
'bzrlib.tests.revisionstore_implementations',
41
'bzrlib.tests.workingtree_implementations',
43
'bzrlib.transport.http',
46
'bzrlib.util.configobj',
47
'bzrlib.util.effbot.org',
48
'bzrlib.util.elementtree',
54
# Reinvocation stolen from bzr, we need python2.4 by virtue of bzr_man
55
# including bzrlib.help
61
version_info = sys.version_info
62
except AttributeError:
63
version_info = 1, 5 # 1.5 or older
65
REINVOKE = "__BZR_REINVOKE"
67
KNOWN_PYTHONS = ('python2.4',)
69
if version_info < NEED_VERS:
70
if not os.environ.has_key(REINVOKE):
71
# mutating os.environ doesn't work in old Pythons
72
os.putenv(REINVOKE, "1")
73
for python in KNOWN_PYTHONS:
75
os.execvp(python, [python] + sys.argv)
78
print >>sys.stderr, "bzr: error: cannot find a suitable python interpreter"
79
print >>sys.stderr, " (need %d.%d or later)" % NEED_VERS
81
if hasattr(os, "unsetenv"):
7
85
from distutils.core import setup
12
author_email='mbp@sourcefrog.net',
13
url='http://www.bazaar-ng.org/',
14
description='Friendly distributed version control system',
86
from distutils.command.install_scripts import install_scripts
87
from distutils.command.build import build
89
###############################
90
# Overridden distutils actions
91
###############################
93
class my_install_scripts(install_scripts):
94
""" Customized install_scripts distutils action.
95
Create bzr.bat for win32.
101
install_scripts.run(self) # standard action
103
if sys.platform == "win32":
105
scripts_dir = self.install_dir
106
script_path = os.path.join(scripts_dir, "bzr")
107
batch_str = "@%s %s %%*\n" % (sys.executable, script_path)
108
batch_path = script_path + ".bat"
109
f = file(batch_path, "w")
112
print "Created:", batch_path
114
print "ERROR: Unable to create %s: %s" % (batch_path, e)
117
class bzr_build(build):
118
"""Customized build distutils action.
125
generate_docs.main(argv=["bzr", "man"])
128
########################
130
########################
132
if not ('py2exe' in sys.argv):
134
ARGS = {'scripts': ['bzr'],
135
'cmdclass': {'build': bzr_build,
136
'install_scripts': my_install_scripts,
138
'data_files': [('man/man1', ['bzr.1'])],
139
# install the txt files from bzrlib.doc.api.
140
'package_data': {'bzrlib': ['doc/api/*.txt']},
142
ARGS.update(META_INFO)
151
# pick real bzr version
155
for i in bzrlib.version_info[:4]:
160
version_number.append(str(i))
161
version_str = '.'.join(version_number)
163
target = py2exe.build_exe.Target(script = "bzr",
165
icon_resources = [(0,'bzr.ico')],
166
name = META_INFO['name'],
167
version = version_str,
168
description = META_INFO['description'],
169
author = META_INFO['author'],
170
copyright = "(c) Canonical Ltd, 2005-2006",
171
company_name = "Canonical Ltd.",
172
comments = META_INFO['description'],
174
options_list = {"py2exe": {"packages": BZRLIB['packages'] +
176
"dist_dir": "win32_bzr.exe",
179
setup(options=options_list,
181
'tools/win32/bzr_postinstall.py',
182
'tools/bzr_test_dependencies.py',
184
zipfile='lib/library.zip')