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
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
> 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)