blob: 937fe5527cee92fab208c06be97055032b7e8146 [file] [log] [blame]
Jean-Paul Calderonecf20dd62008-06-12 16:38:38 -04001#!/usr/bin/env python
Jean-Paul Calderone0db6cdb2008-04-11 11:52:15 -04002# -*- coding: utf-8 -*-
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05003#
4# Copyright (C) AB Strakt 2001, All rights reserved
Jean-Paul Calderonee53ccf72008-04-11 11:40:39 -04005# Copyright (C) Jean-Paul Calderone 2008, All rights reserved
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05006#
7# @(#) $Id: setup.py,v 1.28 2004/08/10 10:59:01 martin Exp $
8#
Jean-Paul Calderonee53ccf72008-04-11 11:40:39 -04009
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050010"""
11Installation script for the OpenSSL module
12"""
13
Jean-Paul Calderoneddbc28f2008-12-31 16:33:17 -050014import sys, os
Jean-Paul Calderone5a1bf382009-02-08 16:39:15 -050015from distutils.core import Extension, setup
zookoa4be22a2008-12-01 09:22:02 -070016
Jean-Paul Calderone0c418102009-07-18 18:00:32 -040017print "DEBUG:"
Jean-Paul Calderone9971e6f2009-07-18 18:03:06 -040018d = "C:\\OpenSSL\\lib\\MinGW"
19for name in os.listdir(d):
20 print os.path.join(d, name), os.stat(os.path.join(d, name)).st_size
Jean-Paul Calderonecb5e16f2009-07-18 17:56:06 -040021
U-YOUR-FA38FA253F\Zooko Brillnonywonxd78922f2008-11-10 06:19:16 -070022from glob import glob
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050023
24from version import __version__
25
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050026crypto_src = ['src/crypto/crypto.c', 'src/crypto/x509.c',
27 'src/crypto/x509name.c', 'src/crypto/pkey.c',
28 'src/crypto/x509store.c', 'src/crypto/x509req.c',
29 'src/crypto/x509ext.c', 'src/crypto/pkcs7.c',
30 'src/crypto/pkcs12.c', 'src/crypto/netscape_spki.c',
31 'src/util.c']
32crypto_dep = ['src/crypto/crypto.h', 'src/crypto/x509.h',
33 'src/crypto/x509name.h', 'src/crypto/pkey.h',
34 'src/crypto/x509store.h', 'src/crypto/x509req.h',
35 'src/crypto/x509ext.h', 'src/crypto/pkcs7.h',
36 'src/crypto/pkcs12.h', 'src/crypto/netscape_spki.h',
37 'src/util.h']
38rand_src = ['src/rand/rand.c', 'src/util.c']
39rand_dep = ['src/util.h']
40ssl_src = ['src/ssl/connection.c', 'src/ssl/context.c', 'src/ssl/ssl.c',
41 'src/util.c']
42ssl_dep = ['src/ssl/connection.h', 'src/ssl/context.h', 'src/ssl/ssl.h',
43 'src/util.h']
44
45IncludeDirs = None
46LibraryDirs = None
47
48# Add more platforms here when needed
49if os.name == 'nt' or sys.platform == 'win32':
Jean-Paul Calderone579e9532009-05-12 19:47:24 -040050 Libraries = ['libeay32', 'ssleay32', 'Ws2_32']
Jean-Paul Calderonef2844fc2009-07-18 17:49:23 -040051 LibraryDirs = ["C:\\OpenSSL\\lib\\MinGW"]
Jean-Paul Calderonebfef31c2009-02-13 16:08:32 -050052 # Try to find it...
Jean-Paul Calderone4bf95372009-02-13 16:12:32 -050053 for path in ["C:\\OpenSSL\\lib\\MinGW", "C:\\Python23\\libs",
54 "C:\\Python24\\libs", "C:\\Python25\\libs", "C:\\Python26\\libs"]:
55 # The .a is the "export library". It's the thing we need to link
56 # against to let us use the .dll.
Jean-Paul Calderonebfef31c2009-02-13 16:08:32 -050057 ssleay32 = os.path.join(path, "ssleay32.a")
58 if os.path.exists(ssleay32):
Jean-Paul Calderone579e9532009-05-12 19:47:24 -040059 ExtraObjects = [] # ssleay32]
Jean-Paul Calderonebfef31c2009-02-13 16:08:32 -050060 break
61 else:
62 raise SystemExit("Cannot find ssleay32.a, aborting")
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050063else:
64 Libraries = ['ssl', 'crypto']
Jean-Paul Calderonebfef31c2009-02-13 16:08:32 -050065 ExtraObjects = []
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050066
67if sys.platform == 'darwin':
68 IncludeDirs = ['/sw/include']
69 LibraryDirs = ['/sw/lib']
70
U-YOUR-FA38FA253F\Zooko Brillnonywonxd78922f2008-11-10 06:19:16 -070071# On Windows, make sure the necessary .dll's get added to the egg.
Jean-Paul Calderonefd97e3c2009-02-13 15:37:49 -050072data_files = []
Jean-Paul Calderonebfef31c2009-02-13 16:08:32 -050073if sys.platform == 'win32':
Jean-Paul Calderonea487d812009-02-13 16:31:19 -050074 import ctypes.util
Jean-Paul Calderone4bf95372009-02-13 16:12:32 -050075 libeay32 = ctypes.util.find_library("libeay32")
76 if libeay32 is None:
77 raise SystemExit("Cannot find libeay32.dll, aborting")
78 data_files = [("OpenSSL", [libeay32])]
Jean-Paul Calderone5a1bf382009-02-08 16:39:15 -050079
U-YOUR-FA38FA253F\Zooko Brillnonywonxd78922f2008-11-10 06:19:16 -070080
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050081def mkExtension(name):
Jean-Paul Calderonee9404372008-03-04 22:19:18 -050082 modname = 'OpenSSL.' + name
83 src = globals()[name.lower() + '_src']
84 dep = globals()[name.lower() + '_dep']
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050085 return Extension(modname, src, libraries=Libraries, depends=dep,
Jean-Paul Calderonebfef31c2009-02-13 16:08:32 -050086 include_dirs=IncludeDirs, library_dirs=LibraryDirs,
87 extra_objects=ExtraObjects)
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050088
89setup(name='pyOpenSSL', version=__version__,
Jean-Paul Calderone525ef802008-03-09 20:39:42 -040090 package_dir = {'OpenSSL': '.'},
91 ext_modules = [mkExtension('crypto'), mkExtension('rand'),
92 mkExtension('SSL')],
93 py_modules = ['OpenSSL.__init__', 'OpenSSL.tsafe',
94 'OpenSSL.version', 'OpenSSL.test.__init__',
Jean-Paul Calderone30c09ea2008-03-21 17:04:05 -040095 'OpenSSL.test.test_crypto',
96 'OpenSSL.test.test_ssl'],
U-YOUR-FA38FA253F\Zooko Brillnonywonxd78922f2008-11-10 06:19:16 -070097 data_files = data_files,
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050098 description = 'Python wrapper module around the OpenSSL library',
Jean-Paul Calderonee53ccf72008-04-11 11:40:39 -040099 author = 'Martin Sjögren, AB Strakt',
100 author_email = 'msjogren@gmail.com',
101 maintainer = 'Jean-Paul Calderone',
102 maintainer_email = 'exarkun@twistedmatrix.com',
Jean-Paul Calderone897bc252008-02-18 20:50:23 -0500103 url = 'http://pyopenssl.sourceforge.net/',
104 license = 'LGPL',
105 long_description = """\
106High-level wrapper around a subset of the OpenSSL library, includes
107 * SSL.Connection objects, wrapping the methods of Python's portable
108 sockets
109 * Callbacks written in Python
110 * Extensive error-handling mechanism, mirroring OpenSSL's error codes
111... and much more ;)"""
112 )