Commit c82e1669 authored by PJ Eby's avatar PJ Eby

Use cross-platform relative paths in ``easy-install.pth`` when doing

``develop`` and the source directory is a subdirectory of the installation
target directory.
(backport from trunk)

--HG--
branch : setuptools-0.6
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/branches/setuptools-0.6%4052047
parent 07a18df5
...@@ -2612,6 +2612,10 @@ Release Notes/Change History ...@@ -2612,6 +2612,10 @@ Release Notes/Change History
* Fix problem with empty revision numbers in Subversion 1.4 ``entries`` files * Fix problem with empty revision numbers in Subversion 1.4 ``entries`` files
* Use cross-platform relative paths in ``easy-install.pth`` when doing
``develop`` and the source directory is a subdirectory of the installation
target directory.
0.6c3 0.6c3
* Fixed breakages caused by Subversion 1.4's new "working copy" format * Fixed breakages caused by Subversion 1.4's new "working copy" format
......
...@@ -1393,9 +1393,19 @@ class PthDistributions(Environment): ...@@ -1393,9 +1393,19 @@ class PthDistributions(Environment):
def make_relative(self,path): def make_relative(self,path):
if normalize_path(os.path.dirname(path))==self.basedir: npath, last = os.path.split(normalize_path(path))
return os.path.join(os.curdir, os.path.basename(path)) baselen = len(self.basedir)
return path parts = [last]
sep = os.altsep=='/' and '/' or os.sep
while len(npath)>=baselen:
if npath==self.basedir:
parts.append(os.curdir)
parts.reverse()
return sep.join(parts)
npath, last = os.path.split(npath)
parts.append(last)
else:
return path
def get_script_header(script_text, executable=sys_executable): def get_script_header(script_text, executable=sys_executable):
...@@ -1420,6 +1430,9 @@ def get_script_header(script_text, executable=sys_executable): ...@@ -1420,6 +1430,9 @@ def get_script_header(script_text, executable=sys_executable):
hdr = "#!%(executable)s%(options)s\n" % locals() hdr = "#!%(executable)s%(options)s\n" % locals()
return hdr return hdr
def auto_chmod(func, arg, exc): def auto_chmod(func, arg, exc):
if func is os.remove and os.name=='nt': if func is os.remove and os.name=='nt':
os.chmod(arg, stat.S_IWRITE) os.chmod(arg, stat.S_IWRITE)
...@@ -1452,6 +1465,15 @@ def is_python(text, filename='<string>'): ...@@ -1452,6 +1465,15 @@ def is_python(text, filename='<string>'):
else: else:
return True return True
def is_python_script(script_text, filename): def is_python_script(script_text, filename):
"""Is this text, as a whole, a Python script? (as opposed to shell/bat/etc. """Is this text, as a whole, a Python script? (as opposed to shell/bat/etc.
""" """
...@@ -1473,6 +1495,25 @@ def is_python_script(script_text, filename): ...@@ -1473,6 +1495,25 @@ def is_python_script(script_text, filename):
return False # Not any Python I can recognize return False # Not any Python I can recognize
def get_script_args(dist, executable=sys_executable): def get_script_args(dist, executable=sys_executable):
"""Yield write_script() argument tuples for a distribution's entrypoints""" """Yield write_script() argument tuples for a distribution's entrypoints"""
......
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