Commit b03a9e29 authored by Jason R. Coombs's avatar Jason R. Coombs

Copy changes to setuptools/archive_util.py setuptools/depends.py...

Copy changes to setuptools/archive_util.py setuptools/depends.py setuptools/extension.py and setuptools/__init__.py from 1aae1efe5733

--HG--
branch : Setuptools-Distribute merge
extra : source : a3f8891a67625e751eacbf027d66feff19779da4
parent 737fe613
...@@ -7,7 +7,7 @@ from distutils.core import Command as _Command ...@@ -7,7 +7,7 @@ from distutils.core import Command as _Command
from distutils.util import convert_path from distutils.util import convert_path
import os.path import os.path
__version__ = '0.6c9' __version__ = '0.6c12'
__all__ = [ __all__ = [
'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require', 'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require',
'find_packages' 'find_packages'
......
...@@ -6,7 +6,7 @@ __all__ = [ ...@@ -6,7 +6,7 @@ __all__ = [
"UnrecognizedFormat", "extraction_drivers", "unpack_directory", "UnrecognizedFormat", "extraction_drivers", "unpack_directory",
] ]
import zipfile, tarfile, os, shutil import zipfile, tarfile, os, shutil, posixpath
from pkg_resources import ensure_directory from pkg_resources import ensure_directory
from distutils.errors import DistutilsError from distutils.errors import DistutilsError
...@@ -138,7 +138,7 @@ def unpack_zipfile(filename, extract_dir, progress_filter=default_filter): ...@@ -138,7 +138,7 @@ def unpack_zipfile(filename, extract_dir, progress_filter=default_filter):
name = info.filename name = info.filename
# don't extract absolute paths or ones with .. in them # don't extract absolute paths or ones with .. in them
if name.startswith('/') or '..' in name: if name.startswith('/') or '..' in name.split('/'):
continue continue
target = os.path.join(extract_dir, *name.split('/')) target = os.path.join(extract_dir, *name.split('/'))
...@@ -169,37 +169,37 @@ def unpack_tarfile(filename, extract_dir, progress_filter=default_filter): ...@@ -169,37 +169,37 @@ def unpack_tarfile(filename, extract_dir, progress_filter=default_filter):
by ``tarfile.open()``). See ``unpack_archive()`` for an explanation by ``tarfile.open()``). See ``unpack_archive()`` for an explanation
of the `progress_filter` argument. of the `progress_filter` argument.
""" """
try: try:
tarobj = tarfile.open(filename) tarobj = tarfile.open(filename)
except tarfile.TarError: except tarfile.TarError:
raise UnrecognizedFormat( raise UnrecognizedFormat(
"%s is not a compressed or uncompressed tar file" % (filename,) "%s is not a compressed or uncompressed tar file" % (filename,)
) )
try: try:
tarobj.chown = lambda *args: None # don't do any chowning! tarobj.chown = lambda *args: None # don't do any chowning!
for member in tarobj: for member in tarobj:
if member.isfile() or member.isdir(): name = member.name
name = member.name # don't extract absolute paths or ones with .. in them
# don't extract absolute paths or ones with .. in them if not name.startswith('/') and '..' not in name.split('/'):
if not name.startswith('/') and '..' not in name: dst = os.path.join(extract_dir, *name.split('/'))
dst = os.path.join(extract_dir, *name.split('/')) while member is not None and (member.islnk() or member.issym()):
linkpath = member.linkname
if member.issym():
linkpath = posixpath.join(posixpath.dirname(member.name), linkpath)
linkpath = posixpath.normpath(linkpath)
member = tarobj._getmember(linkpath)
if member is not None and (member.isfile() or member.isdir()):
dst = progress_filter(name, dst) dst = progress_filter(name, dst)
if dst: if dst:
if dst.endswith(os.sep): if dst.endswith(os.sep):
dst = dst[:-1] dst = dst[:-1]
tarobj._extract_member(member,dst) # XXX Ugh try:
tarobj._extract_member(member,dst) # XXX Ugh
except tarfile.ExtractError:
pass # chown/chmod/mkfifo/mknode/makedev failed
return True return True
finally: finally:
tarobj.close() tarobj.close()
extraction_drivers = unpack_directory, unpack_zipfile, unpack_tarfile extraction_drivers = unpack_directory, unpack_zipfile, unpack_tarfile
...@@ -36,7 +36,7 @@ class Require: ...@@ -36,7 +36,7 @@ class Require:
def version_ok(self,version): def version_ok(self,version):
"""Is 'version' sufficiently up-to-date?""" """Is 'version' sufficiently up-to-date?"""
return self.attribute is None or self.format is None or \ return self.attribute is None or self.format is None or \
str(version)<>"unknown" and version >= self.requested_version str(version)!="unknown" and version >= self.requested_version
def get_version(self, paths=None, default="unknown"): def get_version(self, paths=None, default="unknown"):
......
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