setup.py 3.73 KB
Newer Older
1 2
import glob
import os
3
import sys
4 5 6 7 8 9 10 11 12 13 14 15 16
import re
import subprocess

from distutils.core import setup,Extension
from distutils.sysconfig import get_python_lib
from Cython.Build import cythonize

import os.path
from distutils import log
from distutils.extension import Extension

sys.path.append(os.path.abspath("python"))

17 18
dependencies = ['sphinx',"Cython"]

19 20 21 22 23 24 25 26 27 28 29

def findPackage(root,base=None):
    modules=[]
    if base is None:
        base=[]
    for module in (os.path.basename(os.path.dirname(x)) 
                   for x in glob.glob(os.path.join(root,'*','__init__.py'))):
        modules.append('.'.join(base+[module]))
        modules.extend(findPackage(os.path.join(root,module),base+[module]))
    return modules

30 31 32 33

PACKAGE     = "OBITools3"
VERSION     = "0.0.0"
AUTHOR      = 'Eric Coissac'
34 35 36 37 38
EMAIL       = 'eric@metabarcoding.org'
URL         = "metabarcoding.org/obitools3"
LICENSE     = "CeCILL-V2"
DESCRIPTION = "Tools and library for DNA metabarcoding",
PYTHONMIN   = '3.6'
39 40 41 42

SRC       = 'python'
CSRC      = 'src'

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
REQUIRES  = ['Cython>=0.24',
             'Sphinx>=1.2.0',
             'ipython>=3.0.0',
             'breathe>=4.0.0'
            ]

os.environ['CFLAGS'] = '-O3 -Wall -I "src" -I "src/libecoPCR" -I "src/libjson"'

#sys.path.append("/Users/coissac/git/obitools3/python")

cython_src  = [x for x in glob.iglob('python/obitools3/**/*.pyx', 
                                     recursive=True
                                    )
              ]

              
            
#with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as f:
#    readme = f.read()
    
install_clibdir_option="-DPYTHONLIB:STRING='%s'" % get_python_lib()

subprocess.call(['cmake', install_clibdir_option, 'src'])
subprocess.call(['make', '-C', 'src','install'])


69 70 71 72


cython_ext  = [Extension('.'.join([os.path.dirname(x).replace("python/",""),
                                   os.path.splitext(os.path.basename(x))[0]]).replace('/','.'),
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
                         [x],
                         library_dirs=[get_python_lib()],
                         include_dirs=["src","src/libecoPCR","src/libjson"],
                         libraries=["cobitools3"],
                         runtime_library_dirs=[get_python_lib()],
                         extra_compile_args=['-msse2',
                                          '-Wno-unused-function',
                                          '-Wmissing-braces',
                                          '-Wchar-subscripts',
                                          '-fPIC'
                                         ],
                         extra_link_args=["-Wl,-rpath,"+get_python_lib(), 
                                          "-L"+get_python_lib()
                                         ]
                        )
                for x in cython_src
              ]              


xx = cythonize(cython_ext,
               language_level=3,
94 95
               annotate=True,
               build_dir="build")
96 97 98

#,              include_path=["src","src/libecoPCR","src/libjson"]

99 100 101 102 103 104
classifiers=['Development Status :: 1 - Planning',
             'Environment :: Console',
             'Intended Audience :: Science/Research',
             'License :: Other/Proprietary License',
             'Operating System :: Unix',
             'Programming Language :: Python :: 3',
105
             'Programming Language :: C',
106 107 108 109 110 111
             'Topic :: Scientific/Engineering :: Bio-Informatics',
             'Topic :: Utilities',
             ]



112 113 114 115 116 117 118 119 120 121 122
setup(name=PACKAGE,
      description=DESCRIPTION,
      classifiers=classifiers,
      version=VERSION,
      author=AUTHOR,
      author_email=EMAIL,
      license=LICENSE,
      url=URL,
      ext_modules=xx,
      packages = findPackage('python'),
      package_dir = {"" : "python"},
123
      scripts = ['scripts/obi']
124
)
125