#!/usr/bin/env python import os import sys from setuptools import setup from distutils.command.build_ext import build_ext as _build_ext from setuptools.command.bdist_egg import bdist_egg as _bdist_egg from setuptools.extension import Extension from autogen import rebuild from autogen.paths import include_dirs, library_dirs ext_kwds = dict(include_dirs=include_dirs(), library_dirs=library_dirs()) if "READTHEDOCS" in os.environ: # When building with readthedocs, disable optimizations to decrease # resource usage during build ext_kwds["extra_compile_args"] = ["-O0"] # Print PARI/GP defaults and environment variables for debugging from subprocess import Popen, PIPE Popen(["gp", "-f", "-q"], stdin=PIPE).communicate(b"default()") for item in os.environ.items(): print("%s=%r" % item) # Adapted from Cython's new_build_ext class build_ext(_build_ext): def finalize_options(self): # Generate auto-generated sources from pari.desc
self.distribution.ext_modules[:] = cythonize( self.distribution.ext_modules, compiler_directives=self.directives) _build_ext.finalize_options(self) class no_egg(_bdist_egg): def run(self): from distutils.errors import DistutilsOptionError raise DistutilsOptionError("The package cypari2 will not function correctly when built as egg. Therefore, it cannot be installed using 'python setup.py install' or 'easy_install'. Instead, use 'pip install' to install cypari2.") setup( name='cypari2', version=open("VERSION").read().strip(), description='An interface to the number theory library libpari', url='https://github.com/defeo/cypari2', author='Many people', author_email="*****@*****.**", license='GNU General Public License, version 2 or later', ext_modules=[Extension("*", ["cypari2/*.pyx"], include_dirs=include_dirs(), library_dirs=library_dirs())], keywords='PARI/GP number theory', packages=['cypari2'], package_dir={'cypari2': 'cypari2'}, package_data={'cypari2': ['declinl.pxi', '*.pxd', '*.h']}, cmdclass=dict(build_ext=build_ext, bdist_egg=no_egg) )