[Python-Dev] distutils and bdist_wininst confusion: clarification
Thomas Heller
thomas.heller@ion-tof.com
Tue, 10 Oct 2000 15:06:05 +0200
There has been some confusion about distutils, especially the
bdist_wininst command.
I hope I can clarify these things with this post.
1. The current Distutils version 1.0, which is also
included in the Python 2.0 release candidate is perfectly
usable apart from one bug:
You should create windows installers (by running
'setup.py bdist_wininst' or 'setup.py bdist --formats=wininst')
ONLY with an external zip utility (info-zip would do).
Using the zipfile module results in corrupted installations
(all files are created with zero length).
Details about the cause for this can be found in the patch
I posted to SF.
2. I submitted a patch to SF
http://sourceforge.net/patch/?func=detailpatch&patch_id=101844&group_id=5470
which corrects this bug.
Normally I would have checked this code in immediately,
because it is in _my_ code, and that's what my checkin rights
are for ;-).
I did not because I did not want to interfere with the release process of
python 2.0 rc 1.
3. How does bdist_wininst work?
bdist_wininst creates a self-extracting zipfile from two
components: a stub program (wininst.exe) plus a zip-file
containing the code to be distributed. Because I did not
liked wininst.exe as binary file checked in into CVS,
the actual bytes of this exe are included base64-encoded
in the bdist_wininst.py module as string. I'm not sure
whether this is a wise design or not, but that is a different
topic.
The downside of this design is that when the source to
wininst.exe changes, it must be recompiled, and bdist_wininst.py
must be regenerated. The context-diffs for bdist_wininst.py
are so very large.
4. To understand the patch, you should know the following:
Distutils is a separate toplevel module in the repository
on sourceforge. Parts of this repository are symbolically
linked somewhere into the python tree. Thus, this patch must
be applied to the distutils _module_ in the repository.
Distutils directory structure is as follows:
distutils
dd
distutils
command
doc
dist
inst
examples
sample1
sample2
sample3
misc
test
text
Relevant part of python directory structure:
python
dist
src
Lib
distutils
command
The source code for wininst.exe is in CVS in the distutils/misc
directory.
The patch I posted to SF does not include the compiled
wininst.exe, neither does it include the (regenerated)
bdist_wininst.py module.
5. If nobody objects, I will check in the changes I made tomorrow, recompile
the exe, regenerate the bdist_wininst.py, and everything should be
fine again.
Greg will then hopefully, when he is back, increase the distutils version
number to 1.0.1 (or whatever) and this version will then be delivered with
python 2.0 final.
Sorry for the confusion.
Cheers,
Thomas