summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2013-11-14 16:35:32 -0500
committerMicah Anderson <micah@riseup.net>2013-11-14 16:35:32 -0500
commitc8b79bf686113c3418d8d65ff0a1920da2b409bc (patch)
tree4c76ad4dcedcbd25d653d261ad5033bf21911f0f /setup.py
initial commit
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py105
1 files changed, 105 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..0190808
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,105 @@
+#!/usr/bin/env python
+from distutils.core import setup, Extension, Command
+
+import sys
+import platform
+
+includes = []
+library_dirs = []
+cmdclasses = dict()
+CFLAGS = []
+
+
+class Tester(Command):
+ """Runs unit tests"""
+
+ user_options = []
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ if ((sys.version_info > (3, 2, 0, 'final', 0)) or
+ (sys.version_info > (2, 7, 0, 'final', 0) and sys.version_info < (3, 0, 0, 'final', 0))):
+ from unittest import TextTestRunner, defaultTestLoader
+ else:
+ try:
+ from unittest2 import TextTestRunner, defaultTestLoader
+ except ImportError:
+ print("Please install unittest2 to run the test suite")
+ exit(-1)
+ from tests import test_scrypt, test_scrypt_py2x, test_scrypt_py3x
+ suite = defaultTestLoader.loadTestsFromModule(test_scrypt)
+ suite.addTests(defaultTestLoader.loadTestsFromModule(test_scrypt_py2x))
+ suite.addTests(defaultTestLoader.loadTestsFromModule(test_scrypt_py3x))
+ runner = TextTestRunner()
+ result = runner.run(suite)
+
+cmdclasses['test'] = Tester
+
+if sys.platform.startswith('linux'):
+ define_macros = [('HAVE_CLOCK_GETTIME', '1'),
+ ('HAVE_LIBRT', '1'),
+ ('HAVE_POSIX_MEMALIGN', '1'),
+ ('HAVE_STRUCT_SYSINFO', '1'),
+ ('HAVE_STRUCT_SYSINFO_MEM_UNIT', '1'),
+ ('HAVE_STRUCT_SYSINFO_TOTALRAM', '1'),
+ ('HAVE_SYSINFO', '1'),
+ ('HAVE_SYS_SYSINFO_H', '1'),
+ ('_FILE_OFFSET_BITS', '64')]
+ libraries = ['crypto', 'rt']
+ CFLAGS.append('-O2')
+elif sys.platform.startswith('win32'):
+ define_macros = []
+ library_dirs = ['c:\OpenSSL-Win32\lib\MinGW']
+ libraries = ['eay32']
+ includes = ['c:\OpenSSL-Win32\include']
+elif sys.platform.startswith('darwin') and platform.mac_ver()[0] < '10.6':
+ define_macros = [('HAVE_SYSCTL_HW_USERMEM', '1')]
+ libraries = ['crypto']
+else:
+ define_macros = [('HAVE_POSIX_MEMALIGN', '1'),
+ ('HAVE_SYSCTL_HW_USERMEM', '1')]
+ libraries = ['crypto']
+
+scrypt_module = Extension('_scrypt',
+ sources=['src/scrypt.c',
+ 'scrypt-1.1.6/lib/crypto/crypto_aesctr.c',
+ 'scrypt-1.1.6/lib/crypto/crypto_scrypt-nosse.c',
+ 'scrypt-1.1.6/lib/crypto/sha256.c',
+ 'scrypt-1.1.6/lib/scryptenc/scryptenc.c',
+ 'scrypt-1.1.6/lib/scryptenc/scryptenc_cpuperf.c',
+ 'scrypt-1.1.6/lib/util/memlimit.c',
+ 'scrypt-1.1.6/lib/util/warn.c'],
+ include_dirs=['scrypt-1.1.6',
+ 'scrypt-1.1.6/lib',
+ 'scrypt-1.1.6/lib/scryptenc',
+ 'scrypt-1.1.6/lib/crypto',
+ 'scrypt-1.1.6/lib/util'] + includes,
+ define_macros=[('HAVE_CONFIG_H', None)] + define_macros,
+ extra_compile_args=CFLAGS,
+ library_dirs=library_dirs,
+ libraries=libraries)
+
+setup(name='scrypt',
+ version='0.6.1',
+ description='Bindings for the scrypt key derivation function library',
+ author='Magnus Hallin',
+ author_email='mhallin@gmail.com',
+ url='http://bitbucket.org/mhallin/py-scrypt',
+ py_modules=['scrypt'],
+ ext_modules=[scrypt_module],
+ classifiers=['Development Status :: 4 - Beta',
+ 'Intended Audience :: Developers',
+ 'License :: OSI Approved :: BSD License',
+ 'Programming Language :: Python :: 2.6',
+ 'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3',
+ 'Topic :: Security :: Cryptography',
+ 'Topic :: Software Development :: Libraries'],
+ license='2-clause BSD',
+ long_description=open('README.rst').read(),
+ cmdclass=cmdclasses)