From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id DBDD5138A1A for ; Wed, 21 Jan 2015 11:12:35 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 0E25EE08BF; Wed, 21 Jan 2015 11:12:30 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 0F70BE0885 for ; Wed, 21 Jan 2015 11:12:29 +0000 (UTC) Received: from localhost (i19-les02-th2-5-48-220-179.sfr.lns.abo.bbox.fr [5.48.220.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: aballier) by smtp.gentoo.org (Postfix) with ESMTPSA id 60A403405DB; Wed, 21 Jan 2015 11:12:27 +0000 (UTC) Date: Wed, 21 Jan 2015 12:12:21 +0100 From: Alexis Ballier To: =?UTF-8?B?TWljaGHFgiBHw7Nybnk=?= Cc: gentoo-dev@lists.gentoo.org Subject: Re: [gentoo-dev] RFC: USE=libav as replacement for broken || ( libav:= ffmpeg:= ) Message-ID: <20150121121221.2f71affb@gentoo.org> In-Reply-To: <20150121111504.3c1e0bb1@pomiot.lan> References: <20150119203145.38bd0aaa@pomiocik> <20150120091319.68bc7e04@gentoo.org> <20150120224352.1796ea17@pomiocik> <20150121110501.7641b0b7@gentoo.org> <20150121111504.3c1e0bb1@pomiot.lan> Organization: Gentoo X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 25a2a660-c76d-4f90-add1-a51b74653a1b X-Archives-Hash: f4f36b0e478d7a6b6840311d758cf5d2 On Wed, 21 Jan 2015 11:15:04 +0100 Micha=C5=82 G=C3=B3rny wrote: > Dnia 2015-01-21, o godz. 11:05:01 > Alexis Ballier napisa=C5=82(a): >=20 > > > > > 2. Subslots work correctly. Rebuilds are forced when the > > > > > chosen library is upgraded. Moreover, USE flag change causes > > > > > a rebuild when user decides to change the ffmpeg provider. > > > >=20 > > > > No offense, but this argument is complete crap. You should > > > > rather fix portage bugs than propose to introduce tree-wide > > > > changes to hide them... More precisely: || ( a:=3D b c:=3D d ) is > > > > perfectly defined (in the "what it means" sense, not in PMS > > > > sense). When the package is built, if 'a' is satisfied then a > > > > (and its subslot) is added to the subslot list of the package; > > > > ditto for c. You end up with a list of subslot deps, that you > > > > can store in vdb or whatever, and use that to decide when to > > > > rebuild the package. > > >=20 > > > Following a specification is not a bug. I could argue here a lot > > > but... just implement it. And return to us when you do. We had an > > > item for this for EAPI 6, and it was removed because nobody > > > volunteered to implement it. In fact, nobody even were able to > > > fully specify what it should do... but if you want to discuss > > > that, please start a new thread, possibly at the -pms list. > >=20 > > Above is a simple algorithm that works in all cases. What you're > > asking me to do is "go beg pms list to allow something they don't > > want because the subslot/:=3D spec was poorly written and thought > > of". I already gave you the solution, don't count on me for the > > administrative work :=3D) (NB: everytime I tried to improve/fix > > something in pms I failed miserably, so that I have no other choice > > but giving up on this, check bgo) >=20 > No, it works in the one case you thought of. Two quick issues: Ok, so first thing: You are the one writing about putting || in "effective deps" (whatever that means), for me :=3D deps that apply when the package is installed is just a list created when the package is built: no ||, no use conditional, and with subslots instantiated. > 1. What does || ( a b:=3D c:=3D ) mean? i.e. only some having subslots. This makes sense only when in DEPEND+RDEPEND (because of the :=3D), so apply this (mostly copy/paste) for all such deps: for a in 'a' 'b' 'c': When the package is built, if 'a' is satisfied and has a :=3D dep then 'a' and its subslot is added to :=3D deps list for the installed package As for the meaning, it uses all of a, b and c that are available at buildtime and at least one of them must be present. for 'b' and 'c', the :=3D dep description/meaning from pms applies. > 2. What does || ( a:=3D b:=3D ) mean when a and b can be both installed? Ditto. > Adding a very specific PMS rule for two packages doesn't sound like > a very good idea to me. I agree but I don't think it is that specific. > > Moreover, when I bumped ffmpeg subslot, portage did rebuild all > > those packages with || ( :=3D :=3D ) deps properly for me. So, you'll > > have to be a bit more specific on what goes wrong than 'broken || > > ( libav:=3D ffmpeg:=3D )'... >=20 > I already told you that before. Try switching from ffmpeg to libav, > and see what mess it causes. I'll summarize it for you: >=20 > 1. if you have dynamic-deps enabled, portage will want to install both > ffmpeg (because of :=3D) and libav (because of ||). The effective > deps will look like: >=20 > || ( ffmpeg:0/51=3D libav ) ffmpeg:0/51=3D with a separate :=3D deps list, you have 'ffmpeg:0/51=3D' in the list; you notice ffmpeg subslot has changed from '0/51' to '' (since it is not installed anymore) so trigger the package for rebuild and use the || ( ffmpeg:=3D libav:=3D ) dep (which I assume works fine since that's what happens when you install the package). the bug here is that portage uses a crafted (r)depend string for reinstall, instead of the ones from the stock ebuild from either vdb or the portage tree. > 2. If you have dynamic-deps disabled, portage will happily switch impl > without rebuilding revdeps (breakage). Afterwards, it will allow > upgrading the other dep (libav) without rebuilds. The effective deps > will look like: >=20 > || ( ffmpeg:0/51=3D libav ) this is also solved by having a separate :=3D dep list in vdb Alexis.