When I do: emerge -uavD world, to update my system, and if a package fails to compile, the whole operation fails. I believe that Portage should keep going and compiling packages that don't depend on the failed package. For example, if firefox fails to compile, it should move on to other packages, like wine. Wine doesn't need firefox, so it should be compiled. I'm still learning Python, and I'm not really sure how Portage works, so I can't really fix this, but I'll try to give some psuedo code: (Sorry, C syntax is all I know :P) boolean test = compile(somePackage); if(!test){ remove(packagesThatDependOn(somePackage)); continue; } Reproducible: Always Steps to Reproduce: 1. emerge -u world 2. failed compile Actual Results: Emerge fails completely Expected Results: Continue compiling packages that don't depend on the failed package.
Hmm, ever tried the --keep-going option? " Continue as much as possible after an error. When an error occurs, dependencies are recalculated for remaining packages and any with unsatisfied dependencies are automatically dropped. Also see the related --skipfirst option."
Perhaps it should be enabled by default? Is there any reason why it shouldn't?
Use EMERGE_DEFAULT_OPTS in make.conf, a global default would probably counterintuitive and counterproductive.
I don't see how it's counterintuitive or counterproductive. Is there any risk to enabling it?
(In reply to comment #4) > I don't see how it's counterintuitive or counterproductive. > > Is there any risk to enabling it? Yes, because in the end people see the process has finished and may not heed the warnings that some packages actually failed to build, particularly when dozens of packages are emerged in the same go. The current default behaviour is to make the admin stop and fix the problem instead of trying to paste over it while breakage builds upon breakage because everything seems alright.
We have to be very careful about changing default behavior because it affects everyone and even the slightest change can potentially upset lots of users. I agree with comment #5. If you want it enabled by default then use EMERGE_DEFAULT_OPTS.