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  | 
||
| 
1930.3.1
by John Arbash Meinel
 Change setup.py to auto-generate the list of packages to install  | 
9  | 
import os  | 
| 
3185.1.7
by Martin Pool
 Always take README text from the right directory (thanks jam)  | 
10  | 
import os.path  | 
| 
1930.3.1
by John Arbash Meinel
 Change setup.py to auto-generate the list of packages to install  | 
11  | 
import sys  | 
12  | 
||
| 
3260.1.2
by Alexander Belchenko
 use sys.version_info  | 
13  | 
if sys.version_info < (2, 4):  | 
| 
3260.1.1
by Alexander Belchenko
 setup.py script explicitly checks for Python version. (#200569)  | 
14  | 
sys.stderr.write("[ERROR] Not a supported Python version. Need 2.4+\n")  | 
15  | 
sys.exit(1)  | 
|
16  | 
||
| 
3185.1.7
by Martin Pool
 Always take README text from the right directory (thanks jam)  | 
17  | 
# NOTE: The directory containing setup.py, whether run by 'python setup.py' or
 | 
18  | 
# './setup.py' or the equivalent with another path, should always be at the
 | 
|
19  | 
# start of the path, so this should find the right one...
 | 
|
| 
1861.2.21
by Alexander Belchenko
 setup.py: automatically grab version info from bzrlib  | 
20  | 
import bzrlib  | 
21  | 
||
| 
3185.1.7
by Martin Pool
 Always take README text from the right directory (thanks jam)  | 
22  | 
def get_long_description():  | 
23  | 
dirname = os.path.dirname(__file__)  | 
|
24  | 
readme = os.path.join(dirname, 'README')  | 
|
25  | 
f = open(readme, 'rb')  | 
|
26  | 
try:  | 
|
27  | 
return f.read()  | 
|
28  | 
finally:  | 
|
29  | 
f.close()  | 
|
30  | 
||
31  | 
||
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
32  | 
##
 | 
33  | 
# META INFORMATION FOR SETUP
 | 
|
| 
3185.1.2
by Martin Pool
 Add more metadata to setup.py (#183391)  | 
34  | 
# see http://docs.python.org/dist/meta-data.html
 | 
35  | 
META_INFO = {  | 
|
36  | 
'name': 'bzr',  | 
|
37  | 
'version': bzrlib.__version__,  | 
|
38  | 
'author': 'Canonical Ltd',  | 
|
39  | 
'author_email': 'bazaar@lists.canonical.com',  | 
|
40  | 
'url': 'http://www.bazaar-vcs.org/',  | 
|
41  | 
'description': 'Friendly distributed version control system',  | 
|
42  | 
'license': 'GNU GPL v2',  | 
|
43  | 
'download_url': 'http://bazaar-vcs.org/Download',  | 
|
| 
3185.1.7
by Martin Pool
 Always take README text from the right directory (thanks jam)  | 
44  | 
'long_description': get_long_description(),  | 
| 
3185.1.2
by Martin Pool
 Add more metadata to setup.py (#183391)  | 
45  | 
'classifiers': [  | 
46  | 
'Development Status :: 6 - Mature',  | 
|
47  | 
'Environment :: Console',  | 
|
48  | 
'Intended Audience :: Developers',  | 
|
49  | 
'Intended Audience :: System Administrators',  | 
|
50  | 
'License :: OSI Approved :: GNU General Public License (GPL)',  | 
|
51  | 
'Operating System :: Microsoft :: Windows',  | 
|
52  | 
'Operating System :: OS Independent',  | 
|
53  | 
'Operating System :: POSIX',  | 
|
54  | 
'Programming Language :: Python',  | 
|
55  | 
'Programming Language :: C',  | 
|
56  | 
'Topic :: Software Development :: Version Control',  | 
|
57  | 
        ],
 | 
|
58  | 
    }
 | 
|
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
59  | 
|
| 
1930.3.3
by John Arbash Meinel
 Fix a stupid error in code declaration order  | 
60  | 
# The list of packages is automatically generated later. Add other things
 | 
61  | 
# that are part of BZRLIB here.
 | 
|
62  | 
BZRLIB = {}  | 
|
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
63  | 
|
| 
1911.1.1
by Alexander Belchenko
 setup.py: need to install data files for selftest from bzrlib/tests/test_patched_data  | 
64  | 
PKG_DATA = {# install files from selftest suite  | 
65  | 
'package_data': {'bzrlib': ['doc/api/*.txt',  | 
|
66  | 
'tests/test_patches_data/*',  | 
|
| 
3089.3.6
by Ian Clatworthy
 make help topics more discoverable  | 
67  | 
'help_topics/en/*.txt',  | 
| 
1911.1.1
by Alexander Belchenko
 setup.py: need to install data files for selftest from bzrlib/tests/test_patched_data  | 
68  | 
                                       ]},
 | 
69  | 
           }
 | 
|
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
70  | 
|
| 
1185.29.5
by Wouter van Heyst
 Add reinvocation code to ensure setup.py is run by python2.4  | 
71  | 
|
| 
1930.3.1
by John Arbash Meinel
 Change setup.py to auto-generate the list of packages to install  | 
72  | 
def get_bzrlib_packages():  | 
73  | 
"""Recurse through the bzrlib directory, and extract the package names"""  | 
|
74  | 
||
75  | 
packages = []  | 
|
76  | 
base_path = os.path.dirname(os.path.abspath(bzrlib.__file__))  | 
|
77  | 
for root, dirs, files in os.walk(base_path):  | 
|
78  | 
if '__init__.py' in files:  | 
|
79  | 
assert root.startswith(base_path)  | 
|
80  | 
            # Get just the path below bzrlib
 | 
|
81  | 
package_path = root[len(base_path):]  | 
|
82  | 
            # Remove leading and trailing slashes
 | 
|
83  | 
package_path = package_path.strip('\\/')  | 
|
84  | 
if not package_path:  | 
|
85  | 
package_name = 'bzrlib'  | 
|
86  | 
else:  | 
|
87  | 
package_name = ('bzrlib.' +  | 
|
88  | 
package_path.replace('/', '.').replace('\\', '.'))  | 
|
89  | 
packages.append(package_name)  | 
|
90  | 
return sorted(packages)  | 
|
91  | 
||
92  | 
||
| 
1930.3.3
by John Arbash Meinel
 Fix a stupid error in code declaration order  | 
93  | 
BZRLIB['packages'] = get_bzrlib_packages()  | 
94  | 
||
95  | 
||
| 
45
by Martin Pool
 - add setup.py and install instructions  | 
96  | 
from distutils.core import setup  | 
| 
1185.23.1
by Aaron Bentley
 win32 setup fixes from Belchenko  | 
97  | 
from distutils.command.install_scripts import install_scripts  | 
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
98  | 
from distutils.command.install_data import install_data  | 
| 
1185.29.3
by Wouter van Heyst
 Create bzr.1 manpage from setup.py  | 
99  | 
from distutils.command.build import build  | 
| 
1185.1.40
by Robert Collins
 Merge what applied of Alexander Belchenko's win32 patch.  | 
100  | 
|
101  | 
###############################
 | 
|
102  | 
# Overridden distutils actions
 | 
|
103  | 
###############################
 | 
|
104  | 
||
| 
1185.23.1
by Aaron Bentley
 win32 setup fixes from Belchenko  | 
105  | 
class my_install_scripts(install_scripts):  | 
106  | 
""" Customized install_scripts distutils action.  | 
|
| 
1185.1.40
by Robert Collins
 Merge what applied of Alexander Belchenko's win32 patch.  | 
107  | 
    Create bzr.bat for win32.
 | 
108  | 
    """
 | 
|
109  | 
def run(self):  | 
|
| 
1185.23.1
by Aaron Bentley
 win32 setup fixes from Belchenko  | 
110  | 
install_scripts.run(self) # standard action  | 
111  | 
||
| 
1185.1.40
by Robert Collins
 Merge what applied of Alexander Belchenko's win32 patch.  | 
112  | 
if sys.platform == "win32":  | 
| 
1185.23.1
by Aaron Bentley
 win32 setup fixes from Belchenko  | 
113  | 
try:  | 
| 
2662.1.1
by Alexander Belchenko
 allow ``easy_install bzr`` runs without fatal errors. (Alexander Belchenko, #125521)  | 
114  | 
scripts_dir = os.path.join(sys.prefix, 'Scripts')  | 
| 
1861.2.10
by Alexander Belchenko
 setup.py: improved bzr.bat creation  | 
115  | 
script_path = self._quoted_path(os.path.join(scripts_dir,  | 
116  | 
"bzr"))  | 
|
117  | 
python_exe = self._quoted_path(sys.executable)  | 
|
118  | 
args = self._win_batch_args()  | 
|
119  | 
batch_str = "@%s %s %s" % (python_exe, script_path, args)  | 
|
| 
2662.1.1
by Alexander Belchenko
 allow ``easy_install bzr`` runs without fatal errors. (Alexander Belchenko, #125521)  | 
120  | 
batch_path = os.path.join(self.install_dir, "bzr.bat")  | 
| 
1185.23.1
by Aaron Bentley
 win32 setup fixes from Belchenko  | 
121  | 
f = file(batch_path, "w")  | 
122  | 
f.write(batch_str)  | 
|
123  | 
f.close()  | 
|
124  | 
print "Created:", batch_path  | 
|
125  | 
except Exception, e:  | 
|
126  | 
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.  | 
127  | 
|
| 
1861.2.10
by Alexander Belchenko
 setup.py: improved bzr.bat creation  | 
128  | 
def _quoted_path(self, path):  | 
129  | 
if ' ' in path:  | 
|
130  | 
return '"' + path + '"'  | 
|
131  | 
else:  | 
|
132  | 
return path  | 
|
133  | 
||
134  | 
def _win_batch_args(self):  | 
|
| 
2245.4.4
by Alexander Belchenko
 setup.py: fix plain 'python setup.py install' for win98  | 
135  | 
from bzrlib.win32utils import winver  | 
136  | 
if winver == 'Windows NT':  | 
|
| 
1861.2.10
by Alexander Belchenko
 setup.py: improved bzr.bat creation  | 
137  | 
return '%*'  | 
138  | 
else:  | 
|
139  | 
return '%1 %2 %3 %4 %5 %6 %7 %8 %9'  | 
|
140  | 
#/class my_install_scripts
 | 
|
141  | 
||
| 
1185.1.40
by Robert Collins
 Merge what applied of Alexander Belchenko's win32 patch.  | 
142  | 
|
| 
1185.29.3
by Wouter van Heyst
 Create bzr.1 manpage from setup.py  | 
143  | 
class bzr_build(build):  | 
144  | 
"""Customized build distutils action.  | 
|
145  | 
    Generate bzr.1.
 | 
|
146  | 
    """
 | 
|
| 
3759.1.1
by John Arbash Meinel
 Default to requiring extensions.  | 
147  | 
|
| 
1185.29.3
by Wouter van Heyst
 Create bzr.1 manpage from setup.py  | 
148  | 
def run(self):  | 
149  | 
build.run(self)  | 
|
150  | 
||
| 
1551.3.11
by Aaron Bentley
 Merge from Robert  | 
151  | 
import generate_docs  | 
152  | 
generate_docs.main(argv=["bzr", "man"])  | 
|
| 
1185.29.3
by Wouter van Heyst
 Create bzr.1 manpage from setup.py  | 
153  | 
|
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
154  | 
|
| 
1185.1.40
by Robert Collins
 Merge what applied of Alexander Belchenko's win32 patch.  | 
155  | 
########################
 | 
156  | 
## Setup
 | 
|
157  | 
########################
 | 
|
158  | 
||
| 
1739.1.1
by Robert Collins
 First cut at adding pyrex facilities.  | 
159  | 
command_classes = {'install_scripts': my_install_scripts,  | 
| 
2571.3.1
by Alexander Belchenko
 Building Python-based installer for bot Python 2.4 and 2.5  | 
160  | 
'build': bzr_build}  | 
| 
2814.4.1
by Lukáš Lalinský
 Don't abort ``python setup.py install`` if building of a C extension is not possible.  | 
161  | 
from distutils import log  | 
| 
2814.4.2
by Alexander Belchenko
 support for win32  | 
162  | 
from distutils.errors import CCompilerError, DistutilsPlatformError  | 
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
163  | 
from distutils.extension import Extension  | 
| 
1739.1.1
by Robert Collins
 First cut at adding pyrex facilities.  | 
164  | 
ext_modules = []  | 
165  | 
try:  | 
|
166  | 
from Pyrex.Distutils import build_ext  | 
|
167  | 
except ImportError:  | 
|
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
168  | 
have_pyrex = False  | 
| 
1739.1.1
by Robert Collins
 First cut at adding pyrex facilities.  | 
169  | 
    # try to build the extension from the prior generated source.
 | 
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
170  | 
    print
 | 
| 
2617.1.2
by John Arbash Meinel
 Try another form of comment  | 
171  | 
print ("The python package 'Pyrex' is not available."  | 
172  | 
" If the .c files are available,")  | 
|
173  | 
print ("they will be built,"  | 
|
174  | 
" but modifying the .pyx files will not rebuild them.")  | 
|
| 
2617.1.3
by John Arbash Meinel
 Add another blank line to make it show up better  | 
175  | 
    print
 | 
| 
1739.1.4
by Robert Collins
 Fix building of C modules without pyrex installed.  | 
176  | 
from distutils.command.build_ext import build_ext  | 
| 
1739.1.1
by Robert Collins
 First cut at adding pyrex facilities.  | 
177  | 
else:  | 
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
178  | 
have_pyrex = True  | 
| 
3757.2.1
by John Arbash Meinel
 Work around bug #276868 by blacklisting pyrex 0.9.4.1 for that extension  | 
179  | 
from Pyrex.Compiler.Version import version as pyrex_version  | 
| 
2814.4.1
by Lukáš Lalinský
 Don't abort ``python setup.py install`` if building of a C extension is not possible.  | 
180  | 
|
181  | 
||
182  | 
class build_ext_if_possible(build_ext):  | 
|
183  | 
||
| 
3759.1.1
by John Arbash Meinel
 Default to requiring extensions.  | 
184  | 
user_options = build_ext.user_options + [  | 
185  | 
('allow-python-fallback', None,  | 
|
186  | 
         "When an extension cannot be built, allow falling"
 | 
|
187  | 
" back to the pure-python implementation.")  | 
|
188  | 
        ]
 | 
|
189  | 
||
190  | 
def initialize_options(self):  | 
|
191  | 
build_ext.initialize_options(self)  | 
|
192  | 
self.allow_python_fallback = False  | 
|
193  | 
||
| 
2814.4.2
by Alexander Belchenko
 support for win32  | 
194  | 
def run(self):  | 
195  | 
try:  | 
|
196  | 
build_ext.run(self)  | 
|
197  | 
except DistutilsPlatformError, e:  | 
|
| 
3759.1.1
by John Arbash Meinel
 Default to requiring extensions.  | 
198  | 
if not self.allow_python_fallback:  | 
199  | 
log.warn('\n Cannot build extensions.\n'  | 
|
200  | 
                         '  Use --allow-python-fallback to use slower'
 | 
|
201  | 
' python implementations instead.\n')  | 
|
202  | 
                raise
 | 
|
| 
2814.4.4
by Alexander Belchenko
 changes suggested by Aaron and Martin  | 
203  | 
log.warn(str(e))  | 
| 
3759.1.1
by John Arbash Meinel
 Default to requiring extensions.  | 
204  | 
log.warn('\n Extensions cannot be built.\n'  | 
205  | 
' Using the slower Python implementations instead.\n')  | 
|
| 
2814.4.2
by Alexander Belchenko
 support for win32  | 
206  | 
|
| 
2814.4.1
by Lukáš Lalinský
 Don't abort ``python setup.py install`` if building of a C extension is not possible.  | 
207  | 
def build_extension(self, ext):  | 
208  | 
try:  | 
|
209  | 
build_ext.build_extension(self, ext)  | 
|
210  | 
except CCompilerError:  | 
|
| 
3759.1.1
by John Arbash Meinel
 Default to requiring extensions.  | 
211  | 
if not self.allow_python_fallback:  | 
212  | 
log.warn('\n Failed to build "%s".\n'  | 
|
213  | 
                         '  Use --allow-python-fallback to use slower'
 | 
|
214  | 
' python implementations instead.\n'  | 
|
215  | 
% (ext.name,))  | 
|
216  | 
                raise
 | 
|
217  | 
log.warn('\n Building of "%s" extension failed.\n'  | 
|
218  | 
                     '  Using the slower Python implementation instead.'
 | 
|
219  | 
% (ext.name,))  | 
|
| 
2814.4.1
by Lukáš Lalinský
 Don't abort ``python setup.py install`` if building of a C extension is not possible.  | 
220  | 
|
221  | 
||
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
222  | 
# Override the build_ext if we have Pyrex available
 | 
| 
2814.4.1
by Lukáš Lalinský
 Don't abort ``python setup.py install`` if building of a C extension is not possible.  | 
223  | 
command_classes['build_ext'] = build_ext_if_possible  | 
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
224  | 
unavailable_files = []  | 
225  | 
||
| 
2617.1.2
by John Arbash Meinel
 Try another form of comment  | 
226  | 
|
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
227  | 
def add_pyrex_extension(module_name, **kwargs):  | 
228  | 
"""Add a pyrex module to build.  | 
|
229  | 
||
230  | 
    This will use Pyrex to auto-generate the .c file if it is available.
 | 
|
231  | 
    Otherwise it will fall back on the .c file. If the .c file is not
 | 
|
232  | 
    available, it will warn, and not add anything.
 | 
|
233  | 
||
234  | 
    You can pass any extra options to Extension through kwargs. One example is
 | 
|
235  | 
    'libraries = []'.
 | 
|
236  | 
||
237  | 
    :param module_name: The python path to the module. This will be used to
 | 
|
238  | 
        determine the .pyx and .c files to use.
 | 
|
239  | 
    """
 | 
|
240  | 
path = module_name.replace('.', '/')  | 
|
241  | 
pyrex_name = path + '.pyx'  | 
|
242  | 
c_name = path + '.c'  | 
|
243  | 
if have_pyrex:  | 
|
| 
3557.2.7
by Alexander Belchenko
 Pass extra arguments for extensions, and supply WIN32 macro for pyrex.  | 
244  | 
ext_modules.append(Extension(module_name, [pyrex_name], **kwargs))  | 
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
245  | 
else:  | 
246  | 
if not os.path.isfile(c_name):  | 
|
247  | 
unavailable_files.append(c_name)  | 
|
248  | 
else:  | 
|
| 
3557.2.7
by Alexander Belchenko
 Pass extra arguments for extensions, and supply WIN32 macro for pyrex.  | 
249  | 
ext_modules.append(Extension(module_name, [c_name], **kwargs))  | 
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
250  | 
|
251  | 
||
| 
3641.3.30
by John Arbash Meinel
 Rename _parse_btree to _btree_serializer  | 
252  | 
add_pyrex_extension('bzrlib._btree_serializer_c')  | 
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
253  | 
add_pyrex_extension('bzrlib._knit_load_data_c')  | 
| 
3504.4.3
by John Arbash Meinel
 Start working on an extension specifically for win32,  | 
254  | 
if sys.platform == 'win32':  | 
| 
3737.1.3
by John Arbash Meinel
 Move more compatibility code into python-compat.h  | 
255  | 
add_pyrex_extension('bzrlib._dirstate_helpers_c',  | 
256  | 
libraries=['Ws2_32']  | 
|
257  | 
                       )
 | 
|
| 
3557.2.7
by Alexander Belchenko
 Pass extra arguments for extensions, and supply WIN32 macro for pyrex.  | 
258  | 
    # pyrex uses the macro WIN32 to detect the platform, even though it should
 | 
259  | 
    # be using something like _WIN32 or MS_WINDOWS, oh well, we can give it the
 | 
|
260  | 
    # right value.
 | 
|
261  | 
add_pyrex_extension('bzrlib._walkdirs_win32',  | 
|
| 
3557.2.9
by John Arbash Meinel
 Alexander noticed I typed macro instead of macros.  | 
262  | 
define_macros=[('WIN32', None)])  | 
| 
3696.3.10
by Robert Collins
 Review feedback.  | 
263  | 
else:  | 
| 
3757.2.2
by John Arbash Meinel
 Request from Martin, clearly comment the problem.  | 
264  | 
if have_pyrex and pyrex_version == '0.9.4.1':  | 
| 
3757.2.1
by John Arbash Meinel
 Work around bug #276868 by blacklisting pyrex 0.9.4.1 for that extension  | 
265  | 
        # Pyrex 0.9.4.1 fails to compile this extension correctly
 | 
| 
3757.2.2
by John Arbash Meinel
 Request from Martin, clearly comment the problem.  | 
266  | 
        # The code it generates re-uses a "local" pointer and
 | 
267  | 
        # calls "PY_DECREF" after having set it to NULL. (It mixes PY_XDECREF
 | 
|
268  | 
        # which is NULL safe with PY_DECREF which is not.)
 | 
|
| 
3757.2.1
by John Arbash Meinel
 Work around bug #276868 by blacklisting pyrex 0.9.4.1 for that extension  | 
269  | 
print 'Cannot build extension "bzrlib._dirstate_helpers_c" using'  | 
| 
3757.2.2
by John Arbash Meinel
 Request from Martin, clearly comment the problem.  | 
270  | 
print 'your version of pyrex "%s". Please upgrade your pyrex' % (  | 
| 
3757.2.1
by John Arbash Meinel
 Work around bug #276868 by blacklisting pyrex 0.9.4.1 for that extension  | 
271  | 
pyrex_version,)  | 
| 
3757.2.2
by John Arbash Meinel
 Request from Martin, clearly comment the problem.  | 
272  | 
print 'install. For now, the non-compiled (python) version will'  | 
| 
3757.2.1
by John Arbash Meinel
 Work around bug #276868 by blacklisting pyrex 0.9.4.1 for that extension  | 
273  | 
print 'be used instead.'  | 
274  | 
else:  | 
|
275  | 
add_pyrex_extension('bzrlib._dirstate_helpers_c')  | 
|
| 
3696.3.10
by Robert Collins
 Review feedback.  | 
276  | 
add_pyrex_extension('bzrlib._readdir_pyx')  | 
| 
2781.1.1
by Martin Pool
 merge cpatiencediff from Lukas  | 
277  | 
ext_modules.append(Extension('bzrlib._patiencediff_c', ['bzrlib/_patiencediff_c.c']))  | 
| 
2617.1.1
by John Arbash Meinel
 Update setup.py to just skip extensions that are not available.  | 
278  | 
|
279  | 
||
280  | 
if unavailable_files:  | 
|
281  | 
print 'C extension(s) not found:'  | 
|
282  | 
print ' %s' % ('\n '.join(unavailable_files),)  | 
|
283  | 
print 'The python versions will be used instead.'  | 
|
284  | 
    print
 | 
|
285  | 
||
| 
3565.5.9
by Mark Hammond
 Address John's review comments  | 
286  | 
|
| 
3565.5.6
by Mark Hammond
 move tbzr and qbzr py2exe config code into their own functions.  | 
287  | 
def get_tbzr_py2exe_info(includes, excludes, packages, console_targets,  | 
288  | 
gui_targets):  | 
|
289  | 
packages.append('tbzrcommands')  | 
|
290  | 
||
291  | 
    # ModuleFinder can't handle runtime changes to __path__, but
 | 
|
292  | 
    # win32com uses them.  Hook this in so win32com.shell is found.
 | 
|
293  | 
import modulefinder  | 
|
294  | 
import win32com  | 
|
| 
3684.2.1
by Mark Hammond
 include tbzr icons in windows binary distributions  | 
295  | 
import cPickle as pickle  | 
| 
3565.5.6
by Mark Hammond
 move tbzr and qbzr py2exe config code into their own functions.  | 
296  | 
for p in win32com.__path__[1:]:  | 
297  | 
modulefinder.AddPackagePath("win32com", p)  | 
|
298  | 
for extra in ["win32com.shell"]:  | 
|
299  | 
__import__(extra)  | 
|
300  | 
m = sys.modules[extra]  | 
|
301  | 
for p in m.__path__[1:]:  | 
|
302  | 
modulefinder.AddPackagePath(extra, p)  | 
|
303  | 
||
304  | 
    # TBZR points to the TBZR directory
 | 
|
305  | 
tbzr_root = os.environ["TBZR"]  | 
|
306  | 
||
307  | 
    # Ensure tbzrlib itself is on sys.path
 | 
|
308  | 
sys.path.append(tbzr_root)  | 
|
309  | 
||
310  | 
    # Ensure our COM "entry-point" is on sys.path
 | 
|
311  | 
sys.path.append(os.path.join(tbzr_root, "shellext", "python"))  | 
|
312  | 
||
313  | 
packages.append("tbzrlib")  | 
|
| 
3684.2.1
by Mark Hammond
 include tbzr icons in windows binary distributions  | 
314  | 
|
315  | 
    # collect up our icons.
 | 
|
316  | 
cwd = os.getcwd()  | 
|
317  | 
ico_root = os.path.join(tbzr_root, 'tbzrlib', 'resources')  | 
|
| 
3688.3.2
by Mark Hammond
 build the list of icons without changing directory.  | 
318  | 
icos = [] # list of (path_root, relative_ico_path)  | 
319  | 
    # First always bzr's icon and its in the root of the bzr tree.
 | 
|
320  | 
icos.append(('', 'bzr.ico'))  | 
|
321  | 
for root, dirs, files in os.walk(ico_root):  | 
|
322  | 
icos.extend([(ico_root, os.path.join(root, f)[len(ico_root)+1:])  | 
|
323  | 
for f in files if f.endswith('.ico')])  | 
|
324  | 
    # allocate an icon ID for each file and the full path to the ico
 | 
|
325  | 
icon_resources = [(rid, os.path.join(ico_dir, ico_name))  | 
|
326  | 
for rid, (ico_dir, ico_name) in enumerate(icos)]  | 
|
327  | 
    # create a string resource with the mapping.  Might as well save the
 | 
|
328  | 
    # runtime some effort and write a pickle.
 | 
|
329  | 
    # Runtime expects unicode objects with forward-slash seps.
 | 
|
330  | 
fse = sys.getfilesystemencoding()  | 
|
331  | 
map_items = [(f.replace('\\', '/').decode(fse), rid)  | 
|
332  | 
for rid, (_, f) in enumerate(icos)]  | 
|
333  | 
ico_map = dict(map_items)  | 
|
334  | 
    # Create a new resource type of 'ICON_MAP', and use ID=1
 | 
|
335  | 
other_resources = [ ("ICON_MAP", 1, pickle.dumps(ico_map))]  | 
|
| 
3684.2.1
by Mark Hammond
 include tbzr icons in windows binary distributions  | 
336  | 
|
| 
3565.5.6
by Mark Hammond
 move tbzr and qbzr py2exe config code into their own functions.  | 
337  | 
excludes.extend("""pywin pywin.dialogs pywin.dialogs.list  | 
338  | 
win32ui crawler.Crawler""".split())  | 
|
339  | 
||
340  | 
tbzr = dict(  | 
|
341  | 
modules=["tbzr"],  | 
|
342  | 
create_exe = False, # we only want a .dll  | 
|
343  | 
    )
 | 
|
344  | 
com_targets.append(tbzr)  | 
|
345  | 
||
346  | 
    # tbzrcache executables - a "console" version for debugging and a
 | 
|
347  | 
    # GUI version that is generally used.
 | 
|
348  | 
tbzrcache = dict(  | 
|
349  | 
script = os.path.join(tbzr_root, "Scripts", "tbzrcache.py"),  | 
|
| 
3684.2.1
by Mark Hammond
 include tbzr icons in windows binary distributions  | 
350  | 
icon_resources = icon_resources,  | 
351  | 
other_resources = other_resources,  | 
|
| 
3565.5.6
by Mark Hammond
 move tbzr and qbzr py2exe config code into their own functions.  | 
352  | 
    )
 | 
353  | 
console_targets.append(tbzrcache)  | 
|
354  | 
||
355  | 
    # Make a windows version which is the same except for the base name.
 | 
|
356  | 
tbzrcachew = tbzrcache.copy()  | 
|
357  | 
tbzrcachew["dest_base"]="tbzrcachew"  | 
|
358  | 
gui_targets.append(tbzrcachew)  | 
|
359  | 
||
360  | 
    # ditto for the tbzrcommand tool
 | 
|
361  | 
tbzrcommand = dict(  | 
|
362  | 
script = os.path.join(tbzr_root, "Scripts", "tbzrcommand.py"),  | 
|
363  | 
icon_resources = [(0,'bzr.ico')],  | 
|
364  | 
    )
 | 
|
365  | 
console_targets.append(tbzrcommand)  | 
|
366  | 
tbzrcommandw = tbzrcommand.copy()  | 
|
367  | 
tbzrcommandw["dest_base"]="tbzrcommandw"  | 
|
368  | 
gui_targets.append(tbzrcommandw)  | 
|
369  | 
||
370  | 
    # tbzr tests
 | 
|
371  | 
tbzrtest = dict(  | 
|
372  | 
script = os.path.join(tbzr_root, "Scripts", "tbzrtest.py"),  | 
|
373  | 
    )
 | 
|
374  | 
console_targets.append(tbzrtest)  | 
|
375  | 
||
376  | 
    # A utility to see python output from the shell extension - this will
 | 
|
377  | 
    # die when we get a c++ extension
 | 
|
378  | 
    # any .py file from pywin32's win32 lib will do (other than
 | 
|
379  | 
    # win32traceutil itself that is)
 | 
|
380  | 
import winerror  | 
|
381  | 
win32_lib_dir = os.path.dirname(winerror.__file__)  | 
|
382  | 
tracer = dict(script = os.path.join(win32_lib_dir, "win32traceutil.py"),  | 
|
383  | 
dest_base="tbzr_tracer")  | 
|
384  | 
console_targets.append(tracer)  | 
|
385  | 
||
| 
3565.5.9
by Mark Hammond
 Address John's review comments  | 
386  | 
|
| 
3565.5.6
by Mark Hammond
 move tbzr and qbzr py2exe config code into their own functions.  | 
387  | 
def get_qbzr_py2exe_info(includes, excludes, packages):  | 
388  | 
    # PyQt4 itself still escapes the plugin detection code for some reason...
 | 
|
389  | 
packages.append('PyQt4')  | 
|
390  | 
excludes.append('PyQt4.elementtree.ElementTree')  | 
|
391  | 
includes.append('sip') # extension module required for Qt.  | 
|
392  | 
packages.append('pygments') # colorizer for qbzr  | 
|
| 
3697.9.1
by Mark Hammond
 include docutils for tbzr to use formatting bzr help topics as HTML  | 
393  | 
packages.append('docutils') # html formatting  | 
| 
3565.5.6
by Mark Hammond
 move tbzr and qbzr py2exe config code into their own functions.  | 
394  | 
    # but we can avoid many Qt4 Dlls.
 | 
395  | 
dll_excludes.extend(  | 
|
396  | 
"""QtAssistantClient4.dll QtCLucene4.dll QtDesigner4.dll  | 
|
397  | 
        QtHelp4.dll QtNetwork4.dll QtOpenGL4.dll QtScript4.dll
 | 
|
398  | 
        QtSql4.dll QtTest4.dll QtWebKit4.dll QtXml4.dll
 | 
|
399  | 
qscintilla2.dll""".split())  | 
|
400  | 
    # the qt binaries might not be on PATH...
 | 
|
401  | 
qt_dir = os.path.join(sys.prefix, "PyQt4", "bin")  | 
|
402  | 
path = os.environ.get("PATH","")  | 
|
403  | 
if qt_dir.lower() not in [p.lower() for p in path.split(os.pathsep)]:  | 
|
404  | 
os.environ["PATH"] = path + os.pathsep + qt_dir  | 
|
405  | 
||
| 
1739.1.1
by Robert Collins
 First cut at adding pyrex facilities.  | 
406  | 
|
| 
1860.1.2
by Alexander Belchenko
 setup.py:  | 
407  | 
if 'bdist_wininst' in sys.argv:  | 
| 
2691.1.18
by Alexander Belchenko
 teach windows python installer to find docs in all subdirectories  | 
408  | 
def find_docs():  | 
409  | 
docs = []  | 
|
410  | 
for root, dirs, files in os.walk('doc'):  | 
|
411  | 
r = []  | 
|
412  | 
for f in files:  | 
|
| 
3224.2.1
by Alexander Belchenko
 (bialix) Include quick-start-summary.svg file to python-based installer for Windows (bug #192924)  | 
413  | 
if (os.path.splitext(f)[1] in ('.html','.css','.png','.pdf')  | 
414  | 
or f == 'quick-start-summary.svg'):  | 
|
| 
2691.1.18
by Alexander Belchenko
 teach windows python installer to find docs in all subdirectories  | 
415  | 
r.append(os.path.join(root, f))  | 
416  | 
if r:  | 
|
417  | 
relative = root[4:]  | 
|
418  | 
if relative:  | 
|
419  | 
target = os.path.join('Doc\\Bazaar', relative)  | 
|
420  | 
else:  | 
|
421  | 
target = 'Doc\\Bazaar'  | 
|
422  | 
docs.append((target, r))  | 
|
423  | 
return docs  | 
|
424  | 
||
| 
1860.1.2
by Alexander Belchenko
 setup.py:  | 
425  | 
    # python's distutils-based win32 installer
 | 
426  | 
ARGS = {'scripts': ['bzr', 'tools/win32/bzr-win32-bdist-postinstall.py'],  | 
|
| 
2571.3.1
by Alexander Belchenko
 Building Python-based installer for bot Python 2.4 and 2.5  | 
427  | 
'ext_modules': ext_modules,  | 
| 
1860.1.3
by Alexander Belchenko
 python-installer:  | 
428  | 
            # help pages
 | 
| 
2691.1.18
by Alexander Belchenko
 teach windows python installer to find docs in all subdirectories  | 
429  | 
'data_files': find_docs(),  | 
| 
2571.3.1
by Alexander Belchenko
 Building Python-based installer for bot Python 2.4 and 2.5  | 
430  | 
            # for building pyrex extensions
 | 
| 
2814.4.1
by Lukáš Lalinský
 Don't abort ``python setup.py install`` if building of a C extension is not possible.  | 
431  | 
'cmdclass': {'build_ext': build_ext_if_possible},  | 
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
432  | 
           }
 | 
| 
1821.1.2
by Alexander Belchenko
 resurrected python's distutils based installer for win32  | 
433  | 
|
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
434  | 
ARGS.update(META_INFO)  | 
435  | 
ARGS.update(BZRLIB)  | 
|
| 
1911.1.1
by Alexander Belchenko
 setup.py: need to install data files for selftest from bzrlib/tests/test_patched_data  | 
436  | 
ARGS.update(PKG_DATA)  | 
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
437  | 
|
438  | 
setup(**ARGS)  | 
|
439  | 
||
| 
1860.1.2
by Alexander Belchenko
 setup.py:  | 
440  | 
elif 'py2exe' in sys.argv:  | 
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
441  | 
import glob  | 
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
442  | 
    # py2exe setup
 | 
443  | 
import py2exe  | 
|
444  | 
||
445  | 
    # pick real bzr version
 | 
|
446  | 
import bzrlib  | 
|
447  | 
||
448  | 
version_number = []  | 
|
449  | 
for i in bzrlib.version_info[:4]:  | 
|
450  | 
try:  | 
|
451  | 
i = int(i)  | 
|
452  | 
except ValueError:  | 
|
453  | 
i = 0  | 
|
454  | 
version_number.append(str(i))  | 
|
455  | 
version_str = '.'.join(version_number)  | 
|
456  | 
||
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
457  | 
    # An override to install_data used only by py2exe builds, which arranges
 | 
458  | 
    # to byte-compile any .py files in data_files (eg, our plugins)
 | 
|
459  | 
    # Necessary as we can't rely on the user having the relevant permissions
 | 
|
460  | 
    # to the "Program Files" directory to generate them on the fly.
 | 
|
461  | 
class install_data_with_bytecompile(install_data):  | 
|
462  | 
def run(self):  | 
|
463  | 
from distutils.util import byte_compile  | 
|
464  | 
||
465  | 
install_data.run(self)  | 
|
466  | 
||
467  | 
py2exe = self.distribution.get_command_obj('py2exe', False)  | 
|
468  | 
optimize = py2exe.optimize  | 
|
469  | 
compile_names = [f for f in self.outfiles if f.endswith('.py')]  | 
|
470  | 
byte_compile(compile_names,  | 
|
471  | 
optimize=optimize,  | 
|
472  | 
force=self.force, prefix=self.install_dir,  | 
|
473  | 
dry_run=self.dry_run)  | 
|
474  | 
if optimize:  | 
|
475  | 
suffix = 'o'  | 
|
476  | 
else:  | 
|
477  | 
suffix = 'c'  | 
|
478  | 
self.outfiles.extend([f + suffix for f in compile_names])  | 
|
479  | 
    # end of class install_data_with_bytecompile
 | 
|
480  | 
||
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
481  | 
target = py2exe.build_exe.Target(script = "bzr",  | 
482  | 
dest_base = "bzr",  | 
|
483  | 
icon_resources = [(0,'bzr.ico')],  | 
|
484  | 
name = META_INFO['name'],  | 
|
485  | 
version = version_str,  | 
|
486  | 
description = META_INFO['description'],  | 
|
487  | 
author = META_INFO['author'],  | 
|
| 
2232.1.1
by mbp at sourcefrog
 update global copyright to 2007  | 
488  | 
copyright = "(c) Canonical Ltd, 2005-2007",  | 
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
489  | 
company_name = "Canonical Ltd.",  | 
490  | 
comments = META_INFO['description'],  | 
|
491  | 
                                    )
 | 
|
| 
2231.1.1
by Alexander Belchenko
 Python 2.5 fixes for win32 installer  | 
492  | 
|
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
493  | 
packages = BZRLIB['packages']  | 
494  | 
packages.remove('bzrlib')  | 
|
495  | 
packages = [i for i in packages if not i.startswith('bzrlib.plugins')]  | 
|
496  | 
includes = []  | 
|
497  | 
for i in glob.glob('bzrlib\\*.py'):  | 
|
498  | 
module = i[:-3].replace('\\', '.')  | 
|
| 
3193.7.9
by Alexander Belchenko
 Ian's review  | 
499  | 
if module.endswith('__init__'):  | 
500  | 
module = module[:-len('__init__')]  | 
|
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
501  | 
includes.append(module)  | 
502  | 
||
| 
3193.7.7
by Alexander Belchenko
 custom module finder to find additional dependencies for built-in plugins (to bundle additional packages and modules into bzr.exe's library.zip)  | 
503  | 
additional_packages = set()  | 
| 
2231.1.1
by Alexander Belchenko
 Python 2.5 fixes for win32 installer  | 
504  | 
if sys.version.startswith('2.4'):  | 
505  | 
        # adding elementtree package
 | 
|
| 
3193.7.7
by Alexander Belchenko
 custom module finder to find additional dependencies for built-in plugins (to bundle additional packages and modules into bzr.exe's library.zip)  | 
506  | 
additional_packages.add('elementtree')  | 
| 
2234.5.2
by Wouter van Heyst
 (Alexander Belchenko) add windows installer check for python2.5  | 
507  | 
elif sys.version.startswith('2.5'):  | 
| 
3193.7.7
by Alexander Belchenko
 custom module finder to find additional dependencies for built-in plugins (to bundle additional packages and modules into bzr.exe's library.zip)  | 
508  | 
additional_packages.add('xml.etree')  | 
| 
2234.5.2
by Wouter van Heyst
 (Alexander Belchenko) add windows installer check for python2.5  | 
509  | 
else:  | 
510  | 
import warnings  | 
|
511  | 
warnings.warn('Unknown Python version.\n'  | 
|
512  | 
'Please check setup.py script for compatibility.')  | 
|
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
513  | 
|
514  | 
    # Although we currently can't enforce it, we consider it an error for
 | 
|
515  | 
    # py2exe to report any files are "missing".  Such modules we know aren't
 | 
|
516  | 
    # used should be listed here.
 | 
|
517  | 
excludes = """Tkinter psyco ElementPath r_hmac  | 
|
518  | 
                  ImaginaryModule cElementTree elementtree.ElementTree
 | 
|
519  | 
                  Crypto.PublicKey._fastmath
 | 
|
520  | 
                  medusa medusa.filesys medusa.ftp_server
 | 
|
521  | 
                  tools tools.doc_generate
 | 
|
522  | 
resource validate""".split()  | 
|
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
523  | 
dll_excludes = []  | 
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
524  | 
|
| 
2571.3.2
by Alexander Belchenko
 Build pyrex/C extensions for bzr.exe  | 
525  | 
    # email package from std python library use lazy import,
 | 
526  | 
    # so we need to explicitly add all package
 | 
|
| 
3193.7.7
by Alexander Belchenko
 custom module finder to find additional dependencies for built-in plugins (to bundle additional packages and modules into bzr.exe's library.zip)  | 
527  | 
additional_packages.add('email')  | 
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
528  | 
    # And it uses funky mappings to conver to 'Oldname' to 'newname'.  As
 | 
529  | 
    # a result, packages like 'email.Parser' show as missing.  Tell py2exe
 | 
|
530  | 
    # to exclude them.
 | 
|
531  | 
import email  | 
|
532  | 
for oldname in getattr(email, '_LOWERNAMES', []):  | 
|
533  | 
excludes.append("email." + oldname)  | 
|
534  | 
for oldname in getattr(email, '_MIMENAMES', []):  | 
|
535  | 
excludes.append("email.MIME" + oldname)  | 
|
| 
2231.1.1
by Alexander Belchenko
 Python 2.5 fixes for win32 installer  | 
536  | 
|
| 
3087.2.4
by Alexander Belchenko
 Help topics can now be loaded from files (based on Ian's patch, adapted to proper support various windows installers).  | 
537  | 
    # text files for help topis
 | 
| 
3089.3.6
by Ian Clatworthy
 make help topics more discoverable  | 
538  | 
text_topics = glob.glob('bzrlib/help_topics/en/*.txt')  | 
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
539  | 
topics_files = [('lib/help_topics/en', text_topics)]  | 
540  | 
||
541  | 
    # built-in plugins
 | 
|
542  | 
plugins_files = []  | 
|
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
543  | 
    # XXX - should we consider having the concept of an 'official' build,
 | 
544  | 
    # which hard-codes the list of plugins, gets more upset if modules are
 | 
|
545  | 
    # missing, etc?
 | 
|
546  | 
plugins = None # will be a set after plugin sniffing...  | 
|
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
547  | 
for root, dirs, files in os.walk('bzrlib/plugins'):  | 
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
548  | 
if root == 'bzrlib/plugins':  | 
549  | 
plugins = set(dirs)  | 
|
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
550  | 
x = []  | 
551  | 
for i in files:  | 
|
| 
3684.3.1
by Mark Hammond
 pickup l10n files from plugins.  | 
552  | 
if os.path.splitext(i)[1] not in [".py", ".pyd", ".dll", ".mo"]:  | 
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
553  | 
                continue
 | 
554  | 
if i == '__init__.py' and root == 'bzrlib/plugins':  | 
|
555  | 
                continue
 | 
|
556  | 
x.append(os.path.join(root, i))  | 
|
557  | 
if x:  | 
|
| 
3193.7.7
by Alexander Belchenko
 custom module finder to find additional dependencies for built-in plugins (to bundle additional packages and modules into bzr.exe's library.zip)  | 
558  | 
target_dir = root[len('bzrlib/'):] # install to 'plugins/...'  | 
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
559  | 
plugins_files.append((target_dir, x))  | 
| 
3193.7.7
by Alexander Belchenko
 custom module finder to find additional dependencies for built-in plugins (to bundle additional packages and modules into bzr.exe's library.zip)  | 
560  | 
    # find modules for built-in plugins
 | 
561  | 
import tools.package_mf  | 
|
562  | 
mf = tools.package_mf.CustomModuleFinder()  | 
|
563  | 
mf.run_package('bzrlib/plugins')  | 
|
564  | 
packs, mods = mf.get_result()  | 
|
565  | 
additional_packages.update(packs)  | 
|
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
566  | 
includes.extend(mods)  | 
567  | 
||
568  | 
console_targets = [target,  | 
|
569  | 
'tools/win32/bzr_postinstall.py',  | 
|
570  | 
                       ]
 | 
|
571  | 
gui_targets = []  | 
|
572  | 
com_targets = []  | 
|
573  | 
||
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
574  | 
if 'qbzr' in plugins:  | 
| 
3565.5.6
by Mark Hammond
 move tbzr and qbzr py2exe config code into their own functions.  | 
575  | 
get_qbzr_py2exe_info(includes, excludes, packages)  | 
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
576  | 
|
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
577  | 
if "TBZR" in os.environ:  | 
| 
3565.5.9
by Mark Hammond
 Address John's review comments  | 
578  | 
        # TORTOISE_OVERLAYS_MSI_WIN32 must be set to the location of the
 | 
579  | 
        # TortoiseOverlays MSI installer file. It is in the TSVN svn repo and
 | 
|
580  | 
        # can be downloaded from (username=guest, blank password):
 | 
|
581  | 
        # http://tortoisesvn.tigris.org/svn/tortoisesvn/TortoiseOverlays/version-1.0.4/bin/TortoiseOverlays-1.0.4.11886-win32.msi
 | 
|
582  | 
if not os.path.isfile(os.environ.get('TORTOISE_OVERLAYS_MSI_WIN32',  | 
|
583  | 
'<nofile>')):  | 
|
584  | 
raise RuntimeError("Please set TORTOISE_OVERLAYS_MSI_WIN32 to the"  | 
|
585  | 
                               " location of the Win32 TortoiseOverlays .msi"
 | 
|
586  | 
" installer file")  | 
|
| 
3565.5.6
by Mark Hammond
 move tbzr and qbzr py2exe config code into their own functions.  | 
587  | 
get_tbzr_py2exe_info(includes, excludes, packages, console_targets,  | 
588  | 
gui_targets)  | 
|
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
589  | 
else:  | 
590  | 
        # print this warning to stderr as output is redirected, so it is seen
 | 
|
591  | 
        # at build time.  Also to stdout so it appears in the log
 | 
|
592  | 
for f in (sys.stderr, sys.stdout):  | 
|
593  | 
print >> f, \  | 
|
594  | 
                "Skipping TBZR binaries - please set TBZR to a directory to enable"
 | 
|
| 
3193.7.3
by Alexander Belchenko
 bzr.exe: move builtin plugins (launchpad, multiparent) out of library.zip to plugins directory  | 
595  | 
|
| 
3514.1.1
by John Arbash Meinel
 Updates to allow building with mingw, and to exclude Vista system dlls  | 
596  | 
    # MSWSOCK.dll is a system-specific library, which py2exe accidentally pulls
 | 
597  | 
    # in on Vista.
 | 
|
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
598  | 
dll_excludes.append("MSWSOCK.dll")  | 
| 
3193.7.7
by Alexander Belchenko
 custom module finder to find additional dependencies for built-in plugins (to bundle additional packages and modules into bzr.exe's library.zip)  | 
599  | 
options_list = {"py2exe": {"packages": packages + list(additional_packages),  | 
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
600  | 
"includes": includes,  | 
601  | 
"excludes": excludes,  | 
|
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
602  | 
"dll_excludes": dll_excludes,  | 
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
603  | 
"dist_dir": "win32_bzr.exe",  | 
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
604  | 
"optimize": 1,  | 
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
605  | 
                              },
 | 
606  | 
                   }
 | 
|
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
607  | 
|
| 
1821.1.1
by Alexander Belchenko
 win32 installer for bzr.dev.0.9  | 
608  | 
setup(options=options_list,  | 
| 
3565.5.1
by Mark Hammond
 merge setup.py changes for tbzr  | 
609  | 
console=console_targets,  | 
610  | 
windows=gui_targets,  | 
|
611  | 
com_server=com_targets,  | 
|
| 
3087.2.4
by Alexander Belchenko
 Help topics can now be loaded from files (based on Ian's patch, adapted to proper support various windows installers).  | 
612  | 
zipfile='lib/library.zip',  | 
| 
3193.7.9
by Alexander Belchenko
 Ian's review  | 
613  | 
data_files=topics_files + plugins_files,  | 
| 
3565.5.4
by Mark Hammond
 byte-compile plugins; tweaks so qbzr and bzrsvn can be packaged.  | 
614  | 
cmdclass={'install_data': install_data_with_bytecompile},  | 
| 
3087.2.4
by Alexander Belchenko
 Help topics can now be loaded from files (based on Ian's patch, adapted to proper support various windows installers).  | 
615  | 
          )
 | 
| 
1860.1.2
by Alexander Belchenko
 setup.py:  | 
616  | 
|
617  | 
else:  | 
|
| 
2662.1.1
by Alexander Belchenko
 allow ``easy_install bzr`` runs without fatal errors. (Alexander Belchenko, #125521)  | 
618  | 
    # ad-hoc for easy_install
 | 
619  | 
DATA_FILES = []  | 
|
620  | 
if not 'bdist_egg' in sys.argv:  | 
|
621  | 
        # generate and install bzr.1 only with plain install, not easy_install one
 | 
|
622  | 
DATA_FILES = [('man/man1', ['bzr.1'])]  | 
|
623  | 
||
| 
1860.1.2
by Alexander Belchenko
 setup.py:  | 
624  | 
    # std setup
 | 
625  | 
ARGS = {'scripts': ['bzr'],  | 
|
| 
2662.1.1
by Alexander Belchenko
 allow ``easy_install bzr`` runs without fatal errors. (Alexander Belchenko, #125521)  | 
626  | 
'data_files': DATA_FILES,  | 
| 
1739.1.3
by Robert Collins
 Merge bzr.dev.  | 
627  | 
'cmdclass': command_classes,  | 
628  | 
'ext_modules': ext_modules,  | 
|
| 
1860.1.2
by Alexander Belchenko
 setup.py:  | 
629  | 
           }
 | 
| 
2666.2.1
by Alexander Belchenko
 change generated documentation extension from htm to html  | 
630  | 
|
| 
1860.1.2
by Alexander Belchenko
 setup.py:  | 
631  | 
ARGS.update(META_INFO)  | 
632  | 
ARGS.update(BZRLIB)  | 
|
| 
1911.1.1
by Alexander Belchenko
 setup.py: need to install data files for selftest from bzrlib/tests/test_patched_data  | 
633  | 
ARGS.update(PKG_DATA)  | 
| 
1860.1.2
by Alexander Belchenko
 setup.py:  | 
634  | 
|
635  | 
setup(**ARGS)  |