Skip to content

Commit

Permalink
Also use suggests for ordering packages
Browse files Browse the repository at this point in the history
  • Loading branch information
mlschroe committed Mar 1, 2018
1 parent 69f1803 commit 2c02dd0
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 5 deletions.
7 changes: 6 additions & 1 deletion package/libsolv.changes
@@ -1,8 +1,13 @@
-------------------------------------------------------------------
Thu Mar 1 10:52:23 CET 2018 - mls@suse.de

- also use suggests for ordering packages [bnc#1077635]

-------------------------------------------------------------------
Wed Feb 28 16:29:55 CET 2018 - mls@suse.de

- fix bad assignment in solution refinement that led
to a memory leak
to a memory leak [bnc#1075978]
- use license tag instead of doc in the spec file [bnc#1082318]
- bump version to 0.6.33

Expand Down
46 changes: 42 additions & 4 deletions src/order.c
Expand Up @@ -43,10 +43,11 @@ struct _TransactionOrderdata {
#define TYPE_REQ_P (1<<2)
#define TYPE_PREREQ_P (1<<3)

#define TYPE_REC (1<<4)
#define TYPE_SUG (1<<4)
#define TYPE_REC (1<<5)

#define TYPE_REQ (1<<5)
#define TYPE_PREREQ (1<<6)
#define TYPE_REQ (1<<6)
#define TYPE_PREREQ (1<<7)

#define TYPE_CYCLETAIL (1<<16)
#define TYPE_CYCLEHEAD (1<<17)
Expand Down Expand Up @@ -247,7 +248,6 @@ addsolvableedges(struct orderdata *od, Solvable *s)
{
Transaction *trans = od->trans;
Pool *pool = trans->pool;
Id req, *reqp, con, *conp, rec, *recp;
Id p, p2, pp2;
int i, j, pre, numins;
Repo *installed = pool->installed;
Expand All @@ -262,6 +262,7 @@ addsolvableedges(struct orderdata *od, Solvable *s)
queue_init(&depq);
if (s->requires)
{
Id req, *reqp;
reqp = s->repo->idarraydata + s->requires;
pre = TYPE_REQ;
while ((req = *reqp++) != 0)
Expand Down Expand Up @@ -385,6 +386,7 @@ addsolvableedges(struct orderdata *od, Solvable *s)
}
if (s->conflicts)
{
Id con, *conp;
conp = s->repo->idarraydata + s->conflicts;
while ((con = *conp++) != 0)
{
Expand Down Expand Up @@ -423,6 +425,7 @@ addsolvableedges(struct orderdata *od, Solvable *s)
}
if (s->recommends && s->repo != installed)
{
Id rec, *recp;
recp = s->repo->idarraydata + s->recommends;
while ((rec = *recp++) != 0)
{
Expand Down Expand Up @@ -455,6 +458,41 @@ addsolvableedges(struct orderdata *od, Solvable *s)
}
}
}
if (s->suggests && s->repo != installed)
{
Id sug, *sugp;
sugp = s->repo->idarraydata + s->suggests;
while ((sug = *sugp++) != 0)
{
queue_empty(&depq);
FOR_PROVIDES(p2, pp2, sug)
{
s2 = pool->solvables + p2;
if (p2 == p)
{
depq.count = 0; /* self provides */
break;
}
if (s2->repo == installed && !MAPTST(&trans->transactsmap, p2))
continue;
if (s2->repo != installed && !MAPTST(&trans->transactsmap, p2))
continue; /* package stays uninstalled */
if (s2->repo != installed)
queue_pushunique(&depq, p2);
}
for (i = 0; i < depq.count; i++)
{
p2 = depq.elements[i];
if (pool->solvables[p2].repo != installed)
{
#if 0
printf("add suggests inst->inst edge (%s -> %s -> %s)\n", pool_solvid2str(pool, p), pool_dep2str(pool, sug), pool_solvid2str(pool, p2));
#endif
addedge(od, p, p2, TYPE_SUG);
}
}
}
}
if (s->repo == installed && solvable_lookup_idarray(s, SOLVABLE_TRIGGERS, &depq) && depq.count)
{
/* we're getting deinstalled/updated. Try to do this before our
Expand Down

0 comments on commit 2c02dd0

Please sign in to comment.