Ian Bicking <ianb@colorstudy.com> writes:
I'm just about ready to run screaming from this discussion... so no, I want no part of determining what the "right" place for these files is
As I understand it, you are speaking from the perspective of a “developer”; that is, someone who intends to share the software work you've written, but leave the packaging of that work for particular OSen to other people. In that case, you're *not* being asked to determine what the “right” installation location of files is; that's exactly the shift in control that's being requested here, by divorcing the decision about what the *purpose* of a file is from what its installed *location* will be. Instead, you're being asked only to determine which category a file belongs to; and those categories are (modulo some historical quirks, due to David's obvious strong preference for the C-language-focussed ‘autoconf’) mostly about the *purpose* of a file — precisely to allow that determination to be made without the same person needing to know about install locations.
I imagine some file like package-data.conf, containing:
data mypackage/templates/ docs docs/_build/
At least in this example the first word is some tag, and the second is the directory, or files, or maybe a wildcard or something determining what files that tag applies to. Everything not declared but present in a package (or as a module) would default to "lib", and everything outside of that (like the setup.py file) would be "ignore".
This is (with implementation differences) entirely compatible with what David's proposing, AFAICT. The message you responded to, though, was discussing the complementary part: the install location of (in your example) ‘docs’, ‘data’, ‘lib’, etc. If you want no part of that, you're welcome to avoid it; and that's exactly the kind of partition that is being striven for here.
On installation, you'd write something like mypackage.egg-info/file-locations.txt, that might look like:
mypackage/templates/ -> /usr/share/mypackage/templates/ docs/_build/ -> /usr/share/doc/mypackage
(I'm not sure what the syntax would look like, but whatever.)
Here, though, you lose the very useful categorisation you set up above. AIUI, David is proposing that install location be a mapping not from file path to file path, but from file *purpose* (as categorised above) to install file path. -- \ “For every complex problem, there is a solution that is simple, | `\ neat, and wrong.” —Henry L. Mencken | _o__) | Ben Finney