##// END OF EJS Templates
changed setup to support easy_install ipython==dev
vivainio -
Show More
@@ -1,55 +1,19 b''
1 #!/usr/bin/env python
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
2 """Wrapper to build IPython as an egg (setuptools format)."""
3 """Setup script for IPython.
4
3
5 Under Posix environments it works like a typical setup.py script.
4 import os
6 Under Windows, the command sdist is not supported, since IPython
5 import sys
7 requires utilities, which are not available under Windows."""
8
6
9 #*****************************************************************************
7 # Add my local path to sys.path
10 # Copyright (C) 2001-2005 Fernando Perez <fperez@colorado.edu>
8 home = os.environ['HOME']
11 #
9 sys.path.insert(0,'%s/usr/local/lib/python%s/site-packages' %
12 # Distributed under the terms of the BSD License. The full license is in
10 (home,sys.version[:3]))
13 # the file COPYING, distributed as part of this software.
14 #*****************************************************************************
15
11
16 import sys, os
12 # now, import setuptools and call the actual setup
17 from glob import glob
13 import setuptools
18 from setupext import install_data_ext
14 print sys.argv
15 #sys.argv=['','bdist_egg']
16 execfile('setup.py')
19
17
20 isfile = os.path.isfile
18 # clean up the junk left around by setuptools
21
19 os.system('rm -rf ipython.egg-info build')
22 if os.path.exists('MANIFEST'): os.remove('MANIFEST')
23
24 from setuptools import setup
25
26
27 execfile(os.path.join('IPython','Release.py'))
28
29 cfgfiles = filter(isfile, glob('IPython/UserConfig/*'))
30
31
32 # Call the setup() routine which does most of the work
33 setup(name = name,
34 version = version,
35 description = description,
36 long_description = long_description,
37 author = authors['Fernando'][0],
38 author_email = authors['Fernando'][1],
39 url = url,
40 download_url = download_url,
41 license = license,
42 platforms = platforms,
43 keywords = keywords,
44 packages = ['IPython', 'IPython.Extensions'],
45 cmdclass = {'install_data': install_data_ext},
46 data_files = [
47 ('lib', 'IPython/UserConfig', cfgfiles)],
48 # egg options
49 entry_points = {
50 'console_scripts': [
51 'ipython = IPython.ipapi:launch_new_instance',
52 'pycolor = IPython.PyColorize:main'
53 ],
54 }
55 )
@@ -1,150 +1,171 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) 2001-2005 Fernando Perez <fperez@colorado.edu>
10 # Copyright (C) 2001-2005 Fernando Perez <fperez@colorado.edu>
11 #
11 #
12 # Distributed under the terms of the BSD License. The full license is in
12 # Distributed under the terms of the BSD License. The full license is in
13 # the file COPYING, distributed as part of this software.
13 # the file COPYING, distributed as part of this software.
14 #*****************************************************************************
14 #*****************************************************************************
15
15
16 import sys, os
16 import sys, os
17 from glob import glob
17 from glob import glob
18 from setupext import install_data_ext
18 from setupext import install_data_ext
19 isfile = os.path.isfile
19 isfile = os.path.isfile
20
20
21 # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
21 # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
22 # update it when the contents of directories change.
22 # update it when the contents of directories change.
23 if os.path.exists('MANIFEST'): os.remove('MANIFEST')
23 if os.path.exists('MANIFEST'): os.remove('MANIFEST')
24
24
25 if os.name == 'posix':
25 if os.name == 'posix':
26 os_name = 'posix'
26 os_name = 'posix'
27 elif os.name in ['nt','dos']:
27 elif os.name in ['nt','dos']:
28 os_name = 'windows'
28 os_name = 'windows'
29 else:
29 else:
30 print 'Unsupported operating system:',os.name
30 print 'Unsupported operating system:',os.name
31 sys.exit(1)
31 sys.exit(1)
32
32
33 # Under Windows, 'sdist' is not supported, since it requires lyxport (and
33 # Under Windows, 'sdist' is not supported, since it requires lyxport (and
34 # hence lyx,perl,latex,pdflatex,latex2html,sh,...)
34 # hence lyx,perl,latex,pdflatex,latex2html,sh,...)
35 if os_name == 'windows' and sys.argv[1] == 'sdist':
35 if os_name == 'windows' and sys.argv[1] == 'sdist':
36 print 'The sdist command is not available under Windows. Exiting.'
36 print 'The sdist command is not available under Windows. Exiting.'
37 sys.exit(1)
37 sys.exit(1)
38
38
39 from distutils.core import setup
39 from distutils.core import setup
40
40
41 # update the manuals when building a source dist
41 # update the manuals when building a source dist
42 if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
42 if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
43 from IPython.genutils import target_update
43 from IPython.genutils import target_update
44 # list of things to be updated. Each entry is a triplet of args for
44 # list of things to be updated. Each entry is a triplet of args for
45 # target_update()
45 # target_update()
46 to_update = [('doc/magic.tex',
46 to_update = [('doc/magic.tex',
47 ['IPython/Magic.py'],
47 ['IPython/Magic.py'],
48 "cd doc && ./update_magic.sh" ),
48 "cd doc && ./update_magic.sh" ),
49
49
50 ('doc/manual.lyx',
50 ('doc/manual.lyx',
51 ['IPython/Release.py','doc/manual_base.lyx'],
51 ['IPython/Release.py','doc/manual_base.lyx'],
52 "cd doc && ./update_version.sh" ),
52 "cd doc && ./update_version.sh" ),
53
53
54 ('doc/manual/manual.html',
54 ('doc/manual/manual.html',
55 ['doc/manual.lyx',
55 ['doc/manual.lyx',
56 'doc/magic.tex',
56 'doc/magic.tex',
57 'doc/examples/example-gnuplot.py',
57 'doc/examples/example-gnuplot.py',
58 'doc/examples/example-magic.py',
58 'doc/examples/example-magic.py',
59 'doc/examples/example-embed.py',
59 'doc/examples/example-embed.py',
60 'doc/examples/example-embed-short.py',
60 'doc/examples/example-embed-short.py',
61 'IPython/UserConfig/ipythonrc',
61 'IPython/UserConfig/ipythonrc',
62 ],
62 ],
63 "cd doc && "
63 "cd doc && "
64 "lyxport -tt --leave --pdf "
64 "lyxport -tt --leave --pdf "
65 "--html -o '-noinfo -split +1 -local_icons' manual.lyx"),
65 "--html -o '-noinfo -split +1 -local_icons' manual.lyx"),
66
66
67 ('doc/new_design.pdf',
67 ('doc/new_design.pdf',
68 ['doc/new_design.lyx'],
68 ['doc/new_design.lyx'],
69 "cd doc && lyxport -tt --pdf new_design.lyx"),
69 "cd doc && lyxport -tt --pdf new_design.lyx"),
70
70
71 ('doc/ipython.1.gz',
71 ('doc/ipython.1.gz',
72 ['doc/ipython.1'],
72 ['doc/ipython.1'],
73 "cd doc && gzip -9c ipython.1 > ipython.1.gz"),
73 "cd doc && gzip -9c ipython.1 > ipython.1.gz"),
74
74
75 ('doc/pycolor.1.gz',
75 ('doc/pycolor.1.gz',
76 ['doc/pycolor.1'],
76 ['doc/pycolor.1'],
77 "cd doc && gzip -9c pycolor.1 > pycolor.1.gz"),
77 "cd doc && gzip -9c pycolor.1 > pycolor.1.gz"),
78 ]
78 ]
79 for target in to_update:
79 for target in to_update:
80 target_update(*target)
80 target_update(*target)
81
81
82 # Release.py contains version, authors, license, url, keywords, etc.
82 # Release.py contains version, authors, license, url, keywords, etc.
83 execfile(os.path.join('IPython','Release.py'))
83 execfile(os.path.join('IPython','Release.py'))
84
84
85 # A little utility we'll need below, since glob() does NOT allow you to do
85 # A little utility we'll need below, since glob() does NOT allow you to do
86 # exclusion on multiple endings!
86 # exclusion on multiple endings!
87 def file_doesnt_endwith(test,endings):
87 def file_doesnt_endwith(test,endings):
88 """Return true if test is a file and its name does NOT end with any
88 """Return true if test is a file and its name does NOT end with any
89 of the strings listed in endings."""
89 of the strings listed in endings."""
90 if not isfile(test):
90 if not isfile(test):
91 return False
91 return False
92 for e in endings:
92 for e in endings:
93 if test.endswith(e):
93 if test.endswith(e):
94 return False
94 return False
95 return True
95 return True
96
96
97 # I can't find how to make distutils create a nested dir. structure, so
97 # I can't find how to make distutils create a nested dir. structure, so
98 # in the meantime do it manually. Butt ugly.
98 # in the meantime do it manually. Butt ugly.
99 # Note that http://www.redbrick.dcu.ie/~noel/distutils.html, ex. 2/3, contain
99 # Note that http://www.redbrick.dcu.ie/~noel/distutils.html, ex. 2/3, contain
100 # information on how to do this more cleanly once python 2.4 can be assumed.
100 # information on how to do this more cleanly once python 2.4 can be assumed.
101 # Thanks to Noel for the tip.
101 # Thanks to Noel for the tip.
102 docdirbase = 'share/doc/ipython-%s' % version
102 docdirbase = 'share/doc/ipython-%s' % version
103 manpagebase = 'share/man/man1'
103 manpagebase = 'share/man/man1'
104
104
105 # We only need to exclude from this things NOT already excluded in the
105 # We only need to exclude from this things NOT already excluded in the
106 # MANIFEST.in file.
106 # MANIFEST.in file.
107 exclude = ('.sh','.1.gz')
107 exclude = ('.sh','.1.gz')
108 docfiles = filter(lambda f:file_doesnt_endwith(f,exclude),glob('doc/*'))
108 docfiles = filter(lambda f:file_doesnt_endwith(f,exclude),glob('doc/*'))
109
109
110 examfiles = filter(isfile, glob('doc/examples/*.py'))
110 examfiles = filter(isfile, glob('doc/examples/*.py'))
111 manfiles = filter(isfile, glob('doc/manual/*.html')) + \
111 manfiles = filter(isfile, glob('doc/manual/*.html')) + \
112 filter(isfile, glob('doc/manual/*.css')) + \
112 filter(isfile, glob('doc/manual/*.css')) + \
113 filter(isfile, glob('doc/manual/*.png'))
113 filter(isfile, glob('doc/manual/*.png'))
114 manpages = filter(isfile, glob('doc/*.1.gz'))
114 manpages = filter(isfile, glob('doc/*.1.gz'))
115 cfgfiles = filter(isfile, glob('IPython/UserConfig/*'))
115 cfgfiles = filter(isfile, glob('IPython/UserConfig/*'))
116 scriptfiles = filter(isfile, ['scripts/ipython','scripts/pycolor'])
116 scriptfiles = filter(isfile, ['scripts/ipython','scripts/pycolor'])
117
117
118 # Script to be run by the windows binary installer after the default setup
118 # Script to be run by the windows binary installer after the default setup
119 # routine, to add shortcuts and similar windows-only things. Windows
119 # routine, to add shortcuts and similar windows-only things. Windows
120 # post-install scripts MUST reside in the scripts/ dir, otherwise distutils
120 # post-install scripts MUST reside in the scripts/ dir, otherwise distutils
121 # doesn't find them.
121 # doesn't find them.
122 if 'bdist_wininst' in sys.argv:
122 if 'bdist_wininst' in sys.argv:
123 if len(sys.argv) > 2 and ('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
123 if len(sys.argv) > 2 and ('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
124 print >> sys.stderr,"ERROR: bdist_wininst must be run alone. Exiting."
124 print >> sys.stderr,"ERROR: bdist_wininst must be run alone. Exiting."
125 sys.exit(1)
125 sys.exit(1)
126 scriptfiles.append('scripts/ipython_win_post_install.py')
126 scriptfiles.append('scripts/ipython_win_post_install.py')
127
127
128 datafiles = [('data', docdirbase, docfiles),
129 ('data', os.path.join(docdirbase, 'examples'),
130 examfiles),
131 ('data', os.path.join(docdirbase, 'manual'),
132 manfiles),
133 ('data', manpagebase, manpages),
134 ('lib', 'IPython/UserConfig', cfgfiles)]
135
136 if 'setuptools' in sys.modules:
137 # setuptools config for egg building
138 egg_extra_kwds = {
139 'entry_points': {
140 'console_scripts': [
141 'ipython = IPython.ipapi:launch_new_instance',
142 'pycolor = IPython.PyColorize:main'
143 ]}
144 }
145 scriptfiles = []
146 # eggs will lack docs, examples
147 datafiles = [('lib', 'IPython/UserConfig', cfgfiles)]
148 else:
149 egg_extra_kwds = {}
150
151
128 # Call the setup() routine which does most of the work
152 # Call the setup() routine which does most of the work
129 setup(name = name,
153 setup(name = name,
130 version = version,
154 version = version,
131 description = description,
155 description = description,
132 long_description = long_description,
156 long_description = long_description,
133 author = authors['Fernando'][0],
157 author = authors['Fernando'][0],
134 author_email = authors['Fernando'][1],
158 author_email = authors['Fernando'][1],
135 url = url,
159 url = url,
136 download_url = download_url,
160 download_url = download_url,
137 license = license,
161 license = license,
138 platforms = platforms,
162 platforms = platforms,
139 keywords = keywords,
163 keywords = keywords,
140 packages = ['IPython', 'IPython.Extensions'],
164 packages = ['IPython', 'IPython.Extensions'],
141 scripts = scriptfiles,
165 scripts = scriptfiles,
166
142 cmdclass = {'install_data': install_data_ext},
167 cmdclass = {'install_data': install_data_ext},
143 data_files = [('data', docdirbase, docfiles),
168 data_files = datafiles,
144 ('data', os.path.join(docdirbase, 'examples'),
169 # extra params needed for eggs
145 examfiles),
170 **egg_extra_kwds
146 ('data', os.path.join(docdirbase, 'manual'),
147 manfiles),
148 ('data', manpagebase, manpages),
149 ('lib', 'IPython/UserConfig', cfgfiles)]
150 )
171 )
General Comments 0
You need to be logged in to leave comments. Login now