Problem: It's typically a poor idea to perform emerge calculations that will require both autounmask changes and backtracking, since it's likely that the calculation will ultimately fail after wasting a lot of time backtracking. This is the reason for the low default --backtrack setting from bug 536926.
Solution: Make emerge automatically disable backtracking when it finds that autounmask changes are needed, and add a --autounmask-backtrack=<y|n> option that can be used to explicitly enable or disable backtracking with autounmask. When emerge bails out early, make it notify the user about the --autounmask-backtrack=y option is available, but also warning that the option is not generally recommended because it can waste a lot of time.
The --autounmask-continue option should imply --autounmask-backtrack=y, because otherwise users of --autounmask-continue will find that if fails where it once succeeded.
In addition to autounmask config changes, other foreshadowers of backtracking failure include blockers and slot conflicts. However, it's often difficult to predict whether or not blockers and slot conflicts will ultimately be solved by backtracking, so we can't predict when user intervention will be necessary.
For autounmask config changes, user intervention is always necessary, so we can change the default behavior without breaking anyone's automated emerge calls (but --autounmask-continue must imply --autounmask-backtrack=y for backward compatibility).
I'm working on a patch in this branch:
Six of the existing cases fail unless --autounmask-backtrack=y is added to the options. It looks like the behavior can be improved for some of these without too much work, so I'm planning submit a series of patches to improve the behavior. After my improvements, at least some of the test cases should succeed without having to add --autounmask-backtrack=y to the options.
Only 5 tests now required --autounmask-backtrack=y to succeed. The behavior seems acceptable for these cases when --autounmask-backtrack=y is not enabled.
Before I submit the patch for review, I just need to update it to display a suggestion about --autounmask-backtrack=y when appropriate.
Patch posted for review:
This is in the master branch:
Fixed in portage-2.3.5.
Actually this is in portage-2.3.6.
Fixed in 2.3.6.