summaryrefslogtreecommitdiff
path: root/src/transaction.c
diff options
context:
space:
mode:
authorMichael Schroeder <mls@suse.de>2009-07-09 15:57:47 +0200
committerMichael Schroeder <mls@suse.de>2009-07-09 15:57:47 +0200
commit539bae90cef41505d02149a7b0fa72556fc5a4e7 (patch)
tree32145c43cbf164ea24bdc2ca4891ededb30635a5 /src/transaction.c
parent44c8cfae66a1ead5e998404a2a3246c479ce3bbe (diff)
downloadlibsolv-539bae90cef41505d02149a7b0fa72556fc5a4e7.tar.gz
libsolv-539bae90cef41505d02149a7b0fa72556fc5a4e7.tar.bz2
libsolv-539bae90cef41505d02149a7b0fa72556fc5a4e7.zip
- add support for repository disabling
- add support for checksum stringification - rename internal repodata functions - add limited support for package colors - do not put patches/patterns into the transaction
Diffstat (limited to 'src/transaction.c')
-rw-r--r--src/transaction.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/transaction.c b/src/transaction.c
index c01ff17..7d67a55 100644
--- a/src/transaction.c
+++ b/src/transaction.c
@@ -21,6 +21,7 @@
#include "solver.h"
#include "bitmap.h"
#include "pool.h"
+#include "poolarch.h"
#include "evr.h"
#include "util.h"
@@ -394,7 +395,7 @@ void
transaction_classify(Transaction *trans, int mode, Queue *classes)
{
Pool *pool = trans->pool;
- int ntypes[SOLVER_TRANSACTION_MAXTYPE];
+ int ntypes[SOLVER_TRANSACTION_MAXTYPE + 1];
Solvable *s, *sq;
Id v, vq, type, p, q;
int i, j;
@@ -560,6 +561,8 @@ create_transaction_info(Transaction *trans, Queue *decisionq)
continue;
if (!pool->implicitobsoleteusesprovides && s->name != s2->name)
continue;
+ if (pool->obsoleteusescolors && !pool_colormatch(pool, s, s2))
+ continue;
queue_push(ti, p);
queue_push(ti, p2);
}
@@ -575,6 +578,8 @@ create_transaction_info(Transaction *trans, Queue *decisionq)
continue;
if (!pool->obsoleteusesprovides && !pool_match_nevr(pool, pool->solvables + p2, obs))
continue;
+ if (pool->obsoleteusescolors && !pool_colormatch(pool, s, s2))
+ continue;
queue_push(ti, p);
queue_push(ti, p2);
}
@@ -639,6 +644,11 @@ transaction_calculate(Transaction *trans, Queue *decisionq, Map *noobsmap)
MAPSET(&trans->transactsmap, -p);
if ((!installed || s->repo != installed) && p > 0)
{
+ const char *n = id2str(pool, s->name);
+ if (!strncmp(n, "patch:", 6))
+ continue;
+ if (!strncmp(n, "pattern:", 8))
+ continue;
MAPSET(&trans->transactsmap, p);
if (noobsmap && MAPTST(noobsmap, p))
neednoobs = 1;