[Pythonmac-SIG] bdist_mpkg zipdist and unzip(1) (was ANN: pygame
1.7.0 for Mac OS X 10.3)
Robert Kern
rkern at ucsd.edu
Mon Mar 21 04:02:44 CET 2005
Robert Kern wrote:
> Using /usr/bin/unzip to unzip the package seems to strip the executable
> flags from these files. Stuffit Expander seems to work fine.
I've traced the problem to a deficiency in Python's zipfile (well, one
could equally say that there is a deficiency in Info-Zip's code, but
Python is still wrong regardless). I have attached a workaround patch to
py2app.
--
Robert Kern
rkern at ucsd.edu
"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
-------------- next part --------------
Index: src/bdist_mpkg/cmd_bdist_mpkg.py
===================================================================
--- src/bdist_mpkg/cmd_bdist_mpkg.py (revision 426)
+++ src/bdist_mpkg/cmd_bdist_mpkg.py (working copy)
@@ -434,6 +434,15 @@
if os.path.splitext(fn)[1] == '.gz':
compression= zipfile.ZIP_STORED
z.write(fn, arcfn, compression)
+
+ # ZipFile always marks the files' attributes to be interpreted as if
+ # they came from a Windows host. This interferes with some software
+ # (namely unzip(1) from Info-Zip) from extracting executables with the
+ # proper file attributes. So manually fix the appropriate attributes on
+ # each of the ZipInfo's to specify the host system as a UNIX.
+ for zinfo in z.filelist:
+ zinfo.create_system = 3 # UNIX
+
z.close()
def copy_tree(self, infile, outfile,
More information about the Pythonmac-SIG
mailing list