/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to setup.py

  • Committer: Robert Collins
  • Date: 2006-11-08 00:36:30 UTC
  • mto: This revision was merged to the branch mainline in revision 2124.
  • Revision ID: robertc@robertcollins.net-20061108003630-feb31613c83f7096
(Robert Collins) Extend the problem reporting command line UI to use
apport to report more detailed diagnostics which should help in in getting
faults reported in Malone and provides the basis for capturing more
information such as detailed logging data from the current invocation of
bzr in the future (without cluttering 'bzr.log' unnecessarily).
apport is available from Ubuntu Edgy onwards.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#! /usr/bin/env python
2
2
 
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.
 
4
Run it with
 
5
 './setup.py install', or
 
6
 './setup.py --help' for more options
 
7
"""
 
8
 
 
9
import os
 
10
import sys
 
11
 
 
12
import bzrlib
 
13
 
 
14
##
 
15
# META INFORMATION FOR SETUP
 
16
 
 
17
META_INFO = {'name':         'bzr',
 
18
             'version':      bzrlib.__version__,
 
19
             'author':       'Canonical Ltd',
 
20
             'author_email': 'bazaar-ng@lists.ubuntu.com',
 
21
             'url':          'http://www.bazaar-vcs.org/',
 
22
             'description':  'Friendly distributed version control system',
 
23
             'license':      'GNU GPL v2',
 
24
            }
 
25
 
 
26
# The list of packages is automatically generated later. Add other things
 
27
# that are part of BZRLIB here.
 
28
BZRLIB = {}
 
29
 
 
30
PKG_DATA = {# install files from selftest suite
 
31
            'package_data': {'bzrlib': ['doc/api/*.txt',
 
32
                                        'tests/test_patches_data/*',
 
33
                                       ]},
 
34
           }
 
35
 
 
36
######################################################################
 
37
# Reinvocation stolen from bzr, we need python2.4 by virtue of bzr_man
 
38
# including bzrlib.help
 
39
 
 
40
try:
 
41
    version_info = sys.version_info
 
42
except AttributeError:
 
43
    version_info = 1, 5 # 1.5 or older
 
44
 
 
45
REINVOKE = "__BZR_REINVOKE"
 
46
NEED_VERS = (2, 4)
 
47
KNOWN_PYTHONS = ('python2.4',)
 
48
 
 
49
if version_info < NEED_VERS:
 
50
    if not os.environ.has_key(REINVOKE):
 
51
        # mutating os.environ doesn't work in old Pythons
 
52
        os.putenv(REINVOKE, "1")
 
53
        for python in KNOWN_PYTHONS:
 
54
            try:
 
55
                os.execvp(python, [python] + sys.argv)
 
56
            except OSError:
 
57
                pass
 
58
    print >>sys.stderr, "bzr: error: cannot find a suitable python interpreter"
 
59
    print >>sys.stderr, "  (need %d.%d or later)" % NEED_VERS
 
60
    sys.exit(1)
 
61
if getattr(os, "unsetenv", None) is not None:
 
62
    os.unsetenv(REINVOKE)
 
63
 
 
64
 
 
65
def get_bzrlib_packages():
 
66
    """Recurse through the bzrlib directory, and extract the package names"""
 
67
 
 
68
    packages = []
 
69
    base_path = os.path.dirname(os.path.abspath(bzrlib.__file__))
 
70
    for root, dirs, files in os.walk(base_path):
 
71
        if '__init__.py' in files:
 
72
            assert root.startswith(base_path)
 
73
            # Get just the path below bzrlib
 
74
            package_path = root[len(base_path):]
 
75
            # Remove leading and trailing slashes
 
76
            package_path = package_path.strip('\\/')
 
77
            if not package_path:
 
78
                package_name = 'bzrlib'
 
79
            else:
 
80
                package_name = ('bzrlib.' +
 
81
                            package_path.replace('/', '.').replace('\\', '.'))
 
82
            packages.append(package_name)
 
83
    return sorted(packages)
 
84
 
 
85
 
 
86
BZRLIB['packages'] = get_bzrlib_packages()
 
87
 
6
88
 
7
89
from distutils.core import setup
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
 
      scripts=['bzr'])
 
90
from distutils.command.install_scripts import install_scripts
 
91
from distutils.command.build import build
 
92
 
 
93
###############################
 
94
# Overridden distutils actions
 
95
###############################
 
96
 
 
97
class my_install_scripts(install_scripts):
 
98
    """ Customized install_scripts distutils action.
 
99
    Create bzr.bat for win32.
 
100
    """
 
101
    def run(self):
 
102
        import os
 
103
        import sys
 
104
 
 
105
        install_scripts.run(self)   # standard action
 
106
 
 
107
        if sys.platform == "win32":
 
108
            try:
 
109
                scripts_dir = self.install_dir
 
110
                script_path = self._quoted_path(os.path.join(scripts_dir,
 
111
                                                             "bzr"))
 
112
                python_exe = self._quoted_path(sys.executable)
 
113
                args = self._win_batch_args()
 
114
                batch_str = "@%s %s %s" % (python_exe, script_path, args)
 
115
                batch_path = script_path + ".bat"
 
116
                f = file(batch_path, "w")
 
117
                f.write(batch_str)
 
118
                f.close()
 
119
                print "Created:", batch_path
 
120
            except Exception, e:
 
121
                print "ERROR: Unable to create %s: %s" % (batch_path, e)
 
122
 
 
123
    def _quoted_path(self, path):
 
124
        if ' ' in path:
 
125
            return '"' + path + '"'
 
126
        else:
 
127
            return path
 
128
 
 
129
    def _win_batch_args(self):
 
130
        if os.name == 'nt':
 
131
            return '%*'
 
132
        else:
 
133
            return '%1 %2 %3 %4 %5 %6 %7 %8 %9'
 
134
#/class my_install_scripts
 
135
 
 
136
 
 
137
class bzr_build(build):
 
138
    """Customized build distutils action.
 
139
    Generate bzr.1.
 
140
    """
 
141
    def run(self):
 
142
        build.run(self)
 
143
 
 
144
        import generate_docs
 
145
        generate_docs.main(argv=["bzr", "man"])
 
146
 
 
147
 
 
148
########################
 
149
## Setup
 
150
########################
 
151
 
 
152
if 'bdist_wininst' in sys.argv:
 
153
    import glob
 
154
    # doc files
 
155
    docs = glob.glob('doc/*.htm') + ['doc/default.css']
 
156
    # python's distutils-based win32 installer
 
157
    ARGS = {'scripts': ['bzr', 'tools/win32/bzr-win32-bdist-postinstall.py'],
 
158
            # help pages
 
159
            'data_files': [('Doc/Bazaar', docs)],
 
160
           }
 
161
 
 
162
    ARGS.update(META_INFO)
 
163
    ARGS.update(BZRLIB)
 
164
    ARGS.update(PKG_DATA)
 
165
    
 
166
    setup(**ARGS)
 
167
 
 
168
elif 'py2exe' in sys.argv:
 
169
    # py2exe setup
 
170
    import py2exe
 
171
 
 
172
    # pick real bzr version
 
173
    import bzrlib
 
174
 
 
175
    version_number = []
 
176
    for i in bzrlib.version_info[:4]:
 
177
        try:
 
178
            i = int(i)
 
179
        except ValueError:
 
180
            i = 0
 
181
        version_number.append(str(i))
 
182
    version_str = '.'.join(version_number)
 
183
 
 
184
    target = py2exe.build_exe.Target(script = "bzr",
 
185
                                     dest_base = "bzr",
 
186
                                     icon_resources = [(0,'bzr.ico')],
 
187
                                     name = META_INFO['name'],
 
188
                                     version = version_str,
 
189
                                     description = META_INFO['description'],
 
190
                                     author = META_INFO['author'],
 
191
                                     copyright = "(c) Canonical Ltd, 2005-2006",
 
192
                                     company_name = "Canonical Ltd.",
 
193
                                     comments = META_INFO['description'],
 
194
                                    )
 
195
    options_list = {"py2exe": {"packages": BZRLIB['packages'] +
 
196
                                           ['elementtree'],
 
197
                               "excludes": ["Tkinter", "medusa"],
 
198
                               "dist_dir": "win32_bzr.exe",
 
199
                              },
 
200
                   }
 
201
    setup(options=options_list,
 
202
          console=[target,
 
203
                   'tools/win32/bzr_postinstall.py',
 
204
                  ],
 
205
          zipfile='lib/library.zip')
 
206
 
 
207
else:
 
208
    # std setup
 
209
    ARGS = {'scripts': ['bzr'],
 
210
            'data_files': [('man/man1', ['bzr.1'])],
 
211
            'cmdclass': {'build': bzr_build,
 
212
                         'install_scripts': my_install_scripts,
 
213
                        },
 
214
           }
 
215
    
 
216
    ARGS.update(META_INFO)
 
217
    ARGS.update(BZRLIB)
 
218
    ARGS.update(PKG_DATA)
 
219
 
 
220
    setup(**ARGS)