public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Brian Harring <ferringb@gmail.com>
To: gentoo-dev@lists.gentoo.org
Cc: swegener@gentoo.org, dev-portage@gentoo.org
Subject: Re: [gentoo-dev] [RFC] fixing up portage implicit RDEPEND behavior
Date: Fri, 3 Nov 2006 00:23:00 -0800	[thread overview]
Message-ID: <20061103082300.GA20674@seldon> (raw)
In-Reply-To: <200611030229.46220.vapier@gentoo.org>

[-- Attachment #1: Type: text/plain, Size: 5525 bytes --]

On Fri, Nov 03, 2006 at 02:29:45AM -0500, Mike Frysinger wrote:
> this is not a "implicit vs explicit" thread; if you want that discussion start 
> your own

That discussion (dropping it to explicit, as has been discussed often 
enough) should be started off again since fixing it isn't exactly a 
matter of applying a patch and ignoring it.... so...

swegener?  Feel free to chime in, you were one of the main folks 
after killing implicit from what I recall.

Meanwhile...

> we've said the relationship of DEPEND atoms in ebuilds should be independent 
> of the DEPEND atoms found in eclasses as logically ebuilds should not care 
> what it takes for eclasses to work and vice versa ... for the most part, this 
> is true ...
> 
> however, semi-recently, a change was made such that the implicit 
> RDEPEND=$DEPEND was dropped from ebuilds if an inherited class set RDEPEND in 
> any way ... that means if you have an ebuild at the moment that does:
> DEPEND="foo"
> and you dont inherit any eclasses, then you also get for free:
> RDEPEND="foo"
> 
> if you decide to inherit eclasses though, you had better do some research as 
> any eclass that does even RDEPEND="" will change that behavior ... or if you 
> are an eclass writer and you decided to add RDEPEND to your eclass, you had 
> better do a reverse check and make sure that any ebuild that inherits your 
> eclass (directly or indirectly) does not utilize implicit RDEPEND behavior as 
> you would have just broken it ... awesome ;)
> 
> i posted a patch to fix this regression, but since it took so long before 
> anyone noticed, zmedico wants to see if anyone is opposed (i dont know why 
> they would be, but i cant think of everything)
> 
> so to recap, the fix here changes it back to the historically documented 
> behavior that the implicit RDEPEND happens in ebuilds regardless of what 
> eclasses do

Mildly screwed on this one from a cache standpoint; 

1) the change went out unversioned, meaning that while it was 
spreading, folks were getting a mix of it.  Likely their are still 
cache entries distributed with gentoo-x86 that are still old style 
deps.

Nice.

2) Same issue via reverting it; it's an unversioned change, so portage 
will *not* pick up on it and fix it.  Additionally, cause I was being 
anal about making --metadata as fast as possible, portage will *not* 
pick up the change since mtimes won't differ, thus will not write the 
new entry into the localized cache (cache.util.py, note the 
is_eclass_data_valid check controlling write_it boolean).

#1 was stupid, #2 pretty royally gets us up the backside.


So... my suggestion.  Decide what you're going to do long term now, no 
more (bluntly) fucking around with this.


Got a few courses of action from where I'm sitting-

1) EAPI bump for the restored behaviour.  This sucks since it forces 
 the entire tree to be bumped to force falling back to older behaviour 
 (this is why changes like this are supposed to be EAPI bumped in the 
 first place btw).

2) (several steps)
2.a) Revbump all afflicted portage versions with a patch 
 restoring original behaviour, leaving keywords the same (meaning 
 2.1-r3 goes in with stable keywords); pull all portage versions that 
 have the broken behaviour (>=2.1 basically).

2.b) Force mtime touches of _all_ eclasses to force both rsync 
 transfer within the mirror tier (can do this other ways), but more 
 importantly, to force the transfer of all eclass consumers to the 
 localized cache on folks machines.  This at least gets them the old 
 style deps in their cache.  It will *not* fix the rdeps for overlay 
 ebuilds that are afflicted, and does not fix it if the user triggers 
 regeneration locally.

3) ignore it, and laugh like nero till everyone has upgraded to a 
 fixed version of portage and enough churn in the tree has occured to 
 have forced the corrected cache entries locally.


#1 blows since either it requires changing EAPI in every ebuild ( 
easier, base/profile.bashrc, although I never intended profile bashrc 
to influence ebuild metadata), or auditing the rdeps and fixing them, 
bumping when after older behaviour.  Additionally, requires leaving a 
portage version behind at the older EAPI for upgrading.

#2 is fairly brutal initially, but should clear out the corruption 
pretty quickly for majority of users; for overlay users and devs 
however, it relies on folks upgrading to a fixed portage fairly 
quickly so that rdeps are proper.  Doubly so for devs, since their 
portage installation is the first line of dependency verification 
(folks running automated repoman/pcheck dependency scans being second 
line).

One upshot though, this method will push the proper deps into the 
localized cache for stage* users.

Downside is that it triggers a pretty heavy hit on rsync mirrors, 
although the eclass touching can be stretched out over a few days to 
incrementally push out the updated cache.

#3 means that broken rdeps linger for the next few months till folks 
have upgraded, and the mess has gradually cleaned itself out.  Will 
linger for a long while in older ebuilds, although a forced cache 
regen fixes it for folks who either wipe their localized cache, or 
somehow trigger a regen.

So... I'd go with #2.

Pardon the essay, but getting the effects of it fixed isn't trivial, 
and the long term lingering effects aren't either imo.

So... thoughts?

~harring

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2006-11-03  8:25 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-03  7:29 [gentoo-dev] [RFC] fixing up portage implicit RDEPEND behavior Mike Frysinger
2006-11-03  8:23 ` Brian Harring [this message]
2006-11-03 13:02   ` Mike Frysinger
2006-11-03  8:43 ` Zac Medico
2006-11-03  9:32   ` Peter Volkov (pva)
2006-11-03  9:39     ` Zac Medico
2006-11-03 13:02     ` Mike Frysinger
2006-11-05  3:45   ` Zac Medico
2006-11-05  7:40     ` Mike Frysinger
2006-11-03 18:37 ` Diego 'Flameeyes' Pettenò
2006-11-03 18:45 ` Stephen Bennett

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20061103082300.GA20674@seldon \
    --to=ferringb@gmail.com \
    --cc=dev-portage@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    --cc=swegener@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox