mirror of
https://github.com/edgewall/genshi.git
synced 2026-02-05 06:45:30 +01:00
83 lines
2.3 KiB
Python
Executable File
83 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
#
|
|
# Copyright (C) 2006-2010 Edgewall Software
|
|
# All rights reserved.
|
|
#
|
|
# This software is licensed as described in the file COPYING, which
|
|
# you should have received as part of this distribution. The terms
|
|
# are also available at http://genshi.edgewall.org/wiki/License.
|
|
#
|
|
# This software consists of voluntary contributions made by many
|
|
# individuals. For the exact contribution history, see the revision
|
|
# history and logs, available at http://genshi.edgewall.org/log/.
|
|
|
|
import os
|
|
from setuptools import setup, Extension
|
|
from distutils.command.build_ext import build_ext
|
|
from distutils.errors import CCompilerError, DistutilsPlatformError
|
|
import sys
|
|
|
|
_speedup_available = False
|
|
|
|
is_pypy = hasattr(sys, 'pypy_version_info')
|
|
|
|
class optional_build_ext(build_ext):
|
|
# This class allows C extension building to fail.
|
|
def run(self):
|
|
try:
|
|
build_ext.run(self)
|
|
except DistutilsPlatformError:
|
|
_etype, e, _tb = sys.exc_info()
|
|
self._unavailable(e)
|
|
|
|
def build_extension(self, ext):
|
|
try:
|
|
build_ext.build_extension(self, ext)
|
|
global _speedup_available
|
|
_speedup_available = True
|
|
except CCompilerError:
|
|
_etype, e, _tb = sys.exc_info()
|
|
self._unavailable(e)
|
|
|
|
def _unavailable(self, exc):
|
|
print('*' * 70)
|
|
print("""WARNING:
|
|
An optional C extension could not be compiled, speedups will not be
|
|
available.""")
|
|
print('*' * 70)
|
|
print(exc)
|
|
|
|
|
|
# Optional C extension module for speeding up Genshi
|
|
# Not activated by default on:
|
|
# - PyPy (where it harms performance)
|
|
_speedup_enable_default = 0 if is_pypy else 1
|
|
try:
|
|
_speedup_enabled = int(os.getenv('GENSHI_BUILD_SPEEDUP', _speedup_enable_default))
|
|
except ValueError:
|
|
import warnings
|
|
warnings.warn('GENSHI_BUILD_SPEEDUP was defined to something other than 0 or 1; defaulting to not build...')
|
|
_speedup_enabled = False
|
|
|
|
ext_modules = []
|
|
if _speedup_enabled:
|
|
ext_modules.append(Extension('genshi._speedups', ['genshi/_speedups.c']))
|
|
|
|
cmdclass = {'build_ext': optional_build_ext}
|
|
|
|
extra = {}
|
|
if sys.version_info >= (3,):
|
|
# Install genshi template tests
|
|
extra['include_package_data'] = True
|
|
|
|
|
|
setup(
|
|
test_suite = 'genshi.tests.suite',
|
|
|
|
ext_modules = ext_modules,
|
|
cmdclass = cmdclass,
|
|
|
|
**extra
|
|
)
|