~ellisonbg/ipython/bugfixes0411409

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env python
# -*- coding: utf-8 -*-
r"""Setup script for exe distribution of IPython (does not require python).

- Requires py2exe

- install pyreadline *package dir* in ipython root directory by running:
  
svn co http://ipython.scipy.org/svn/ipython/pyreadline/branches/maintenance_1.3/pyreadline/  
wget http://ipython.scipy.org/svn/ipython/pyreadline/branches/maintenance_1.3/readline.py

OR (if you want the latest trunk):  
  
svn co http://ipython.scipy.org/svn/ipython/pyreadline/trunk/pyreadline

- Create the distribution in 'dist' by running "python exesetup.py py2exe"

- Run ipython.exe to go.

"""

#*****************************************************************************
#       Copyright (C) 2001-2005 Fernando Perez <fperez@colorado.edu>
#
#  Distributed under the terms of the BSD License.  The full license is in
#  the file COPYING, distributed as part of this software.
#*****************************************************************************

# Stdlib imports
import os
import sys

from glob import glob


# A few handy globals
isfile = os.path.isfile
pjoin = os.path.join

from distutils.core import setup
from distutils import dir_util
import py2exe

# update the manuals when building a source dist
# Release.py contains version, authors, license, url, keywords, etc.
execfile(pjoin('IPython','Release.py'))

# A little utility we'll need below, since glob() does NOT allow you to do
# exclusion on multiple endings!
def file_doesnt_endwith(test,endings):
    """Return true if test is a file and its name does NOT end with any
    of the strings listed in endings."""
    if not isfile(test):
        return False
    for e in endings:
        if test.endswith(e):
            return False
    return True


egg_extra_kwds = {}

# Call the setup() routine which does most of the work
setup(name             = name,
    options   = {
    'py2exe': {
        'packages' : ['IPython', 'IPython.Extensions', 'IPython.external',
                      'pyreadline'],
        'excludes' : ["Tkconstants","Tkinter","tcl",'IPython.igrid','wx',
                      'wxPython','igrid', 'PyQt4', 'zope', 'Zope', 'Zope2',
                      '_curses','enthought.traits','gtk','qt', 'pydb','idlelib',                      
                      ]
                    
                     }
    },
    version          = version,
    description      = description,
    long_description = long_description,
    author           = authors['Fernando'][0],
    author_email     = authors['Fernando'][1],
    url              = url,
    download_url     = download_url,
    license          = license,
    platforms        = platforms,
    keywords         = keywords,
    console          = ['ipykit.py'],
    
    # extra params needed for eggs
    **egg_extra_kwds                        
    )

minimal_conf = """
import IPython.ipapi
ip = IPython.ipapi.get()

ip.load('ipy_kitcfg')
import ipy_profile_sh
"""

if not os.path.isdir("dist/_ipython"):
    print "Creating simple _ipython dir"
    os.mkdir("dist/_ipython")
    open("dist/_ipython/ipythonrc.ini","w").write("# intentionally blank\n")
    open("dist/_ipython/ipy_user_conf.py","w").write(minimal_conf)
    if os.path.isdir('bin'):
        dir_util.copy_tree('bin','dist/bin')