On Sun, 2 Dec 2012 16:12:02 +0200
Alan McKinnon <alan.mckin...@gmail.com> wrote:

> On Sat, 01 Dec 2012 19:58:45 +0000
> Graham Murray <gra...@gmurray.org.uk> wrote:
> 
> > Volker Armin Hemmann <volkerar...@googlemail.com> writes:
> > 
> > > --keep-going does not help you, if the emerge does not start
> > > because of missing dep/slot conflict/blocking/masking whatever... 
> > 
> > Though it would be nice if there was some flag, probably mainly of
> > use with either ' -u @world' or --resume, to tell portage to get on
> > and merge what it can and leave any masked packages or those which
> > would generate blockers or conflicts. 
> > 
> 
> That is a terribly bad idea, and you need to have a fairly deep
> understanding of IT theory to see it (which is why so few people see
> it). I don't know which camp you are in.
> 
> The command is to emerge world, and it's supposed to be determinate,
> i.e. when it's ready to start you can tell what it's going to do, and
> that should be what you told it to do, no more and no less[1]
> 
> the command is 
> "emerge world"
> not 
> "emerge the-bits-of-world-you-think-you-can-deal-with"
> 
> If portage cannot emerge world and fully obey what root told it to do,
> then portage correctly refuses to continue. It could not possibly be
> any other way, as eg all automated build tools (puppet, chef and
> friends, even flameeyes's sandbox) break horribly if you do it any
> other way. Life is hard enough dealing with build failures without
> adding portage do somethign different to what it was told into the
> mix.
> 
> [1] "determinate" excludes build failures, as those are not
> predictable. Dep graph failures happen before the meaty work begins.
> 
> 
> 

While there are good reasons not to implement it in portage itself, you
can implement it with a bit of help from shell scripts telling portage
what to do.

Do an "emerge -uDpv world", use sed or awk or whatever to replace the
beginning [ebuild ...] and whatever come after the package
name&version, and finally loop "emerge -1 =${package}" for each package
in that list.  Now provided you discard the return value of emerge, if
such ${package} will give you something that portage doesn't think is a
good idea (e.g. unsatisfiable dependencies), the loop will go on to the
next package instead of completely halting.

The shell script is thus left as an exercise.

The usual warning applies:- it can be done doesn't necessarily mean it
is a good idea to do it.

Kerwin.

Attachment: signature.asc
Description: PGP signature

Reply via email to