##// END OF EJS Templates
Fixes to build/setup machinery....
Fernando Perez -
Show More
@@ -22,8 +22,8 b" name = 'ipython'"
22 22 # because bdist_rpm does not accept dashes (an RPM) convention, and
23 23 # bdist_deb does not accept underscores (a Debian convention).
24 24
25 development = True # change this to False to do a release
26 version_base = '0.9.0'
25 development = False # change this to False to do a release
26 version_base = '0.9.beta'
27 27 branch = 'ipython'
28 28 revision = '1016'
29 29
@@ -14,14 +14,15 b' graft IPython/config'
14 14 graft IPython/testing
15 15 graft IPython/tools
16 16
17 recursive-include IPython/Extensions igrid_help*
18
17 19 graft docs
18 20 exclude docs/\#*
19 21 exclude docs/man/*.1
20 22
21 # There seems to be no way of excluding whole subdirectories, other than
22 # manually excluding all their subdirs. distutils really is horrible...
23 exclude docs/attic/*
24 exclude docs/build/*
23 # docs subdirs we want to skip
24 prune docs/attic
25 prune docs/build
25 26
26 27 global-exclude *~
27 28 global-exclude *.flc
@@ -21,10 +21,27 b' help:'
21 21 @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
22 22 @echo " changes to make an overview over all changed/added/deprecated items"
23 23 @echo " linkcheck to check all external links for integrity"
24 @echo
25 @echo "Compound utility targets:"
26 @echo "pdf latex and then runs the PDF generation"
27 @echo "all html and pdf"
28 @echo "dist all, and then puts the results in dist/"
24 29
25 30 clean:
26 31 -rm -rf build/*
27 32
33 pdf: latex
34 cd build/latex && make all-pdf
35
36 all: html pdf
37
38 dist: all
39 mkdir -p dist
40 -rm -rf dist/*
41 ln build/latex/IPython.pdf dist/
42 cp -al build/html dist/
43 @echo "Build finished. Final docs are in dist/"
44
28 45 html:
29 46 mkdir -p build/html build/doctrees
30 47 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
@@ -44,7 +44,7 b" copyright = '2008, The IPython Development Team'"
44 44 # The short X.Y version.
45 45 version = '0.9'
46 46 # The full version, including alpha/beta/rc tags.
47 release = '0.9'
47 release = '0.9.beta1'
48 48
49 49 # There are two options for replacing |today|: either, you set today to some
50 50 # non-false value, then it is used:
@@ -135,12 +135,16 b" htmlhelp_basename = 'IPythondoc'"
135 135 latex_paper_size = 'letter'
136 136
137 137 # The font size ('10pt', '11pt' or '12pt').
138 latex_font_size = '10pt'
138 latex_font_size = '11pt'
139 139
140 140 # Grouping the document tree into LaTeX files. List of tuples
141 141 # (source start file, target name, title, author, document class [howto/manual]).
142 latex_documents = [
143 ('index', 'IPython.tex', 'IPython Documentation', 'The IPython Development Team', 'manual'),
142
143 latex_documents = [ ('index', 'IPython.tex', 'IPython Documentation',
144 ur"""Brian Granger and Fernando PΓ©rez\\
145 With contributions from:\\
146 Benjamin Ragan-Kelley and Ville Vainio.""",
147 'manual'),
144 148 ]
145 149
146 150 # The name of an image file (relative to this directory) to place at the top of
@@ -105,8 +105,12 b" if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):"
105 105 # ['IPython/Release.py','docs/source/ipython.rst'],
106 106 # "cd docs && python do_sphinx.py")
107 107 # )
108
108 109 [ target_update(*t) for t in to_update ]
109 110
111 # Build the docs
112 os.system('cd docs && make dist')
113
110 114 #---------------------------------------------------------------------------
111 115 # Find all the packages, package data, scripts and data_files
112 116 #---------------------------------------------------------------------------
@@ -82,7 +82,8 b' setup_args = dict('
82 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,
86 others=None):
86 87 """
87 88 Add a package to the list of packages, including certain subpackages.
88 89 """
@@ -140,36 +141,66 b' def find_package_data():'
140 141 # Find data files
141 142 #---------------------------------------------------------------------------
142 143
144 def make_dir_struct(tag,base,out_base):
145 """Make the directory structure of all files below a starting dir.
146
147 This is just a convenience routine to help build a nested directory
148 hierarchy because distutils is too stupid to do this by itself.
149
150 XXX - this needs a proper docstring!
151 """
152
153 # we'll use these a lot below
154 lbase = len(base)
155 pathsep = os.path.sep
156 lpathsep = len(pathsep)
157
158 out = []
159 for (dirpath,dirnames,filenames) in os.walk(base):
160 # we need to strip out the dirpath from the base to map it to the
161 # output (installation) path. This requires possibly stripping the
162 # path separator, because otherwise pjoin will not work correctly
163 # (pjoin('foo/','/bar') returns '/bar').
164
165 dp_eff = dirpath[lbase:]
166 if dp_eff.startswith(pathsep):
167 dp_eff = dp_eff[lpathsep:]
168 # The output path must be anchored at the out_base marker
169 out_path = pjoin(out_base,dp_eff)
170 # Now we can generate the final filenames. Since os.walk only produces
171 # filenames, we must join back with the dirpath to get full valid file
172 # paths:
173 pfiles = [pjoin(dirpath,f) for f in filenames]
174 # Finally, generate the entry we need, which is a triple of (tag,output
175 # path, files) for use as a data_files parameter in install_data.
176 out.append((tag,out_path,pfiles))
177
178 return out
179
180
143 181 def find_data_files():
144 182 """
145 183 Find IPython's data_files.
184
185 Most of these are docs.
146 186 """
147 187
148 # I can't find how to make distutils create a nested dir. structure, so
149 # in the meantime do it manually. Butt ugly.
150 # Note that http://www.redbrick.dcu.ie/~noel/distutils.html, ex. 2/3, contain
151 # information on how to do this more cleanly once python 2.4 can be assumed.
152 # Thanks to Noel for the tip.
153 188 docdirbase = 'share/doc/ipython'
154 189 manpagebase = 'share/man/man1'
155 190
156 # We only need to exclude from this things NOT already excluded in the
157 # MANIFEST.in file.
158 exclude = ('.sh','.1.gz')
159 # We need to figure out how we want to package all of our rst docs?
160 # docfiles = filter(lambda f:file_doesnt_endwith(f,exclude),glob('docs/*'))
161 # XXX - For now all the example files
162 examfiles = filter(isfile, glob('docs/examples/core/*.py'))
163 examfiles += filter(isfile, glob('docs/examples/kernel/*.py'))
164
191 # Simple file lists can be made by hand
165 192 manpages = filter(isfile, glob('docs/man/*.1.gz'))
166 193 igridhelpfiles = filter(isfile, glob('IPython/Extensions/igrid_help.*'))
167 194
168 data_files = [#('data', docdirbase, docfiles),
169 ('data', pjoin(docdirbase, 'examples'),examfiles),
170 ('data', manpagebase, manpages),
195 # For nested structures, use the utility above
196 example_files = make_dir_struct('data','docs/examples',
197 pjoin(docdirbase,'examples'))
198 manual_files = make_dir_struct('data','docs/dist',pjoin(docdirbase,'manual'))
199
200 # And assemble the entire output list
201 data_files = [ ('data',manpagebase, manpages),
171 202 ('data',pjoin(docdirbase, 'extensions'),igridhelpfiles),
172 ]
203 ] + manual_files + example_files
173 204
174 205 ## import pprint # dbg
175 206 ## print '*'*80
@@ -187,14 +218,14 b' def find_scripts():'
187 218 """
188 219 Find IPython's scripts.
189 220 """
190 scripts = []
191 scripts.append('IPython/kernel/scripts/ipengine')
192 scripts.append('IPython/kernel/scripts/ipcontroller')
193 scripts.append('IPython/kernel/scripts/ipcluster')
194 scripts.append('scripts/ipython')
195 scripts.append('scripts/ipythonx')
196 scripts.append('scripts/pycolor')
197 scripts.append('scripts/irunner')
221 scripts = ['IPython/kernel/scripts/ipengine',
222 'IPython/kernel/scripts/ipcontroller',
223 'IPython/kernel/scripts/ipcluster',
224 'scripts/ipython',
225 'scripts/ipythonx',
226 'scripts/pycolor',
227 'scripts/irunner',
228 ]
198 229
199 230 # Script to be run by the windows binary installer after the default setup
200 231 # routine, to add shortcuts and similar windows-only things. Windows
@@ -209,7 +240,7 b' def find_scripts():'
209 240 return scripts
210 241
211 242 #---------------------------------------------------------------------------
212 # Find scripts
243 # Verify all dependencies
213 244 #---------------------------------------------------------------------------
214 245
215 246 def check_for_dependencies():
General Comments 0
You need to be logged in to leave comments. Login now