summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ryu/hooks.py29
-rw-r--r--setup.py2
2 files changed, 31 insertions, 0 deletions
diff --git a/ryu/hooks.py b/ryu/hooks.py
index c2414cdb..3883a7d2 100644
--- a/ryu/hooks.py
+++ b/ryu/hooks.py
@@ -16,9 +16,25 @@
# under the License.
import sys
+from setuptools.command import easy_install
from ryu import version
+# Global variables in this module doesn't work as we expect
+# because, during the setup procedure, this module seems to be
+# copied (as a file) and can be loaded multiple times.
+# We save them into __main__ module instead.
+def _main_module():
+ return sys.modules['__main__']
+
+
+def save_orig():
+ """Save original easy_install.get_script_args.
+ This is necessary because pbr's setup_hook is sometimes called
+ before ours."""
+ _main_module()._orig_get_script_args = easy_install.get_script_args
+
+
def setup_hook(config):
"""Filter config parsed from a setup.cfg to inject our defaults."""
metadata = config['metadata']
@@ -31,3 +47,16 @@ def setup_hook(config):
config['metadata'] = metadata
metadata['version'] = str(version)
+
+ # pbr's setup_hook replaces easy_install.get_script_args with
+ # their own version, override_get_script_args, prefering simpler
+ # scripts which are not aware of multi-version.
+ # prevent that by doing the opposite. it's a horrible hack
+ # but we are in patching wars already...
+ from pbr import packaging
+
+ def my_get_script_args(*args, **kwargs):
+ return _main_module()._orig_get_script_args(*args, **kwargs)
+
+ packaging.override_get_script_args = my_get_script_args
+ easy_install.get_script_args = my_get_script_args
diff --git a/setup.py b/setup.py
index 768ac73a..cf2a404d 100644
--- a/setup.py
+++ b/setup.py
@@ -21,8 +21,10 @@ except ImportError:
pass
import setuptools
+import ryu.hooks
+ryu.hooks.save_orig()
setuptools.setup(name='ryu',
setup_requires=['pbr'],
pbr=True)