srcanamdw/codescanner/pyinstaller/Configure.py
author noe\swadi
Thu, 18 Feb 2010 12:29:02 +0530
changeset 1 22878952f6e2
permissions -rw-r--r--
Committing the CodeScanner Core tool This component has been moved from the StaticAnaApps package. BUG : 5889 (http://developer.symbian.org/webbugs/show_bug.cgi?id=5889).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     1
#! /usr/bin/env python
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     2
# Configure PyInstaller for the current Python installation.
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     3
# Copyright (C) 2005, Giovanni Bajo
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     4
# Based on previous work under copyright (c) 2002 McMillan Enterprises, Inc.
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     5
#
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     6
# This program is free software; you can redistribute it and/or
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     7
# modify it under the terms of the GNU General Public License
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     8
# as published by the Free Software Foundation; either version 2
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     9
# of the License, or (at your option) any later version.
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    10
#
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    11
# This program is distributed in the hope that it will be useful,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    14
# GNU General Public License for more details.
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    15
#
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    16
# You should have received a copy of the GNU General Public License
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    17
# along with this program; if not, write to the Free Software
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    18
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    19
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    20
import os, sys, string, shutil
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    21
HOME = os.path.dirname(sys.argv[0])
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    22
iswin = sys.platform[:3] == 'win'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    23
is24 = hasattr(sys, "version_info") and sys.version_info[:2] >= (2,4)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    24
cygwin = sys.platform == 'cygwin'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    25
configfile = os.path.join(HOME, 'config.dat')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    26
try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    27
    config = eval(open(configfile, 'r').read())
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    28
except IOError:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    29
    config = {'useELFEXE':1}    # if not set by Make.py we can assume Windows
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    30
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    31
# Save Python version, to detect and avoid conflicts
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    32
config["pythonVersion"] = sys.version
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    33
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    34
import mf, bindepend
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    35
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    36
# EXE_dependencies
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    37
print "I: computing EXE_dependencies"
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    38
python = sys.executable
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    39
if not iswin:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    40
    while os.path.islink(python):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    41
        python = os.readlink(python)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    42
        if not os.path.isabs(python):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    43
            for dir in string.split(os.environ['PATH'], os.pathsep):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    44
                test = os.path.join(dir, python)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    45
                if os.path.exists(test):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    46
                    python = test
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    47
                    break
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    48
toc = bindepend.Dependencies([('', python, '')])
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    49
if iswin and sys.version[:3] == '1.5':
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    50
    import exceptions
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    51
    toc.append((os.path.basename(exceptions.__file__), exceptions.__file__, 'BINARY'))
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    52
config['EXE_dependencies'] = toc[1:]
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    53
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    54
_useTK = """\
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    55
# Generated by Configure.py
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    56
# This file is public domain
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    57
import os, sys
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    58
try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    59
    basedir = os.environ['_MEIPASS2']
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    60
except KeyError:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    61
    basedir = sys.path[0]
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    62
tcldir = os.path.join(basedir, '_MEI', 'tcl%s')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    63
tkdir = os.path.join(basedir, '_MEI', 'tk%s')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    64
os.environ["TCL_LIBRARY"] = tcldir
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    65
os.environ["TK_LIBRARY"] = tkdir
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    66
os.putenv("TCL_LIBRARY", tcldir)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    67
os.putenv("TK_LIBRARY", tkdir)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    68
"""
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    69
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    70
# TCL_root, TK_root and support/useTK.py
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    71
print "I: Finding TCL/TK..."
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    72
if not iswin:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    73
    saveexcludes = bindepend.excludes
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    74
    bindepend.excludes = {}
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    75
import re
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    76
pattern = [r'libtcl(\d\.\d)?\.so', r'(?i)tcl(\d\d)\.dll'][iswin]
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    77
a = mf.ImportTracker()
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    78
a.analyze_r('Tkinter')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    79
binaries = []
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    80
for modnm, mod in a.modules.items():
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    81
    if isinstance(mod, mf.ExtensionModule):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    82
        binaries.append((mod.__name__, mod.__file__, 'EXTENSION'))
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    83
binaries.extend(bindepend.Dependencies(binaries))
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    84
binaries.extend(bindepend.Dependencies([('', sys.executable, '')]))
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    85
for nm, fnm, typ in binaries:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    86
    mo = re.match(pattern, nm)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    87
    if mo:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    88
        ver = mo.group(1)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    89
        tclbindir = os.path.dirname(fnm)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    90
        if iswin:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    91
            ver = ver[0] + '.' + ver[1:]
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    92
        elif ver is None:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    93
            # we found "libtcl.so.0" so we need to get the version from the lib directory
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    94
            for name in os.listdir(tclbindir):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    95
                mo = re.match(r'tcl(\d.\d)', name)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    96
                if mo:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    97
                    ver = mo.group(1)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    98
        print "I: found TCL/TK version %s" % ver
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    99
        open(os.path.join(HOME, 'support/useTK.py'), 'w').write(_useTK % (ver, ver))
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   100
        tclnm = 'tcl%s' % ver
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   101
        tknm = 'tk%s' % ver
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   102
        # Linux: /usr/lib with the .tcl files in /usr/lib/tcl8.3 and /usr/lib/tk8.3
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   103
        # Windows: Python21/DLLs with the .tcl files in Python21/tcl/tcl8.3 and Python21/tcl/tk8.3
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   104
        #      or  D:/Programs/Tcl/bin with the .tcl files in D:/Programs/Tcl/lib/tcl8.0 and D:/Programs/Tcl/lib/tk8.0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   105
        if iswin:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   106
            for attempt in ['../tcl', '../lib']:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   107
                if os.path.exists(os.path.join(tclbindir, attempt, tclnm)):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   108
                    config['TCL_root'] = os.path.join(tclbindir, attempt, tclnm)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   109
                    config['TK_root'] = os.path.join(tclbindir, attempt, tknm)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   110
                    break
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   111
        else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   112
            config['TCL_root'] = os.path.join(tclbindir, tclnm)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   113
            config['TK_root'] = os.path.join(tclbindir, tknm)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   114
        break
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   115
else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   116
    print "I: could not find TCL/TK"
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   117
if not iswin:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   118
    bindepend.excludes = saveexcludes
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   119
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   120
#useZLIB
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   121
print "I: testing for Zlib..."
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   122
try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   123
    import zlib
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   124
except ImportError:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   125
    config['useZLIB'] = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   126
    print 'I: ... Zlib unavailable'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   127
else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   128
    config['useZLIB'] = 1
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   129
    print 'I: ... Zlib available'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   130
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   131
#hasRsrcUpdate
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   132
if iswin:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   133
    # only available on windows
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   134
    print "I: Testing for ability to set icons, version resources..."
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   135
    try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   136
        import win32api, icon, versionInfo
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   137
    except ImportError, detail:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   138
        config['hasRsrcUpdate'] = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   139
        print 'I: ... resource update unavailable -', detail
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   140
    else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   141
        test_exe = os.path.join(HOME, r'support\loader\run_7rw.exe')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   142
        if not os.path.exists( test_exe ):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   143
            config['hasRsrcUpdate'] = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   144
            print 'E: ... resource update unavailable - %s not found' % test_exe
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   145
        else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   146
            # The test_exe may be read-only
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   147
            # make a writable copy and test using that
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   148
            rw_test_exe = os.path.join( os.environ['TEMP'], 'me_test_exe.tmp' )
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   149
            shutil.copyfile( test_exe, rw_test_exe )
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   150
            try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   151
                hexe = win32api.BeginUpdateResource(rw_test_exe,0)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   152
            except:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   153
                config['hasRsrcUpdate'] = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   154
                print 'I: ... resource update unavailable - win32api.BeginUpdateResource failed'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   155
            else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   156
                win32api.EndUpdateResource(hexe, 1)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   157
                config['hasRsrcUpdate'] = 1
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   158
                print 'I: ... resource update available'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   159
            os.remove(rw_test_exe)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   160
else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   161
    config['hasRsrcUpdate'] = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   162
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   163
_useUnicode = """\
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   164
# Generated by Configure.py
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   165
# This file is public domain
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   166
import %s
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   167
"""
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   168
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   169
_useUnicodeFN = os.path.join(HOME, 'support', 'useUnicode.py')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   170
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   171
#hasUnicode
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   172
print 'I: Testing for Unicode support...'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   173
try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   174
    import codecs
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   175
    config['hasUnicode'] = 1
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   176
    try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   177
        import encodings
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   178
    except ImportError:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   179
        module = "codecs"
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   180
    else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   181
        module = "encodings"
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   182
    open(_useUnicodeFN, 'w').write(_useUnicode % module)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   183
    print 'I: ... Unicode available'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   184
except ImportError:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   185
    try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   186
        os.remove(_useUnicodeFN)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   187
    except OSError:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   188
        pass
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   189
    config['hasUnicode'] = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   190
    print 'I: ... Unicode NOT available'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   191
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   192
#hasUPX
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   193
print 'I: testing for UPX...'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   194
hasUPX = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   195
try:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   196
    vers = os.popen("upx -V").readlines()
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   197
    if not vers:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   198
        hasUPX = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   199
    else:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   200
        v = string.split(vers[0])[1]
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   201
        hasUPX = tuple(map(int, string.split(v, ".")))
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   202
        if iswin and is24 and hasUPX < (1,92):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   203
            print 'E: UPX is too old! Python 2.4 under Windows requires UPX 1.92+'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   204
            hasUPX = 0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   205
    print 'I: ...UPX %s' % (('unavailable','available')[hasUPX != 0])
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   206
except Exception, e:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   207
    print 'I: ...exception result in testing for UPX'
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   208
    print e, e.args
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   209
config['hasUPX'] = hasUPX
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   210
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   211
# now write out config, so Build can load
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   212
outf = open(configfile, 'w')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   213
import pprint
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   214
pprint.pprint(config, outf)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   215
outf.close()
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   216
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   217
import Build
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   218
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   219
# PYZ_dependencies
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   220
print "I: computing PYZ dependencies..."
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   221
a = mf.ImportTracker([os.path.join(HOME, 'support')])
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   222
a.analyze_r('archive')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   223
mod = a.modules['archive']
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   224
toc = Build.TOC([(mod.__name__, mod.__file__, 'PYMODULE')])
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   225
for i in range(len(toc)):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   226
    nm, fnm, typ = toc[i]
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   227
    mod = a.modules[nm]
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   228
    tmp = []
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   229
    for importednm, isdelayed, isconditional in mod.imports:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   230
        if not isconditional:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   231
            realnms = a.analyze_one(importednm, nm)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   232
            for realnm in realnms:
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   233
                imported = a.modules[realnm]
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   234
                if not isinstance(imported, mf.BuiltinModule):
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   235
                    tmp.append((imported.__name__, imported.__file__, imported.typ))
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   236
    toc.extend(tmp)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   237
toc.reverse()
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   238
config['PYZ_dependencies'] = toc.data
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   239
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   240
outf = open(configfile, 'w')
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   241
import pprint
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   242
pprint.pprint(config, outf)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   243
outf.close()
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   244