From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-dev+bounces-66515-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	by finch.gentoo.org (Postfix) with ESMTP id 2CFCB13877A
	for <garchives@archives.gentoo.org>; Mon,  7 Jul 2014 23:42:15 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 5B096E0869;
	Mon,  7 Jul 2014 23:42:10 +0000 (UTC)
Received: from mail-ve0-f180.google.com (mail-ve0-f180.google.com [209.85.128.180])
	(using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 699ECE085C
	for <gentoo-dev@lists.gentoo.org>; Mon,  7 Jul 2014 23:42:09 +0000 (UTC)
Received: by mail-ve0-f180.google.com with SMTP id jw12so4810806veb.39
        for <gentoo-dev@lists.gentoo.org>; Mon, 07 Jul 2014 16:42:08 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20130820;
        h=x-gm-message-state:mime-version:sender:in-reply-to:references:date
         :message-id:subject:from:to:content-type;
        bh=jF9vCbKdaQ1Qe1/q4/hrWjiSEg+snZmV6LQvtzqTRU8=;
        b=dk5kfYX1ngK/sHrV5+Ll3R5RRbcblrARVWtP9viBzp2AGB2yi28C/yIj/tAQUSVek0
         CEEPwWEsu6Fw1o6mY6zk6ln5nMB3QTd7a/a8RrQ9/cqkv0TQyhvCxJJ0ifiq3AFQ2RhW
         1TP3fXRNKwlazA8fPwzeE5a2acRI1M3fZ7XowEVhcwDVdwm6Vzx3AWLuCnusJM6Rp4aJ
         1qawtK5QfKKp+ncQqJWWTMVZpDuR1HnsKGX21cMK5ZBQKW18KHuQQD/GQNnhBzem5FMp
         jzcsVOnwNLKp8TbMf2NUzNjeBTj8quuGVOb0ZyzmHH5c2slF0pq3+A1J5+027/XRtEFD
         hUZQ==
X-Gm-Message-State: ALoCoQmJErjMccl8il4LKZqmcTgQqXBw6uYG2Dmso95MReAmrl7sUjUZjmtURCVuMd6ONNJloHd1
Precedence: bulk
List-Post: <mailto:gentoo-dev@lists.gentoo.org>
List-Help: <mailto:gentoo-dev+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-dev+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-dev+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-dev.gentoo.org>
X-BeenThere: gentoo-dev@lists.gentoo.org
Reply-to: gentoo-dev@lists.gentoo.org
MIME-Version: 1.0
X-Received: by 10.220.69.68 with SMTP id y4mr30414308vci.21.1404776528326;
 Mon, 07 Jul 2014 16:42:08 -0700 (PDT)
Sender: gmt@be-evil.net
Received: by 10.220.141.207 with HTTP; Mon, 7 Jul 2014 16:42:08 -0700 (PDT)
X-Originating-IP: [75.147.143.254]
In-Reply-To: <CAGfcS_mdTAdU+NxRKG3Cg_dtYr4Oq6dK8QRUiWFSnVZk-snqKA@mail.gmail.com>
References: <CA+VB3NQEgYMtkjYjRBdS1nsKf1MjzONF9LN2LmXJ45qSx2so6A@mail.gmail.com>
	<CAGfcS_mdTAdU+NxRKG3Cg_dtYr4Oq6dK8QRUiWFSnVZk-snqKA@mail.gmail.com>
Date: Mon, 7 Jul 2014 16:42:08 -0700
X-Google-Sender-Auth: pCtuMveyhGpvnAbXDXdm3SFZu8A
Message-ID: <CA+VB3NSz9pDwF5z_gAhZPM-4m5=Yv23AL+hAxam_zmb0RnC7FQ@mail.gmail.com>
Subject: Re: [gentoo-dev] Is || ( Atom... ) broken?
From: Greg Turner <gmt@malth.us>
To: gentoo-dev@lists.gentoo.org
Content-Type: text/plain; charset=UTF-8
X-Archives-Salt: 0e31f6ec-ada7-4e46-8062-8218d5897fcd
X-Archives-Hash: e69392eacc8bc68fb2ba366820fa6a31

On Mon, Jul 7, 2014 at 4:14 AM, Rich Freeman <rich0@gentoo.org> wrote:
> Well, more like unspecified behavior.  PMS just says that the PM has
> to accept any package in the list.  It is silent on the matter of
> which one is to be preferred, or to what degree.

In general the PMS dependency language seems quite liberal here.  As
best I can tell, the PMS only stipulates something to the effect of:
"the PM has to meet the conditions matching the dependency specifiers
in the ebuild before running the phase functions" but doesn't provide
any guidance as to /how/ the PM should make it so, if it isn't at the
outset.  Assuming I haven't missed something that contradicts or
narrows that reading, I have mixed feelings about it.  While it feels
inscrutable, it gives us a lot of freedom to fix the problem.

> As we saw with upower portage will jump through quite a few hoops to
> install the first dependency - it doesn't always figure out that
> installing one of the others is easier.  It is a bit hard to
> algorithmically define "easier" - should portage favor fewer package
> installs, fewer removals, fewer config file changes, avoiding changing
> the init system (and what constitutes an init system), etc?  Plus,
> there are a lot of potential permutations to deal with.

Yes, agreed.  The.  However, the case where the PM has more than one
possible way to get there, although tricky/interesting, is not what
inspired me to post this.

I was hacking on my private overlay's pipelight-plugin ebuild, which
had deps like:

DEPEND="|| (
    >=app-emulation/wine-1.7.21[pipelight]
    >=app-emulation/wine-compholio-1.7.14
)"

when I tried to emerge, it insisted on wine[pipelight] even though I
already had wine-compholio installed.

Now that I think about it, the probable explanation was pretty
obvious: portage saw I had wine installed, and therefore said "that's
the one," and headed obstinately down that path, finally deciding,
"OK, but you need to enable the pipelight use-flag and rebuild wine".
I wonder what would have happened if I'd had --autounmask=n in the
command-line.

> I think most would agree that there is room for improvement here.

Some in this thread have argued that since there's an easy workaround
this is not a particularly important issue.  Fair enough, but while,
for most of the people reading this thread, that may be so, I have a
couple of friends who are casual users of portage, and they finds
these situations to be more-or-less utterly intractable.  I don't mind
them asking me for help, but what does suck is I usually wind up
having to tell them to use -O, a feature I'd rather they didn't need.

It seems pretty clear to me that, recently, people who "didn't do
anything crazy" are experiencing depsolving failures more and more
(perhaps due to the explosion of multilib-build ebuilds in the tree --
no pun intended :)).

I can only imagine how difficult the experience of someone trying
Gentoo for the first time must be today: Casual experimenters
presumably give up after encountering a failure or three justified by
more screenfulls of colorful gibberish than their consoles can hold in
scroll-back before even getting grub installed.  One can see how they
might conclude Gentoo is either broken, or only for for people more
technically inclined than they.

Indeed, truth be told, a reasonable person could defend either proposition.

One other note. If  we think "X would make portage dep-solving even
slower, so, screw that, we have bigger fish to fry," that means slow
dep-solving has effectively become a blocker for enhancement/bugfix X.
Not saying it shouldn't be, just that it's food for thought*.

As for the idea of reverting portage -- with some effort, we could
revert the dep-solving changes while leaving any important bugfixes
intact (effectively, I guess, backporting the latest portage to the
old portage.dep).

But, I suspect, the result would be, we'd find things were not so rosy
a year ago or whenever.  Gentoo-x86 had a /lot/ less hairy EAPI4+
use-conditional dependency cascades a year ago, so of course things
were faster.  If someone were to prove me wrong with some benchmarks,
though, I'd happily admit I was mistaken.

TBH I keep flirting with the Gordian-knot theory that only a complete
gut-rehab of portage.dep can rescue us...

--
gmt

*Indeed, I'd estimate I often have to wait a half-hour on my 32GB
workstation to get a plan from emerge -DuavN @world, so for me that's
a bigger problem than anything else about portage right now.