Gentoo Archives: gentoo-pms

From: Maciej Mrozowski <reavertm@×××××.com>
To: gentoo-pms@l.g.o
Subject: Re: [gentoo-pms] Clarify wording on self-blockers
Date: Wed, 27 Apr 2011 21:34:14
In Reply to: Re: [gentoo-pms] Clarify wording on self-blockers by Ciaran McCreesh
On Wednesday 27 of April 2011 21:24:51 Ciaran McCreesh wrote:

> > > Uh, no, that's the entire point of EAPIs. > > > > This is a common misconception. > > Uh, no. You are completely and horribly wrong.
> EAPIs were introduced to avoid the problems that we used to have where > different versions of Portage did different things with the same input > (including, but not limited to, difficulties in adding new features). > > > From ebuild developer point of view - EAPI specification should > > provide all knowledge required to create ebuilds along with detailed > > and unambiguous description of what to expect from package manager > > that is compliant with said EAPI. > > Oh heck no. That really isn't the point at all.
But it is. Discussion about blocks is precisely about what is expected package manager behaviour for self-mutual blocks (in EAPI>=2) in such case. And what you propose is 'behaviour is undefined for self-mutual blocks' - if so, why are they permitted by specification and not banned instead? The way you understand the word 'specification' doesn't really allow any specs bugfixes since they would "magically" invalidate any existing implementations, unless there is just one (and actually there *is* just one *supported*) so that specification could be kept in sync with it. How does Paludis handle normal and/or strong self-blocks? And how PkgCore does? Is blocks situation ever going to be clarified/improved in package manager level? What with other PMS issues? No, specification will be out of sync because every single random package manager developer will implement it his/her way, and then claim said package manager is compliant and specification cannot be fixed since it changes behaviour. No, it doesn't change behaviour of any implementation - it will make it possible to determine that some particular implementation is not compliant. It is to mean that some ancient portage is not compliant with hopefully-soon-to-be-updated specification? Yes indeed, that's the result of updating *specification*. Maybe also the point.
> From an ebuild developer's point of view, PMS describes (or at least > tries to describe -- the case under discussion here is one where PMS > probably needs fixing) what can and cannot be relied upon from the > package manager. The EAPI feature is used to restrict your ebuild's > availability to *all* package manager versions supporting a particular > set of features. Not "the most recent Portage version". *ALL* versions > of Portage that claim support for the EAPI in question.
(I'm tempted to quote some random definition for fun) Ebuild developer looks at PMS through a view called EAPI so ebuild developer is interested in package manager behaviour in said EAPI that's why I said EAPI not PMS. And Portage is frankly the only supported package manager in Gentoo. If one wanted PMS to document behaviour of all known portage/paludis/pkgcore versions in PMS, one would need to be much more specific: what behaviour applies to what versions of particular package manager so that one really knows what can and what cannot be relied upon. But I suppose it's not the point. I thought PMS is specification and not a documentation - hence it should specify (to document would be poor choice of words.. ) intended, widely agreed behaviour and *defined* behaviour so that ebuild developer knows how to write ebuilds that work against PM *compliant* with specification and package manager developer knows how to write *compliant* PM. And because there are many places where PMS is too vague, it misses those goals.
> > Old package managers and their expected behaviour is irrelevant as > > soon as migration path to recent version exists for them. > > Again, you are deeply confused. It is required that an upgrade path for > old package managers is kept around for as long as possible by not > using newer EAPIs for certain key system packages. This is entirely > different to what you're saying -- it means that certain packages > should be kept at low EAPIs for as long as possible, not that EAPIs are > whatever the latest Portage version does.
No, you're making it up here.
> > Since intended behaviour for normal vs strong blocks is like Ulrich > > specified, and migration path to the most recent from first portage > > supporting EAPI-2 exists - argument to block specification update is > > invalid. > > That doesn't follow at all. What happens if someone has an old Portage > installed and the migration path includes things that rely upon a > changed behaviour?
It wouldn't be a migration path, would it?
> Since you're trying to retroactively define a > particular behaviour for all EAPIs that doesn't match what some old > Portage versions do, your upgrade path is screwed.
No, I'm supporting *defining* behaviour as it's intended so that package managers are able to know whether they are correct. You're making all of them correct by explicitly allowing them to do anything here and there - it's not helping.
> This sort of thing really should be in the developer quiz. It's too > basic and fundamental for people to be getting wrong.
Comprehensive reading is that sort of thing as well. Ulrich: maybe we should consider renaming PMS to PMD? :P (btw, I'm subscribed to this list) -- regards MM


File name MIME type
signature.asc application/pgp-signature


Subject Author
Re: [gentoo-pms] Clarify wording on self-blockers Brian Harring <ferringb@×××××.com>