rules.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <assert.h>
#include "solver.h"
#include "bitmap.h"
#include "pool.h"
#include "poolarch.h"
#include "util.h"
#include "evr.h"
#include "policy.h"
#include "solverdebug.h"

Go to the source code of this file.

Defines

#define RULES_BLOCK   63
#define DISABLE_UPDATE   1
#define DISABLE_INFARCH   2
#define DISABLE_DUP   3

Functions

static void addrpmruleinfo (Solver *solv, Id p, Id d, int type, Id dep)
static void solver_createcleandepsmap (Solver *solv)
static int dep_possible (Solver *solv, Id dep, Map *m)
static int unifyrules_sortcmp (const void *ap, const void *bp, void *dp)
int solver_samerule (Solver *solv, Rule *r1, Rule *r2)
void solver_unifyrules (Solver *solv)
Rulesolver_addrule (Solver *solv, Id p, Id d)
static Id makemultiversionconflict (Solver *solv, Id n, Id con)
static void addrpmrule (Solver *solv, Id p, Id d, int type, Id dep)
void solver_addrpmrulesforsolvable (Solver *solv, Solvable *s, Map *m)
void solver_addrpmrulesforweak (Solver *solv, Map *m)
void solver_addrpmrulesforupdaters (Solver *solv, Solvable *s, Map *m, int allow_all)
static Id finddistupgradepackages (Solver *solv, Solvable *s, Queue *qs, int allow_all)
static void addduppackages (Solver *solv, Solvable *s, Queue *qs)
void solver_addupdaterule (Solver *solv, Solvable *s, int allow_all)
static void disableupdaterule (Solver *solv, Id p)
static void reenableupdaterule (Solver *solv, Id p)
void solver_addinfarchrules (Solver *solv, Map *addedmap)
static void disableinfarchrule (Solver *solv, Id name)
static void reenableinfarchrule (Solver *solv, Id name)
void solver_createdupmaps (Solver *solv)
void solver_freedupmaps (Solver *solv)
void solver_addduprules (Solver *solv, Map *addedmap)
static void disableduprule (Solver *solv, Id name)
static void reenableduprule (Solver *solv, Id name)
static void jobtodisablelist (Solver *solv, Id how, Id what, Queue *q)
void solver_disablepolicyrules (Solver *solv)
void solver_reenablepolicyrules (Solver *solv, int jobidx)
static int solver_allruleinfos_cmp (const void *ap, const void *bp, void *dp)
int solver_allruleinfos (Solver *solv, Id rid, Queue *rq)
SolverRuleinfo solver_ruleinfo (Solver *solv, Id rid, Id *fromp, Id *top, Id *depp)
void solver_addchoicerules (Solver *solv)
void solver_disablechoicerules (Solver *solv, Rule *r)

Define Documentation

#define RULES_BLOCK   63

Definition at line 29 of file rules.c.

Referenced by solver_addrule(), solver_create(), and solver_unifyrules().

#define DISABLE_UPDATE   1
#define DISABLE_INFARCH   2
#define DISABLE_DUP   3

Function Documentation

static void addrpmruleinfo ( Solver solv,
Id  p,
Id  d,
int  type,
Id  dep 
) [static]
static void solver_createcleandepsmap ( Solver solv  )  [static]
static int dep_possible ( Solver solv,
Id  dep,
Map m 
) [inline, static]
static int unifyrules_sortcmp ( const void *  ap,
const void *  bp,
void *  dp 
) [static]

Definition at line 82 of file rules.c.

References _Rule::d, _Rule::p, _Rule::w2, and _Pool::whatprovidesdata.

Referenced by solver_samerule(), and solver_unifyrules().

int solver_samerule ( Solver solv,
Rule r1,
Rule r2 
)

Definition at line 120 of file rules.c.

References _Solver::pool, and unifyrules_sortcmp().

Referenced by solver_solve().

void solver_unifyrules ( Solver solv  ) 
Rule* solver_addrule ( Solver solv,
Id  p,
Id  d 
)
static Id makemultiversionconflict ( Solver solv,
Id  n,
Id  con 
) [static]
static void addrpmrule ( Solver solv,
Id  p,
Id  d,
int  type,
Id  dep 
) [inline, static]

Definition at line 423 of file rules.c.

References addrpmruleinfo(), _Solver::ruleinfoq, and solver_addrule().

Referenced by solver_addrpmrulesforsolvable().

void solver_addrpmrulesforsolvable ( Solver solv,
Solvable s,
Map m 
)

Definition at line 452 of file rules.c.

References addrpmrule(), _Pool::allowselfconflicts, _Solvable::arch, _Solvable::conflicts, _Queue::count, dep2str(), _Solvable::evr, _Solver::fixmap, _Solver::fixmap_all, _Reldep::flags, FOR_PROVIDES, GETRELDEP, id2str(), _Repo::idarraydata, IF_POOLDEBUG, _Pool::implicitobsoleteusesprovides, _Solver::installed, ISRELDEP, makemultiversionconflict(), MAPSET, MAPTST, _Reldep::name, _Solvable::name, _Pool::noinstalledobsoletes, _Solver::noobsoletes, _Pool::nscallback, _Pool::nscallbackdata, _Solvable::obsoletes, _Pool::obsoleteusescolors, _Pool::obsoleteusesprovides, _Solver::pool, pool_colormatch(), POOL_DEBUG, pool_installable(), pool_match_nevr(), pool_whatprovides_ptr(), queue_free(), queue_init_buffer(), queue_push(), queue_shift(), _Solvable::recommends, REL_NAMESPACE, _Solvable::repo, _Solvable::requires, SAT_DEBUG_RULE_CREATION, SAT_DEBUG_SCHUBI, _Map::size, solvable2str(), solvable_selfprovidedep(), _Pool::solvables, SOLVER_RULE_RPM_IMPLICIT_OBSOLETES, SOLVER_RULE_RPM_INSTALLEDPKG_OBSOLETES, SOLVER_RULE_RPM_NOT_INSTALLABLE, SOLVER_RULE_RPM_NOTHING_PROVIDES_DEP, SOLVER_RULE_RPM_PACKAGE_CONFLICT, SOLVER_RULE_RPM_PACKAGE_OBSOLETES, SOLVER_RULE_RPM_PACKAGE_REQUIRES, SOLVER_RULE_RPM_SAME_NAME, SOLVER_RULE_RPM_SELF_CONFLICT, solvid2str(), _Repo::start, _Solvable::suggests, SYSTEMSOLVABLE, and _Pool::whatprovidesdata.

Referenced by solver_addrpmrulesforupdaters(), solver_addrpmrulesforweak(), solver_allruleinfos(), solver_ruleinfo(), and solver_solve().

void solver_addrpmrulesforweak ( Solver solv,
Map m 
)
void solver_addrpmrulesforupdaters ( Solver solv,
Solvable s,
Map m,
int  allow_all 
)
static Id finddistupgradepackages ( Solver solv,
Solvable s,
Queue qs,
int  allow_all 
) [static]
static void addduppackages ( Solver solv,
Solvable s,
Queue qs 
) [static]
void solver_addupdaterule ( Solver solv,
Solvable s,
int  allow_all 
)
static void disableupdaterule ( Solver solv,
Id  p 
) [inline, static]
static void reenableupdaterule ( Solver solv,
Id  p 
) [inline, static]
void solver_addinfarchrules ( Solver solv,
Map addedmap 
)
static void disableinfarchrule ( Solver solv,
Id  name 
) [inline, static]
static void reenableinfarchrule ( Solver solv,
Id  name 
) [inline, static]
void solver_createdupmaps ( Solver solv  ) 
void solver_freedupmaps ( Solver solv  ) 

Definition at line 1227 of file rules.c.

References _Solver::dupmap, and map_free().

Referenced by solver_solve().

void solver_addduprules ( Solver solv,
Map addedmap 
)
static void disableduprule ( Solver solv,
Id  name 
) [inline, static]
static void reenableduprule ( Solver solv,
Id  name 
) [inline, static]
static void jobtodisablelist ( Solver solv,
Id  how,
Id  what,
Queue q 
) [static]
void solver_disablepolicyrules ( Solver solv  ) 
void solver_reenablepolicyrules ( Solver solv,
int  jobidx 
)
static int solver_allruleinfos_cmp ( const void *  ap,
const void *  bp,
void *  dp 
) [static]

Definition at line 1758 of file rules.c.

Referenced by solver_allruleinfos().

int solver_allruleinfos ( Solver solv,
Id  rid,
Queue rq 
)
SolverRuleinfo solver_ruleinfo ( Solver solv,
Id  rid,
Id fromp,
Id top,
Id depp 
)
void solver_addchoicerules ( Solver solv  ) 
void solver_disablechoicerules ( Solver solv,
Rule r 
)
Generated on Mon Dec 12 11:44:13 2011 for satsolver by  doxygen 1.6.3