##// END OF EJS Templates
Move cleanup to main setup.py, where it belongs....
Fernando Perez -
Show More
@@ -1,121 +1,121 b''
1 1 # -*- coding: utf-8 -*-
2 2 """Release data for the IPython project."""
3 3
4 4 #*****************************************************************************
5 5 # Copyright (C) 2008-2009 The IPython Development Team
6 6 # Copyright (C) 2001-2008 Fernando Perez <fperez@colorado.edu>
7 7 # Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and Nathaniel Gray
8 8 # <n8gray@caltech.edu>
9 9 #
10 10 # Distributed under the terms of the BSD License. The full license is in
11 11 # the file COPYING, distributed as part of this software.
12 12 #*****************************************************************************
13 13
14 14 # Name of the package for release purposes. This is the name which labels
15 15 # the tarballs and RPMs made by distutils, so it's best to lowercase it.
16 16 name = 'ipython'
17 17
18 18 # For versions with substrings (like 0.6.16.svn), use an extra . to separate
19 19 # the new substring. We have to avoid using either dashes or underscores,
20 20 # because bdist_rpm does not accept dashes (an RPM) convention, and
21 21 # bdist_deb does not accept underscores (a Debian convention).
22 22
23 23 development = True # change this to False to do a release
24 24 version_base = '0.11'
25 25 branch = 'ipython'
26 revision = '1312'
26 revision = '1313'
27 27
28 28 if development:
29 29 if branch == 'ipython':
30 30 version = '%s.bzr.r%s' % (version_base, revision)
31 31 else:
32 32 version = '%s.bzr.r%s.%s' % (version_base, revision, branch)
33 33 else:
34 34 version = version_base
35 35
36 36
37 37 description = "An interactive computing environment for Python"
38 38
39 39 long_description = \
40 40 """
41 41 The goal of IPython is to create a comprehensive environment for
42 42 interactive and exploratory computing. To support this goal, IPython
43 43 has two main components:
44 44
45 45 * An enhanced interactive Python shell.
46 46
47 47 * An architecture for interactive parallel computing.
48 48
49 49 The enhanced interactive Python shell has the following main features:
50 50
51 51 * Comprehensive object introspection.
52 52
53 53 * Input history, persistent across sessions.
54 54
55 55 * Caching of output results during a session with automatically generated
56 56 references.
57 57
58 58 * Readline based name completion.
59 59
60 60 * Extensible system of 'magic' commands for controlling the environment and
61 61 performing many tasks related either to IPython or the operating system.
62 62
63 63 * Configuration system with easy switching between different setups (simpler
64 64 than changing $PYTHONSTARTUP environment variables every time).
65 65
66 66 * Session logging and reloading.
67 67
68 68 * Extensible syntax processing for special purpose situations.
69 69
70 70 * Access to the system shell with user-extensible alias system.
71 71
72 72 * Easily embeddable in other Python programs and wxPython GUIs.
73 73
74 74 * Integrated access to the pdb debugger and the Python profiler.
75 75
76 76 The parallel computing architecture has the following main features:
77 77
78 78 * Quickly parallelize Python code from an interactive Python/IPython session.
79 79
80 80 * A flexible and dynamic process model that be deployed on anything from
81 81 multicore workstations to supercomputers.
82 82
83 83 * An architecture that supports many different styles of parallelism, from
84 84 message passing to task farming.
85 85
86 86 * Both blocking and fully asynchronous interfaces.
87 87
88 88 * High level APIs that enable many things to be parallelized in a few lines
89 89 of code.
90 90
91 91 * Share live parallel jobs with other users securely.
92 92
93 93 * Dynamically load balanced task farming system.
94 94
95 95 * Robust error handling in parallel code.
96 96
97 97 The latest development version is always available from IPython's `Launchpad
98 98 site <http://launchpad.net/ipython>`_.
99 99 """
100 100
101 101 license = 'BSD'
102 102
103 103 authors = {'Fernando' : ('Fernando Perez','fperez.net@gmail.com'),
104 104 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
105 105 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
106 106 'Ville' : ('Ville Vainio','vivainio@gmail.com'),
107 107 'Brian' : ('Brian E Granger', 'ellisonbg@gmail.com'),
108 108 'Min' : ('Min Ragan-Kelley', 'benjaminrk@gmail.com')
109 109 }
110 110
111 111 author = 'The IPython Development Team'
112 112
113 113 author_email = 'ipython-dev@scipy.org'
114 114
115 115 url = 'http://ipython.scipy.org'
116 116
117 117 download_url = 'http://ipython.scipy.org/dist'
118 118
119 119 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
120 120
121 121 keywords = ['Interactive','Interpreter','Shell','Parallel','Distributed']
@@ -1,218 +1,234 b''
1 1 #!/usr/bin/env python
2 2 # -*- coding: utf-8 -*-
3 3 """Setup script for IPython.
4 4
5 5 Under Posix environments it works like a typical setup.py script.
6 6 Under Windows, the command sdist is not supported, since IPython
7 7 requires utilities which are not available under Windows."""
8 8
9 9 #-------------------------------------------------------------------------------
10 10 # Copyright (C) 2008 The IPython Development Team
11 11 #
12 12 # Distributed under the terms of the BSD License. The full license is in
13 13 # the file COPYING, distributed as part of this software.
14 14 #-------------------------------------------------------------------------------
15 15
16 16 #-------------------------------------------------------------------------------
17 17 # Imports
18 18 #-------------------------------------------------------------------------------
19 19
20 20 # Stdlib imports
21 21 import os
22 import shutil
22 23 import sys
23 24
24 25 from glob import glob
25 26
26 27 # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
27 28 # update it when the contents of directories change.
28 29 if os.path.exists('MANIFEST'): os.remove('MANIFEST')
29 30
30 31 from distutils.core import setup
31 32
32 33 from IPython.utils.genutils import target_update
33 34
34 35 from setupbase import (
35 36 setup_args,
36 37 find_packages,
37 38 find_package_data,
38 39 find_scripts,
39 40 find_data_files,
40 41 check_for_dependencies
41 42 )
42 43
43 44 isfile = os.path.isfile
44 45 pjoin = os.path.join
45 46
47 #-----------------------------------------------------------------------------
48 # Function definitions
49 #-----------------------------------------------------------------------------
50
51 def cleanup():
52 """Clean up the junk left around by the build process"""
53 if "develop" not in sys.argv:
54 try:
55 shutil.rmtree('ipython.egg-info')
56 except:
57 try:
58 os.unlink('ipython.egg-info')
59 except:
60 pass
61
46 62 #-------------------------------------------------------------------------------
47 63 # Handle OS specific things
48 64 #-------------------------------------------------------------------------------
49 65
50 66 if os.name == 'posix':
51 67 os_name = 'posix'
52 68 elif os.name in ['nt','dos']:
53 69 os_name = 'windows'
54 70 else:
55 71 print 'Unsupported operating system:',os.name
56 72 sys.exit(1)
57 73
58 74 # Under Windows, 'sdist' has not been supported. Now that the docs build with
59 75 # Sphinx it might work, but let's not turn it on until someone confirms that it
60 76 # actually works.
61 77 if os_name == 'windows' and 'sdist' in sys.argv:
62 78 print 'The sdist command is not available under Windows. Exiting.'
63 79 sys.exit(1)
64 80
65 81 #-------------------------------------------------------------------------------
66 82 # Things related to the IPython documentation
67 83 #-------------------------------------------------------------------------------
68 84
69 85 # update the manuals when building a source dist
70 86 if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
71 87 import textwrap
72 88
73 89 # List of things to be updated. Each entry is a triplet of args for
74 90 # target_update()
75 91 to_update = [
76 92 # FIXME - Disabled for now: we need to redo an automatic way
77 93 # of generating the magic info inside the rst.
78 94 #('docs/magic.tex',
79 95 #['IPython/Magic.py'],
80 96 #"cd doc && ./update_magic.sh" ),
81 97
82 98 ('docs/man/ipcluster.1.gz',
83 99 ['docs/man/ipcluster.1'],
84 100 'cd docs/man && gzip -9c ipcluster.1 > ipcluster.1.gz'),
85 101
86 102 ('docs/man/ipcontroller.1.gz',
87 103 ['docs/man/ipcontroller.1'],
88 104 'cd docs/man && gzip -9c ipcontroller.1 > ipcontroller.1.gz'),
89 105
90 106 ('docs/man/ipengine.1.gz',
91 107 ['docs/man/ipengine.1'],
92 108 'cd docs/man && gzip -9c ipengine.1 > ipengine.1.gz'),
93 109
94 110 ('docs/man/ipython.1.gz',
95 111 ['docs/man/ipython.1'],
96 112 'cd docs/man && gzip -9c ipython.1 > ipython.1.gz'),
97 113
98 114 ('docs/man/ipython-wx.1.gz',
99 115 ['docs/man/ipython-wx.1'],
100 116 'cd docs/man && gzip -9c ipython-wx.1 > ipython-wx.1.gz'),
101 117
102 118 ('docs/man/ipythonx.1.gz',
103 119 ['docs/man/ipythonx.1'],
104 120 'cd docs/man && gzip -9c ipythonx.1 > ipythonx.1.gz'),
105 121
106 122 ('docs/man/irunner.1.gz',
107 123 ['docs/man/irunner.1'],
108 124 'cd docs/man && gzip -9c irunner.1 > irunner.1.gz'),
109 125
110 126 ('docs/man/pycolor.1.gz',
111 127 ['docs/man/pycolor.1'],
112 128 'cd docs/man && gzip -9c pycolor.1 > pycolor.1.gz'),
113 129 ]
114 130
115 131 # Only build the docs if sphinx is present
116 132 try:
117 133 import sphinx
118 134 except ImportError:
119 135 pass
120 136 else:
121 137 # The Makefile calls the do_sphinx scripts to build html and pdf, so
122 138 # just one target is enough to cover all manual generation
123 139
124 140 # First, compute all the dependencies that can force us to rebuild the
125 141 # docs. Start with the main release file that contains metadata
126 142 docdeps = ['IPython/core/release.py']
127 143 # Inculde all the reST sources
128 144 pjoin = os.path.join
129 145 for dirpath,dirnames,filenames in os.walk('docs/source'):
130 146 if dirpath in ['_static','_templates']:
131 147 continue
132 148 docdeps += [ pjoin(dirpath,f) for f in filenames
133 149 if f.endswith('.txt') ]
134 150 # and the examples
135 151 for dirpath,dirnames,filenames in os.walk('docs/example'):
136 152 docdeps += [ pjoin(dirpath,f) for f in filenames
137 153 if not f.endswith('~') ]
138 154 # then, make them all dependencies for the main PDF (the html will get
139 155 # auto-generated as well).
140 156 to_update.append(
141 157 ('docs/dist/ipython.pdf',
142 158 docdeps,
143 159 "cd docs && make dist")
144 160 )
145 161
146 162 [ target_update(*t) for t in to_update ]
147 163
148
149 164 #---------------------------------------------------------------------------
150 165 # Find all the packages, package data, scripts and data_files
151 166 #---------------------------------------------------------------------------
152 167
153 168 packages = find_packages()
154 169 package_data = find_package_data()
155 170 scripts = find_scripts()
156 171 data_files = find_data_files()
157 172
158 173 #---------------------------------------------------------------------------
159 174 # Handle dependencies and setuptools specific things
160 175 #---------------------------------------------------------------------------
161 176
162 177 # For some commands, use setuptools. Note that we do NOT list install here!
163 178 # If you want a setuptools-enhanced install, just run 'setupegg.py install'
164 179 if len(set(('develop', 'sdist', 'release', 'bdist_egg', 'bdist_rpm',
165 180 'bdist', 'bdist_dumb', 'bdist_wininst', 'install_egg_info',
166 181 'build_sphinx', 'egg_info', 'easy_install', 'upload',
167 182 )).intersection(sys.argv)) > 0:
168 183 import setuptools
169 184
170 185 # This dict is used for passing extra arguments that are setuptools
171 186 # specific to setup
172 187 setuptools_extra_args = {}
173 188
174 189 if 'setuptools' in sys.modules:
175 190 setuptools_extra_args['zip_safe'] = False
176 191 setuptools_extra_args['entry_points'] = {
177 192 'console_scripts': [
178 193 'ipython = IPython.core.ipapp:launch_new_instance',
179 194 'pycolor = IPython.utils.PyColorize:main',
180 195 'ipcontroller = IPython.kernel.ipcontrollerapp:launch_new_instance',
181 196 'ipengine = IPython.kernel.ipengineapp:launch_new_instance',
182 197 'ipcluster = IPython.kernel.ipclusterapp:launch_new_instance',
183 198 'ipythonx = IPython.frontend.wx.ipythonx:main',
184 199 'iptest = IPython.testing.iptest:main',
185 200 'irunner = IPython.lib.irunner:main'
186 201 ]
187 202 }
188 203 setup_args['extras_require'] = dict(
189 204 kernel = [
190 205 'zope.interface>=3.4.1',
191 206 'Twisted>=8.0.1',
192 207 'foolscap>=0.2.6'
193 208 ],
194 209 doc='Sphinx>=0.3',
195 210 test='nose>=0.10.1',
196 211 security='pyOpenSSL>=0.6'
197 212 )
198 213 # Allow setuptools to handle the scripts
199 214 scripts = []
200 215 else:
201 216 # If we are running without setuptools, call this function which will
202 217 # check for dependencies an inform the user what is needed. This is
203 218 # just to make life easy for users.
204 219 check_for_dependencies()
205 220
206
207 221 #---------------------------------------------------------------------------
208 222 # Do the actual setup now
209 223 #---------------------------------------------------------------------------
210 224
211 225 setup_args['packages'] = packages
212 226 setup_args['package_data'] = package_data
213 227 setup_args['scripts'] = scripts
214 228 setup_args['data_files'] = data_files
215 229 setup_args.update(setuptools_extra_args)
216 230
231
217 232 if __name__ == '__main__':
218 233 setup(**setup_args)
234 cleanup()
@@ -1,20 +1,6 b''
1 1 #!/usr/bin/env python
2 2 """Wrapper to run setup.py using setuptools."""
3 3
4 import os
5 import shutil
6 import sys
7
8 # now, import setuptools and call the actual setup
4 # Import setuptools and call the actual setup
9 5 import setuptools
10 6 execfile('setup.py')
11
12 # clean up the junk left around by setuptools
13 if "develop" not in sys.argv:
14 try:
15 shutil.rmtree('ipython.egg-info')
16 except:
17 try:
18 os.unlink('ipython.egg-info')
19 except:
20 pass
General Comments 0
You need to be logged in to leave comments. Login now