/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
45 by Martin Pool
- add setup.py and install instructions
1
#! /usr/bin/env python
2
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
3
"""Installation script for bzr.
4
Run it with
5
 './setup.py install', or
6
 './setup.py --help' for more options
7
"""
8
9
##
10
# META INFORMATION FOR SETUP
11
12
META_INFO = {'name':         'bzr',
1861.2.12 by Alexander Belchenko
setup.py: get version info from bzrlib
13
             'version':      '<unknown>',
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
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',
19
            }
20
21
BZRLIB = {'packages': ['bzrlib',
22
                       'bzrlib.benchmarks',
23
                       'bzrlib.bundle',
24
                       'bzrlib.bundle.serializer',
25
                       'bzrlib.doc',
26
                       'bzrlib.doc.api',
27
                       'bzrlib.export',
28
                       'bzrlib.plugins',
29
                       'bzrlib.plugins.launchpad',
30
                       'bzrlib.store',
31
                       'bzrlib.store.revision',
32
                       'bzrlib.store.versioned',
33
                       'bzrlib.tests',
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',
42
                       'bzrlib.transport',
43
                       'bzrlib.transport.http',
44
                       'bzrlib.ui',
45
                       'bzrlib.util',
46
                       'bzrlib.util.configobj',
47
                       'bzrlib.util.effbot.org',
48
                       'bzrlib.util.elementtree',
49
                      ],
50
         }
51
52
1861.2.12 by Alexander Belchenko
setup.py: get version info from bzrlib
53
######################################################################
1185.29.5 by Wouter van Heyst
Add reinvocation code to ensure setup.py is run by python2.4
54
# Reinvocation stolen from bzr, we need python2.4 by virtue of bzr_man
55
# including bzrlib.help
56
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
57
import os
58
import sys
1185.29.5 by Wouter van Heyst
Add reinvocation code to ensure setup.py is run by python2.4
59
60
try:
61
    version_info = sys.version_info
62
except AttributeError:
63
    version_info = 1, 5 # 1.5 or older
64
65
REINVOKE = "__BZR_REINVOKE"
66
NEED_VERS = (2, 4)
67
KNOWN_PYTHONS = ('python2.4',)
68
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:
74
            try:
75
                os.execvp(python, [python] + sys.argv)
76
            except OSError:
77
                pass
78
    print >>sys.stderr, "bzr: error: cannot find a suitable python interpreter"
79
    print >>sys.stderr, "  (need %d.%d or later)" % NEED_VERS
80
    sys.exit(1)
81
if hasattr(os, "unsetenv"):
82
    os.unsetenv(REINVOKE)
83
84
45 by Martin Pool
- add setup.py and install instructions
85
from distutils.core import setup
1185.23.1 by Aaron Bentley
win32 setup fixes from Belchenko
86
from distutils.command.install_scripts import install_scripts
1185.29.3 by Wouter van Heyst
Create bzr.1 manpage from setup.py
87
from distutils.command.build import build
1185.1.40 by Robert Collins
Merge what applied of Alexander Belchenko's win32 patch.
88
89
###############################
90
# Overridden distutils actions
91
###############################
92
1185.23.1 by Aaron Bentley
win32 setup fixes from Belchenko
93
class my_install_scripts(install_scripts):
94
    """ Customized install_scripts distutils action.
1185.1.40 by Robert Collins
Merge what applied of Alexander Belchenko's win32 patch.
95
    Create bzr.bat for win32.
96
    """
97
    def run(self):
1185.23.1 by Aaron Bentley
win32 setup fixes from Belchenko
98
        import os
99
        import sys
100
101
        install_scripts.run(self)   # standard action
102
1185.1.40 by Robert Collins
Merge what applied of Alexander Belchenko's win32 patch.
103
        if sys.platform == "win32":
1185.23.1 by Aaron Bentley
win32 setup fixes from Belchenko
104
            try:
105
                scripts_dir = self.install_dir
1861.2.10 by Alexander Belchenko
setup.py: improved bzr.bat creation
106
                script_path = self._quoted_path(os.path.join(scripts_dir,
107
                                                             "bzr"))
108
                python_exe = self._quoted_path(sys.executable)
109
                args = self._win_batch_args()
110
                batch_str = "@%s %s %s" % (python_exe, script_path, args)
1185.23.1 by Aaron Bentley
win32 setup fixes from Belchenko
111
                batch_path = script_path + ".bat"
112
                f = file(batch_path, "w")
113
                f.write(batch_str)
114
                f.close()
115
                print "Created:", batch_path
116
            except Exception, e:
117
                print "ERROR: Unable to create %s: %s" % (batch_path, e)
1185.1.40 by Robert Collins
Merge what applied of Alexander Belchenko's win32 patch.
118
1861.2.10 by Alexander Belchenko
setup.py: improved bzr.bat creation
119
    def _quoted_path(self, path):
120
        if ' ' in path:
121
            return '"' + path + '"'
122
        else:
123
            return path
124
125
    def _win_batch_args(self):
126
        if os.name == 'nt':
127
            return '%*'
128
        else:
129
            return '%1 %2 %3 %4 %5 %6 %7 %8 %9'
130
#/class my_install_scripts
131
1185.1.40 by Robert Collins
Merge what applied of Alexander Belchenko's win32 patch.
132
1185.29.3 by Wouter van Heyst
Create bzr.1 manpage from setup.py
133
class bzr_build(build):
134
    """Customized build distutils action.
135
    Generate bzr.1.
136
    """
137
    def run(self):
138
        build.run(self)
139
1551.3.11 by Aaron Bentley
Merge from Robert
140
        import generate_docs
141
        generate_docs.main(argv=["bzr", "man"])
1185.29.3 by Wouter van Heyst
Create bzr.1 manpage from setup.py
142
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
143
1185.1.40 by Robert Collins
Merge what applied of Alexander Belchenko's win32 patch.
144
########################
145
## Setup
146
########################
147
1861.2.12 by Alexander Belchenko
setup.py: get version info from bzrlib
148
def get_bzr_version():
149
    import bzrlib
150
    return bzrlib.__version__
151
152
1860.1.2 by Alexander Belchenko
setup.py:
153
if 'bdist_wininst' in sys.argv:
1860.1.3 by Alexander Belchenko
python-installer:
154
    import glob
155
    # doc files
156
    docs = glob.glob('doc/*.htm') + ['doc/default.css']
1860.1.2 by Alexander Belchenko
setup.py:
157
    # python's distutils-based win32 installer
158
    ARGS = {'scripts': ['bzr', 'tools/win32/bzr-win32-bdist-postinstall.py'],
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
159
            # install the txt files from bzrlib.doc.api.
160
            'package_data': {'bzrlib': ['doc/api/*.txt']},
1860.1.3 by Alexander Belchenko
python-installer:
161
            # help pages
1861.2.6 by Alexander Belchenko
branding: change Bazaar-NG to Bazaar
162
            'data_files': [('Doc/Bazaar', docs)],
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
163
           }
1821.1.2 by Alexander Belchenko
resurrected python's distutils based installer for win32
164
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
165
    ARGS.update(META_INFO)
1861.2.12 by Alexander Belchenko
setup.py: get version info from bzrlib
166
    ARGS.update({'version': get_bzr_version()})
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
167
    ARGS.update(BZRLIB)
168
    
169
    setup(**ARGS)
170
1860.1.2 by Alexander Belchenko
setup.py:
171
elif 'py2exe' in sys.argv:
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
172
    # py2exe setup
173
    import py2exe
174
175
    # pick real bzr version
176
    import bzrlib
177
178
    version_number = []
179
    for i in bzrlib.version_info[:4]:
180
        try:
181
            i = int(i)
182
        except ValueError:
183
            i = 0
184
        version_number.append(str(i))
185
    version_str = '.'.join(version_number)
186
187
    target = py2exe.build_exe.Target(script = "bzr",
188
                                     dest_base = "bzr",
189
                                     icon_resources = [(0,'bzr.ico')],
190
                                     name = META_INFO['name'],
191
                                     version = version_str,
192
                                     description = META_INFO['description'],
193
                                     author = META_INFO['author'],
194
                                     copyright = "(c) Canonical Ltd, 2005-2006",
195
                                     company_name = "Canonical Ltd.",
196
                                     comments = META_INFO['description'],
197
                                    )
198
    options_list = {"py2exe": {"packages": BZRLIB['packages'] +
199
                                           ['elementtree'],
1860.1.2 by Alexander Belchenko
setup.py:
200
                               "excludes": ["Tkinter", "medusa"],
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
201
                               "dist_dir": "win32_bzr.exe",
202
                              },
203
                   }
204
    setup(options=options_list,
205
          console=[target,
206
                   'tools/win32/bzr_postinstall.py',
207
                  ],
208
          zipfile='lib/library.zip')
1860.1.2 by Alexander Belchenko
setup.py:
209
210
else:
211
    # std setup
212
    ARGS = {'scripts': ['bzr'],
213
            'data_files': [('man/man1', ['bzr.1'])],
214
            # install the txt files from bzrlib.doc.api.
215
            'package_data': {'bzrlib': ['doc/api/*.txt']},
216
            'cmdclass': {'build': bzr_build,
217
                         'install_scripts': my_install_scripts,
218
                        },
219
           }
220
    
221
    ARGS.update(META_INFO)
1861.2.12 by Alexander Belchenko
setup.py: get version info from bzrlib
222
    ARGS.update({'version': get_bzr_version()})
1860.1.2 by Alexander Belchenko
setup.py:
223
    ARGS.update(BZRLIB)
224
225
    setup(**ARGS)