[Distutils] MANIFEST destiny :)
Phillip J. Eby
pje at telecommunity.com
Wed Nov 16 19:06:17 CET 2005
At 10:29 AM 11/16/2005 -0600, Ian Bicking wrote:
>M.-A. Lemburg wrote:
>>>* Always, always, always build MANIFEST, and always include both the
>>>MANIFEST file and MANIFEST.in (if present) in the source distribution.
>>
>>-1 on always building MANIFEST.
>>This would miss the point of managing MANIFEST files
>>independently of your package files, e.g. using
>>Makefiles or other tools dealing with file dependencies,
>>checkouts, etc.
>
>How about always build it, automatically, if some particular option is not
>passed to setup()? This would only apply to packages using setuptools,
>not distutils, and there's other things that existing distutils packages
>might have to tweak to move to setuptools.
Especially in cases where they have complex custom builds. People with
stuff as sophisticated as SciPy, mx* stuff, Twisted, Zope, are not people I
expect to move to setuptools any time soon. (I've heard rumors about Zope
using it for Products, but reasonably speaking I think it's going to take
some time before the Zope core could be moved to it, probably by adapting
the zpkg tools to generate setuptools-based setup scripts.)
My thinking here is more about the long term, and mostly setuptools is
"disruptive technology" anyway, because it's shifting the balance of
distribution power towards smaller and simpler tools. One of the reasons
complex packages are dominant today is because they reduce the number of
things you have to install. Setuptools makes the number of things you have
to install a lot less relevant, so in the "new world", smaller packages
will tend to dominate. In order to effect that shift, it's got to become a
lot easier for a complete distutils novice to turn out a package.
> Maybe it would be as simple as a keyword argument that refers to a
> routine to build the MANIFEST file; and if you build MANIFEST by hand,
> then you just make the function a no-op.
Now *that's* an interesting idea. I'll have to give that one some
thought. Thanks!
>Also, disable all command-line options that control when/if/how MANIFEST
>is generated; these seem peculiar to me. MANIFEST generation seems like
>package metadata, not something particular to your build, and command-line
>options seem like a bad way to control that. It's a little fuzzy, though,
>since command-line options and setup.cfg are equivalent, and setup.cfg
>options often feel like package data. So... I don't know what the middle
>ground is there. Either way, these aren't things that seem like they
>should be regularly tweaked. I don't know, I don't have any packages with
>complex (or even simple) build processes, so I only know that the current
>system is mysterious to me, and almost but doesn't always work without my
>intervention.
Marc's explanation of these options is actually pretty reasonable as a
projected use case. If there are any *actual* field uses, I'll consider
trying to support them. Of course, if those use cases are ones where
there's no reasonable likelihood of the project moving to setuptools, it
doesn't make sense to support them in setuptools. It would be more a
matter of, if some o the relevant setuptools stuff makes it back into the
distutils, it would need that additional degree of support.
>I think Phillip also mentioned using MANIFEST for package_data? At least
>insofar as the packages and the MANIFEST intersect, this seems like a good
>idea.
Yeah, it would make your find_package_data() less necessary. The reason I
haven't put it in yet, is because I've been pondering the issue of how to
integrate these notions of "the distribution contents". While I can
envision scenarios where you'd want certain data files to get built on the
target user's machine, there's still the option of manually or
programmatically specifying those files in package_data. (That is, I
intend to make include_package_data be supplemental to the existing
package_data option, not a replacement for it, except in the sense that for
simple cases you won't need package_data any more.)
More information about the Distutils-SIG
mailing list