forked from mirrors/gecko-dev
		
	 0ebaf39eca
			
		
	
	
		0ebaf39eca
		
	
	
	
	
		
			
			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.",
 | |
|     )
 |