##// END OF EJS Templates
merge flags&aliases help output into just 'options'
merge flags&aliases help output into just 'options'

File last commit:

r4175:eaf7f8cf
r4195:cb24d551
Show More
setup.py
272 lines | 10.1 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
Fernando Perez
Add support for commit information in auto-generated archives....
r3199 #-----------------------------------------------------------------------------
# Copyright (c) 2008-2010, IPython Development Team.
# Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
# Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
# Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
Ville M. Vainio
more crlf
r1033 #
Fernando Perez
Add support for commit information in auto-generated archives....
r3199 # Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237
Fernando Perez
Inform user at install time of minimal python requirements if not met....
r2493 #-----------------------------------------------------------------------------
# Minimal Python version sanity check
#-----------------------------------------------------------------------------
import sys
# This check is also made in IPython/__init__, don't forget to update both when
# changing Python version requirements.
Fernando Perez
Fix invalid version check in setup.py.
r3196 if sys.version[0:3] < '2.6':
Fernando Perez
Inform user at install time of minimal python requirements if not met....
r2493 error = """\
Fernando Perez
Fix invalid version check in setup.py.
r3196 ERROR: 'IPython requires Python Version 2.6 or above.'
Fernando Perez
Inform user at install time of minimal python requirements if not met....
r2493 Exiting."""
print >> sys.stderr, error
sys.exit(1)
Fernando Perez
Fix invalid version check in setup.py.
r3196 # At least we're on the python version we need, move on.
Fernando Perez
Inform user at install time of minimal python requirements if not met....
r2493
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
Fernando Perez
Move cleanup to main setup.py, where it belongs....
r2460 import shutil
Ville M. Vainio
more crlf
r1033
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
Inform user at install time of minimal python requirements if not met....
r2493 # Our own imports
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 from IPython.utils.path import target_update
Fernando Perez
Finish doc/build tools cleanup....
r1207
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,
Fernando Perez
Add support for commit information in auto-generated archives....
r3199 check_for_dependencies,
record_commit_info,
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 )
MinRK
make display_status optional at runtime in setupext...
r3744 from setupext import setupext
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237
Ville M. Vainio
more crlf
r1033 isfile = os.path.isfile
Brian Granger
Fixing installation related issues.
r2058 pjoin = os.path.join
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237
Fernando Perez
Move cleanup to main setup.py, where it belongs....
r2460 #-----------------------------------------------------------------------------
# Function definitions
#-----------------------------------------------------------------------------
def cleanup():
"""Clean up the junk left around by the build process"""
if "develop" not in sys.argv:
try:
shutil.rmtree('ipython.egg-info')
except:
try:
os.unlink('ipython.egg-info')
except:
pass
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.
Fernando Perez
Fixes to build system.
r1522 #('docs/magic.tex',
Fernando Perez
Finish doc/build tools cleanup....
r1207 #['IPython/Magic.py'],
#"cd doc && ./update_magic.sh" ),
Fernando Perez
Update setup and support tools to include new man pages.
r2100
('docs/man/ipcluster.1.gz',
['docs/man/ipcluster.1'],
'cd docs/man && gzip -9c ipcluster.1 > ipcluster.1.gz'),
('docs/man/ipcontroller.1.gz',
['docs/man/ipcontroller.1'],
'cd docs/man && gzip -9c ipcontroller.1 > ipcontroller.1.gz'),
('docs/man/ipengine.1.gz',
['docs/man/ipengine.1'],
'cd docs/man && gzip -9c ipengine.1 > ipengine.1.gz'),
Fernando Perez
Fixes to build system.
r1522 ('docs/man/ipython.1.gz',
['docs/man/ipython.1'],
Fernando Perez
Update setup and support tools to include new man pages.
r2100 'cd docs/man && gzip -9c ipython.1 > ipython.1.gz'),
('docs/man/ipython-wx.1.gz',
['docs/man/ipython-wx.1'],
'cd docs/man && gzip -9c ipython-wx.1 > ipython-wx.1.gz'),
('docs/man/ipythonx.1.gz',
['docs/man/ipythonx.1'],
'cd docs/man && gzip -9c ipythonx.1 > ipythonx.1.gz'),
('docs/man/irunner.1.gz',
['docs/man/irunner.1'],
'cd docs/man && gzip -9c irunner.1 > irunner.1.gz'),
Fernando Perez
Finish doc/build tools cleanup....
r1207
Fernando Perez
Fixes to build system.
r1522 ('docs/man/pycolor.1.gz',
['docs/man/pycolor.1'],
Fernando Perez
Update setup and support tools to include new man pages.
r2100 'cd docs/man && gzip -9c pycolor.1 > pycolor.1.gz'),
Fernando Perez
Finish doc/build tools cleanup....
r1207 ]
Fernando Perez
Final updates for releasing the 0.9.rc1....
r1596 # Only build the docs if sphinx is present
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:
Fernando Perez
Final updates for releasing the 0.9.rc1....
r1596 # The Makefile calls the do_sphinx scripts to build html and pdf, so
# just one target is enough to cover all manual generation
# First, compute all the dependencies that can force us to rebuild the
# docs. Start with the main release file that contains metadata
Brian Granger
Fixing installation related issues.
r2058 docdeps = ['IPython/core/release.py']
Fernando Perez
Final updates for releasing the 0.9.rc1....
r1596 # Inculde all the reST sources
pjoin = os.path.join
for dirpath,dirnames,filenames in os.walk('docs/source'):
if dirpath in ['_static','_templates']:
continue
docdeps += [ pjoin(dirpath,f) for f in filenames
if f.endswith('.txt') ]
# and the examples
for dirpath,dirnames,filenames in os.walk('docs/example'):
docdeps += [ pjoin(dirpath,f) for f in filenames
if not f.endswith('~') ]
# then, make them all dependencies for the main PDF (the html will get
# auto-generated as well).
to_update.append(
('docs/dist/ipython.pdf',
docdeps,
"cd docs && make dist")
)
Fernando Perez
Fixes to build/setup machinery....
r1525
Fernando Perez
Finish doc/build tools cleanup....
r1207 [ target_update(*t) for t in to_update ]
Fernando Perez
Fixes to build/setup machinery....
r1525
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 #---------------------------------------------------------------------------
MinRK
prevent duplicate script installs in setuptools...
r3681 # Find all the packages, package data, and data_files
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 #---------------------------------------------------------------------------
packages = find_packages()
package_data = find_package_data()
data_files = find_data_files()
#---------------------------------------------------------------------------
MinRK
prevent duplicate script installs in setuptools...
r3681 # Handle scripts, dependencies, and setuptools specific things
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 #---------------------------------------------------------------------------
Fernando Perez
Improve setuptools support....
r2422 # For some commands, use setuptools. Note that we do NOT list install here!
# If you want a setuptools-enhanced install, just run 'setupegg.py install'
MinRK
'install' depends on setuptools on Windows
r4093 needs_setuptools = set(('develop', 'sdist', 'release', 'bdist_egg', 'bdist_rpm',
Fernando Perez
Improve setuptools support....
r2422 'bdist', 'bdist_dumb', 'bdist_wininst', 'install_egg_info',
'build_sphinx', 'egg_info', 'easy_install', 'upload',
MinRK
'install' depends on setuptools on Windows
r4093 ))
if sys.platform == 'win32':
# Depend on setuptools for install on *Windows only*
# If we get script-installation working without setuptools,
# then we can back off, but until then use it.
# See Issue #369 on GitHub for more
needs_setuptools.add('install')
if len(needs_setuptools.intersection(sys.argv)) > 0:
Fernando Perez
Improve setuptools support....
r2422 import setuptools
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 # 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
epatters
Clean up entry point definition is setup.py.
r3839 setuptools_extra_args['entry_points'] = find_scripts(True)
Brian Granger
Skipping a few tests related to the wx frontend that fail on Windows.
r1561 setup_args['extras_require'] = dict(
MinRK
organize IPython.parallel into subpackages
r3673 parallel = 'pyzmq>=2.1.4',
MinRK
update zmq dependency to 2.1.4
r4028 zmq = 'pyzmq>=2.1.4',
Brian Granger
Skipping a few tests related to the wx frontend that fail on Windows.
r1561 doc='Sphinx>=0.3',
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 test='nose>=0.10.1',
)
MinRK
make readline a dependency on OSX and pyreadline on Windows...
r3699 requires = setup_args.setdefault('install_requires', [])
MinRK
make display_status optional at runtime in setupext...
r3744 setupext.display_status = False
if not setupext.check_for_readline():
MinRK
don't rely on setuptools for readline dependency check
r3743 if sys.platform == 'darwin':
MinRK
make display_status optional at runtime in setupext...
r3744 requires.append('readline')
Christoph Gohlke
Windows install fixes...
r4175 elif sys.platform.startswith('win') and sys.maxsize < 2**32:
# only require pyreadline on 32b Windows, due to 64b bug in pyreadline:
# https://bugs.launchpad.net/pyreadline/+bug/787574
MinRK
don't rely on setuptools for readline dependency check
r3743 requires.append('pyreadline')
else:
pass
# do we want to install readline here?
MinRK
prevent duplicate script installs in setuptools...
r3681
# Script to be run by the windows binary installer after the default setup
# routine, to add shortcuts and similar windows-only things. Windows
# post-install scripts MUST reside in the scripts/ dir, otherwise distutils
# doesn't find them.
if 'bdist_wininst' in sys.argv:
if len(sys.argv) > 2 and \
('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
print >> sys.stderr, "ERROR: bdist_wininst must be run alone. Exiting."
sys.exit(1)
setup_args['scripts'] = [pjoin('scripts','ipython_win_post_install.py')]
Christoph Gohlke
Windows install fixes...
r4175 setup_args['options'] = {"bdist_wininst": {"install_script": "ipython_win_post_install.py"}}
Ville M. Vainio
more crlf
r1033 else:
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 # 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()
epatters
Clean up entry point definition is setup.py.
r3839 setup_args['scripts'] = find_scripts(False)
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237
#---------------------------------------------------------------------------
# Do the actual setup now
#---------------------------------------------------------------------------
Fernando Perez
Add support for commit information in auto-generated archives....
r3199 setup_args['cmdclass'] = {'build_py': record_commit_info('IPython')}
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 setup_args['packages'] = packages
setup_args['package_data'] = package_data
setup_args['data_files'] = data_files
setup_args.update(setuptools_extra_args)
Fernando Perez
Move cleanup to main setup.py, where it belongs....
r2460
Brian E Granger
Initial work towards refactoring the setup.py scripts to accept the new ipython1 packages...
r1237 if __name__ == '__main__':
setup(**setup_args)
Fernando Perez
Move cleanup to main setup.py, where it belongs....
r2460 cleanup()