From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lists.gentoo.org ([140.105.134.102] helo=robin.gentoo.org) by nuthatch.gentoo.org with esmtp (Exim 4.60) (envelope-from <gentoo-dev+bounces-18514-garchives=archives.gentoo.org@gentoo.org>) id 1GfuN7-0002tw-2U for garchives@archives.gentoo.org; Fri, 03 Nov 2006 08:25:53 +0000 Received: from robin.gentoo.org (localhost [127.0.0.1]) by robin.gentoo.org (8.13.8/8.13.8) with SMTP id kA38P1NR001300; Fri, 3 Nov 2006 08:25:01 GMT Received: from sccrmhc14.comcast.net (sccrmhc14.comcast.net [204.127.200.84]) by robin.gentoo.org (8.13.8/8.13.8) with ESMTP id kA38N3TR011924 for <gentoo-dev@lists.gentoo.org>; Fri, 3 Nov 2006 08:23:04 GMT Received: from seldon (c-24-21-135-117.hsd1.or.comcast.net[24.21.135.117]) by comcast.net (sccrmhc14) with SMTP id <2006110308230201400qe627e>; Fri, 3 Nov 2006 08:23:02 +0000 Date: Fri, 3 Nov 2006 00:23:00 -0800 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 Message-ID: <20061103082300.GA20674@seldon> References: <200611030229.46220.vapier@gentoo.org> Precedence: bulk List-Post: <mailto:gentoo-dev@lists.gentoo.org> List-Help: <mailto:gentoo-dev+help@gentoo.org> List-Unsubscribe: <mailto:gentoo-dev+unsubscribe@gentoo.org> List-Subscribe: <mailto:gentoo-dev+subscribe@gentoo.org> List-Id: Gentoo Linux mail <gentoo-dev.gentoo.org> X-BeenThere: gentoo-dev@gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="a8Wt8u1KmwUX3Y2C" Content-Disposition: inline In-Reply-To: <200611030229.46220.vapier@gentoo.org> User-Agent: Mutt/1.5.13 (2006-08-11) X-Archives-Salt: 11078161-d048-4bf8-87c7-868be995a32a X-Archives-Hash: 00f926b1fad13be287f275147cbae7db --a8Wt8u1KmwUX3Y2C Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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=20 > your own That discussion (dropping it to explicit, as has been discussed often=20 enough) should be started off again since fixing it isn't exactly a=20 matter of applying a patch and ignoring it.... so... swegener? Feel free to chime in, you were one of the main folks=20 after killing implicit from what I recall. Meanwhile... > we've said the relationship of DEPEND atoms in ebuilds should be independ= ent=20 > of the DEPEND atoms found in eclasses as logically ebuilds should not car= e=20 > what it takes for eclasses to work and vice versa ... for the most part, = this=20 > is true ... >=20 > however, semi-recently, a change was made such that the implicit=20 > RDEPEND=3D$DEPEND was dropped from ebuilds if an inherited class set RDEP= END in=20 > any way ... that means if you have an ebuild at the moment that does: > DEPEND=3D"foo" > and you dont inherit any eclasses, then you also get for free: > RDEPEND=3D"foo" >=20 > if you decide to inherit eclasses though, you had better do some research= as=20 > any eclass that does even RDEPEND=3D"" will change that behavior ... or i= f you=20 > are an eclass writer and you decided to add RDEPEND to your eclass, you h= ad=20 > better do a reverse check and make sure that any ebuild that inherits you= r=20 > eclass (directly or indirectly) does not utilize implicit RDEPEND behavio= r as=20 > you would have just broken it ... awesome ;) >=20 > i posted a patch to fix this regression, but since it took so long before= =20 > anyone noticed, zmedico wants to see if anyone is opposed (i dont know wh= y=20 > they would be, but i cant think of everything) >=20 > so to recap, the fix here changes it back to the historically documented= =20 > behavior that the implicit RDEPEND happens in ebuilds regardless of what= =20 > eclasses do Mildly screwed on this one from a cache standpoint;=20 1) the change went out unversioned, meaning that while it was=20 spreading, folks were getting a mix of it. Likely their are still=20 cache entries distributed with gentoo-x86 that are still old style=20 deps. Nice. 2) Same issue via reverting it; it's an unversioned change, so portage=20 will *not* pick up on it and fix it. Additionally, cause I was being=20 anal about making --metadata as fast as possible, portage will *not*=20 pick up the change since mtimes won't differ, thus will not write the=20 new entry into the localized cache (cache.util.py, note the=20 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=20 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=20 the entire tree to be bumped to force falling back to older behaviour=20 (this is why changes like this are supposed to be EAPI bumped in the=20 first place btw). 2) (several steps) 2.a) Revbump all afflicted portage versions with a patch=20 restoring original behaviour, leaving keywords the same (meaning=20 2.1-r3 goes in with stable keywords); pull all portage versions that=20 have the broken behaviour (>=3D2.1 basically). 2.b) Force mtime touches of _all_ eclasses to force both rsync=20 transfer within the mirror tier (can do this other ways), but more=20 importantly, to force the transfer of all eclass consumers to the=20 localized cache on folks machines. This at least gets them the old=20 style deps in their cache. It will *not* fix the rdeps for overlay=20 ebuilds that are afflicted, and does not fix it if the user triggers=20 regeneration locally. 3) ignore it, and laugh like nero till everyone has upgraded to a=20 fixed version of portage and enough churn in the tree has occured to=20 have forced the corrected cache entries locally. #1 blows since either it requires changing EAPI in every ebuild (=20 easier, base/profile.bashrc, although I never intended profile bashrc=20 to influence ebuild metadata), or auditing the rdeps and fixing them,=20 bumping when after older behaviour. Additionally, requires leaving a=20 portage version behind at the older EAPI for upgrading. #2 is fairly brutal initially, but should clear out the corruption=20 pretty quickly for majority of users; for overlay users and devs=20 however, it relies on folks upgrading to a fixed portage fairly=20 quickly so that rdeps are proper. Doubly so for devs, since their=20 portage installation is the first line of dependency verification=20 (folks running automated repoman/pcheck dependency scans being second=20 line). One upshot though, this method will push the proper deps into the=20 localized cache for stage* users. Downside is that it triggers a pretty heavy hit on rsync mirrors,=20 although the eclass touching can be stretched out over a few days to=20 incrementally push out the updated cache. #3 means that broken rdeps linger for the next few months till folks=20 have upgraded, and the mess has gradually cleaned itself out. Will=20 linger for a long while in older ebuilds, although a forced cache=20 regen fixes it for folks who either wipe their localized cache, or=20 somehow trigger a regen. So... I'd go with #2. Pardon the essay, but getting the effects of it fixed isn't trivial,=20 and the long term lingering effects aren't either imo. So... thoughts? ~harring --a8Wt8u1KmwUX3Y2C Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQFFSvxksiLx3HvNzgcRAu9hAKDMD/58OxOssdKTZ6E2wGPTtcCP+QCgtn/8 nxVXY5YFazAxlP2CkF1bjyU= =hwjr -----END PGP SIGNATURE----- --a8Wt8u1KmwUX3Y2C-- -- gentoo-dev@gentoo.org mailing list