Run `./2to3.py -w jinja2`
[jinja2.git] / setup.py
index ed3e974b626eaf2e526c6618cf44a321a1c2b6a9..414795620a176ddcbe342103ebc7516dce8c5566 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -28,77 +28,53 @@ Philosophy
 Application logic is for the controller but don't try to make the life
 for the template designer too hard by giving him too few functionality.
 
-For more informations visit the new `jinja2 webpage`_ and `documentation`_.
-
-The `Jinja2 tip`_ is installable via `easy_install` with ``easy_install
-Jinja2==dev``.
+For more informations visit the new `Jinja2 webpage`_ and `documentation`_.
 
 .. _sandboxed: http://en.wikipedia.org/wiki/Sandbox_(computer_security)
 .. _Django: http://www.djangoproject.com/
-.. _jinja2 webpage: http://jinja.pocoo.org/
+.. _Jinja2 webpage: http://jinja.pocoo.org/
 .. _documentation: http://jinja.pocoo.org/2/documentation/
-.. _Jinja2 tip: http://dev.pocoo.org/hg/jinja2-main/archive/tip.tar.gz#egg=Jinja2-dev
 """
-import os
 import sys
-import ez_setup
-ez_setup.use_setuptools()
 
 from setuptools import setup, Extension, Feature
-from distutils.command.build_ext import build_ext
-from distutils.errors import CCompilerError, DistutilsPlatformError
-
-
-data_files = []
-documentation_path = 'docs/_build/html'
-if os.path.exists(documentation_path):
-    documentation_files = []
-    for fn in os.listdir(documentation_path):
-        if not fn.startswith('.'):
-            fn = os.path.join(documentation_path, fn)
-            if os.path.isfile(fn):
-                documentation_files.append(fn)
-    data_files.append(('docs', documentation_files))
-
-
-def get_terminal_width():
-    """Return the current terminal dimensions."""
-    try:
-        from struct import pack, unpack
-        from fcntl import ioctl
-        from termios import TIOCGWINSZ
-        s = pack('HHHH', 0, 0, 0, 0)
-        return unpack('HHHH', ioctl(sys.stdout.fileno(), TIOCGWINSZ, s))[1]
-    except:
-        return 80
 
+debugsupport = Feature(
+    'optional C debug support',
+    standard=False,
+    ext_modules = [
+        Extension('jinja2._debugsupport', ['jinja2/_debugsupport.c']),
+    ],
+)
 
-class optional_build_ext(build_ext):
-    """This class allows C extension building to fail."""
-
-    def run(self):
-        try:
-            build_ext.run(self)
-        except DistutilsPlatformError:
-            self._unavailable()
-
-    def build_extension(self, ext):
-        try:
-            build_ext.build_extension(self, ext)
-        except CCompilerError, x:
-            self._unavailable()
 
-    def _unavailable(self):
-        width = get_terminal_width()
-        print '*' * width
-        print """WARNING:
-An optional C extension could not be compiled, speedups will not be
-available."""
+# tell distribute to use 2to3 with our own fixers.
+extra = {}
+if sys.version_info >= (3, 0):
+    extra.update(
+        use_2to3=True,
+        use_2to3_fixers=['custom_fixers']
+    )
+
+# ignore the old '--with-speedups' flag
+try:
+    speedups_pos = sys.argv.index('--with-speedups')
+except ValueError:
+    pass
+else:
+    sys.argv[speedups_pos] = '--with-debugsupport'
+    sys.stderr.write('*' * 74 + '\n')
+    sys.stderr.write('WARNING:\n')
+    sys.stderr.write('  the --with-speedups flag is deprecated, assuming '
+                     '--with-debugsupport\n')
+    sys.stderr.write('  For the actual speedups install the MarkupSafe '
+                     'package.\n')
+    sys.stderr.write('*' * 74 + '\n')
 
 
 setup(
     name='Jinja2',
-    version='2.0rc1',
+    version='2.7-dev',
     url='http://jinja.pocoo.org/',
     license='BSD',
     author='Armin Ronacher',
@@ -106,33 +82,29 @@ setup(
     description='A small but fast and easy to use stand-alone template '
                 'engine written in pure python.',
     long_description=__doc__,
-    # jinja is egg safe. But because we distribute the documentation
-    # in form of html and txt files it's a better idea to extract the files
+    # jinja is egg safe. But we hate eggs
     zip_safe=False,
     classifiers=[
-        'Development Status :: 4 - Beta',
+        '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 :: 3',
         'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
         'Topic :: Software Development :: Libraries :: Python Modules',
         'Topic :: Text Processing :: Markup :: HTML'
     ],
-    packages=['jinja2'],
-    data_files=data_files,
-    features={
-        'speedups': Feature("optional C speed-enhancements",
-            standard=True,
-            ext_modules=[
-                Extension('jinja2._speedups', ['jinja2/_speedups.c'])
-            ]
-        )
-    },
+    packages=['jinja2', 'jinja2.testsuite', 'jinja2.testsuite.res',
+              'jinja2._markupsafe'],
     extras_require={'i18n': ['Babel>=0.8']},
+    test_suite='jinja2.testsuite.suite',
+    include_package_data=True,
     entry_points="""
     [babel.extractors]
     jinja2 = jinja2.ext:babel_extract[i18n]
-    """
+    """,
+    features={'debugsupport': debugsupport},
+    **extra
 )