msgpack-python/setup.py

121 lines
3.1 KiB
Python
Raw Normal View History

2009-06-24 14:33:36 +09:00
#!/usr/bin/env python
# coding: utf-8
2012-07-13 21:15:11 +09:00
version = (0, 2, 1, 'dev1')
2009-06-24 14:33:36 +09:00
2009-06-10 10:45:07 +09:00
import os
import sys
2012-08-19 02:53:16 +09:00
import shutil
2010-01-25 20:52:48 +09:00
from glob import glob
from distutils.command.sdist import sdist
2012-06-27 18:16:59 +09:00
from setuptools import setup, Extension
2010-01-25 20:52:48 +09:00
2012-08-19 02:53:16 +09:00
from distutils.command.build_ext import build_ext
2010-01-25 20:52:48 +09:00
try:
import Cython.Compiler.Main as cython_compiler
have_cython = True
except ImportError:
have_cython = False
2009-06-08 01:43:50 +09:00
2012-08-19 02:53:16 +09:00
def cythonize(src):
sys.stderr.write("cythonize: %r\n" % (src,))
cython_compiler.compile([src])
def ensure_source(src):
pyx = os.path.splitext(src)[0] + '.pyx'
if not os.path.exists(src):
if not have_cython:
raise Exception("""\
Cython is required for building extension from checkout.
Install Cython >= 0.16 or install msgpack from PyPI.
""")
cythonize(src)
elif (os.path.exists(pyx) and
os.stat(src).st_mtime < os.stat(pyx).st_mtime and
have_cython):
cythonize(src)
# Use C++ compiler on win32.
# MSVC9 doesn't provide stdint.h when using C Compiler.
if sys.platform == 'win32':
cpp = src + 'pp'
shutil.copy(src, cpp)
return cpp
else:
return src
class BuildExt(build_ext):
def build_extension(self, ext):
ext.sources = list(map(ensure_source, ext.sources))
2012-08-19 02:53:16 +09:00
return build_ext.build_extension(self, ext)
2010-09-02 09:54:38 +09:00
# make msgpack/__verison__.py
f = open('msgpack/__version__.py', 'w')
2012-08-19 02:53:16 +09:00
try:
f.write("version = %r\n" % (version,))
finally:
f.close()
del f
2011-01-09 23:58:26 +09:00
version_str = '.'.join(str(x) for x in version[:3])
if len(version) > 3 and version[3] != 'final':
version_str += version[3]
2009-06-08 01:43:50 +09:00
2010-01-25 20:52:48 +09:00
# take care of extension modules.
if have_cython:
class Sdist(sdist):
def __init__(self, *args, **kwargs):
for src in glob('msgpack/*.pyx'):
2012-08-19 02:53:16 +09:00
cythonize(src)
2010-01-25 20:52:48 +09:00
sdist.__init__(self, *args, **kwargs)
else:
Sdist = sdist
2012-08-19 02:53:16 +09:00
sources = ['msgpack/_msgpack.c']
libraries = []
if sys.platform == 'win32':
libraries.append('ws2_32')
if sys.byteorder == 'big':
macros = [('__BIG_ENDIAN__', '1')]
else:
macros = [('__LITTLE_ENDIAN__', '1')]
msgpack_mod = Extension('msgpack._msgpack',
2010-01-25 20:52:48 +09:00
sources=sources,
libraries=libraries,
2012-06-26 15:19:59 +09:00
include_dirs=['.'],
define_macros=macros,
2009-07-12 09:29:11 +09:00
)
2012-08-19 02:53:16 +09:00
del sources, libraries, macros
2010-01-25 20:52:48 +09:00
2009-06-08 01:43:50 +09:00
2009-07-12 09:29:11 +09:00
desc = 'MessagePack (de)serializer.'
2012-06-27 18:05:35 +09:00
f = open('README.rst')
long_desc = f.read()
f.close()
del f
2009-06-08 01:43:50 +09:00
2010-04-29 07:52:32 +09:00
setup(name='msgpack-python',
2010-01-25 20:52:48 +09:00
author='INADA Naoki',
2009-06-08 01:43:50 +09:00
author_email='songofacandy@gmail.com',
version=version_str,
2012-08-19 02:53:16 +09:00
cmdclass={'build_ext': BuildExt, 'sdist': Sdist},
2009-06-08 01:43:50 +09:00
ext_modules=[msgpack_mod],
2009-06-24 01:13:22 +09:00
packages=['msgpack'],
2009-06-08 13:21:38 +09:00
description=desc,
2009-06-08 01:43:50 +09:00
long_description=long_desc,
url='http://msgpack.org/',
2010-04-29 07:08:41 +09:00
download_url='http://pypi.python.org/pypi/msgpack/',
2009-07-12 09:29:11 +09:00
classifiers=[
'Programming Language :: Python :: 2',
2010-09-02 10:13:49 +09:00
'Programming Language :: Python :: 3',
2009-07-12 09:29:11 +09:00
'Intended Audience :: Developers',
'License :: OSI Approved :: Apache Software License',
]
2009-06-08 01:43:50 +09:00
)