##// END OF EJS Templates
Finished initial reworking and updating of setup.py and friends, including the MANIFEST.in. Everything seems...
Finished initial reworking and updating of setup.py and friends, including the MANIFEST.in. Everything seems to work fine. I have also gone through the tests in various subpackages (like kernel) and have protected imports of twisted, zope.interface and foolscap with a try/except clause. Now the tests are simply not run if these deps are missing. All tests now pass no matter what.

File last commit:

r1244:ba669b1a
r1244:ba669b1a
Show More
setup.py
169 lines | 5.8 KiB | text/x-python | PythonLexer
Ville M. Vainio
more crlf
r1033 #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Setup script for IPython.
Under Posix environments it works like a typical setup.py script.
Under Windows, the command sdist is not supported, since IPython
Fernando Perez
Finish doc/build tools cleanup....
r1207 requires utilities which are not available under Windows."""
Ville M. Vainio
more crlf
r1033
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 #-------------------------------------------------------------------------------
# Copyright (C) 2008 The IPython Development Team
Ville M. Vainio
more crlf
r1033 #
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 #-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
Ville M. Vainio
more crlf
r1033
# Stdlib imports
import os
import sys
from glob import glob
Fernando Perez
Finish doc/build tools cleanup....
r1207
# BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
# update it when the contents of directories change.
if os.path.exists('MANIFEST'): os.remove('MANIFEST')
from distutils.core import setup
Ville M. Vainio
more crlf
r1033
Fernando Perez
Finish doc/build tools cleanup....
r1207 # Local imports
from IPython.genutils import target_update
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 from setupbase import (
setup_args,
find_packages,
find_package_data,
find_scripts,
find_data_files,
check_for_dependencies
)
Ville M. Vainio
more crlf
r1033 isfile = os.path.isfile
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237
#-------------------------------------------------------------------------------
# Handle OS specific things
#-------------------------------------------------------------------------------
Ville M. Vainio
more crlf
r1033
if os.name == 'posix':
os_name = 'posix'
elif os.name in ['nt','dos']:
os_name = 'windows'
else:
print 'Unsupported operating system:',os.name
sys.exit(1)
Fernando Perez
Finish doc/build tools cleanup....
r1207 # Under Windows, 'sdist' has not been supported. Now that the docs build with
# Sphinx it might work, but let's not turn it on until someone confirms that it
# actually works.
Ville M. Vainio
more crlf
r1033 if os_name == 'windows' and 'sdist' in sys.argv:
print 'The sdist command is not available under Windows. Exiting.'
sys.exit(1)
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 #-------------------------------------------------------------------------------
# Things related to the IPython documentation
#-------------------------------------------------------------------------------
Ville M. Vainio
more crlf
r1033 # update the manuals when building a source dist
if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
Ville M. Vainio
Updated setup.py and do_sphinx.py for new manual distribution
r1188 import textwrap
Fernando Perez
Finish doc/build tools cleanup....
r1207
# List of things to be updated. Each entry is a triplet of args for
Ville M. Vainio
more crlf
r1033 # target_update()
Brian E Granger
Finished initial reworking and updating of setup.py and friends, including the MANIFEST.in. Everything seems...
r1244 to_update = [
Fernando Perez
Finish doc/build tools cleanup....
r1207 # FIXME - Disabled for now: we need to redo an automatic way
# of generating the magic info inside the rst.
#('doc/magic.tex',
#['IPython/Magic.py'],
#"cd doc && ./update_magic.sh" ),
('doc/ipython.1.gz',
['doc/ipython.1'],
"cd doc && gzip -9c ipython.1 > ipython.1.gz"),
('doc/pycolor.1.gz',
['doc/pycolor.1'],
"cd doc && gzip -9c pycolor.1 > pycolor.1.gz"),
]
Brian E Granger
Finished initial reworking and updating of setup.py and friends, including the MANIFEST.in. Everything seems...
r1244 try:
import sphinx
except ImportError:
pass
else:
# The do_sphinx scripts builds html and pdf, so just one
# target is enough to cover all manual generation
to_update.append(
('doc/manual/ipython.pdf',
['IPython/Release.py','doc/source/ipython.rst'],
"cd doc && python do_sphinx.py")
)
Fernando Perez
Finish doc/build tools cleanup....
r1207 [ target_update(*t) for t in to_update ]
Ville M. Vainio
more crlf
r1033
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 #---------------------------------------------------------------------------
# Find all the packages, package data, scripts and data_files
#---------------------------------------------------------------------------
packages = find_packages()
package_data = find_package_data()
scripts = find_scripts()
data_files = find_data_files()
#---------------------------------------------------------------------------
# Handle dependencies and setuptools specific things
#---------------------------------------------------------------------------
# This dict is used for passing extra arguments that are setuptools
# specific to setup
setuptools_extra_args = {}
Ville M. Vainio
more crlf
r1033
if 'setuptools' in sys.modules:
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 setuptools_extra_args['zip_safe'] = False
setuptools_extra_args['entry_points'] = {
'console_scripts': [
Ville M. Vainio
more crlf
r1033 'ipython = IPython.ipapi:launch_new_instance',
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 'pycolor = IPython.PyColorize:main',
'ipcontroller = IPython.kernel.scripts.ipcontroller:main',
'ipengine = IPython.kernel.scripts.ipengine:main',
'ipcluster = IPython.kernel.scripts.ipcluster:main'
]
}
setup_args["extras_require"] = dict(
kernel = [
"zope.interface>=3.4.1",
"Twisted>=8.0.1",
"foolscap>=0.2.6"
],
doc=['Sphinx>=0.3','pygments'],
test='nose>=0.10.1',
security=["pyOpenSSL>=0.6"]
)
# Allow setuptools to handle the scripts
scripts = []
Fernando Perez
Finish doc/build tools cleanup....
r1207 # eggs will lack docs, examples
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 data_files = []
Ville M. Vainio
more crlf
r1033 else:
ville
setup.py: use package_data to grab UserConfig files, install UserConfig as normal package
r1180 # package_data of setuptools was introduced to distutils in 2.4
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 cfgfiles = filter(isfile, glob('IPython/UserConfig/*'))
ville
setup.py: use package_data to grab UserConfig files, install UserConfig as normal package
r1180 if sys.version_info < (2,4):
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 data_files.append(('lib', 'IPython/UserConfig', cfgfiles))
# If we are running without setuptools, call this function which will
# check for dependencies an inform the user what is needed. This is
# just to make life easy for users.
check_for_dependencies()
#---------------------------------------------------------------------------
# Do the actual setup now
#---------------------------------------------------------------------------
setup_args['packages'] = packages
setup_args['package_data'] = package_data
setup_args['scripts'] = scripts
setup_args['data_files'] = data_files
setup_args.update(setuptools_extra_args)
if __name__ == '__main__':
setup(**setup_args)