- #!/usr/bin/python
-
- # This is supposed to be using Distribute:
- #
- # distutils provides a "setup" method.
- # setuptools is a set of monkeypatches on top of that.
- # distribute is a particular version/implementation of setuptools.
- #
- # So we don't really know if this is using the old setuptools or the
- # Distribute-provided version of setuptools.
-
- import traceback
- import sys
- import os
-
- try:
- from setuptools import setup, find_packages
- from distutils.extension import Extension
- import distutils.version
- except ImportError:
- traceback.print_exc()
- print "Please install the prerequisites listed in README.txt"
- sys.exit(1)
-
- # Hack to workaround logging/multiprocessing issue:
- # https://groups.google.com/d/msg/nose-users/fnJ-kAUbYHQ/_UsLN786ygcJ
- try: import multiprocessing
- except: pass
-
- # Use Cython if it's new enough, otherwise use preexisting C files.
- cython_modules = [ 'nilmdb.server.interval',
- 'nilmdb.server.layout',
- 'nilmdb.server.rbtree' ]
- try:
- import Cython
- from Cython.Build import cythonize
- if (distutils.version.LooseVersion(Cython.__version__) <
- distutils.version.LooseVersion("0.16")):
- print "Cython version", Cython.__version__, "is too old; not using it."
- raise ImportError()
- use_cython = True
- except ImportError:
- use_cython = False
-
- ext_modules = []
- for modulename in cython_modules:
- filename = modulename.replace('.','/')
- if use_cython:
- ext_modules.extend(cythonize(filename + ".pyx"))
- else:
- cfile = filename + ".c"
- if not os.path.exists(cfile):
- raise Exception("Missing source file " + cfile + ". "
- "Try installing cython >= 0.16.")
- ext_modules.append(Extension(modulename, [ cfile ]))
-
- # We need a MANIFEST.in. Generate it here rather than polluting the
- # repository with yet another setup-related file.
- with open("MANIFEST.in", "w") as m:
- m.write("""
- # Root
- include README.txt
- include setup.cfg
- include setup.py
- include Makefile
- include .coveragerc
- include .pylintrc
-
- # Cython files -- include source.
- recursive-include nilmdb/server *.pyx *.pyxdep *.pxd
-
- # Tests
- recursive-include tests *.py
- recursive-include tests/data *
- include tests/test.order
-
- # Docs
- recursive-include docs Makefile *.md
- """)
-
- # Run setup
- setup(name='nilmdb',
- version = '1.0',
- url = 'https://git.jim.sh/jim/lees/nilmdb.git',
- author = 'Jim Paris',
- description = "NILM Database",
- long_description = "NILM Database",
- license = "Proprietary",
- author_email = 'jim@jtan.com',
- tests_require = [ 'nose',
- 'coverage',
- ],
- setup_requires = [ 'distribute',
- ],
- install_requires = [ 'decorator',
- 'cherrypy >= 3.2',
- ],
- packages = [ 'nilmdb',
- 'nilmdb.utils',
- 'nilmdb.utils.datetime_tz',
- 'nilmdb.server',
- 'nilmdb.client',
- 'nilmdb.cmdline',
- 'nilmdb.scripts',
- ],
- entry_points = {
- 'console_scripts': [
- 'nilmtool = nilmdb.scripts.nilmtool:main',
- 'nilmdb-server = nilmdb.scripts.nilmdb_server:main',
- ],
- },
- ext_modules = ext_modules,
- zip_safe = False,
- )
|