--- /dev/null
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2013 Hewlett-Packard Development Company, L.P.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import os
+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']
+ if sys.platform == 'win32':
+ requires = metadata.get('requires_dist', '').split('\n')
+ metadata['requires_dist'] = "\n".join(requires)
+ 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
+
+ # another hack to allow setup from tarball.
+ orig_get_version = packaging.get_version
+
+ def my_get_version(package_name, pre_version=None):
+ if package_name == 'ryu':
+ return str(version)
+ return orig_get_version(package_name, pre_version)
+
+ packaging.get_version = my_get_version