1 |
On Sun, 2 Dec 2012 16:12:02 +0200 |
2 |
Alan McKinnon <alan.mckinnon@×××××.com> wrote: |
3 |
|
4 |
> On Sat, 01 Dec 2012 19:58:45 +0000 |
5 |
> Graham Murray <graham@×××××××××××.uk> wrote: |
6 |
> |
7 |
> > Volker Armin Hemmann <volkerarmin@××××××××××.com> writes: |
8 |
> > |
9 |
> > > --keep-going does not help you, if the emerge does not start |
10 |
> > > because of missing dep/slot conflict/blocking/masking whatever... |
11 |
> > |
12 |
> > Though it would be nice if there was some flag, probably mainly of |
13 |
> > use with either ' -u @world' or --resume, to tell portage to get on |
14 |
> > and merge what it can and leave any masked packages or those which |
15 |
> > would generate blockers or conflicts. |
16 |
> > |
17 |
> |
18 |
> That is a terribly bad idea, and you need to have a fairly deep |
19 |
> understanding of IT theory to see it (which is why so few people see |
20 |
> it). I don't know which camp you are in. |
21 |
> |
22 |
> The command is to emerge world, and it's supposed to be determinate, |
23 |
> i.e. when it's ready to start you can tell what it's going to do, and |
24 |
> that should be what you told it to do, no more and no less[1] |
25 |
> |
26 |
> the command is |
27 |
> "emerge world" |
28 |
> not |
29 |
> "emerge the-bits-of-world-you-think-you-can-deal-with" |
30 |
> |
31 |
> If portage cannot emerge world and fully obey what root told it to do, |
32 |
> then portage correctly refuses to continue. It could not possibly be |
33 |
> any other way, as eg all automated build tools (puppet, chef and |
34 |
> friends, even flameeyes's sandbox) break horribly if you do it any |
35 |
> other way. Life is hard enough dealing with build failures without |
36 |
> adding portage do somethign different to what it was told into the |
37 |
> mix. |
38 |
> |
39 |
> [1] "determinate" excludes build failures, as those are not |
40 |
> predictable. Dep graph failures happen before the meaty work begins. |
41 |
> |
42 |
> |
43 |
> |
44 |
|
45 |
While there are good reasons not to implement it in portage itself, you |
46 |
can implement it with a bit of help from shell scripts telling portage |
47 |
what to do. |
48 |
|
49 |
Do an "emerge -uDpv world", use sed or awk or whatever to replace the |
50 |
beginning [ebuild ...] and whatever come after the package |
51 |
name&version, and finally loop "emerge -1 =${package}" for each package |
52 |
in that list. Now provided you discard the return value of emerge, if |
53 |
such ${package} will give you something that portage doesn't think is a |
54 |
good idea (e.g. unsatisfiable dependencies), the loop will go on to the |
55 |
next package instead of completely halting. |
56 |
|
57 |
The shell script is thus left as an exercise. |
58 |
|
59 |
The usual warning applies:- it can be done doesn't necessarily mean it |
60 |
is a good idea to do it. |
61 |
|
62 |
Kerwin. |