root/galaxy-central/eggs/pycrypto-2.0.1-py2.6-macosx-10.6-universal-ucs2.egg/Crypto/setup.py @ 3

リビジョン 3, 6.1 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1#! /usr/bin/env python
2
3__revision__ = "$Id: setup.py,v 1.30 2005/06/14 01:20:22 akuchling Exp $"
4
5from distutils import core
6from distutils.core import Extension
7from distutils.command.build_ext import build_ext
8import os, sys
9
10if sys.version[0:1] == '1':
11    raise RuntimeError, ("The Python Cryptography Toolkit requires "
12                         "Python 2.x to build.")
13
14if sys.platform == 'win32':
15    HTONS_LIBS = ['ws2_32']
16    plat_ext = [
17                Extension("Crypto.Util.winrandom",
18                          libraries = HTONS_LIBS + ['advapi32'],
19                          include_dirs=['src/'],
20                          sources=["src/winrand.c"])
21               ]
22else:
23    HTONS_LIBS = []
24    plat_ext = []
25
26# Functions for finding libraries and files, copied from Python's setup.py.
27
28def find_file(filename, std_dirs, paths):
29    """Searches for the directory where a given file is located,
30    and returns a possibly-empty list of additional directories, or None
31    if the file couldn't be found at all.
32
33    'filename' is the name of a file, such as readline.h or libcrypto.a.
34    'std_dirs' is the list of standard system directories; if the
35        file is found in one of them, no additional directives are needed.
36    'paths' is a list of additional locations to check; if the file is
37        found in one of them, the resulting list will contain the directory.
38    """
39
40    # Check the standard locations
41    for dir in std_dirs:
42        f = os.path.join(dir, filename)
43        if os.path.exists(f): return []
44
45    # Check the additional directories
46    for dir in paths:
47        f = os.path.join(dir, filename)
48        if os.path.exists(f):
49            return [dir]
50
51    # Not found anywhere
52    return None
53
54def find_library_file(compiler, libname, std_dirs, paths):
55    filename = compiler.library_filename(libname, lib_type='shared')
56    result = find_file(filename, std_dirs, paths)
57    if result is not None: return result
58
59    filename = compiler.library_filename(libname, lib_type='static')
60    result = find_file(filename, std_dirs, paths)
61    return result
62
63class PCTBuildExt (build_ext):
64    def build_extensions(self):
65        self.extensions += [
66            # Hash functions
67            Extension("Crypto.Hash.MD4",
68                      include_dirs=['src/'],
69                      sources=["src/MD4.c"]),
70            Extension("Crypto.Hash.RIPEMD",
71                      include_dirs=['src/'],
72                      sources=["src/RIPEMD.c"],
73                      libraries=HTONS_LIBS),
74            Extension("Crypto.Hash.SHA256",
75                      include_dirs=['src/'],
76                      sources=["src/SHA256.c"]),
77
78            # Block encryption algorithms
79            Extension("Crypto.Cipher.AES",
80                      include_dirs=['src/'],
81                      sources=["src/AES.c"]),
82            Extension("Crypto.Cipher.ARC2",
83                      include_dirs=['src/'],
84                      sources=["src/ARC2.c"]),
85            Extension("Crypto.Cipher.Blowfish",
86                      include_dirs=['src/'],
87                      sources=["src/Blowfish.c"]),
88            Extension("Crypto.Cipher.CAST",
89                      include_dirs=['src/'],
90                      sources=["src/CAST.c"]),
91            Extension("Crypto.Cipher.DES",
92                      include_dirs=['src/'],
93                      sources=["src/DES.c"]),
94            Extension("Crypto.Cipher.DES3",
95                      include_dirs=['src/'],
96                      sources=["src/DES3.c"]),
97            Extension("Crypto.Cipher.IDEA",
98                      include_dirs=['src/'],
99                      sources=["src/IDEA.c"],
100                      libraries=HTONS_LIBS),
101            Extension("Crypto.Cipher.RC5",
102                      include_dirs=['src/'],
103                      sources=["src/RC5.c"]),
104
105            # Stream ciphers
106            Extension("Crypto.Cipher.ARC4",
107                      include_dirs=['src/'],
108                      sources=["src/ARC4.c"]),
109            Extension("Crypto.Cipher.XOR",
110                      include_dirs=['src/'],
111                      sources=["src/XOR.c"]),
112            ]
113
114        # Detect which modules should be compiled
115        self.detect_modules()
116        build_ext.build_extensions(self)
117
118    def detect_modules (self):
119        lib_dirs = self.compiler.library_dirs + ['/lib', '/usr/lib']
120        inc_dirs = self.compiler.include_dirs + ['/usr/include']
121        exts = []
122        if (self.compiler.find_library_file(lib_dirs, 'gmp')):
123            exts.append(Extension("Crypto.PublicKey._fastmath",
124                                  include_dirs=['src/'],
125                                  libraries=['gmp'],
126                                  sources=["src/_fastmath.c"]))
127        self.extensions += exts
128
129kw = {'name':"pycrypto",
130      'version':"2.0.1",
131      'description':"Cryptographic modules for Python.",
132      'author':"A.M. Kuchling",
133      'author_email':"amk@amk.ca",
134      'url':"http://www.amk.ca/python/code/crypto",
135
136      'cmdclass' : {'build_ext':PCTBuildExt},
137      'packages' : ["Crypto", "Crypto.Hash", "Crypto.Cipher", "Crypto.Util",
138                  "Crypto.Protocol", "Crypto.PublicKey"],
139      'package_dir' : { "Crypto":"." },
140      # One module is defined here, because build_ext won't be
141      # called unless there's at least one extension module defined.
142      'ext_modules':[Extension("Crypto.Hash.MD2",
143                             include_dirs=['src/'],
144                             sources=["src/MD2.c"])],
145     }
146
147# If we're running Python 2.3, add extra information
148if hasattr(core, 'setup_keywords'):
149    if 'classifiers' in core.setup_keywords:
150        kw['classifiers'] = [
151          'Development Status :: 4 - Beta',
152          'License :: Public Domain',
153          'Intended Audience :: Developers',
154          'Operating System :: Unix',
155          'Operating System :: Microsoft :: Windows',
156          'Operating System :: MacOS :: MacOS X',
157          'Topic :: Security :: Cryptography',
158          ]
159    if 'download_url' in core.setup_keywords:
160        kw['download_url'] = ('http://www.amk.ca/files/python/crypto/'
161                              '%s-%s.tar.gz' % (kw['name'], kw['version']) )
162
163core.setup(**kw)
164
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。