Add a new --executable option to distribute so that we can
force the shebang line in installed python scripts.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

diff -Nura distribute-0.6.36.orig/setuptools/command/install.py distribute-0.6.36/setuptools/command/install.py
--- distribute-0.6.36.orig/setuptools/command/install.py	2013-04-13 09:46:23.160823598 -0300
+++ distribute-0.6.36/setuptools/command/install.py	2013-04-13 11:17:28.418841986 -0300
@@ -6,6 +6,7 @@
     """Use easy_install to install the package, w/dependencies"""

     user_options = _install.user_options + [
+        ('executable=', 'e', "specify final destination interpreter path"),
         ('old-and-unmanageable', None, "Try not to use this!"),
         ('single-version-externally-managed', None,
             "used by system package builders to create 'flat' eggs"),
@@ -21,6 +22,7 @@

     def initialize_options(self):
         _install.initialize_options(self)
+        self.executable = None
         self.old_and_unmanageable = None
         self.single_version_externally_managed = None
         self.no_compile = None  # make DISTUTILS_DEBUG work right!
diff -Nura distribute-0.6.36.orig/setuptools/command/install_scripts.py distribute-0.6.36/setuptools/command/install_scripts.py
--- distribute-0.6.36.orig/setuptools/command/install_scripts.py	2013-04-13 09:46:23.160823598 -0300
+++ distribute-0.6.36/setuptools/command/install_scripts.py	2013-04-13 11:24:32.305416400 -0300
@@ -10,6 +10,13 @@
     def initialize_options(self):
         _install_scripts.initialize_options(self)
         self.no_ep = False
+        self.executable = None
+
+    def finalize_options(self):
+        _install_scripts.finalize_options(self)
+        self.set_undefined_options('install',
+          ('executable','executable')
+        )

     def run(self):
         from setuptools.command.easy_install import get_script_args
@@ -31,6 +38,8 @@
         )
         bs_cmd = self.get_finalized_command('build_scripts')
         executable = getattr(bs_cmd,'executable',sys_executable)
+        if self.executable is not None:
+          executable = self.executable
         is_wininst = getattr(
             self.get_finalized_command("bdist_wininst"), '_is_running', False
         )
