solver_addtodupmaps(solv, p, how, targeted);
}
}
+ else if (select == SOLVER_SOLVABLE_ALL)
+ {
+ FOR_POOL_SOLVABLES(p)
+ {
+ MAPSET(&solv->dupinvolvedmap, p);
+ if (installed && pool->solvables[p].repo != installed)
+ MAPSET(&solv->dupmap, p);
+ }
+ }
else
{
targeted = how & SOLVER_TARGETED ? 1 : 0;
{
if (v < 0)
extraflags &= solv->job.elements[-v - 1];
- if (v >= solv->featurerules && v < solv->featurerules_end)
- if (v > lastfeature)
- lastfeature = v;
if (v >= solv->updaterules && v < solv->updaterules_end)
{
- /* check if identical to feature rule */
- Id p = solv->rules[v].p;
- Rule *r;
- if (p <= 0)
- continue;
- r = solv->rules + solv->featurerules + (p - solv->installed->start);
+ /* check if identical to feature rule, we don't like that */
+ Rule *r = solv->rules + solv->featurerules + (v - solv->updaterules);
if (!r->p)
{
/* update rule == feature rule */
if (how & SOLVER_FORCEBEST)
solv->bestupdatemap_all = 1;
}
- if (!solv->dupmap_all)
+ if (!solv->dupmap_all || solv->allowuninstall)
hasdupjob = 1;
break;
default:
--- /dev/null
+repo system 0 testtags <inline>
+#>=Pkg: a 1 1 i686
+#>=Pkg: b 2 1 i686
+repo available 0 testtags <inline>
+#>=Pkg: a 2 1 i586
+#>=Con: b = 1-1
+#>=Pkg: b 1 1 i586
+system i686 * system
+solverflags !dupallowarchchange allowuninstall
+job distupgrade all packages
+result transaction,problems <inline>
+#>erase b-2-1.i686@system
+#>upgrade a-1-1.i686@system a-2-1.i586@available
--- /dev/null
+repo system 0 testtags <inline>
+#>=Pkg: a 1 1 i686
+#>=Pkg: b 1 1 i686
+repo available 0 testtags <inline>
+#>=Pkg: a 2 1 i586
+#>=Pkg: b 2 1 i586
+#>=Pkg: b 2 1 i686
+system i686 * system
+solverflags !dupallowarchchange
+job distupgrade all packages
+result transaction,problems <inline>
+#>problem c43b1300 info problem with installed package a-1-1.i686
+#>problem c43b1300 solution c43b1300 replace a-1-1.i686@system a-2-1.i586@available
+#>upgrade a-1-1.i686@system a-2-1.i586@available
+#>upgrade b-1-1.i686@system b-2-1.i686@available