##// END OF EJS Templates
add 'all' extras...
MinRK -
Show More
@@ -1,348 +1,356 b''
1 #!/usr/bin/env python
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
2 # -*- coding: utf-8 -*-
3 """Setup script for IPython.
3 """Setup script for IPython.
4
4
5 Under Posix environments it works like a typical setup.py script.
5 Under Posix environments it works like a typical setup.py script.
6 Under Windows, the command sdist is not supported, since IPython
6 Under Windows, the command sdist is not supported, since IPython
7 requires utilities which are not available under Windows."""
7 requires utilities which are not available under Windows."""
8
8
9 #-----------------------------------------------------------------------------
9 #-----------------------------------------------------------------------------
10 # Copyright (c) 2008-2011, IPython Development Team.
10 # Copyright (c) 2008-2011, IPython Development Team.
11 # Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
11 # Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
12 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
12 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
13 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
13 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
14 #
14 #
15 # Distributed under the terms of the Modified BSD License.
15 # Distributed under the terms of the Modified BSD License.
16 #
16 #
17 # The full license is in the file COPYING.txt, distributed with this software.
17 # The full license is in the file COPYING.txt, distributed with this software.
18 #-----------------------------------------------------------------------------
18 #-----------------------------------------------------------------------------
19
19
20 #-----------------------------------------------------------------------------
20 #-----------------------------------------------------------------------------
21 # Minimal Python version sanity check
21 # Minimal Python version sanity check
22 #-----------------------------------------------------------------------------
22 #-----------------------------------------------------------------------------
23 from __future__ import print_function
23 from __future__ import print_function
24
24
25 import sys
25 import sys
26
26
27 # This check is also made in IPython/__init__, don't forget to update both when
27 # This check is also made in IPython/__init__, don't forget to update both when
28 # changing Python version requirements.
28 # changing Python version requirements.
29 #~ if sys.version[0:3] < '2.6':
29 #~ if sys.version[0:3] < '2.6':
30 #~ error = """\
30 #~ error = """\
31 #~ ERROR: 'IPython requires Python Version 2.6 or above.'
31 #~ ERROR: 'IPython requires Python Version 2.6 or above.'
32 #~ Exiting."""
32 #~ Exiting."""
33 #~ print >> sys.stderr, error
33 #~ print >> sys.stderr, error
34 #~ sys.exit(1)
34 #~ sys.exit(1)
35
35
36 PY3 = (sys.version_info[0] >= 3)
36 PY3 = (sys.version_info[0] >= 3)
37
37
38 # At least we're on the python version we need, move on.
38 # At least we're on the python version we need, move on.
39
39
40 #-------------------------------------------------------------------------------
40 #-------------------------------------------------------------------------------
41 # Imports
41 # Imports
42 #-------------------------------------------------------------------------------
42 #-------------------------------------------------------------------------------
43
43
44 # Stdlib imports
44 # Stdlib imports
45 import os
45 import os
46 import shutil
46 import shutil
47
47
48 from glob import glob
48 from glob import glob
49
49
50 # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
50 # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
51 # update it when the contents of directories change.
51 # update it when the contents of directories change.
52 if os.path.exists('MANIFEST'): os.remove('MANIFEST')
52 if os.path.exists('MANIFEST'): os.remove('MANIFEST')
53
53
54 from distutils.core import setup
54 from distutils.core import setup
55
55
56 # On Python 3, we need distribute (new setuptools) to do the 2to3 conversion
56 # On Python 3, we need distribute (new setuptools) to do the 2to3 conversion
57 if PY3:
57 if PY3:
58 import setuptools
58 import setuptools
59
59
60 # Our own imports
60 # Our own imports
61 from setupbase import target_update
61 from setupbase import target_update
62
62
63 from setupbase import (
63 from setupbase import (
64 setup_args,
64 setup_args,
65 find_packages,
65 find_packages,
66 find_package_data,
66 find_package_data,
67 find_scripts,
67 find_scripts,
68 find_data_files,
68 find_data_files,
69 check_for_dependencies,
69 check_for_dependencies,
70 git_prebuild,
70 git_prebuild,
71 check_submodule_status,
71 check_submodule_status,
72 update_submodules,
72 update_submodules,
73 require_submodules,
73 require_submodules,
74 UpdateSubmodules,
74 UpdateSubmodules,
75 )
75 )
76 from setupext import setupext
76 from setupext import setupext
77
77
78 isfile = os.path.isfile
78 isfile = os.path.isfile
79 pjoin = os.path.join
79 pjoin = os.path.join
80
80
81 #-----------------------------------------------------------------------------
81 #-----------------------------------------------------------------------------
82 # Function definitions
82 # Function definitions
83 #-----------------------------------------------------------------------------
83 #-----------------------------------------------------------------------------
84
84
85 def cleanup():
85 def cleanup():
86 """Clean up the junk left around by the build process"""
86 """Clean up the junk left around by the build process"""
87 if "develop" not in sys.argv and "egg_info" not in sys.argv:
87 if "develop" not in sys.argv and "egg_info" not in sys.argv:
88 try:
88 try:
89 shutil.rmtree('ipython.egg-info')
89 shutil.rmtree('ipython.egg-info')
90 except:
90 except:
91 try:
91 try:
92 os.unlink('ipython.egg-info')
92 os.unlink('ipython.egg-info')
93 except:
93 except:
94 pass
94 pass
95
95
96 #-------------------------------------------------------------------------------
96 #-------------------------------------------------------------------------------
97 # Handle OS specific things
97 # Handle OS specific things
98 #-------------------------------------------------------------------------------
98 #-------------------------------------------------------------------------------
99
99
100 if os.name in ('nt','dos'):
100 if os.name in ('nt','dos'):
101 os_name = 'windows'
101 os_name = 'windows'
102 else:
102 else:
103 os_name = os.name
103 os_name = os.name
104
104
105 # Under Windows, 'sdist' has not been supported. Now that the docs build with
105 # Under Windows, 'sdist' has not been supported. Now that the docs build with
106 # Sphinx it might work, but let's not turn it on until someone confirms that it
106 # Sphinx it might work, but let's not turn it on until someone confirms that it
107 # actually works.
107 # actually works.
108 if os_name == 'windows' and 'sdist' in sys.argv:
108 if os_name == 'windows' and 'sdist' in sys.argv:
109 print('The sdist command is not available under Windows. Exiting.')
109 print('The sdist command is not available under Windows. Exiting.')
110 sys.exit(1)
110 sys.exit(1)
111
111
112 #-------------------------------------------------------------------------------
112 #-------------------------------------------------------------------------------
113 # Make sure we aren't trying to run without submodules
113 # Make sure we aren't trying to run without submodules
114 #-------------------------------------------------------------------------------
114 #-------------------------------------------------------------------------------
115 here = os.path.abspath(os.path.dirname(__file__))
115 here = os.path.abspath(os.path.dirname(__file__))
116
116
117 def require_clean_submodules():
117 def require_clean_submodules():
118 """Check on git submodules before distutils can do anything
118 """Check on git submodules before distutils can do anything
119
119
120 Since distutils cannot be trusted to update the tree
120 Since distutils cannot be trusted to update the tree
121 after everything has been set in motion,
121 after everything has been set in motion,
122 this is not a distutils command.
122 this is not a distutils command.
123 """
123 """
124 # PACKAGERS: Add a return here to skip checks for git submodules
124 # PACKAGERS: Add a return here to skip checks for git submodules
125
125
126 # don't do anything if nothing is actually supposed to happen
126 # don't do anything if nothing is actually supposed to happen
127 for do_nothing in ('-h', '--help', '--help-commands', 'clean', 'submodule'):
127 for do_nothing in ('-h', '--help', '--help-commands', 'clean', 'submodule'):
128 if do_nothing in sys.argv:
128 if do_nothing in sys.argv:
129 return
129 return
130
130
131 status = check_submodule_status(here)
131 status = check_submodule_status(here)
132
132
133 if status == "missing":
133 if status == "missing":
134 print("checking out submodules for the first time")
134 print("checking out submodules for the first time")
135 update_submodules(here)
135 update_submodules(here)
136 elif status == "unclean":
136 elif status == "unclean":
137 print('\n'.join([
137 print('\n'.join([
138 "Cannot build / install IPython with unclean submodules",
138 "Cannot build / install IPython with unclean submodules",
139 "Please update submodules with",
139 "Please update submodules with",
140 " python setup.py submodule",
140 " python setup.py submodule",
141 "or",
141 "or",
142 " git submodule update",
142 " git submodule update",
143 "or commit any submodule changes you have made."
143 "or commit any submodule changes you have made."
144 ]))
144 ]))
145 sys.exit(1)
145 sys.exit(1)
146
146
147 require_clean_submodules()
147 require_clean_submodules()
148
148
149 #-------------------------------------------------------------------------------
149 #-------------------------------------------------------------------------------
150 # Things related to the IPython documentation
150 # Things related to the IPython documentation
151 #-------------------------------------------------------------------------------
151 #-------------------------------------------------------------------------------
152
152
153 # update the manuals when building a source dist
153 # update the manuals when building a source dist
154 if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
154 if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
155 import textwrap
155 import textwrap
156
156
157 # List of things to be updated. Each entry is a triplet of args for
157 # List of things to be updated. Each entry is a triplet of args for
158 # target_update()
158 # target_update()
159 to_update = [
159 to_update = [
160 # FIXME - Disabled for now: we need to redo an automatic way
160 # FIXME - Disabled for now: we need to redo an automatic way
161 # of generating the magic info inside the rst.
161 # of generating the magic info inside the rst.
162 #('docs/magic.tex',
162 #('docs/magic.tex',
163 #['IPython/Magic.py'],
163 #['IPython/Magic.py'],
164 #"cd doc && ./update_magic.sh" ),
164 #"cd doc && ./update_magic.sh" ),
165
165
166 ('docs/man/ipcluster.1.gz',
166 ('docs/man/ipcluster.1.gz',
167 ['docs/man/ipcluster.1'],
167 ['docs/man/ipcluster.1'],
168 'cd docs/man && gzip -9c ipcluster.1 > ipcluster.1.gz'),
168 'cd docs/man && gzip -9c ipcluster.1 > ipcluster.1.gz'),
169
169
170 ('docs/man/ipcontroller.1.gz',
170 ('docs/man/ipcontroller.1.gz',
171 ['docs/man/ipcontroller.1'],
171 ['docs/man/ipcontroller.1'],
172 'cd docs/man && gzip -9c ipcontroller.1 > ipcontroller.1.gz'),
172 'cd docs/man && gzip -9c ipcontroller.1 > ipcontroller.1.gz'),
173
173
174 ('docs/man/ipengine.1.gz',
174 ('docs/man/ipengine.1.gz',
175 ['docs/man/ipengine.1'],
175 ['docs/man/ipengine.1'],
176 'cd docs/man && gzip -9c ipengine.1 > ipengine.1.gz'),
176 'cd docs/man && gzip -9c ipengine.1 > ipengine.1.gz'),
177
177
178 ('docs/man/iplogger.1.gz',
178 ('docs/man/iplogger.1.gz',
179 ['docs/man/iplogger.1'],
179 ['docs/man/iplogger.1'],
180 'cd docs/man && gzip -9c iplogger.1 > iplogger.1.gz'),
180 'cd docs/man && gzip -9c iplogger.1 > iplogger.1.gz'),
181
181
182 ('docs/man/ipython.1.gz',
182 ('docs/man/ipython.1.gz',
183 ['docs/man/ipython.1'],
183 ['docs/man/ipython.1'],
184 'cd docs/man && gzip -9c ipython.1 > ipython.1.gz'),
184 'cd docs/man && gzip -9c ipython.1 > ipython.1.gz'),
185
185
186 ('docs/man/irunner.1.gz',
186 ('docs/man/irunner.1.gz',
187 ['docs/man/irunner.1'],
187 ['docs/man/irunner.1'],
188 'cd docs/man && gzip -9c irunner.1 > irunner.1.gz'),
188 'cd docs/man && gzip -9c irunner.1 > irunner.1.gz'),
189
189
190 ('docs/man/pycolor.1.gz',
190 ('docs/man/pycolor.1.gz',
191 ['docs/man/pycolor.1'],
191 ['docs/man/pycolor.1'],
192 'cd docs/man && gzip -9c pycolor.1 > pycolor.1.gz'),
192 'cd docs/man && gzip -9c pycolor.1 > pycolor.1.gz'),
193 ]
193 ]
194
194
195
195
196 [ target_update(*t) for t in to_update ]
196 [ target_update(*t) for t in to_update ]
197
197
198 #---------------------------------------------------------------------------
198 #---------------------------------------------------------------------------
199 # Find all the packages, package data, and data_files
199 # Find all the packages, package data, and data_files
200 #---------------------------------------------------------------------------
200 #---------------------------------------------------------------------------
201
201
202 packages = find_packages()
202 packages = find_packages()
203 package_data = find_package_data()
203 package_data = find_package_data()
204 data_files = find_data_files()
204 data_files = find_data_files()
205
205
206 setup_args['packages'] = packages
206 setup_args['packages'] = packages
207 setup_args['package_data'] = package_data
207 setup_args['package_data'] = package_data
208 setup_args['data_files'] = data_files
208 setup_args['data_files'] = data_files
209
209
210 #---------------------------------------------------------------------------
210 #---------------------------------------------------------------------------
211 # custom distutils commands
211 # custom distutils commands
212 #---------------------------------------------------------------------------
212 #---------------------------------------------------------------------------
213 # imports here, so they are after setuptools import if there was one
213 # imports here, so they are after setuptools import if there was one
214 from distutils.command.sdist import sdist
214 from distutils.command.sdist import sdist
215 from distutils.command.upload import upload
215 from distutils.command.upload import upload
216
216
217 class UploadWindowsInstallers(upload):
217 class UploadWindowsInstallers(upload):
218
218
219 description = "Upload Windows installers to PyPI (only used from tools/release_windows.py)"
219 description = "Upload Windows installers to PyPI (only used from tools/release_windows.py)"
220 user_options = upload.user_options + [
220 user_options = upload.user_options + [
221 ('files=', 'f', 'exe file (or glob) to upload')
221 ('files=', 'f', 'exe file (or glob) to upload')
222 ]
222 ]
223 def initialize_options(self):
223 def initialize_options(self):
224 upload.initialize_options(self)
224 upload.initialize_options(self)
225 meta = self.distribution.metadata
225 meta = self.distribution.metadata
226 base = '{name}-{version}'.format(
226 base = '{name}-{version}'.format(
227 name=meta.get_name(),
227 name=meta.get_name(),
228 version=meta.get_version()
228 version=meta.get_version()
229 )
229 )
230 self.files = os.path.join('dist', '%s.*.exe' % base)
230 self.files = os.path.join('dist', '%s.*.exe' % base)
231
231
232 def run(self):
232 def run(self):
233 for dist_file in glob(self.files):
233 for dist_file in glob(self.files):
234 self.upload_file('bdist_wininst', 'any', dist_file)
234 self.upload_file('bdist_wininst', 'any', dist_file)
235
235
236 setup_args['cmdclass'] = {
236 setup_args['cmdclass'] = {
237 'build_py': git_prebuild('IPython'),
237 'build_py': git_prebuild('IPython'),
238 'sdist' : git_prebuild('IPython', sdist),
238 'sdist' : git_prebuild('IPython', sdist),
239 'upload_wininst' : UploadWindowsInstallers,
239 'upload_wininst' : UploadWindowsInstallers,
240 'submodule' : UpdateSubmodules,
240 'submodule' : UpdateSubmodules,
241 }
241 }
242
242
243 #---------------------------------------------------------------------------
243 #---------------------------------------------------------------------------
244 # Handle scripts, dependencies, and setuptools specific things
244 # Handle scripts, dependencies, and setuptools specific things
245 #---------------------------------------------------------------------------
245 #---------------------------------------------------------------------------
246
246
247 # For some commands, use setuptools. Note that we do NOT list install here!
247 # For some commands, use setuptools. Note that we do NOT list install here!
248 # If you want a setuptools-enhanced install, just run 'setupegg.py install'
248 # If you want a setuptools-enhanced install, just run 'setupegg.py install'
249 needs_setuptools = set(('develop', 'release', 'bdist_egg', 'bdist_rpm',
249 needs_setuptools = set(('develop', 'release', 'bdist_egg', 'bdist_rpm',
250 'bdist', 'bdist_dumb', 'bdist_wininst', 'install_egg_info',
250 'bdist', 'bdist_dumb', 'bdist_wininst', 'install_egg_info',
251 'egg_info', 'easy_install', 'upload',
251 'egg_info', 'easy_install', 'upload',
252 ))
252 ))
253 if sys.platform == 'win32':
253 if sys.platform == 'win32':
254 # Depend on setuptools for install on *Windows only*
254 # Depend on setuptools for install on *Windows only*
255 # If we get script-installation working without setuptools,
255 # If we get script-installation working without setuptools,
256 # then we can back off, but until then use it.
256 # then we can back off, but until then use it.
257 # See Issue #369 on GitHub for more
257 # See Issue #369 on GitHub for more
258 needs_setuptools.add('install')
258 needs_setuptools.add('install')
259
259
260 if len(needs_setuptools.intersection(sys.argv)) > 0:
260 if len(needs_setuptools.intersection(sys.argv)) > 0:
261 import setuptools
261 import setuptools
262
262
263 # This dict is used for passing extra arguments that are setuptools
263 # This dict is used for passing extra arguments that are setuptools
264 # specific to setup
264 # specific to setup
265 setuptools_extra_args = {}
265 setuptools_extra_args = {}
266
266
267 if 'setuptools' in sys.modules:
267 if 'setuptools' in sys.modules:
268 # setup.py develop should check for submodules
268 # setup.py develop should check for submodules
269 from setuptools.command.develop import develop
269 from setuptools.command.develop import develop
270 setup_args['cmdclass']['develop'] = require_submodules(develop)
270 setup_args['cmdclass']['develop'] = require_submodules(develop)
271
271
272 setuptools_extra_args['zip_safe'] = False
272 setuptools_extra_args['zip_safe'] = False
273 setuptools_extra_args['entry_points'] = find_scripts(True)
273 setuptools_extra_args['entry_points'] = find_scripts(True)
274 setup_args['extras_require'] = dict(
274 setup_args['extras_require'] = dict(
275 parallel = 'pyzmq>=2.1.11',
275 parallel = 'pyzmq>=2.1.11',
276 qtconsole = ['pyzmq>=2.1.11', 'pygments'],
276 qtconsole = ['pyzmq>=2.1.11', 'pygments'],
277 zmq = 'pyzmq>=2.1.11',
277 zmq = 'pyzmq>=2.1.11',
278 doc = 'Sphinx>=0.3',
278 doc = 'Sphinx>=0.3',
279 test = 'nose>=0.10.1',
279 test = 'nose>=0.10.1',
280 notebook = ['tornado>=2.0', 'pyzmq>=2.1.11', 'jinja2'],
280 notebook = ['tornado>=2.0', 'pyzmq>=2.1.11', 'jinja2'],
281 nbconvert = ['pygments', 'jinja2', 'Sphinx>=0.3']
281 nbconvert = ['pygments', 'jinja2', 'Sphinx>=0.3']
282 )
282 )
283 everything = set()
284 for deps in setup_args['extras_require'].values():
285 if not isinstance(deps, list):
286 deps = [deps]
287 for dep in deps:
288 everything.add(dep)
289 setup_args['extras_require']['all'] = everything
290
283 requires = setup_args.setdefault('install_requires', [])
291 requires = setup_args.setdefault('install_requires', [])
284 setupext.display_status = False
292 setupext.display_status = False
285 if not setupext.check_for_readline():
293 if not setupext.check_for_readline():
286 if sys.platform == 'darwin':
294 if sys.platform == 'darwin':
287 requires.append('readline')
295 requires.append('readline')
288 elif sys.platform.startswith('win'):
296 elif sys.platform.startswith('win'):
289 # Pyreadline 64 bit windows issue solved in versions >=1.7.1
297 # Pyreadline 64 bit windows issue solved in versions >=1.7.1
290 # Also solves issues with some older versions of pyreadline that
298 # Also solves issues with some older versions of pyreadline that
291 # satisfy the unconstrained depdendency.
299 # satisfy the unconstrained depdendency.
292 requires.append('pyreadline>=1.7.1')
300 requires.append('pyreadline>=1.7.1')
293 else:
301 else:
294 pass
302 pass
295 # do we want to install readline here?
303 # do we want to install readline here?
296
304
297 # Script to be run by the windows binary installer after the default setup
305 # Script to be run by the windows binary installer after the default setup
298 # routine, to add shortcuts and similar windows-only things. Windows
306 # routine, to add shortcuts and similar windows-only things. Windows
299 # post-install scripts MUST reside in the scripts/ dir, otherwise distutils
307 # post-install scripts MUST reside in the scripts/ dir, otherwise distutils
300 # doesn't find them.
308 # doesn't find them.
301 if 'bdist_wininst' in sys.argv:
309 if 'bdist_wininst' in sys.argv:
302 if len(sys.argv) > 2 and \
310 if len(sys.argv) > 2 and \
303 ('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
311 ('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
304 print >> sys.stderr, "ERROR: bdist_wininst must be run alone. Exiting."
312 print >> sys.stderr, "ERROR: bdist_wininst must be run alone. Exiting."
305 sys.exit(1)
313 sys.exit(1)
306 setup_args['data_files'].append(
314 setup_args['data_files'].append(
307 ['Scripts', ('scripts/ipython.ico', 'scripts/ipython_nb.ico')])
315 ['Scripts', ('scripts/ipython.ico', 'scripts/ipython_nb.ico')])
308 setup_args['scripts'] = [pjoin('scripts','ipython_win_post_install.py')]
316 setup_args['scripts'] = [pjoin('scripts','ipython_win_post_install.py')]
309 setup_args['options'] = {"bdist_wininst":
317 setup_args['options'] = {"bdist_wininst":
310 {"install_script":
318 {"install_script":
311 "ipython_win_post_install.py"}}
319 "ipython_win_post_install.py"}}
312
320
313 if PY3:
321 if PY3:
314 setuptools_extra_args['use_2to3'] = True
322 setuptools_extra_args['use_2to3'] = True
315 # we try to make a 2.6, 2.7, and 3.1 to 3.3 python compatible code
323 # we try to make a 2.6, 2.7, and 3.1 to 3.3 python compatible code
316 # so we explicitly disable some 2to3 fixes to be sure we aren't forgetting
324 # so we explicitly disable some 2to3 fixes to be sure we aren't forgetting
317 # anything.
325 # anything.
318 setuptools_extra_args['use_2to3_exclude_fixers'] = [
326 setuptools_extra_args['use_2to3_exclude_fixers'] = [
319 'lib2to3.fixes.fix_apply',
327 'lib2to3.fixes.fix_apply',
320 'lib2to3.fixes.fix_except',
328 'lib2to3.fixes.fix_except',
321 'lib2to3.fixes.fix_has_key',
329 'lib2to3.fixes.fix_has_key',
322 'lib2to3.fixes.fix_next',
330 'lib2to3.fixes.fix_next',
323 'lib2to3.fixes.fix_repr',
331 'lib2to3.fixes.fix_repr',
324 'lib2to3.fixes.fix_tuple_params',
332 'lib2to3.fixes.fix_tuple_params',
325 ]
333 ]
326 from setuptools.command.build_py import build_py
334 from setuptools.command.build_py import build_py
327 setup_args['cmdclass'] = {'build_py': git_prebuild('IPython', build_cmd=build_py)}
335 setup_args['cmdclass'] = {'build_py': git_prebuild('IPython', build_cmd=build_py)}
328 setuptools_extra_args['entry_points'] = find_scripts(True, suffix='3')
336 setuptools_extra_args['entry_points'] = find_scripts(True, suffix='3')
329 setuptools._dont_write_bytecode = True
337 setuptools._dont_write_bytecode = True
330 else:
338 else:
331 # If we are running without setuptools, call this function which will
339 # If we are running without setuptools, call this function which will
332 # check for dependencies an inform the user what is needed. This is
340 # check for dependencies an inform the user what is needed. This is
333 # just to make life easy for users.
341 # just to make life easy for users.
334 check_for_dependencies()
342 check_for_dependencies()
335 setup_args['scripts'] = find_scripts(False)
343 setup_args['scripts'] = find_scripts(False)
336
344
337 #---------------------------------------------------------------------------
345 #---------------------------------------------------------------------------
338 # Do the actual setup now
346 # Do the actual setup now
339 #---------------------------------------------------------------------------
347 #---------------------------------------------------------------------------
340
348
341 setup_args.update(setuptools_extra_args)
349 setup_args.update(setuptools_extra_args)
342
350
343 def main():
351 def main():
344 setup(**setup_args)
352 setup(**setup_args)
345 cleanup()
353 cleanup()
346
354
347 if __name__ == '__main__':
355 if __name__ == '__main__':
348 main()
356 main()
General Comments 0
You need to be logged in to leave comments. Login now