Look more closely at the docs for "Obsoletes" in RPM, not just those for "Provides". Being able to transparently replace an existing package with a renamed one that installs files with the same names is certainly part of the purpose/capabilities of the RPM dependency machinery (i.e. precisely the distribute vs setuptools situation). We may want to clarify the wording to ensure it is clear that the provision of the dist name (as posted on PyPI) is implied, though. Cheers, Nick. -- Sent from my phone, thus the relative brevity :) On Nov 20, 2012 11:45 AM, "Donald Stufft" <donald.stufft@gmail.com> wrote:
On Monday, November 19, 2012 at 8:35 PM, Toshio Kuratomi wrote:
On Mon, Nov 19, 2012 at 07:49:41PM -0500, Donald Stufft wrote:
Other languages seem to get along fine without it. Even the OS managers which have it don't allow it to be used to masquerade as another project, only to make generic virtual packages (e.g. "email").
I'm not sure this assertion about OS package managers is correct. I've only just read: http://www.python.org/dev/peps/pep-0426/#provides-dist-multiple-use
but the rough rpm analogue seems to be the Provides: tag.
Provides is given a string which is parsed into a name or a name and version like this:
Provides: python Provides: python = 3.1.0
rpm has no way at package build time to tell that a particular name given in a provides in one package is the actual name of another package.
At installtime, rpm keeps package names and provides names separately but in dependency comparisons either one can be used to satisfy a requirement. What that means is that when asking about information on a package with name "python", you'll get information about the python package with that name and not about anything else that Provides: "python". But if you are installing something that has a requirement on "python" either the package with the name python or any package that Provides: python can satisfy the requirement.
Are you saying the RPM documentation is wrong?
http://www.rpm.org/max-rpm/s1-rpm-inside-tags.html
The provides tag is used to specify a *virtual package* that the packaged software makes available when it is installed. Normally, this tag would be used when different packages provide equivalent services. For example, any package that allows a user to read mail might provide the mail-reader virtual package. Another package that depends on a mail reader of some sort, could require the mail-reader virtual package. It would then install without dependency problems, if any one of several mail programs were installed.
It pretty clearly states that it is not to be used for masquerading as a different package, which was my point. I wasn't making any claims about wether it was technically possible to do so or not, just what it's intended purpose was.
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/ncoghlan%40gmail.com