#!/usr/bin/python # To release a new version, tag it: # git tag -a nilmdb-1.1 -m "Version 1.1" # git push --tags # Then just package it up: # python setup.py sdist 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) # Versioneer manages version numbers from git tags. # https://github.com/warner/python-versioneer import versioneer # Hack to workaround logging/multiprocessing issue: # https://groups.google.com/d/msg/nose-users/fnJ-kAUbYHQ/_UsLN786ygcJ try: import multiprocessing except Exception: pass # Use Cython if it's new enough, otherwise use preexisting C files. cython_modules = [ 'nilmdb.server.interval', '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 = [ Extension('nilmdb.server.rocket', ['nilmdb/server/rocket.c' ]) ] 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 versioneer.py include Makefile include .coveragerc include .pylintrc # Cython files -- include source. recursive-include nilmdb/server *.pyx *.pyxdep *.pxd # Version include nilmdb/_version.py # Tests recursive-include tests *.py recursive-include tests/data * include tests/test.order # Docs recursive-include docs Makefile *.md # Extras recursive-include extras * """) # Run setup setup(name='nilmdb', version = versioneer.get_version(), cmdclass = versioneer.get_cmdclass(), 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', 'numpy', ], setup_requires = [ 'setuptools', ], install_requires = [ 'decorator', 'cherrypy >= 3.2', 'simplejson', 'python-dateutil', 'pytz', 'psutil >= 0.3.0', 'requests >= 1.1.0', 'progressbar >= 2.2', ], packages = [ 'nilmdb', 'nilmdb.utils', 'nilmdb.utils.datetime_tz', 'nilmdb.server', 'nilmdb.client', 'nilmdb.cmdline', 'nilmdb.scripts', 'nilmdb.fsck', ], entry_points = { 'console_scripts': [ 'nilmtool = nilmdb.scripts.nilmtool:main', 'nilmdb-server = nilmdb.scripts.nilmdb_server:main', 'nilmdb-fsck = nilmdb.scripts.nilmdb_fsck:main', ], }, ext_modules = ext_modules, zip_safe = False, )