~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to setup.py

merge merge tweaks from aaron, which includes latest .dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#! /usr/bin/env python
2
2
 
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',
13
 
             'version':      '<unknown>',
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
 
 
53
 
######################################################################
54
 
# Reinvocation stolen from bzr, we need python2.4 by virtue of bzr_man
55
 
# including bzrlib.help
56
 
 
57
 
import os
58
 
import sys
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
 
 
 
3
# This is an installation script for bzr.  Run it with
 
4
# './setup.py install', or
 
5
# './setup.py --help' for more options
84
6
 
85
7
from distutils.core import setup
86
 
from distutils.command.install_scripts import install_scripts
87
 
from distutils.command.build import build
88
 
 
89
 
###############################
90
 
# Overridden distutils actions
91
 
###############################
92
 
 
93
 
class my_install_scripts(install_scripts):
94
 
    """ Customized install_scripts distutils action.
95
 
    Create bzr.bat for win32.
96
 
    """
97
 
    def run(self):
98
 
        import os
99
 
        import sys
100
 
 
101
 
        install_scripts.run(self)   # standard action
102
 
 
103
 
        if sys.platform == "win32":
104
 
            try:
105
 
                scripts_dir = self.install_dir
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)
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)
118
 
 
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
 
 
132
 
 
133
 
class bzr_build(build):
134
 
    """Customized build distutils action.
135
 
    Generate bzr.1.
136
 
    """
137
 
    def run(self):
138
 
        build.run(self)
139
 
 
140
 
        import generate_docs
141
 
        generate_docs.main(argv=["bzr", "man"])
142
 
 
143
 
 
144
 
########################
145
 
## Setup
146
 
########################
147
 
 
148
 
def get_bzr_version():
149
 
    import bzrlib
150
 
    return bzrlib.__version__
151
 
 
152
 
 
153
 
if 'bdist_wininst' in sys.argv:
154
 
    import glob
155
 
    # doc files
156
 
    docs = glob.glob('doc/*.htm') + ['doc/default.css']
157
 
    # python's distutils-based win32 installer
158
 
    ARGS = {'scripts': ['bzr', 'tools/win32/bzr-win32-bdist-postinstall.py'],
159
 
            # install the txt files from bzrlib.doc.api.
160
 
            'package_data': {'bzrlib': ['doc/api/*.txt']},
161
 
            # help pages
162
 
            'data_files': [('Doc/Bazaar', docs)],
163
 
           }
164
 
 
165
 
    ARGS.update(META_INFO)
166
 
    ARGS.update({'version': get_bzr_version()})
167
 
    ARGS.update(BZRLIB)
168
 
    
169
 
    setup(**ARGS)
170
 
 
171
 
elif 'py2exe' in sys.argv:
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'],
200
 
                               "excludes": ["Tkinter", "medusa"],
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')
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)
222
 
    ARGS.update({'version': get_bzr_version()})
223
 
    ARGS.update(BZRLIB)
224
 
 
225
 
    setup(**ARGS)
 
8
 
 
9
setup(name='bzr',
 
10
      version='0.0.0',
 
11
      author='Martin Pool',
 
12
      author_email='mbp@sourcefrog.net',
 
13
      url='http://www.bazaar-ng.org/',
 
14
      description='Friendly distributed version control system',
 
15
      license='GNU GPL v2',
 
16
      packages=['bzrlib',
 
17
                'bzrlib.plugins',
 
18
                'bzrlib.selftest',
 
19
                'bzrlib.util',
 
20
                'bzrlib.util.elementtree',
 
21
                'bzrlib.util.effbot.org',
 
22
                ],
 
23
      scripts=['bzr'])