##// END OF EJS Templates
Fixing a few small bugs in the setup.py scripts. In setupbase.py, in find_scripts, ipython...
Brian E Granger -
Show More
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
1 NO CONTENT: new file 100644
NO CONTENT: new file 100644
@@ -1,230 +1,230 b''
1 # encoding: utf-8
1 # encoding: utf-8
2
2
3 """
3 """
4 This module defines the things that are used in setup.py for building IPython
4 This module defines the things that are used in setup.py for building IPython
5
5
6 This includes:
6 This includes:
7
7
8 * The basic arguments to setup
8 * The basic arguments to setup
9 * Functions for finding things like packages, package data, etc.
9 * Functions for finding things like packages, package data, etc.
10 * A function for checking dependencies.
10 * A function for checking dependencies.
11 """
11 """
12
12
13 __docformat__ = "restructuredtext en"
13 __docformat__ = "restructuredtext en"
14
14
15 #-------------------------------------------------------------------------------
15 #-------------------------------------------------------------------------------
16 # Copyright (C) 2008 The IPython Development Team
16 # Copyright (C) 2008 The IPython Development Team
17 #
17 #
18 # Distributed under the terms of the BSD License. The full license is in
18 # Distributed under the terms of the BSD License. The full license is in
19 # the file COPYING, distributed as part of this software.
19 # the file COPYING, distributed as part of this software.
20 #-------------------------------------------------------------------------------
20 #-------------------------------------------------------------------------------
21
21
22 #-------------------------------------------------------------------------------
22 #-------------------------------------------------------------------------------
23 # Imports
23 # Imports
24 #-------------------------------------------------------------------------------
24 #-------------------------------------------------------------------------------
25
25
26 import os, sys
26 import os, sys
27
27
28 from glob import glob
28 from glob import glob
29
29
30 from setupext import install_data_ext
30 from setupext import install_data_ext
31
31
32 #-------------------------------------------------------------------------------
32 #-------------------------------------------------------------------------------
33 # Useful globals and utility functions
33 # Useful globals and utility functions
34 #-------------------------------------------------------------------------------
34 #-------------------------------------------------------------------------------
35
35
36 # A few handy globals
36 # A few handy globals
37 isfile = os.path.isfile
37 isfile = os.path.isfile
38 pjoin = os.path.join
38 pjoin = os.path.join
39
39
40 def oscmd(s):
40 def oscmd(s):
41 print ">", s
41 print ">", s
42 os.system(s)
42 os.system(s)
43
43
44 # A little utility we'll need below, since glob() does NOT allow you to do
44 # A little utility we'll need below, since glob() does NOT allow you to do
45 # exclusion on multiple endings!
45 # exclusion on multiple endings!
46 def file_doesnt_endwith(test,endings):
46 def file_doesnt_endwith(test,endings):
47 """Return true if test is a file and its name does NOT end with any
47 """Return true if test is a file and its name does NOT end with any
48 of the strings listed in endings."""
48 of the strings listed in endings."""
49 if not isfile(test):
49 if not isfile(test):
50 return False
50 return False
51 for e in endings:
51 for e in endings:
52 if test.endswith(e):
52 if test.endswith(e):
53 return False
53 return False
54 return True
54 return True
55
55
56 #---------------------------------------------------------------------------
56 #---------------------------------------------------------------------------
57 # Basic project information
57 # Basic project information
58 #---------------------------------------------------------------------------
58 #---------------------------------------------------------------------------
59
59
60 # Release.py contains version, authors, license, url, keywords, etc.
60 # Release.py contains version, authors, license, url, keywords, etc.
61 execfile(pjoin('IPython','Release.py'))
61 execfile(pjoin('IPython','Release.py'))
62
62
63 # Create a dict with the basic information
63 # Create a dict with the basic information
64 # This dict is eventually passed to setup after additional keys are added.
64 # This dict is eventually passed to setup after additional keys are added.
65 setup_args = dict(
65 setup_args = dict(
66 name = name,
66 name = name,
67 version = version,
67 version = version,
68 description = description,
68 description = description,
69 long_description = long_description,
69 long_description = long_description,
70 author = author,
70 author = author,
71 author_email = author_email,
71 author_email = author_email,
72 url = url,
72 url = url,
73 download_url = download_url,
73 download_url = download_url,
74 license = license,
74 license = license,
75 platforms = platforms,
75 platforms = platforms,
76 keywords = keywords,
76 keywords = keywords,
77 cmdclass = {'install_data': install_data_ext},
77 cmdclass = {'install_data': install_data_ext},
78 )
78 )
79
79
80
80
81 #---------------------------------------------------------------------------
81 #---------------------------------------------------------------------------
82 # Find packages
82 # Find packages
83 #---------------------------------------------------------------------------
83 #---------------------------------------------------------------------------
84
84
85 def add_package(packages, pname, config=False, tests=False, scripts=False, others=None):
85 def add_package(packages, pname, config=False, tests=False, scripts=False, others=None):
86 """
86 """
87 Add a package to the list of packages, including certain subpackages.
87 Add a package to the list of packages, including certain subpackages.
88 """
88 """
89 packages.append('.'.join(['IPython',pname]))
89 packages.append('.'.join(['IPython',pname]))
90 if config:
90 if config:
91 packages.append('.'.join(['IPython',pname,'config']))
91 packages.append('.'.join(['IPython',pname,'config']))
92 if tests:
92 if tests:
93 packages.append('.'.join(['IPython',pname,'tests']))
93 packages.append('.'.join(['IPython',pname,'tests']))
94 if scripts:
94 if scripts:
95 packages.append('.'.join(['IPython',pname,'scripts']))
95 packages.append('.'.join(['IPython',pname,'scripts']))
96 if others is not None:
96 if others is not None:
97 for o in others:
97 for o in others:
98 packages.append('.'.join(['IPython',pname,o]))
98 packages.append('.'.join(['IPython',pname,o]))
99
99
100 def find_packages():
100 def find_packages():
101 """
101 """
102 Find all of IPython's packages.
102 Find all of IPython's packages.
103 """
103 """
104 packages = ['IPython']
104 packages = ['IPython']
105 add_package(packages, 'config', tests=True)
105 add_package(packages, 'config', tests=True)
106 add_package(packages , 'Extensions')
106 add_package(packages , 'Extensions')
107 add_package(packages, 'external')
107 add_package(packages, 'external')
108 add_package(packages, 'gui')
108 add_package(packages, 'gui')
109 add_package(packages, 'gui.wx')
109 add_package(packages, 'gui.wx')
110 add_package(packages, 'kernel', config=True, tests=True, scripts=True)
110 add_package(packages, 'kernel', config=True, tests=True, scripts=True)
111 add_package(packages, 'kernel.core', config=True, tests=True)
111 add_package(packages, 'kernel.core', config=True, tests=True)
112 add_package(packages, 'testing', tests=True)
112 add_package(packages, 'testing', tests=True)
113 add_package(packages, 'tools', tests=True)
113 add_package(packages, 'tools', tests=True)
114 add_package(packages, 'UserConfig')
114 add_package(packages, 'UserConfig')
115 return packages
115 return packages
116
116
117 #---------------------------------------------------------------------------
117 #---------------------------------------------------------------------------
118 # Find package data
118 # Find package data
119 #---------------------------------------------------------------------------
119 #---------------------------------------------------------------------------
120
120
121 def find_package_data():
121 def find_package_data():
122 """
122 """
123 Find IPython's package_data.
123 Find IPython's package_data.
124 """
124 """
125 # This is not enough for these things to appear in an sdist.
125 # This is not enough for these things to appear in an sdist.
126 # We need to muck with the MANIFEST to get this to work
126 # We need to muck with the MANIFEST to get this to work
127 package_data = {'IPython.UserConfig' : ['*'] }
127 package_data = {'IPython.UserConfig' : ['*'] }
128 return package_data
128 return package_data
129
129
130
130
131 #---------------------------------------------------------------------------
131 #---------------------------------------------------------------------------
132 # Find data files
132 # Find data files
133 #---------------------------------------------------------------------------
133 #---------------------------------------------------------------------------
134
134
135 def find_data_files():
135 def find_data_files():
136 """
136 """
137 Find IPython's data_files.
137 Find IPython's data_files.
138 """
138 """
139
139
140 # I can't find how to make distutils create a nested dir. structure, so
140 # I can't find how to make distutils create a nested dir. structure, so
141 # in the meantime do it manually. Butt ugly.
141 # in the meantime do it manually. Butt ugly.
142 # Note that http://www.redbrick.dcu.ie/~noel/distutils.html, ex. 2/3, contain
142 # Note that http://www.redbrick.dcu.ie/~noel/distutils.html, ex. 2/3, contain
143 # information on how to do this more cleanly once python 2.4 can be assumed.
143 # information on how to do this more cleanly once python 2.4 can be assumed.
144 # Thanks to Noel for the tip.
144 # Thanks to Noel for the tip.
145 docdirbase = 'share/doc/ipython'
145 docdirbase = 'share/doc/ipython'
146 manpagebase = 'share/man/man1'
146 manpagebase = 'share/man/man1'
147
147
148 # We only need to exclude from this things NOT already excluded in the
148 # We only need to exclude from this things NOT already excluded in the
149 # MANIFEST.in file.
149 # MANIFEST.in file.
150 exclude = ('.sh','.1.gz')
150 exclude = ('.sh','.1.gz')
151 docfiles = filter(lambda f:file_doesnt_endwith(f,exclude),glob('doc/*'))
151 docfiles = filter(lambda f:file_doesnt_endwith(f,exclude),glob('doc/*'))
152 examfiles = filter(isfile, glob('doc/examples/*.py'))
152 examfiles = filter(isfile, glob('doc/examples/*.py'))
153 manfiles = filter(isfile, glob('doc/manual/*'))
153 manfiles = filter(isfile, glob('doc/manual/*'))
154 manstatic = filter(isfile, glob('doc/manual/_static/*'))
154 manstatic = filter(isfile, glob('doc/manual/_static/*'))
155 manpages = filter(isfile, glob('doc/*.1.gz'))
155 manpages = filter(isfile, glob('doc/*.1.gz'))
156 scriptfiles = filter(isfile, ['scripts/ipython','scripts/pycolor',
156 scriptfiles = filter(isfile, ['scripts/ipython','scripts/pycolor',
157 'scripts/irunner'])
157 'scripts/irunner'])
158 igridhelpfiles = filter(isfile, glob('IPython/Extensions/igrid_help.*'))
158 igridhelpfiles = filter(isfile, glob('IPython/Extensions/igrid_help.*'))
159
159
160 data_files = [('data', docdirbase, docfiles),
160 data_files = [('data', docdirbase, docfiles),
161 ('data', pjoin(docdirbase, 'examples'),examfiles),
161 ('data', pjoin(docdirbase, 'examples'),examfiles),
162 ('data', pjoin(docdirbase, 'manual'),manfiles),
162 ('data', pjoin(docdirbase, 'manual'),manfiles),
163 ('data', pjoin(docdirbase, 'manual/_static'),manstatic),
163 ('data', pjoin(docdirbase, 'manual/_static'),manstatic),
164 ('data', manpagebase, manpages),
164 ('data', manpagebase, manpages),
165 ('data',pjoin(docdirbase, 'extensions'),igridhelpfiles),
165 ('data',pjoin(docdirbase, 'extensions'),igridhelpfiles),
166 ]
166 ]
167 return data_files
167 return data_files
168
168
169 #---------------------------------------------------------------------------
169 #---------------------------------------------------------------------------
170 # Find scripts
170 # Find scripts
171 #---------------------------------------------------------------------------
171 #---------------------------------------------------------------------------
172
172
173 def find_scripts():
173 def find_scripts():
174 """
174 """
175 Find IPython's scripts.
175 Find IPython's scripts.
176 """
176 """
177 scripts = []
177 scripts = []
178 scripts.append('ipython/kernel/scripts/ipengine')
178 scripts.append('IPython/kernel/scripts/ipengine')
179 scripts.append('ipython/kernel/scripts/ipcontroller')
179 scripts.append('IPython/kernel/scripts/ipcontroller')
180 scripts.append('ipython/kernel/scripts/ipcluster')
180 scripts.append('IPython/kernel/scripts/ipcluster')
181 scripts.append('scripts/ipython')
181 scripts.append('scripts/ipython')
182 scripts.append('scripts/pycolor')
182 scripts.append('scripts/pycolor')
183 scripts.append('scripts/irunner')
183 scripts.append('scripts/irunner')
184
184
185 # Script to be run by the windows binary installer after the default setup
185 # Script to be run by the windows binary installer after the default setup
186 # routine, to add shortcuts and similar windows-only things. Windows
186 # routine, to add shortcuts and similar windows-only things. Windows
187 # post-install scripts MUST reside in the scripts/ dir, otherwise distutils
187 # post-install scripts MUST reside in the scripts/ dir, otherwise distutils
188 # doesn't find them.
188 # doesn't find them.
189 if 'bdist_wininst' in sys.argv:
189 if 'bdist_wininst' in sys.argv:
190 if len(sys.argv) > 2 and ('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
190 if len(sys.argv) > 2 and ('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
191 print >> sys.stderr,"ERROR: bdist_wininst must be run alone. Exiting."
191 print >> sys.stderr,"ERROR: bdist_wininst must be run alone. Exiting."
192 sys.exit(1)
192 sys.exit(1)
193 scripts.append('scripts/ipython_win_post_install.py')
193 scripts.append('scripts/ipython_win_post_install.py')
194
194
195 return scripts
195 return scripts
196
196
197 #---------------------------------------------------------------------------
197 #---------------------------------------------------------------------------
198 # Find scripts
198 # Find scripts
199 #---------------------------------------------------------------------------
199 #---------------------------------------------------------------------------
200
200
201 def check_for_dependencies():
201 def check_for_dependencies():
202 """Check for IPython's dependencies.
202 """Check for IPython's dependencies.
203
203
204 This function should NOT be called if running under setuptools!
204 This function should NOT be called if running under setuptools!
205 """
205 """
206 from setupext.setupext import (
206 from setupext.setupext import (
207 print_line, print_raw, print_status, print_message,
207 print_line, print_raw, print_status, print_message,
208 check_for_zopeinterface, check_for_twisted,
208 check_for_zopeinterface, check_for_twisted,
209 check_for_foolscap, check_for_pyopenssl,
209 check_for_foolscap, check_for_pyopenssl,
210 check_for_sphinx, check_for_pygments,
210 check_for_sphinx, check_for_pygments,
211 check_for_nose, check_for_pexpect
211 check_for_nose, check_for_pexpect
212 )
212 )
213 print_line()
213 print_line()
214 print_raw("BUILDING IPYTHON")
214 print_raw("BUILDING IPYTHON")
215 print_status('python', sys.version)
215 print_status('python', sys.version)
216 print_status('platform', sys.platform)
216 print_status('platform', sys.platform)
217 if sys.platform == 'win32':
217 if sys.platform == 'win32':
218 print_status('Windows version', sys.getwindowsversion())
218 print_status('Windows version', sys.getwindowsversion())
219
219
220 print_raw("")
220 print_raw("")
221 print_raw("OPTIONAL DEPENDENCIES")
221 print_raw("OPTIONAL DEPENDENCIES")
222
222
223 check_for_zopeinterface()
223 check_for_zopeinterface()
224 check_for_twisted()
224 check_for_twisted()
225 check_for_foolscap()
225 check_for_foolscap()
226 check_for_pyopenssl()
226 check_for_pyopenssl()
227 check_for_sphinx()
227 check_for_sphinx()
228 check_for_pygments()
228 check_for_pygments()
229 check_for_nose()
229 check_for_nose()
230 check_for_pexpect() No newline at end of file
230 check_for_pexpect()
General Comments 0
You need to be logged in to leave comments. Login now