Gentoo Archives: gentoo-portage-dev

From: Brian <dol-sen@×××××.net>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] [Request] Allow emerge to continue emerging unaffected packages on failure.
Date: Sat, 07 Jun 2008 15:39:22
Message-Id: 1212853422.22796.59.camel@localhost
In Reply to: [gentoo-portage-dev] [Request] Allow emerge to continue emerging unaffected packages on failure. by Jason Cipriani
1 There are a few emerge wrapper scripts that do what you want. emwrap.sh
2 is one, I believe update-world or named something like that is another.
3 Also (I'm prejudiced here) porhole is a portage gui frontend that queues
4 up the packages individually and lets you pause, move queue entries,
5 restart the queue, edit USE flags, etc.. The upgrades view also
6 separates all upgradeable packages into system, sets, world,
7 dependencies and lets you choose the ones to upgrade.
8
9 On Sat, 2008-06-07 at 11:13 -0400, Jason Cipriani wrote:
10 > I do not always have the chance (or sometimes the desire) to update
11 > packages often enough to keep the updates small. So frequently, when I
12 > emerge -u world, for example, there's 100-200 packages to update. This
13 > also can happen if I change certain USE flags and use -N.
14 >
15 > The problem is, since it's time consuming it's generally something I
16 > need to run over night to avoid any down time. Inevitably, when I come
17 > back in the morning, however, I'll see something like (I've trimmed
18 > off the [ok] to keep the lines short):
19 >
20 > >>> Emerging (12 of 183) net-print/cups-1.3.7-r1 to /
21 > * cups-1.3.7-source.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...
22 > * checking ebuild checksums ;-) ...
23 > * checking auxfile checksums ;-) ...
24 > * checking miscfile checksums ;-) ...
25 > * checking cups-1.3.7-source.tar.bz2 ;-) ...
26 > >>> cfg-update-1.8.2-r1: Skipping checksum index updating...
27 >
28 > * In order to have cups working with avahi zeroconf support, you need
29 > * to have net-dns/avahi emerged with "mdnsresponder-compat" in your
30 > USE
31 > * flag. Please add that flag, re-emerge avahi, and then emerge cups
32 > again.
33 >
34 >
35 > In that example, the fix is simple -- follow the instructions and try
36 > emerge -u again. Unfortunately that also means it costs another day,
37 > as I can't really do that again until the next evening (and, in rarer
38 > cases, it leaves the system unstable if it's in a half-updated state
39 > that breaks certain dependencies). For every package this happens to,
40 > that is one extra day. In most cases this happens to 1-4 packages,
41 > meaning I generally have to reserve the better part of a week to
42 > update packages.
43 >
44 > If package A depends on package B, it is reasonable to fail and not
45 > build package A if package B fails. However, I am 99% sure that the
46 > remaining 171 packages I had to update did not depend on cups (to use
47 > that example). It is not reasonable for emerge to fail to update
48 > things like gcc and ati-drivers if cups fails. It is also not
49 > reasonable to stop emerge for a reason like "another package may use
50 > avahi and that's the one you need to fix" -- as in that case a simple
51 > emerge -N would take care of the minimal set of packages effected by
52 > that change.
53 >
54 > What I would like to see is a command line option to emerge that
55 > enables the following simple behavior:
56 >
57 > - If package A fails to build, display the error and move package A
58 > and all packages that depend on it to the *end* of the update queue,
59 > but do not exit.
60 > - If a package fails to build for the second time (i.e. it's already
61 > been tried and moved), *then* display error and exit as normal.
62 >
63 > I can think of other more complex behaviors that might make this more
64 > "convenient", but I believe anything more than that is unnecessary. I
65 > think this is a simple solution that mitigates most of the problem.
66 > That will allow the unaffected packages (which, in my experience, is
67 > the vast majority of packages in most cases) to continue building, and
68 > effectively defers the error until the last possible minute. Then a
69 > user running emerge fixes the error and reruns emerge; but only the
70 > smaller set of affected packages still remains to be built.
71 >
72 > For me, this would reduce updating my system from a week-long process
73 > to just one day -- update the majority overnight, and if any fail it's
74 > likely that the remaining packages can be fixed and updated in a
75 > reasonable amount of time the following day.
76 >
77 > Jason
78 >
79 --
80 Brian <dol-sen@×××××.net>
81
82 --
83 gentoo-portage-dev@l.g.o mailing list