summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--real-setup.py16
-rw-r--r--requirements.txt2
-rw-r--r--setup.cfg2
-rw-r--r--setup.py53
4 files changed, 60 insertions, 13 deletions
diff --git a/real-setup.py b/real-setup.py
new file mode 100644
index 0000000..73e9ef8
--- /dev/null
+++ b/real-setup.py
@@ -0,0 +1,16 @@
+from setuptools import find_packages, setup
+from Cython.Build import cythonize
+
+setup(
+ name='robots',
+ packages=find_packages(),
+ ext_modules=cythonize('robots/*.pyx'),
+ install_requires=[
+ 'flask',
+ 'blessings',
+ 'cython',
+ 'logbook',
+ 'pyzmq',
+ 'urwid'
+ ],
+)
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..d9b8239
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,2 @@
+-e ../simple-network
+-e .
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..01f6a07
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,2 @@
+[metadata]
+setup-requires = Cython
diff --git a/setup.py b/setup.py
index 9e80889..cd079e6 100644
--- a/setup.py
+++ b/setup.py
@@ -1,13 +1,40 @@
-from setuptools import find_packages, setup
-from Cython.Build import cythonize
-
-setup(
- name='robots',
- packages=find_packages(),
- ext_modules=cythonize('robots/*.pyx'),
- install_requires=[
- 'flask',
- 'blessings',
- 'cython',
- ],
-)
+#!/usr/bin/env python
+# Install dependencies from a "[metadata] setup-requires = ..." section in
+# setup.cfg, then run real-setup.py.
+# From https://bitbucket.org/dholth/setup-requires
+
+import sys, os, subprocess, codecs, pkg_resources
+
+sys.path[0:0] = ['setup-requires']
+pkg_resources.working_set.add_entry('setup-requires')
+
+try:
+ import configparser
+except:
+ import ConfigParser as configparser
+
+def get_requirements():
+ if not os.path.exists('setup.cfg'): return
+ config = configparser.ConfigParser()
+ config.readfp(codecs.open('setup.cfg', encoding='utf-8'))
+ setup_requires = config.get('metadata', 'setup-requires')
+ specifiers = [line.strip() for line in setup_requires.splitlines()]
+ for specifier in specifiers:
+ try:
+ pkg_resources.require(specifier)
+ except pkg_resources.DistributionNotFound:
+ yield specifier
+
+try:
+ to_install = list(get_requirements())
+ if to_install:
+ subprocess.call([sys.executable, "-m", "pip", "install",
+ "-t", "setup-requires"] + to_install)
+except (configparser.NoSectionError, configparser.NoOptionError):
+ pass
+
+# Run real-setup.py
+exec(compile(open("real-setup.py").read().replace('\\r\\n', '\\n'),
+ __file__,
+ 'exec'))
+