[Distutils] formencode as .egg in Debian ??
David Arnold
david at mantara.com
Fri Nov 25 02:54:12 CET 2005
-->"Phillip" == Phillip J Eby <pje at telecommunity.com> writes:
Phillip> Python developers would *love* to have Debian manage their
Phillip> packages, they would simply like to be able to verify at
Phillip> runtime that the management has in fact been done. It's not
Phillip> that we don't trust you, it's just that we're paranoid. :)
>> From a Debian perspective, that's strictly your own affair.
>> Debian packages "just work", and if they don't it's a bug. There's
>> no need for anyone other than the packager to worry about this.
Phillip> And if we were Debian developers rather than Python
Phillip> developers, this would be a sensible approach to take. As a
Phillip> practical matter, we have to worry, because our users aren't
Phillip> strictly Debian users, and asking them all to move to Debian
Phillip> isn't practical for most of us. ;)
Yep, I understand that totally.
Phillip> Let me ask you this: does Debian ban people from putting $id$
Phillip> strings in C code to allow identifying the version of the
Phillip> source that was used to build a library or executable?
No.
Phillip> Because that's what *exactly* what we're talking about here
Phillip> in respect to dependencies, just for Python code instead of
Phillip> C.
So, if a system package, shipped by the upstream developer as an egg, is
"unpacked" into a directory structure, and its metadata is maintained
in a .egg-info file somewhere in sys.path, non-system eggs will have all
they need to operate correctly?
Phillip> We'd like for Debian to advertise to our packages, precisely
Phillip> what versions of which of our dependencies are installed.
>> In general, I don't see why packages should care. Either it works,
>> in which case there's no problem, or it doesn't, in which case it's
>> a packaging bug, and it will be fixed.
Phillip> But we can't tell if it's a packaging bug, or a bug against
Phillip> what version of our dependencies, unless we know what version
Phillip> the user is running.
So that's another goal of eggs? To provide information to a package
maintainer to assist in determining if it's the user's PYTHONPATH or
.pth files that are causing a bug?
I can see this would be helpful. But Debian won't tell you that (as you
said you'd like, above).
Phillip> Given that sys.path can include *both* Debian system packages
Phillip> and local user-installed packages, we need a more
Phillip> comprehensive way of dealing with the issue, which is what
Phillip> eggs provide.
I can see that this is *nice*; I'd debate "need". But I'm happy to
accept that for egg-based stuff, this is a nice feature.
>> Supporting the installation and simultaneous use of multiple
>> versions seems to be a goal of eggs?
Phillip> Absolutely.
>> FWIW, that's kinda heretical on Unix (which might explain some of
>> the antipathy).
Phillip> The Python approach is "Practicality Beats Purity", which I
Phillip> thought was also a Unix value.
I'm not going to try to assert "Unix values" here. My observation is
that historically, Unix has installed things into one of a couple of
directory hierarchies (/usr, /usr/local, /opt). Within those
hierarchies, there has been scope for only one version of any given
thing.
This is ok because developers take care to maintain API compatibility at
the source level, at least, and ABI compatibility if they're well
behaved.
If you need to break compatibility, it's normally done by renaming the
new verion (ie. gtk vs gtk2).
Without going into the merits of this, it's my observation that this has
been the in-practice approach (and you can draw whatever philosophical
"Unix values" you like from that).
Phillip> And we'd like all this to cleanly work with any
Phillip> locally-installed non-Debian eggs that might be in the mix,
Phillip> since we need to do development, beta testing, etc.
>> And non-egg packages as well, right?
Phillip> There isn't any such thing, from an egg developer's
Phillip> perspective.
Really? So if I use one egg, everything has to be an egg?
Phillip> Any distutils package can be made into an egg, because all of
Phillip> the metadata needed is supplied by the standard distutils
Phillip> setup script. So, if you have the source, you can make it an
Phillip> egg.
What if I don't have the source (or setup.py) ?
Phillip> That doesn't mean you should change Debian to eggs, because
Phillip> eggs aren't trying to solve the problems that you guys solve
Phillip> either.
It seems to me that it's likely Debian will need to cope with eggs.
Phillip> But if you'd like for your system packages of Python project
Phillip> *not* to have to be duplicated as separately distributed
Phillip> eggs,
I personally would appreciate that not being the case
Phillip> then we need to have some dependency info, so that your
Phillip> packages can play in those areas where you *aren't* providing
Phillip> a complete solution, but *can* provide a part of it.
That seems reasonable.
Accepting that there will be parallel (I hesitate to say "competing")
systems, and that keeping them in sync is both hard and necessary seems
to be the open issue.
Phillip> Thus, maybe the issue for some is that supplying the
Phillip> dependency information would be an admission that there
Phillip> really *are* problems Debian doesn't solve, as opposed to
Phillip> "merely" helping with.
I don't perceive that to be the issue (but perhaps I'm wrong).
d
More information about the Distutils-SIG
mailing list