On 02 September 2000, M.-A. Lemburg said:
I've also posted this to Greg directly, but on second thought I think it might be worthwhile getting some feedback from distutilers as well:
Then I'll reply publicly too; seems more useful that way.
- distutils doesn't seem to like diretory names in MANIFEST
Correct. MANIFEST is a simple list of files, one per line. If you want to include whole directories, you should write a MANIFEST.in file. Eg. here is the Distutils' MANIFEST.in; I have (right now) 536 files in my Distutils working tree, and this MANIFEST.in whittles it down to the 89 files you see in the 0.9.2 source tarball:
include *.txt TODO include MANIFEST.in recursive-include examples *.txt *.py prune examples/sample*/build include doc/dist/*.tex doc/inst/*.tex graft misc exclude misc/*.zip global-exclude *~
The docs for MANIFEST.in are sketchy right now; see
for a start.
- the setup.py file itself is not included in the source distribution per default (why not ?)
It should be if you have a MANIFEST.in file.
One current weakness is that the "sdist" command isn't very smart in the absence of a MANIFEST.in file. I always seem to notice this in the final hours up to a release, which is not the time or place for major surgery to fix this. Sigh.
- bdist_wininst wants zlib but the installer has a note that it is not using it anymore
Thomas, is this true?
- bdist_wininst fails with a setup.py file which does not define long_description
I thought that was fixed in 0.9.2 -- !@&%@!#&!@#&%!
- bdist_rpm fails with an error in the rpm command (the source rpm is built, but it fails to build to the binary rpm for some reason -- it says, that it can't find the file ??); do I need some new rpm release for this to work ?
bdist_rpm requires RPM 3.0, which all current RPM-based Linux distributions use (AFAIK). It does *not* work on Red Hat 5.x, which is what finally prompted me to upgrade to 6.2. ;-)
Can you show the exact output when you run "setup.py bdist_rpm"?
- the bdist commands don't compile the .py files into .pyo but this is needed in order to use them with python -O
Yeah, known problem. How big do you want your RPM to be again? ;-(
- bdist (the dumb version) defaults to creating a tar.gz archive which is relative to / -- it shouldn't use the usr/local/ prefix to make the installation relocateable (e.g. to install under /usr, /opt, /opt/local, etc.)
There's no one right way to do this; I've tried them both, and they're both wrong. Originally, bdist_dumb created an archive relative to <prefix> -- relocatable, but it didn't work if prefix != exec-prefix. (I can't remember if it bombed or created a bogus archive, but the bottom line is it didn't work.) Now it creates an archive relative to /, which handles prefix != exec-prefix, but is not relocatable. ;-(
I think the answer is to let the packager decide, ie. add an option to make the archive relative to / or prefix. (And it should blow up if prefix != exec-prefix and you try to make a prefix-relative archive.)
- how can I define the compiler settings for extension compilation (it defaults to -m486 for RPMs -- -mcpu=pentium would be more appropriate; default for standard bdist seems to be -O2 and no architecture) ?
For a straight Distutil build (ie. no RPM involved), setting CFLAGS should work, but it only applies to extensions (not C libraries). When RPM is involved, I'm not sure what the Right Way to do it is. Maybe CFLAGS will work? Maybe editing /etc/rpmrc or /usr/lib/rpm/rpmrc? I dunno.
And a general question: how can I define which files are documentation, examples and auxiliary files ?
Doc files can be defined with the doc_files option to bdist_rpm. The easiest way to set this is with a setup.cfg in your distribution root, eg. the Distutils setup.cfg has:
[bdist_rpm] release = 1 packager = Greg Ward email@example.com doc_files = CHANGES.txt README.txt USAGE.txt doc/ examples/ ...
Although I have been thinking that putting making every RPM option a Distutils option was a bad idea. Hmmmm.
More to come :-)
Oh no! You might want to take a look in the Distutils-0.9.2/TODO file to see what's on "the list".