diff options
author | PJ Eby <distutils-sig@python.org> | 2006-12-29 01:32:46 +0000 |
---|---|---|
committer | PJ Eby <distutils-sig@python.org> | 2006-12-29 01:32:46 +0000 |
commit | 47f061eef1d9c4832b9a4394e84642811356ad10 (patch) | |
tree | 50e19bb4bf2eab1f8c25ca90f3b2e785d884bb96 | |
parent | 3f14d160421187a37ccfb91f1e7fce6d54378cb6 (diff) | |
download | external_python_setuptools-47f061eef1d9c4832b9a4394e84642811356ad10.tar.gz external_python_setuptools-47f061eef1d9c4832b9a4394e84642811356ad10.tar.bz2 external_python_setuptools-47f061eef1d9c4832b9a4394e84642811356ad10.zip |
Partial support for cross-platform generation of bdist_wininst .exe's.
Unfortunately, bdist_wininst doesn't fix up #! lines, so python.exe or
pythonw.exe have to be on PATH for generated scripts to work. This
could probably be fixed up with a post-install script, but that's a
job for another day. (backport from trunk)
--HG--
branch : setuptools-0.6
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/branches/setuptools-0.6%4053186
-rwxr-xr-x | README.txt | 4 | ||||
-rwxr-xr-x | setuptools/command/bdist_wininst.py | 7 | ||||
-rwxr-xr-x | setuptools/command/easy_install.py | 12 | ||||
-rwxr-xr-x | setuptools/command/install_scripts.py | 8 |
4 files changed, 20 insertions, 11 deletions
@@ -23,7 +23,9 @@ version. Once installation is complete, you will find an ``easy_install.exe`` program in your Python ``Scripts`` subdirectory. Be sure to add this directory to your -``PATH`` environment variable, if you haven't already done so. +``PATH`` environment variable, if you haven't already done so. You must also +have your Python installation directory (e.g. ``C:\\Python23``) on the +``PATH``. RPM-Based Systems diff --git a/setuptools/command/bdist_wininst.py b/setuptools/command/bdist_wininst.py index 9881f3b1..d2a8a4b1 100755 --- a/setuptools/command/bdist_wininst.py +++ b/setuptools/command/bdist_wininst.py @@ -28,3 +28,10 @@ class bdist_wininst(_bdist_wininst): cmd.install_lib = None # work around distutils bug return cmd + def run(self): + self._is_running = True + try: + _bdist_wininst.run(self) + finally: + self._is_running = False + diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index a565be4f..8f2aa457 100755 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -1408,7 +1408,7 @@ class PthDistributions(Environment): return path -def get_script_header(script_text, executable=sys_executable): +def get_script_header(script_text, executable=sys_executable, wininst=False): """Create a #! line, getting options (if any) from script_text""" from distutils.command.build_scripts import first_line_re first = (script_text+'\n').splitlines()[0] @@ -1418,6 +1418,8 @@ def get_script_header(script_text, executable=sys_executable): options = match.group(1) or '' if options: options = ' '+options + if wininst and sys.platform!='win32': + executable = "python.exe" hdr = "#!%(executable)s%(options)s\n" % locals() if unicode(hdr,'ascii','ignore').encode('ascii') != hdr: # Non-ascii path to sys.executable, use -x to prevent warnings @@ -1431,8 +1433,6 @@ def get_script_header(script_text, executable=sys_executable): return hdr - - def auto_chmod(func, arg, exc): if func is os.remove and os.name=='nt': os.chmod(arg, stat.S_IWRITE) @@ -1515,10 +1515,10 @@ def is_python_script(script_text, filename): -def get_script_args(dist, executable=sys_executable): +def get_script_args(dist, executable=sys_executable, wininst=False): """Yield write_script() argument tuples for a distribution's entrypoints""" spec = str(dist.as_requirement()) - header = get_script_header("", executable) + header = get_script_header("", executable, wininst) for group in 'console_scripts', 'gui_scripts': for name,ep in dist.get_entry_map(group).items(): script_text = ( @@ -1531,7 +1531,7 @@ def get_script_args(dist, executable=sys_executable): " load_entry_point(%(spec)r, %(group)r, %(name)r)()\n" ")\n" ) % locals() - if sys.platform=='win32': + if sys.platform=='win32' or wininst: # On Windows, add a .py extension and an .exe launcher if group=='gui_scripts': ext, launcher = '-script.pyw', 'gui.exe' diff --git a/setuptools/command/install_scripts.py b/setuptools/command/install_scripts.py index fc156dce..904704df 100755 --- a/setuptools/command/install_scripts.py +++ b/setuptools/command/install_scripts.py @@ -29,16 +29,16 @@ class install_scripts(_install_scripts): ) bs_cmd = self.get_finalized_command('build_scripts') executable = getattr(bs_cmd,'executable',sys_executable) - - for args in get_script_args(dist, executable): + is_wininst = getattr( + self.get_finalized_command("bdist_wininst"), '_is_running', False + ) + for args in get_script_args(dist, executable, is_wininst): self.write_script(*args) - - def write_script(self, script_name, contents, mode="t", *ignored): """Write an executable file to the scripts directory""" log.info("Installing %s script to %s", script_name, self.install_dir) |