On Wed, Sep 16, 2015 at 1:09 PM, Rich Freeman <ri...@gentoo.org> wrote:
>
> I'll go ahead and start a tangent on this thread right here.  As a
> first step can we separately consider the proposal to require a
> revbump anytime a package's RDEPENDS changes?  I'm referring here to
> directly-specified RDEPENDS, not those inherited from an eclass or
> virtual.

Ok, for the purpose of the upcoming council meeting, I'd like to make
a few separate proposals around dynamic dependencies.
There are three categories of policies:
1.  RDEPEND changes directly in ebuilds.
2.  RDEPEND changes directly in virtuals.
3.  RDEPEND changes in eclasses.

Honestly, I'm not really convinced virtuals need special treatment,
but I split them off in case it is useful in discussion.

RDEPEND changes directly in ebuilds
Proposal 1: Anytime an RDEPEND in a non-virtual ebuild is changed, the
ebuild must be revisioned.  This includes adding/removing inherited
eclasses which set RDEPENDs.

RDEPEND changes directly in virtuals
Proposal 2: Anytime an RDEPEND in a virtual ebuild is changed, the
ebuild must be revisioned.  This includes adding/removing inherited
eclasses which set RDEPENDs.

RDEPEND changes in eclasses
Proposal 3: Anytime an RDEPEND in an eclass is changed, the eclass
must be revisioned.
Proposal 4: Anytime an RDEPEND in an eclass is changed, all ebuilds
that inherit the eclass in the gentoo repository must be revisioned.

Please speak up if you have any issues with any of these.

I'm leaning towards adopting 1, 2, and 4.  I would actually prefer 3
to 4 on principle, but we don't have a good way of retiring obsolete
eclasses and I don't want to see a huge multiplication in them.  If we
did adopt #3 we should probably start thinking about more consistent
version numbering for eclasses since I could see multiple active
series of eclass versions being updated in parallel.

I'll also note that the wording of Proposal 4 doesn't preclude doing
proposal 3 if the eclass maintainer thinks it is appropriate (maybe
the RDEPEND should only change in some circumstances or there are
other changes happening at the same time).  The wording of Proposal 4
refers to when an eclass is changed, and if you make the change in a
new revision you aren't changing the previous one, and so you don't
need to bump all the ebuilds.  Of course the ebuilds would still need
to be bumped if they were modified to use the new eclass, per proposal
1.

Proposal 3 is superior to proposal 4 from the standpoint of overlays
that use eclasses in the main repository, since nobody will be going
around and revbumping their ebuilds.  Of course, any eclass change
should be posted on -dev and so there would be notice.

Adopting 1, 2, and at least one of 3 or 4 would eliminate all the
dynamic dependency issues in the tree.  If anybody is aware of any
that I missed and I'll add them.

Also, in the event proposal 1 and 2 are both adopted, here is proposed
streamlined wording:
Proposal 5: Anytime an RDEPEND in an ebuild is changed, the ebuild
must be revisioned.  This includes adding/removing inherited eclasses
which set RDEPENDs.

However, the council doesn't have to approve the literal wording of
everything in the devmanual, so that might be overkill.  The devmanual
can of course explain the rationale for avoiding dynamic deps/etc.

-- 
Rich

Reply via email to