Skip to content
Extraits de code Groupes Projets
setup.py 3,8 ko
Newer Older
  • Learn to ignore specific revisions
  • #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    
    Patrick Watrin's avatar
    Patrick Watrin a validé
    import os
    import subprocess
    import sys
    
    from distutils.core import setup, Extension
    
    from distutils.command.build import build
    from distutils.command.clean import clean
    from distutils.command.install import install
    
    from distutils.sysconfig import get_python_inc
    
    
    
    
    UNITEX_INC = os.path.expandvars("$UNITEX_INC")
    if UNITEX_INC == "$UNITEX_INC":
        sys.stderr.write( "You need to specify the UNTIEX_INC variable (i.e. Unitex C++ src directory)!\n" )
        sys.stderr.write( "  -> e.g.: UNITEX_INC=/path/to/unitex/Src/C++ python setup.py cmd\n" )
        sys.exit(1)
    UNITEX_INC = os.path.abspath(UNITEX_INC)
    
    
    
    class CustomBuild(build):
    
        def run(self):
    
            # Unitex library compilation.
    
            command = "cd %s && make 64BITS=yes LIBRARY=yes TRE_DIRECT_COMPILE=yes DEBUG=yes" % os.path.join(UNITEX_INC, "build")
    
            try:
                process = subprocess.Popen(command, stderr=subprocess.PIPE, shell=True)
            except Exception as e:
                sys.stderr.write("Error in command: %s\n" % command)
                raise e
    
            process.wait()
    
            if process.returncode != 0:
                raise OSError(process.stderr.read())
    
    
            # Unitex library installation (needed by _unitex C extension).
            library = None
    
            if sys.platform == "darwin":
                library = "libunitex.dylib"
    
            elif sys.platform == "linux" or sys.platform == "linux2":
    
                library = "libunitex.so"
            else:
                sys.stderr.write("Plateform '%s' not supported...\n" % sys.platform)
                sys.exit(1)
    
            command = "mkdir -p /usr/local/lib && cd %s && cp %s /usr/local/lib" % (os.path.join(UNITEX_INC, "bin"), library)
    
    
            try:
                process = subprocess.Popen(command, stderr=subprocess.PIPE, shell=True)
            except Exception as e:
                sys.stderr.write("Error in command: %s\n" % command)
                raise e
    
            process.wait()
    
            if process.returncode != 0:
                raise OSError(process.stderr.read())
    
    
            command = "cd %s && make clean" % os.path.join(UNITEX_INC, "build")
    
    
            try:
                process = subprocess.Popen(command, stderr=subprocess.PIPE, shell=True)
            except Exception as e:
                sys.stderr.write("Error in command: %s\n" % command)
                raise e
    
            process.wait()
    
            if process.returncode != 0:
                raise OSError(process.stderr.read())
    
    
    
    
    setup(name = "unitex",
          version = "1.0",
          description = "Python 3 binding for the Unitex library",
          long_description = open('README.md').read(),
    
          author = "Patrick Watrin",
          author_email = "patrick.watrin@gmail.com",
    
          # https://pypi.python.org/pypi?%3Aaction=list_classifiers
          classifiers = ["License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
                         "Programming Language :: Python",
                         "Development Status :: 4 - Beta",
                         "Intended Audience :: Developers",
                         "Topic :: Scientific/Engineering :: Information Analysis"],
    
          keywords = "Unitex, Finite-States Transducers, Natural Language Processing",
    
          license = "GPLv3",
          install_requires = [],
    
          package_dir = {"unitex": "unitex",
    
    pat's avatar
    pat a validé
                         "unitex.utils": "unitex/utils"},
    
    
          packages = ["unitex",
    
    pat's avatar
    pat a validé
                      "unitex.utils"],
    
    
          ext_modules=[Extension("_unitex",
                                 include_dirs = [UNITEX_INC, get_python_inc()],
                                 libraries=["unitex"],
                                 library_dirs=['/usr/local/lib'],
                                 sources = ["extensions/_unitex.cpp"])],
    
           cmdclass = {
               "build": CustomBuild,
               "clean": CustomClean
           }