forked from mirrors/gecko-dev
Differential Revision: https://phabricator.services.mozilla.com/D64313 --HG-- extra : histedit_source : 30b5d577a6c26e79cb305a3eca4ac8cfc98df01a
125 lines
4.1 KiB
Python
125 lines
4.1 KiB
Python
from __future__ import print_function
|
|
|
|
import io
|
|
import re
|
|
import sys
|
|
from distutils.errors import CCompilerError
|
|
from distutils.errors import DistutilsExecError
|
|
from distutils.errors import DistutilsPlatformError
|
|
|
|
from setuptools import Extension
|
|
from setuptools import find_packages
|
|
from setuptools import setup
|
|
from setuptools.command.build_ext import build_ext
|
|
|
|
with io.open("README.rst", "rt", encoding="utf8") as f:
|
|
readme = f.read()
|
|
|
|
with io.open("src/markupsafe/__init__.py", "rt", encoding="utf8") as f:
|
|
version = re.search(r'__version__ = "(.*?)"', f.read()).group(1)
|
|
|
|
is_jython = "java" in sys.platform
|
|
is_pypy = hasattr(sys, "pypy_version_info")
|
|
|
|
ext_modules = [Extension("markupsafe._speedups", ["src/markupsafe/_speedups.c"])]
|
|
|
|
|
|
class BuildFailed(Exception):
|
|
pass
|
|
|
|
|
|
class ve_build_ext(build_ext):
|
|
"""This class allows C extension building to fail."""
|
|
|
|
def run(self):
|
|
try:
|
|
build_ext.run(self)
|
|
except DistutilsPlatformError:
|
|
raise BuildFailed()
|
|
|
|
def build_extension(self, ext):
|
|
try:
|
|
build_ext.build_extension(self, ext)
|
|
except (CCompilerError, DistutilsExecError, DistutilsPlatformError):
|
|
raise BuildFailed()
|
|
except ValueError:
|
|
# this can happen on Windows 64 bit, see Python issue 7511
|
|
if "'path'" in str(sys.exc_info()[1]): # works with Python 2 and 3
|
|
raise BuildFailed()
|
|
raise
|
|
|
|
|
|
def run_setup(with_binary):
|
|
setup(
|
|
name="MarkupSafe",
|
|
version=version,
|
|
url="https://palletsprojects.com/p/markupsafe/",
|
|
project_urls={
|
|
"Documentation": "https://markupsafe.palletsprojects.com/",
|
|
"Code": "https://github.com/pallets/markupsafe",
|
|
"Issue tracker": "https://github.com/pallets/markupsafe/issues",
|
|
},
|
|
license="BSD-3-Clause",
|
|
author="Armin Ronacher",
|
|
author_email="armin.ronacher@active-4.com",
|
|
maintainer="The Pallets Team",
|
|
maintainer_email="contact@palletsprojects.com",
|
|
description="Safely add untrusted strings to HTML/XML markup.",
|
|
long_description=readme,
|
|
classifiers=[
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Environment :: Web Environment",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: BSD License",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python",
|
|
"Programming Language :: Python :: 2",
|
|
"Programming Language :: Python :: 2.7",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.4",
|
|
"Programming Language :: Python :: 3.5",
|
|
"Programming Language :: Python :: 3.6",
|
|
"Programming Language :: Python :: 3.7",
|
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: Text Processing :: Markup :: HTML",
|
|
],
|
|
packages=find_packages("src"),
|
|
package_dir={"": "src"},
|
|
include_package_data=True,
|
|
python_requires=">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*",
|
|
cmdclass={"build_ext": ve_build_ext},
|
|
ext_modules=ext_modules if with_binary else [],
|
|
)
|
|
|
|
|
|
def show_message(*lines):
|
|
print("=" * 74)
|
|
for line in lines:
|
|
print(line)
|
|
print("=" * 74)
|
|
|
|
|
|
if not (is_pypy or is_jython):
|
|
try:
|
|
run_setup(True)
|
|
except BuildFailed:
|
|
show_message(
|
|
"WARNING: The C extension could not be compiled, speedups"
|
|
" are not enabled.",
|
|
"Failure information, if any, is above.",
|
|
"Retrying the build without the C extension now.",
|
|
)
|
|
run_setup(False)
|
|
show_message(
|
|
"WARNING: The C extension could not be compiled, speedups"
|
|
" are not enabled.",
|
|
"Plain-Python build succeeded.",
|
|
)
|
|
else:
|
|
run_setup(False)
|
|
show_message(
|
|
"WARNING: C extensions are not supported on this Python"
|
|
" platform, speedups are not enabled.",
|
|
"Plain-Python build succeeded.",
|
|
)
|