Python 2.6 patch

This commit is contained in:
Bahadır Kandemir
2009-02-05 13:38:37 +00:00
parent b367c3dfd4
commit 09aeaa72a5
+121
View File
@@ -0,0 +1,121 @@
Index: pisi/archive.py
===================================================================
--- pisi/archive.py (revision 21417)
+++ pisi/archive.py (working copy)
@@ -115,7 +115,7 @@
elif self.type == 'tarlzma':
rmode = 'r:'
self.file_path = self.file_path.rstrip(ctx.const.lzma_suffix)
- ret, out, err = util.run_batch("lzma -k -f -d %s%s" % (self.file_path,ctx.const.lzma_suffix))
+ ret, out, err = util.run_batch("lzma -k -f -d %s%s" % (self.file_path, ctx.const.lzma_suffix))
if ret != 0:
raise LzmaRuntimeError(err)
else:
@@ -187,7 +187,7 @@
def close(self):
self.tar.close()
- if self.tar.mode == 'wb' and self.type == 'tarlzma':
+ if self.tar.mode == 'w' and self.type == 'tarlzma':
batch = None
if ctx.config.values.build.compressionlevel:
batch = "lzma -%s -z %s" % (ctx.config.values.build.compressionlevel, self.file_path)
@@ -201,97 +201,9 @@
class MyZipFile(zipfile.ZipFile):
def decompressToFile(self, name, outname):
- import zlib
- import binascii
+ self.extract(name, os.path.dirname(outname))
- block_size = 1024 * 1024 * 2
- if self.mode not in ("r", "a"):
- raise RuntimeError, 'read() requires mode "r" or "a"'
- if not self.fp:
- raise RuntimeError, \
- "Attempt to read ZIP archive that was already closed"
- zinfo = self.getinfo(name)
- filepos = self.fp.tell()
-
- self.fp.seek(zinfo.header_offset, 0)
-
- # Skip the file header:
- fheader = self.fp.read(30)
- if fheader[0:4] != zipfile.stringFileHeader:
- raise BadZipfile, "Bad magic number for file header"
-
- fheader = struct.unpack(zipfile.structFileHeader, fheader)
- fname = self.fp.read(fheader[zipfile._FH_FILENAME_LENGTH])
- if fheader[zipfile._FH_EXTRA_FIELD_LENGTH]:
- self.fp.read(fheader[zipfile._FH_EXTRA_FIELD_LENGTH])
-
- if fname != zinfo.orig_filename:
- raise zipfile.BadZipfile, \
- 'File name in directory "%s" and header "%s" differ.' % (
- zinfo.orig_filename, fname)
-
- destfile = file(outname, 'wb')
-
- if zinfo.compress_type == zipfile.ZIP_STORED:
- total_read = 0
- crc = None
- while total_read < zinfo.compress_size:
- if zinfo.compress_size - total_read < block_size:
- block_size = zinfo.compress_size - total_read
- buff = self.fp.read(block_size)
- destfile.write(buff)
- total_read += (block_size)
- if crc:
- crc = binascii.crc32(buff, crc)
- else:
- crc = binascii.crc32(buff)
- destfile.close()
- self.fp.seek(filepos, 0)
- if crc and crc != zinfo.CRC:
- raise zipfile.BadZipfile, "Bad CRC-32 for file %s" % name
- return
- elif zinfo.compress_type != zipfile.ZIP_DEFLATED:
- raise zipfile.BadZipfile, \
- "Unsupported compression method %d for file %s" % \
- (zinfo.compress_type, name)
-
- if not zlib:
- raise RuntimeError, \
- "De-compression requires the (missing) zlib module"
- # zlib compress/decompress code by Jeremy Hylton of CNRI
- dc = zlib.decompressobj(-15)
-
- total_read = 0
- crc = None
- while total_read < zinfo.compress_size:
- if zinfo.compress_size - total_read < block_size:
- block_size = zinfo.compress_size - total_read
- buff = self.fp.read(block_size)
- dcbuff = dc.decompress(dc.unconsumed_tail + buff)
- destfile.write(dcbuff)
- total_read += block_size
- if crc:
- crc = binascii.crc32(dcbuff, crc)
- else:
- crc = binascii.crc32(dcbuff)
-
- # need to feed in unused pad byte so that zlib won't choke
- ex = dc.decompress(dc.unconsumed_tail + 'Z') + dc.flush()
- if ex:
- if crc:
- crc = binascii.crc32(ex, crc)
- else:
- crc = binascii.crc32(ex)
- destfile.write(ex)
-
- if crc and crc != zinfo.CRC:
- raise zipfile.BadZipfile, "Bad CRC-32 for file %s" % name
-
- destfile.close()
- self.fp.seek(filepos, 0)
-
-
class ArchiveZip(ArchiveBase):
"""ArchiveZip handles zip archives.