public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-portage-dev] [PATCH] emerge(1): document --oneshot caveats (bug 563482)
@ 2015-10-20 19:29 Zac Medico
  2015-10-20 19:44 ` Alexander Berntsen
  0 siblings, 1 reply; 8+ messages in thread
From: Zac Medico @ 2015-10-20 19:29 UTC (permalink / raw
  To: gentoo-portage-dev; +Cc: Zac Medico

X-Gentoo-Bug: 563482
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=563482
---
 man/emerge.1 | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/man/emerge.1 b/man/emerge.1
index 237fb79..c03f044 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -676,6 +676,13 @@ packages that depend on matching packages due to \fB\-\-rebuild\fR.
 .BR "\-\-oneshot " (\fB\-1\fR)
 Emerge as normal, but do not add the packages to the world file
 for later updating.
+
+\fBWARNING:\fR This option should only be used for packages that are
+reachable from the @world package set (those that would not be removed
+by \fB\-\-depclean\fR), since dependencies of unreachable packages are
+allowed to be broken when satisfying dependencies of other packages.
+Broken dependencies of this sort will invalidate assumptions that make
+it possible for \fB\-\-deep\fR to be disabled by default.
 .TP
 .BR "\-\-onlydeps " (\fB\-o\fR)
 Only merge (or pretend to merge) the dependencies of the packages
-- 
2.4.9



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] [PATCH] emerge(1): document --oneshot caveats (bug 563482)
  2015-10-20 19:29 [gentoo-portage-dev] [PATCH] emerge(1): document --oneshot caveats (bug 563482) Zac Medico
@ 2015-10-20 19:44 ` Alexander Berntsen
  2015-10-21  0:37   ` Rob Wortman
  0 siblings, 1 reply; 8+ messages in thread
From: Alexander Berntsen @ 2015-10-20 19:44 UTC (permalink / raw
  To: gentoo-portage-dev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Maybe it's a bit heavy-handed to state the reason, since this
paragraph is a bit complicated (since it's describing somewhat
complicated functionality)... I don't know. It's probably fine.

ACK anyway. If someone figures out a better way to document it, we can
do that some other time.
- -- 
Alexander
bernalex@gentoo.org
https://secure.plaimi.net/~alexander
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCgAGBQJWJpm5AAoJENQqWdRUGk8B7n0QAMW2uCNEys3dtLejt4f4oBW4
A3FZMkMWXd6TiMSU4UZ8sYlb3fomJ0tKv/6S4w9bv8W2x5DR7cwTSegp306dPf6q
Dz2P/H4pZrm55yWyizjbCn5Fjs3vawcy1NGYohL+EayiLPiRsJVni+/obNgowQWB
pQv3eg2dSUxXEgSQQC3e/EjPG38Q9X2ZOo81juRPahZ2WRfg8HZpVntA1zq0444S
WiwMRggKEJbuQpr2sq1JjyZ+XghOPdtgVJag2zep4NZpFQ03r8UlIt7kgpICZ1g5
f3g05+MZfunBkOttbBBriBg/qsJwt/eIakM/hRmvUPy0oYXvXr13XzQog3/BmUZH
8cpAuyttf2rD3xNCtNHLDooXuQuFmiHDlnwmxMnjhj7amo3q8FNXCHwP/anXYjyQ
basV3U3Te/h4E3afvIlt1lQmRuBdTLeBKENLtg2+SHL0onNtw4NQphmfGOfXlsq+
cR6Ss1+xoWDt4hyS1uMm9JMYDyPwf1bmD7fIcOdrdGcxipZbVcgWnyB77jVLYgqk
dV2pAqKd94qeTi1UPbXub4RAusbMd9TmUrJ1JskzMZasb7fpkipoQT/o+f7JWi2e
oe2rZlkfUFatqaXX+RFfRgkGVPAWHEwss3QWYjiRgOq6+izR8RcUjbTDG2rSw0Q7
X+is6tvlVEhsEhbgDjth
=lbsc
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] [PATCH] emerge(1): document --oneshot caveats (bug 563482)
  2015-10-20 19:44 ` Alexander Berntsen
@ 2015-10-21  0:37   ` Rob Wortman
  2015-10-21  1:51     ` [gentoo-portage-dev] " Duncan
  2015-10-21  5:11     ` [gentoo-portage-dev] " Zac Medico
  0 siblings, 2 replies; 8+ messages in thread
From: Rob Wortman @ 2015-10-21  0:37 UTC (permalink / raw
  To: gentoo-portage-dev

On 2015-10-20 at 21:44:58 +0200, bernalex@gentoo.org wrote:
> (since it's describing somewhat complicated functionality)

So, I'm curious what's actually going on there. If I emerge packages
with --oneshot, does that create the possibility of broken dependencies
for world-reachable packages, or does updating @world create the
possiblity of broken dependencies for oneshot'ed packages?

-- 
Batou: Hey, Major... You ever hear of "human rights"?
Kusanagi: I understand the concept, but I've never seen it in action.
  --Ghost in the Shell


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [gentoo-portage-dev] Re: [PATCH] emerge(1): document --oneshot caveats (bug 563482)
  2015-10-21  0:37   ` Rob Wortman
@ 2015-10-21  1:51     ` Duncan
  2015-10-21  5:11     ` [gentoo-portage-dev] " Zac Medico
  1 sibling, 0 replies; 8+ messages in thread
From: Duncan @ 2015-10-21  1:51 UTC (permalink / raw
  To: gentoo-portage-dev

Rob Wortman posted on Tue, 20 Oct 2015 17:37:37 -0700 as excerpted:

> On 2015-10-20 at 21:44:58 +0200, bernalex@gentoo.org wrote:
>> (since it's describing somewhat complicated functionality)
> 
> So, I'm curious what's actually going on there. If I emerge packages
> with --oneshot, does that create the possibility of broken dependencies
> for world-reachable packages, or does updating @world create the
> possiblity of broken dependencies for oneshot'ed packages?

AFAIK, the latter.  @world's dep-calc doesn't take into account anything 
beyond what's in @world (which by definition includes @system and, where 
appropriate, @profile).  So @world should be safe, but packages not in it 
or deps of what's in it aren't accounted for and both won't be updated, 
and could be unmerged if the depgraph that portage calculates for @world 
works most directly by doing so.

They won't be unmerged unless they're simple-blockers to something, 
however; that's what depclean is for.  It's just that portage doesn't 
account for them in the depgraph, either, and thus might "accidentally" 
unmerge them.


Meanwhile, the suggestion that --update --deep avoids the problem is most 
interesting to me, since all my normally used update-everything scripts 
have included --deep for nigh on a decade, now, while my normally used 
named-merge scripts have included --oneshot, since back in the day I 
didn't want to inadvertently pollute my world file with manually merged 
deps, and these days I don't even have an @world file, only a world_sets 
file, which names the various sets I've grouped the contents of both my 
former @world file and my former @system set (which is nullified, no 
@system packages at all, here, with everything I decided I actually 
needed in @world).

Plus, I reasonably commonly use merged but not assigned to a set packages 
as a sort of temporary package purgatory, for testing until I've decided 
I either like the package enough to keep, in which case I add it to the 
appropriate set as named in @world_sets, or I don't, in which case I 
simply run depclean and it cleans up both the package and any deps that 
only it pulled in, without cleaning up anything else, since I always run 
depclean in --ask mode after an update, simply to keep my system free of 
any detritus.

But I'm not sure of the avoidance mechanism, since for all I knew, 
without @world pinning them in, portage's depgraph didn't include them 
and that was that, --deep or not.

So the connection between --deep and --oneshot is new to me, and I'd love 
to know more about the implications.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] [PATCH] emerge(1): document --oneshot caveats (bug 563482)
  2015-10-21  0:37   ` Rob Wortman
  2015-10-21  1:51     ` [gentoo-portage-dev] " Duncan
@ 2015-10-21  5:11     ` Zac Medico
  2015-10-21 16:13       ` Rob Wortman
  1 sibling, 1 reply; 8+ messages in thread
From: Zac Medico @ 2015-10-21  5:11 UTC (permalink / raw
  To: gentoo-portage-dev

On 10/20/2015 05:37 PM, Rob Wortman wrote:
> On 2015-10-20 at 21:44:58 +0200, bernalex@gentoo.org wrote:
>> (since it's describing somewhat complicated functionality)
> 
> So, I'm curious what's actually going on there. If I emerge packages
> with --oneshot, does that create the possibility of broken dependencies
> for world-reachable packages, or does updating @world create the
> possiblity of broken dependencies for oneshot'ed packages?
> 

Any packages that are not reachable from @world are ripe for removal by
--depclean, so we allow their dependencies to break in order to satisfy
other dependencies (like in bug 563482). If you don't use --deep, then
emerge may try to build something that depends on one of these
unreachable packages with broken dependencies, such that whatever you
are trying to build has broken indirect dependencies (which is likely to
trigger a build failure like in bug 563482).
-- 
Thanks,
Zac


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] [PATCH] emerge(1): document --oneshot caveats (bug 563482)
  2015-10-21  5:11     ` [gentoo-portage-dev] " Zac Medico
@ 2015-10-21 16:13       ` Rob Wortman
  2015-10-21 19:26         ` Zac Medico
  0 siblings, 1 reply; 8+ messages in thread
From: Rob Wortman @ 2015-10-21 16:13 UTC (permalink / raw
  To: gentoo-portage-dev

On 2015-10-20 at 22:11:24 -0700, zmedico@gentoo.org wrote:
> Any packages that are not reachable from @world are ripe for removal by
> --depclean, so we allow their dependencies to break in order to satisfy
> other dependencies (like in bug 563482). If you don't use --deep, then
> emerge may try to build something that depends on one of these
> unreachable packages with broken dependencies, such that whatever you
> are trying to build has broken indirect dependencies (which is likely to
> trigger a build failure like in bug 563482).

I think I understand. So, one could get the hypothetical scenario:

# emerge --oneshot A # which depends on B
# emerge --update @world # shuffles stuff around breaking B
# emerge C # which depends on A

Package C's dependency is filled, so emerge goes ahead and builds C.
Now, either C fails to build, or it is installed but fails at runtime,
because it depends on a package which depends on a package which is
broken.

Sound about right?

-- 
There are problems in today's world that cannot be
solved by the level of thinking that created them.
  -- Albert Einstein


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [gentoo-portage-dev] [PATCH] emerge(1): document --oneshot caveats (bug 563482)
  2015-10-21 16:13       ` Rob Wortman
@ 2015-10-21 19:26         ` Zac Medico
  2015-10-22  2:34           ` [gentoo-portage-dev] " Duncan
  0 siblings, 1 reply; 8+ messages in thread
From: Zac Medico @ 2015-10-21 19:26 UTC (permalink / raw
  To: gentoo-portage-dev

On 10/21/2015 09:13 AM, Rob Wortman wrote:
> On 2015-10-20 at 22:11:24 -0700, zmedico@gentoo.org wrote:
>> Any packages that are not reachable from @world are ripe for removal by
>> --depclean, so we allow their dependencies to break in order to satisfy
>> other dependencies (like in bug 563482). If you don't use --deep, then
>> emerge may try to build something that depends on one of these
>> unreachable packages with broken dependencies, such that whatever you
>> are trying to build has broken indirect dependencies (which is likely to
>> trigger a build failure like in bug 563482).
> 
> I think I understand. So, one could get the hypothetical scenario:
> 
> # emerge --oneshot A # which depends on B
> # emerge --update @world # shuffles stuff around breaking B
> # emerge C # which depends on A
> 
> Package C's dependency is filled, so emerge goes ahead and builds C.
> Now, either C fails to build, or it is installed but fails at runtime,
> because it depends on a package which depends on a package which is
> broken.
> 
> Sound about right?
> 

Yeah, and if you run emerge --depclean regularly, then it will prevent
problems like these.
-- 
Thanks,
Zac


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [gentoo-portage-dev] Re: [PATCH] emerge(1): document --oneshot caveats (bug 563482)
  2015-10-21 19:26         ` Zac Medico
@ 2015-10-22  2:34           ` Duncan
  0 siblings, 0 replies; 8+ messages in thread
From: Duncan @ 2015-10-22  2:34 UTC (permalink / raw
  To: gentoo-portage-dev

Zac Medico posted on Wed, 21 Oct 2015 12:26:11 -0700 as excerpted:

> Yeah, and if you run emerge --depclean regularly, then it will prevent
> problems like these.

Thanks, Zac.  I should be covered then, since I both consistently run
--deep, and consistently --depclean after updates. =:^)

(And now I understand the interaction between not running --deep,
and --oneshot, as well. =:^)

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-10-22  2:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-20 19:29 [gentoo-portage-dev] [PATCH] emerge(1): document --oneshot caveats (bug 563482) Zac Medico
2015-10-20 19:44 ` Alexander Berntsen
2015-10-21  0:37   ` Rob Wortman
2015-10-21  1:51     ` [gentoo-portage-dev] " Duncan
2015-10-21  5:11     ` [gentoo-portage-dev] " Zac Medico
2015-10-21 16:13       ` Rob Wortman
2015-10-21 19:26         ` Zac Medico
2015-10-22  2:34           ` [gentoo-portage-dev] " Duncan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox