##// END OF EJS Templates
package_data was missing the .txt files in the testing directories. This was causing ...
Brian E Granger -
Show More
@@ -1,31 +1,30 b''
1 include README_Windows.txt
1 include README_Windows.txt
2 include win32_manual_post_install.py
2 include win32_manual_post_install.py
3 include ipython.py
3 include ipython.py
4
4
5 graft scripts
5 graft scripts
6
6
7 graft setupext
7 graft setupext
8
8
9 graft IPython/UserConfig
9 graft IPython/UserConfig
10
10
11 graft IPython/kernel
11 graft IPython/kernel
12 graft IPython/config
12 graft IPython/config
13 graft IPython/testing
13 graft IPython/testing
14 graft IPython/tools
14 graft IPython/tools
15
15
16 graft docs
16 graft docs
17 exclude docs/\#*
17 exclude docs/\#*
18 exclude docs/man/*.1
18 exclude docs/man/*.1
19 exclude docs/ChangeLog.*
20
19
21 # There seems to be no way of excluding whole subdirectories, other than
20 # There seems to be no way of excluding whole subdirectories, other than
22 # manually excluding all their subdirs. distutils really is horrible...
21 # manually excluding all their subdirs. distutils really is horrible...
23 exclude docs/attic/*
22 exclude docs/attic/*
24 exclude docs/build/*
23 exclude docs/build/*
25
24
26 global-exclude *~
25 global-exclude *~
27 global-exclude *.flc
26 global-exclude *.flc
28 global-exclude *.pyc
27 global-exclude *.pyc
29 global-exclude .dircopy.log
28 global-exclude .dircopy.log
30 global-exclude .svn
29 global-exclude .svn
31 global-exclude .bzr
30 global-exclude .bzr
@@ -1,228 +1,232 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 = {
128 'IPython.UserConfig' : ['*'],
129 'IPython.tools.tests' : ['*.txt'],
130 'IPython.testing' : ['*.txt']
131 }
128 return package_data
132 return package_data
129
133
130
134
131 #---------------------------------------------------------------------------
135 #---------------------------------------------------------------------------
132 # Find data files
136 # Find data files
133 #---------------------------------------------------------------------------
137 #---------------------------------------------------------------------------
134
138
135 def find_data_files():
139 def find_data_files():
136 """
140 """
137 Find IPython's data_files.
141 Find IPython's data_files.
138 """
142 """
139
143
140 # I can't find how to make distutils create a nested dir. structure, so
144 # I can't find how to make distutils create a nested dir. structure, so
141 # in the meantime do it manually. Butt ugly.
145 # in the meantime do it manually. Butt ugly.
142 # Note that http://www.redbrick.dcu.ie/~noel/distutils.html, ex. 2/3, contain
146 # 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.
147 # information on how to do this more cleanly once python 2.4 can be assumed.
144 # Thanks to Noel for the tip.
148 # Thanks to Noel for the tip.
145 docdirbase = 'share/doc/ipython'
149 docdirbase = 'share/doc/ipython'
146 manpagebase = 'share/man/man1'
150 manpagebase = 'share/man/man1'
147
151
148 # We only need to exclude from this things NOT already excluded in the
152 # We only need to exclude from this things NOT already excluded in the
149 # MANIFEST.in file.
153 # MANIFEST.in file.
150 exclude = ('.sh','.1.gz')
154 exclude = ('.sh','.1.gz')
151 # We need to figure out how we want to package all of our rst docs?
155 # We need to figure out how we want to package all of our rst docs?
152 # docfiles = filter(lambda f:file_doesnt_endwith(f,exclude),glob('docs/*'))
156 # docfiles = filter(lambda f:file_doesnt_endwith(f,exclude),glob('docs/*'))
153 examfiles = filter(isfile, glob('docs/examples/core/*.py'))
157 examfiles = filter(isfile, glob('docs/examples/core/*.py'))
154 examfiles.append(filter(isfile, glob('docs/examples/kernel/*.py')))
158 examfiles.append(filter(isfile, glob('docs/examples/kernel/*.py')))
155 manpages = filter(isfile, glob('docs/man/*.1.gz'))
159 manpages = filter(isfile, glob('docs/man/*.1.gz'))
156 igridhelpfiles = filter(isfile, glob('IPython/Extensions/igrid_help.*'))
160 igridhelpfiles = filter(isfile, glob('IPython/Extensions/igrid_help.*'))
157
161
158 data_files = [#('data', docdirbase, docfiles),
162 data_files = [#('data', docdirbase, docfiles),
159 ('data', pjoin(docdirbase, 'examples'),examfiles),
163 ('data', pjoin(docdirbase, 'examples'),examfiles),
160 ('data', manpagebase, manpages),
164 ('data', manpagebase, manpages),
161 ('data',pjoin(docdirbase, 'extensions'),igridhelpfiles),
165 ('data',pjoin(docdirbase, 'extensions'),igridhelpfiles),
162 ]
166 ]
163 # import pprint
167 # import pprint
164 # pprint.pprint(data_files)
168 # pprint.pprint(data_files)
165 return []
169 return []
166
170
167 #---------------------------------------------------------------------------
171 #---------------------------------------------------------------------------
168 # Find scripts
172 # Find scripts
169 #---------------------------------------------------------------------------
173 #---------------------------------------------------------------------------
170
174
171 def find_scripts():
175 def find_scripts():
172 """
176 """
173 Find IPython's scripts.
177 Find IPython's scripts.
174 """
178 """
175 scripts = []
179 scripts = []
176 scripts.append('IPython/kernel/scripts/ipengine')
180 scripts.append('IPython/kernel/scripts/ipengine')
177 scripts.append('IPython/kernel/scripts/ipcontroller')
181 scripts.append('IPython/kernel/scripts/ipcontroller')
178 scripts.append('IPython/kernel/scripts/ipcluster')
182 scripts.append('IPython/kernel/scripts/ipcluster')
179 scripts.append('scripts/ipython')
183 scripts.append('scripts/ipython')
180 scripts.append('scripts/pycolor')
184 scripts.append('scripts/pycolor')
181 scripts.append('scripts/irunner')
185 scripts.append('scripts/irunner')
182
186
183 # Script to be run by the windows binary installer after the default setup
187 # Script to be run by the windows binary installer after the default setup
184 # routine, to add shortcuts and similar windows-only things. Windows
188 # routine, to add shortcuts and similar windows-only things. Windows
185 # post-install scripts MUST reside in the scripts/ dir, otherwise distutils
189 # post-install scripts MUST reside in the scripts/ dir, otherwise distutils
186 # doesn't find them.
190 # doesn't find them.
187 if 'bdist_wininst' in sys.argv:
191 if 'bdist_wininst' in sys.argv:
188 if len(sys.argv) > 2 and ('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
192 if len(sys.argv) > 2 and ('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
189 print >> sys.stderr,"ERROR: bdist_wininst must be run alone. Exiting."
193 print >> sys.stderr,"ERROR: bdist_wininst must be run alone. Exiting."
190 sys.exit(1)
194 sys.exit(1)
191 scripts.append('scripts/ipython_win_post_install.py')
195 scripts.append('scripts/ipython_win_post_install.py')
192
196
193 return scripts
197 return scripts
194
198
195 #---------------------------------------------------------------------------
199 #---------------------------------------------------------------------------
196 # Find scripts
200 # Find scripts
197 #---------------------------------------------------------------------------
201 #---------------------------------------------------------------------------
198
202
199 def check_for_dependencies():
203 def check_for_dependencies():
200 """Check for IPython's dependencies.
204 """Check for IPython's dependencies.
201
205
202 This function should NOT be called if running under setuptools!
206 This function should NOT be called if running under setuptools!
203 """
207 """
204 from setupext.setupext import (
208 from setupext.setupext import (
205 print_line, print_raw, print_status, print_message,
209 print_line, print_raw, print_status, print_message,
206 check_for_zopeinterface, check_for_twisted,
210 check_for_zopeinterface, check_for_twisted,
207 check_for_foolscap, check_for_pyopenssl,
211 check_for_foolscap, check_for_pyopenssl,
208 check_for_sphinx, check_for_pygments,
212 check_for_sphinx, check_for_pygments,
209 check_for_nose, check_for_pexpect
213 check_for_nose, check_for_pexpect
210 )
214 )
211 print_line()
215 print_line()
212 print_raw("BUILDING IPYTHON")
216 print_raw("BUILDING IPYTHON")
213 print_status('python', sys.version)
217 print_status('python', sys.version)
214 print_status('platform', sys.platform)
218 print_status('platform', sys.platform)
215 if sys.platform == 'win32':
219 if sys.platform == 'win32':
216 print_status('Windows version', sys.getwindowsversion())
220 print_status('Windows version', sys.getwindowsversion())
217
221
218 print_raw("")
222 print_raw("")
219 print_raw("OPTIONAL DEPENDENCIES")
223 print_raw("OPTIONAL DEPENDENCIES")
220
224
221 check_for_zopeinterface()
225 check_for_zopeinterface()
222 check_for_twisted()
226 check_for_twisted()
223 check_for_foolscap()
227 check_for_foolscap()
224 check_for_pyopenssl()
228 check_for_pyopenssl()
225 check_for_sphinx()
229 check_for_sphinx()
226 check_for_pygments()
230 check_for_pygments()
227 check_for_nose()
231 check_for_nose()
228 check_for_pexpect() No newline at end of file
232 check_for_pexpect()
General Comments 0
You need to be logged in to leave comments. Login now