Skip to content

Commit

Permalink
avoid pbr's non multi-version aware script
Browse files Browse the repository at this point in the history
otherwise the latest ryu-manager can pick up older modules
if multiple versions of ryu is installed on a system.

Signed-off-by: YAMAMOTO Takashi <[email protected]>
Signed-off-by: FUJITA Tomonori <[email protected]>
  • Loading branch information
yamt authored and fujita committed Oct 7, 2013
1 parent 9159bd7 commit d6a9890
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
29 changes: 29 additions & 0 deletions ryu/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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']
Expand All @@ -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
2 changes: 2 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@
pass

import setuptools
import ryu.hooks


ryu.hooks.save_orig()
setuptools.setup(name='ryu',
setup_requires=['pbr'],
pbr=True)

0 comments on commit d6a9890

Please sign in to comment.