Commit 24381265 authored by PJ Eby's avatar PJ Eby

Generated scripts now use ``-x`` on the ``#!`` line when ``sys.executable``

contains non-ASCII characters, to prevent deprecation warnings about an
unspecified encoding when the script is run.
(backport from trunk)

--HG--
branch : setuptools-0.6
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/branches/setuptools-0.6%4051791
parent 7d8ac102
......@@ -1200,6 +1200,10 @@ Release Notes/Change History
* A writable installation directory on ``sys.path`` is no longer required to
download and extract a source distribution using ``--editable``.
* Generated scripts now use ``-x`` on the ``#!`` line when ``sys.executable``
contains non-ASCII characters, to prevent deprecation warnings about an
unspecified encoding when the script is run.
0.6c1
* EasyInstall now includes setuptools version information in the
``User-Agent`` string sent to websites it visits.
......
......@@ -3,7 +3,7 @@ from distutils.util import convert_path
from pkg_resources import Distribution, PathMetadata, normalize_path
from distutils import log
from distutils.errors import *
import sys, os
import sys, os, setuptools
class develop(easy_install):
"""Set up package for development"""
......
......@@ -1408,7 +1408,17 @@ def get_script_header(script_text, executable=sys_executable):
options = match.group(1) or ''
if options:
options = ' '+options
return "#!%(executable)s%(options)s\n" % locals()
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
if options:
if options.strip().startswith('-'):
options = ' -x'+options.strip()[1:]
# else: punt, we can't do it, let the warning happen anyway
else:
options = ' -x'
hdr = "#!%(executable)s%(options)s\n" % locals()
return hdr
def auto_chmod(func, arg, exc):
if func is os.remove and os.name=='nt':
......@@ -1442,7 +1452,6 @@ def is_python(text, filename='<string>'):
else:
return True
def is_python_script(script_text, filename):
"""Is this text, as a whole, a Python script? (as opposed to shell/bat/etc.
"""
......@@ -1465,15 +1474,6 @@ def is_python_script(script_text, filename):
return False # Not any Python I can recognize
def get_script_args(dist, executable=sys_executable):
"""Yield write_script() argument tuples for a distribution's entrypoints"""
spec = str(dist.as_requirement())
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment