setup.py
120 lines
| 3.3 KiB
| text/x-python
|
PythonLexer
Gregory Szorc
|
r30435 | #!/usr/bin/env python | ||
# Copyright (c) 2016-present, Gregory Szorc | ||||
# All rights reserved. | ||||
# | ||||
# This software may be modified and distributed under the terms | ||||
# of the BSD license. See the LICENSE file for details. | ||||
Gregory Szorc
|
r42237 | from __future__ import print_function | ||
from distutils.version import LooseVersion | ||||
Gregory Szorc
|
r37513 | import os | ||
Gregory Szorc
|
r30822 | import sys | ||
Gregory Szorc
|
r30435 | from setuptools import setup | ||
Gregory Szorc
|
r42237 | # Need change in 1.10 for ffi.from_buffer() to handle all buffer types | ||
# (like memoryview). | ||||
# Need feature in 1.11 for ffi.gc() to declare size of objects so we avoid | ||||
# garbage collection pitfalls. | ||||
Gregory Szorc
|
r44446 | MINIMUM_CFFI_VERSION = "1.11" | ||
Gregory Szorc
|
r42237 | |||
Gregory Szorc
|
r30435 | try: | ||
import cffi | ||||
Gregory Szorc
|
r42237 | |||
# PyPy (and possibly other distros) have CFFI distributed as part of | ||||
# them. The install_requires for CFFI below won't work. We need to sniff | ||||
# out the CFFI version here and reject CFFI if it is too old. | ||||
cffi_version = LooseVersion(cffi.__version__) | ||||
if cffi_version < LooseVersion(MINIMUM_CFFI_VERSION): | ||||
Gregory Szorc
|
r44446 | print( | ||
"CFFI 1.11 or newer required (%s found); " | ||||
"not building CFFI backend" % cffi_version, | ||||
file=sys.stderr, | ||||
) | ||||
Gregory Szorc
|
r42237 | cffi = None | ||
Gregory Szorc
|
r30435 | except ImportError: | ||
cffi = None | ||||
import setup_zstd | ||||
Gregory Szorc
|
r30822 | SUPPORT_LEGACY = False | ||
Gregory Szorc
|
r37513 | SYSTEM_ZSTD = False | ||
WARNINGS_AS_ERRORS = False | ||||
Gregory Szorc
|
r30822 | |||
Gregory Szorc
|
r44446 | if os.environ.get("ZSTD_WARNINGS_AS_ERRORS", ""): | ||
Gregory Szorc
|
r37513 | WARNINGS_AS_ERRORS = True | ||
Gregory Szorc
|
r44446 | if "--legacy" in sys.argv: | ||
Gregory Szorc
|
r30822 | SUPPORT_LEGACY = True | ||
Gregory Szorc
|
r44446 | sys.argv.remove("--legacy") | ||
Gregory Szorc
|
r37513 | |||
Gregory Szorc
|
r44446 | if "--system-zstd" in sys.argv: | ||
Gregory Szorc
|
r37513 | SYSTEM_ZSTD = True | ||
Gregory Szorc
|
r44446 | sys.argv.remove("--system-zstd") | ||
Gregory Szorc
|
r37513 | |||
Gregory Szorc
|
r44446 | if "--warnings-as-errors" in sys.argv: | ||
Gregory Szorc
|
r37513 | WARNINGS_AS_ERRORS = True | ||
Gregory Szorc
|
r44446 | sys.argv.remove("--warning-as-errors") | ||
Gregory Szorc
|
r30822 | |||
Gregory Szorc
|
r30435 | # Code for obtaining the Extension instance is in its own module to | ||
# facilitate reuse in other projects. | ||||
Gregory Szorc
|
r37513 | extensions = [ | ||
Gregory Szorc
|
r44446 | setup_zstd.get_c_extension( | ||
name="zstd", | ||||
support_legacy=SUPPORT_LEGACY, | ||||
system_zstd=SYSTEM_ZSTD, | ||||
warnings_as_errors=WARNINGS_AS_ERRORS, | ||||
), | ||||
Gregory Szorc
|
r37513 | ] | ||
Gregory Szorc
|
r30435 | |||
Gregory Szorc
|
r31796 | install_requires = [] | ||
Gregory Szorc
|
r30435 | if cffi: | ||
import make_cffi | ||||
Gregory Szorc
|
r44446 | |||
Gregory Szorc
|
r30435 | extensions.append(make_cffi.ffi.distutils_extension()) | ||
Gregory Szorc
|
r44446 | install_requires.append("cffi>=%s" % MINIMUM_CFFI_VERSION) | ||
Gregory Szorc
|
r31796 | |||
Gregory Szorc
|
r30435 | version = None | ||
Gregory Szorc
|
r44446 | with open("c-ext/python-zstandard.h", "r") as fh: | ||
Gregory Szorc
|
r30435 | for line in fh: | ||
Gregory Szorc
|
r44446 | if not line.startswith("#define PYTHON_ZSTANDARD_VERSION"): | ||
Gregory Szorc
|
r30435 | continue | ||
version = line.split()[2][1:-1] | ||||
break | ||||
if not version: | ||||
Gregory Szorc
|
r44605 | raise Exception( | ||
"could not resolve package version; " "this should never happen" | ||||
) | ||||
Gregory Szorc
|
r30435 | |||
setup( | ||||
Gregory Szorc
|
r44446 | name="zstandard", | ||
Gregory Szorc
|
r30435 | version=version, | ||
Gregory Szorc
|
r44446 | description="Zstandard bindings for Python", | ||
long_description=open("README.rst", "r").read(), | ||||
url="https://github.com/indygreg/python-zstandard", | ||||
author="Gregory Szorc", | ||||
author_email="gregory.szorc@gmail.com", | ||||
license="BSD", | ||||
Gregory Szorc
|
r30435 | classifiers=[ | ||
Gregory Szorc
|
r44446 | "Development Status :: 4 - Beta", | ||
"Intended Audience :: Developers", | ||||
"License :: OSI Approved :: BSD License", | ||||
"Programming Language :: C", | ||||
"Programming Language :: Python :: 2.7", | ||||
"Programming Language :: Python :: 3.5", | ||||
"Programming Language :: Python :: 3.6", | ||||
"Programming Language :: Python :: 3.7", | ||||
"Programming Language :: Python :: 3.8", | ||||
Gregory Szorc
|
r30435 | ], | ||
Gregory Szorc
|
r44446 | keywords="zstandard zstd compression", | ||
packages=["zstandard"], | ||||
Gregory Szorc
|
r30435 | ext_modules=extensions, | ||
Gregory Szorc
|
r44446 | test_suite="tests", | ||
Gregory Szorc
|
r31796 | install_requires=install_requires, | ||
Gregory Szorc
|
r44446 | tests_require=["hypothesis"], | ||
Gregory Szorc
|
r30435 | ) | ||