Commit dd4feba8 authored by PJ Eby's avatar PJ Eby

Fixed a missing files problem when using Windows source distributions on

non-Windows platforms, due to distutils not handling manifest file line
endings correctly.  (backport from trunk)

--HG--
branch : setuptools-0.6
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/branches/setuptools-0.6%4058259
parent 85ee3531
......@@ -2611,6 +2611,11 @@ XXX
Release Notes/Change History
----------------------------
0.6final
* Fixed a missing files problem when using Windows source distributions on
non-Windows platforms, due to distutils not handling manifest file line
endings correctly.
0.6c7
* Fixed ``distutils.filelist.findall()`` crashing on broken symlinks, and
``egg_info`` command failing on new, uncommitted SVN directories.
......
......@@ -8,7 +8,6 @@ from setuptools import Command
from distutils.errors import *
from distutils import log
from setuptools.command.sdist import sdist
from distutils import file_util
from distutils.util import convert_path
from distutils.filelist import FileList
from pkg_resources import parse_requirements, safe_name, parse_version, \
......@@ -39,6 +38,7 @@ class egg_info(Command):
def initialize_options(self):
self.egg_name = None
self.egg_version = None
......@@ -271,6 +271,8 @@ class FileList(FileList):
"""File list that accepts only existing, platform-independent paths"""
def append(self, item):
if item.endswith('\r'): # Fix older sdists built on Windows
item = item[:-1]
path = convert_path(item)
if os.path.exists(path):
self.files.append(path)
......@@ -283,8 +285,6 @@ class FileList(FileList):
class manifest_maker(sdist):
template = "MANIFEST.in"
......@@ -319,7 +319,7 @@ class manifest_maker(sdist):
files = self.filelist.files
if os.sep!='/':
files = [f.replace(os.sep,'/') for f in files]
self.execute(file_util.write_file, (self.manifest, files),
self.execute(write_file, (self.manifest, files),
"writing manifest file '%s'" % self.manifest)
def warn(self, msg): # suppress missing-file warnings from sdist
......@@ -347,13 +347,13 @@ class manifest_maker(sdist):
self.filelist.exclude_pattern(sep+r'(RCS|CVS|\.svn)'+sep, is_regex=1)
def write_file (filename, contents):
"""Create a file with the specified name and write 'contents' (a
sequence of strings without line terminators) to it.
"""
f = open(filename, "wb") # always write POSIX-style manifest
f.write("\n".join(contents))
f.close()
......
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