Jim Paris
3d24092cd2
Otherwise we might inadvertently catch SystemExit or KeyboardExit or something we don't want to catch.
139 lines
4.2 KiB
Python
Executable File
139 lines
4.2 KiB
Python
Executable File
#!/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
|
|
|
|
# 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)
|
|
|
|
# Versioneer manages version numbers from git tags.
|
|
# https://github.com/warner/python-versioneer
|
|
import versioneer
|
|
versioneer.versionfile_source = 'nilmdb/_version.py'
|
|
versioneer.versionfile_build = 'nilmdb/_version.py'
|
|
versioneer.tag_prefix = 'nilmdb-'
|
|
versioneer.parentdir_prefix = 'nilmdb-'
|
|
|
|
# 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
|
|
|
|
# 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',
|
|
],
|
|
setup_requires = [ 'distribute',
|
|
],
|
|
install_requires = [ 'decorator',
|
|
'cherrypy >= 3.2',
|
|
'simplejson',
|
|
'pycurl',
|
|
'python-dateutil',
|
|
'pytz',
|
|
'psutil >= 0.3.0',
|
|
'requests >= 1.1.0, < 2.0.0',
|
|
],
|
|
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,
|
|
)
|