From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 448BF1396D9 for ; Sat, 28 Oct 2017 20:55:31 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id EF7E9E0E59; Sat, 28 Oct 2017 20:55:25 +0000 (UTC) Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 866A3E0D92 for ; Sat, 28 Oct 2017 20:55:25 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id s66so8849141wmf.5 for ; Sat, 28 Oct 2017 13:55:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=Qn80JHMOArXZaETzFSj4CklPcKJsXG3f3oOUOSSHLSk=; b=QDp+BoPcx38MNiz+8Lwyd+anVhjqCeoy17zSpQ58Xh0Te5P9UBdyS+We5dzK45TzgM k8DU+R/wI0b8tq+WCxHlpYffl0jS0D+S5ApjFyEtpYMWcaKvBbmBF/qCL3hOkYRSdcgp /20yt7hAU3/rRRF66lRsNCmbl0Q5fw+pSpzdIh7k0ltCfAjW574NPs5ymr0e5aCH/dN9 XmEL2HqZd7iY9KKv1UVFhqXp1tgTCMAVAiF5f6kpSUaRxN1P5QCG1mqbrskCg+nyvfj0 7k+DdhBcLekuANbAEAkaIIXjduzJb7tMkUqe8qgTHm6c4fowCmuwyMGZkiJdbK4ugsXz nDrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=Qn80JHMOArXZaETzFSj4CklPcKJsXG3f3oOUOSSHLSk=; b=fKEwzJK91ex2mhWPVmzTTicJOMJ4bNO5K+bZLW33Cfm5TxOGFbL3zvJMTUL0/T9aGd gqUuULGFbq0nvvl7zv9dBkU1z0SS9DYhgRJOHwy/VLHrgJC8uZKpW+dkjv22I0HP3FP4 i/i3riJV3aKh9d3fdpp38NEWI9lo9Vht750RCKpYx1s6eHydDzQ6ZWugZe0LzGzMDtXB Vsyxlep7KEKfOBwwbxuRmcLvWlhlZcc2Cj0vpYlTsr//iiQ0UaOCafHCvc2FR9sE9eJG Nqd5TFXryDIaT3ZRIo1y6DR8nh4R/1yRXMLIpVNS1DyTc9t+z6JmhIFWQPJH1sBzAK56 o/tw== X-Gm-Message-State: AMCzsaUj0s7UBkFkSxLj9/PtIRbNBuWgCqP4Ma3b1Cb9Nllrv/ZIX5Eb o7y2un2Ft8pZQxw6wNvjEUDhmA== X-Google-Smtp-Source: ABhQp+TSHCJN3CGpseSOswgsh7EP+ZDx29DpuZaKtQrBSKbtPYdgRA/E5NsxEHc46OYT01AsN1aNSQ== X-Received: by 10.28.87.13 with SMTP id l13mr165881wmb.45.1509224123832; Sat, 28 Oct 2017 13:55:23 -0700 (PDT) Received: from [172.20.0.40] ([197.101.48.133]) by smtp.googlemail.com with ESMTPSA id k30sm20457964wrf.52.2017.10.28.13.55.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 Oct 2017 13:55:23 -0700 (PDT) Subject: Re: [gentoo-user] A portage nuisance To: gentoo-user@lists.gentoo.org References: <424ad9$4d4mm2@relay.skynet.be> <20171027145813.3a4fac70@peak.prhnet> <20171028175212.2fb3d76b5c3bcb8863fa00c7@gentoo.org> <59F4C549.6010507@youngman.org.uk> <285a551b-27a5-3a5d-dc5c-912a67e5d015@youngman.org.uk> From: Alan McKinnon Message-ID: <9ebcd8df-d618-5fe4-3858-41ae41862588@gmail.com> Date: Sat, 28 Oct 2017 22:50:16 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org MIME-Version: 1.0 In-Reply-To: <285a551b-27a5-3a5d-dc5c-912a67e5d015@youngman.org.uk> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Archives-Salt: e8a36f4c-7499-48da-9d3b-a9be272d4621 X-Archives-Hash: 54598489c4197174e9c30950dd46db5c On 28/10/2017 22:39, Anthony Youngman wrote: > On 28/10/17 20:54, Alan McKinnon wrote: >> Portage cannot do that, it is backed by silicon and has no concept of >> meaning. So it has only one real choice - it can do it all or it does >> not try. >> >> I'm not surprised Zac never tried implementing partial graph resolution >> for the very simple reason that if you try do it, you have no idea what >> is going to be built. That is the opposite of what portage must deliver. > > Why is it the opposite of what portage *must* deliver? All I'm asking is > that portage build *what it can*. In other words, I know EXACTLY what it > is going to deliver - its best effort! Dude, calm down. Showing me that you are upset isn't going to change jack shit. > > And why does portage *have* to choose between all or nothing? All I'm > asking is that if it can't resolve everything, I want it to resolve > everything it can. Silicon is perfectly capable of making that decision. because "everything it can" is not necessarily the same thing as "everything it should" or "everything it was asked to do" Portage has no idea at all why the depgraph failed to resolve fully at the start. It knows about blockers that are in it's own ebuilds and can deal with those; the way ebuilds are spec'ed a package manager can cleave off an entire branch of the tree and build the remainder fully confident that each part of what it then does build is identical to the same parts if the blockers never hit the rest. It's deterministic and so portage can continue. For everything else, the input is not completely known therefore the output cannot be completely known either and portage does the correct thing and not try guess. This is a good thing. > > If I say "emerge -u world" I have no idea what it's going to build, if I > say "emerge -u best-efforts", I have no idea what it's going to build, > where's the difference? > > What I do know, is if I repeat "emerge -u best-efforts" several times, I > will end up (in all likelihood) with the same result as "emerge -u world". No, you will not. In this case, what portage will give is not the sum of it's individual parts as there is a real risk that some attributes of the various parts are WRONG. Therefore the output can be WRONG. It really is that simple. You even said it yourself when you used the phrase "in all likelihood". What about when it isn't? This is a package manager and package managers have one singular objective that the code must always deliver: the output must be entirely deterministic. Anything other than that and you do not have a package manager anymore, now you have software that puts stuff on a disk. Portage is doing the right thing when it detects invalid input that it cannot reliably - it stops. But feel free to disagree. If you can do this, the proof is in code and patches. Got any? -- Alan McKinnon alan.mckinnon@gmail.com