29 #define RULES_BLOCK 63
99 if (a->
d == 0 && b->
d == 0)
100 return a->
w2 - b->
w2;
118 if ((x = *ad++ - *bd++) != 0)
156 for (i = j = 1, ir = solv->
rules + i; i < solv->nrules; i++, ir++)
160 jr = solv->
rules + j++;
182 for (i = 1; i < solv->
nrules; i++)
209 unsigned int x = (
unsigned int)p;
213 return (x * 37) ^ (
unsigned int)d;
216 x = (x * 37) ^ (
unsigned int)*dp++;
282 if (r->
p == p && r->
d == d && (d != 0 || !r->
w2))
319 if (r && n == 1 && !r->
d && r->
p == p && r->
w2 == d)
323 if (r && n > 1 && r->
d && r->
p == p)
507 && s->
repo == installed
515 && s->
arch != ARCH_SRC
516 && s->
arch != ARCH_NOSRC
527 if (buddy > 0 && buddy !=
SYSTEMSOLVABLE && buddy != n && buddy < pool->nsolvables)
531 if (m && !
MAPTST(m, buddy))
543 while ((req = *reqp++) != 0)
545 if (req == SOLVABLE_PREREQMARKER)
562 for (i = 0; (p = dp[i]) != 0; i++)
586 for (i = 0; dp[i]; i++)
610 if (s->
arch == ARCH_SRC || s->
arch == ARCH_NOSRC)
627 if (!strncmp(
"patch:",
id2str(pool, s->
name), 6))
631 while ((con = *conp++) != 0)
671 int isinstalled = (installed && s->
repo == installed);
676 while ((obs = *obsp++) != 0)
684 if (isinstalled && dontfix && ps->
repo == installed)
703 if (!isinstalled || !dontfix)
710 if (isinstalled && ps->
repo != installed)
734 while ((rec = *recp++) != 0)
744 while ((sug = *sugp++) != 0)
774 for (i = n = 1; n < pool->
nsolvables; i++, n++)
790 while ((sup = *supp++) != 0)
799 while ((sup = *supp++) != 0)
840 for (i = 0; i < qs.
count; i++)
878 for (i = 0; i < qs->
count; i++)
903 for (i = 0; i < dupqs.
count; i++)
946 for (i = j = 0; i < qs.
count; i++)
989 if (r->
p && r->
d >= 0)
992 if (r->
p && r->
d >= 0)
1017 if (r->
p && r->
d < 0)
1043 Id p, pp, a, aa, bestarch;
1045 Queue badq, allowedarchs;
1076 if (a && a != 1 && (!bestarch || a < bestarch))
1085 if (allowedarchs.
count == 1 && bests && allowedarchs.
elements[0] == bests->
arch)
1086 allowedarchs.
count--;
1095 if (a != 1 && bestarch && ((a ^ bestarch) & 0xffff0000) != 0)
1099 for (j = 0; j < allowedarchs.
count; j++)
1105 if (aa && ((a ^ aa) & 0xffff0000) == 0)
1108 if (j == allowedarchs.
count)
1115 for (j = 0; j < badq.
count; j++)
1132 for (i = solv->
infarchrules, r = solv->
rules + i; i < solv->infarchrules_end; i++, r++)
1145 for (i = solv->
infarchrules, r = solv->
rules + i; i < solv->infarchrules_end; i++, r++)
1175 Id how, what, p, pi, pp, obs, *obsp;
1181 for (i = 0; i < job->
count; i += 2)
1190 if (what <= 0 || what > pool->
nrepos)
1207 while ((obs = *obsp++) != 0)
1298 for (i = solv->
duprules, r = solv->
rules + i; i < solv->duprules_end; i++, r++)
1311 for (i = solv->
duprules, r = solv->
rules + i; i < solv->duprules_end; i++, r++)
1335 #define DISABLE_UPDATE 1
1336 #define DISABLE_INFARCH 2
1337 #define DISABLE_DUP 3
1346 int i, j, set, qstart, pass;
1365 #if !defined(DEBIAN_SEMANTICS)
1366 const char *evr =
id2str(pool, rd->
evr);
1367 if (strchr(evr,
'-'))
1382 set &= ~SOLVER_NOAUTOSET;
1391 int qcnt = q->
count;
1396 for (i = qcnt; i < q->
count; i += 2)
1411 int qcnt = q->
count;
1416 for (i = qcnt; i < q->
count; i += 2)
1445 memset(&omap, 0,
sizeof(omap));
1457 while ((obs = *obsp++) != 0)
1461 if (ps->
repo != installed)
1476 if (ps->
repo != installed)
1489 for (i = j = qstart; i < q->
count; i += 2)
1500 if (q->
count == qstart)
1507 if (qstart == q->
count)
1513 for (i = j = qstart; i < q->
count; i += 2)
1522 if ((set & SOLVER_SETARCH) != 0)
1572 for (i = solv->
jobrules; i < solv->jobrules_end; i++)
1574 r = solv->
rules + i;
1591 for (i = 0; i < allq.
count; i += 2)
1622 Id qbuf[32], allqbuf[128];
1629 for (i = solv->
jobrules; i < solv->jobrules_end; i++)
1631 r = solv->
rules + i;
1647 for (j = 0; j < q.
count; j += 2)
1650 for (i = 0; i < allq.
count; i += 2)
1689 od = r->
d < 0 ? -r->
d - 1 : r->
d;
1715 if (*dp++ != *odp++)
1722 if (p < 0 && pool->whatprovidesdata[d] < 0)
1735 if (w2 != op || p != ow2)
1740 if (p != op || w2 != ow2)
1763 const Id *a = ap, *b = bp;
1791 Id type, from, to, dep;
1805 if ((r->
d == 0 || r->
d == -1) && r->
w2 < 0)
1814 for (i = j = 0; i < rq->
count; i += 4)
1846 if (rid > 0 && rid < solv->rpmrules_end)
1860 if ((r->
d == 0 || r->
d == -1) && r->
w2 < 0)
1864 for (i = 1; i < rq.
count; i += 4)
1885 if (rid >= solv->
jobrules && rid < solv->jobrules_end)
1898 if (rid >= solv->
updaterules && rid < solv->updaterules_end)
1904 if (rid >= solv->
featurerules && rid < solv->featurerules_end)
1910 if (rid >= solv->
duprules && rid < solv->duprules_end)
1918 if (rid >= solv->
infarchrules && rid < solv->infarchrules_end)
1926 if (rid >= solv->
choicerules && rid < solv->choicerules_end)
1961 for (rid = solv->
infarchrules, r = solv->
rules + rid; rid < solv->infarchrules_end; rid++, r++)
1962 if (r->
p < 0 && !r->
w2 && (r->
d == 0 || r->
d == -1))
1964 for (rid = solv->
duprules, r = solv->
rules + rid; rid < solv->duprules_end; rid++, r++)
1965 if (r->
p < 0 && !r->
w2 && (r->
d == 0 || r->
d == -1))
1969 r = solv->
rules + rid;
1970 if (r->
p >= 0 || ((r->
d == 0 || r->
d == -1) && r->
w2 < 0))
2016 while ((obs = *obsp++) != 0)
2047 if (!havechoice || !q.
count)
2057 for (i = 0; i < qi.
count; i++)
2071 for (j = i + 1; j < qi.
count; j++)
2078 printf(
"skipping choice ");
2090 printf(
"WEAK CHOICE ");
2120 for (rid = solv->
choicerules; rid < solv->choicerules_end; rid++)
2122 r = solv->
rules + rid;
2127 if (p > 0 &&
MAPTST(&m, p))
2143 Id rid, how, what, select;
2145 Id req, *reqp, sup, *supp;
2156 for (i = 0; i < job->
count; i += 2)
2169 for (rid = solv->
jobrules; rid < solv->jobrules_end; rid++)
2171 r = solv->
rules + rid;
2178 for (rid = solv->
jobrules; rid < solv->jobrules_end; rid++)
2180 r = solv->
rules + rid;
2181 if (r->
p >= 0 || r->
d != 0)
2192 for (p = installed->
start; p < installed->end; p++)
2206 if (!
MAPTST(&installedm, ip))
2208 if (s->
repo == installed &&
MAPTST(&userinstalled, ip - installed->
start))
2211 #ifdef CLEANDEPSDEBUG
2217 while ((req = *reqp++) != 0)
2219 if (req == SOLVABLE_PREREQMARKER)
2225 if (
MAPTST(&installedm, p))
2234 #ifdef CLEANDEPSDEBUG
2245 while ((req = *reqp++) != 0)
2250 if (
MAPTST(&installedm, p))
2259 #ifdef CLEANDEPSDEBUG
2272 if (!
MAPTST(&installedm, ip))
2280 while ((sup = *supp++) != 0)
2286 #ifdef CLEANDEPSDEBUG
2287 printf(
"%s supplemented\n",
solvid2str(pool, ip));
2297 for (rid = solv->
jobrules; rid < solv->jobrules_end; rid++)
2299 r = solv->
rules + rid;
2300 if (r->
p >= 0 || r->
d != 0)
2307 for (p = installed->
start; p < installed->end; p++)
2310 for (rid = solv->
jobrules; rid < solv->jobrules_end; rid++)
2312 r = solv->
rules + rid;
2321 for (i = 0; i < job->
count; i += 2)
2336 #ifdef CLEANDEPSDEBUG
2342 while ((req = *reqp++) != 0)
2352 #ifdef CLEANDEPSDEBUG
2364 while ((req = *reqp++) != 0)
2374 #ifdef CLEANDEPSDEBUG
2386 for (ip = installed->
start; ip < installed->end; ip++)
2388 if (!
MAPTST(&installedm, ip))
2390 if (
MAPTST(&userinstalled, ip - installed->
start))
2398 while ((sup = *supp++) != 0)
2403 #ifdef CLEANDEPSDEBUG
2404 printf(
"%s supplemented\n",
solvid2str(pool, ip));
2414 for (p = installed->
start; p < installed->end; p++)