forked from mirrors/gecko-dev
Using ./mach vendor python glean_parser==1.28.0 (this is the latest version) Differential Revision: https://phabricator.services.mozilla.com/D84746
81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
import os
|
|
from setuptools import setup, Extension
|
|
import sys
|
|
import platform
|
|
import warnings
|
|
import codecs
|
|
from distutils.command.build_ext import build_ext
|
|
from distutils.errors import CCompilerError
|
|
from distutils.errors import DistutilsPlatformError, DistutilsExecError
|
|
from _pyrsistent_version import __version__
|
|
|
|
readme_path = os.path.join(os.path.dirname(__file__), 'README.rst')
|
|
with codecs.open(readme_path, encoding='utf8') as f:
|
|
readme = f.read()
|
|
|
|
extensions = []
|
|
if platform.python_implementation() == 'CPython':
|
|
extensions = [Extension('pvectorc', sources=['pvectorcmodule.c'])]
|
|
|
|
needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv)
|
|
pytest_runner = ['pytest-runner'] if needs_pytest else []
|
|
|
|
|
|
class custom_build_ext(build_ext):
|
|
"""Allow C extension building to fail."""
|
|
|
|
warning_message = """
|
|
********************************************************************************
|
|
WARNING: Could not build the %s.
|
|
Pyrsistent will still work but performance may be degraded.
|
|
%s
|
|
********************************************************************************
|
|
"""
|
|
|
|
def run(self):
|
|
try:
|
|
build_ext.run(self)
|
|
except Exception:
|
|
e = sys.exc_info()[1]
|
|
sys.stderr.write('%s\n' % str(e))
|
|
sys.stderr.write(self.warning_message % ("extension modules", "There was an issue with your platform configuration - see above."))
|
|
|
|
def build_extension(self, ext):
|
|
name = ext.name
|
|
try:
|
|
build_ext.build_extension(self, ext)
|
|
except Exception:
|
|
e = sys.exc_info()[1]
|
|
sys.stderr.write('%s\n' % str(e))
|
|
sys.stderr.write(self.warning_message % ("%s extension module" % name, "The output above this warning shows how the compilation failed."))
|
|
|
|
setup(
|
|
name='pyrsistent',
|
|
version=__version__,
|
|
description='Persistent/Functional/Immutable data structures',
|
|
long_description=readme,
|
|
author='Tobias Gustafsson',
|
|
author_email='tobias.l.gustafsson@gmail.com',
|
|
url='http://github.com/tobgu/pyrsistent/',
|
|
license='MIT',
|
|
license_files=['LICENCE.mit'],
|
|
py_modules=['_pyrsistent_version'],
|
|
classifiers=[
|
|
'Intended Audience :: Developers',
|
|
'License :: OSI Approved :: MIT License',
|
|
'Operating System :: OS Independent',
|
|
'Programming Language :: Python :: 3.5',
|
|
'Programming Language :: Python :: 3.6',
|
|
'Programming Language :: Python :: 3.7',
|
|
'Programming Language :: Python :: Implementation :: PyPy',
|
|
],
|
|
test_suite='tests',
|
|
tests_require=['pytest<5', 'hypothesis<5'],
|
|
scripts=[],
|
|
setup_requires=pytest_runner,
|
|
ext_modules=extensions,
|
|
cmdclass={'build_ext': custom_build_ext},
|
|
install_requires=['six'],
|
|
packages=['pyrsistent'],
|
|
package_data={'pyrsistent': ['py.typed', '__init__.pyi', 'typing.pyi']},
|
|
)
|