WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${CMAKE_SOURCE_DIR}/bindings/solv.i
)
+
+ADD_DEFINITIONS(-Wno-unused)
INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
ADD_LIBRARY (bindings_python SHARED solv_python.c)
void set_debuglevel(int level) {
pool_setdebuglevel($self, level);
}
+ int set_flag(int flag, int value) {
+ return pool_set_flag($self, flag, value);
+ }
+ int get_flag(int flag) {
+ return pool_get_flag($self, flag);
+ }
#if defined(SWIGPYTHON)
%{
SWIGINTERN int loadcallback(Pool *pool, Repodata *data, void *d) {
unsigned int now, start;
void *handle;
Id p;
+ int obsoleteusescolors = pool_get_flag(pool, POOL_FLAG_OBSOLETEUSESCOLORS);
queue_empty(conflicts);
if (!pkgs->count)
int iterflags;
iterflags = RPM_ITERATE_FILELIST_WITHMD5 | RPM_ITERATE_FILELIST_NOGHOSTS;
- if (pool->obsoleteusescolors)
+ if (obsoleteusescolors)
iterflags |= RPM_ITERATE_FILELIST_WITHCOL;
p = pkgs->elements[pidx];
hx = cbdata.lookat.elements[i];
continue; /* different file names */
if (!strcmp(fsi, fsj))
continue; /* md5 sum matches */
- if (pool->obsoleteusescolors && fsi[33] && fsj[33] && (fsi[33] & fsj[33]) == 0)
+ if (obsoleteusescolors && fsi[33] && fsj[33] && (fsi[33] & fsj[33]) == 0)
continue; /* colors do not conflict */
queue_push(conflicts, pool_str2id(pool, (char *)cbdata.filesspace + cbdata.files.elements[ii] + 34, 1));
queue_push(conflicts, p);
pool_freeidhashes;
pool_freetmpspace;
pool_freewhatprovides;
+ pool_get_flag;
pool_id2evr;
pool_id2langid;
pool_id2rel;
pool_queuetowhatprovides;
pool_rel2id;
pool_search;
+ pool_set_flag;
pool_set_installed;
pool_set_languages;
pool_setarch;
queue_init(&pool->vendormap);
pool->debugmask = SOLV_DEBUG_RESULT; /* FIXME */
+#ifndef RPM5
+ pool->allowselfconflicts = 1;
+#endif
#ifdef FEDORA
pool->obsoleteusescolors = 1;
#endif
#ifdef DEBIAN
- pool->allowselfconflicts = 1;
pool->disttype = DISTTYPE_DEB;
#endif
#ifdef RPM5
}
#endif
+int
+pool_get_flag(Pool *pool, int flag)
+{
+ switch (flag)
+ {
+ case POOL_FLAG_PROMOTEEPOCH:
+ return pool->promoteepoch;
+ case POOL_FLAG_ALLOWSELFCONFLICTS:
+ return pool->allowselfconflicts;
+ case POOL_FLAG_OBSOLETEUSESPROVIDES:
+ return pool->obsoleteusesprovides;
+ case POOL_FLAG_IMPLICITOBSOLETEUSESPROVIDES:
+ return pool->implicitobsoleteusesprovides;
+ case POOL_FLAG_OBSOLETEUSESCOLORS:
+ return pool->obsoleteusescolors;
+ case POOL_FLAG_NOINSTALLEDOBSOLETES:
+ return pool->noinstalledobsoletes;
+ default:
+ break;
+ }
+ return -1;
+}
+
+int
+pool_set_flag(Pool *pool, int flag, int value)
+{
+ int old = pool_get_flag(pool, flag);
+ switch (flag)
+ {
+ case POOL_FLAG_PROMOTEEPOCH:
+ pool->promoteepoch = value;
+ break;
+ case POOL_FLAG_ALLOWSELFCONFLICTS:
+ pool->allowselfconflicts = value;
+ break;
+ case POOL_FLAG_OBSOLETEUSESPROVIDES:
+ pool->obsoleteusesprovides = value;
+ break;
+ case POOL_FLAG_IMPLICITOBSOLETEUSESPROVIDES:
+ pool->implicitobsoleteusesprovides = value;
+ break;
+ case POOL_FLAG_OBSOLETEUSESCOLORS:
+ pool->obsoleteusescolors = value;
+ break;
+ case POOL_FLAG_NOINSTALLEDOBSOLETES:
+ pool->noinstalledobsoletes = value;
+ break;
+ default:
+ break;
+ }
+ return old;
+}
+
+
Id
pool_add_solvable(Pool *pool)
{
/* package manager type, deb/rpm */
int disttype;
- /* flags to tell the library how the installed package manager works */
- int promoteepoch; /* true: missing epoch is replaced by epoch of dependency */
- int obsoleteusesprovides; /* true: obsoletes are matched against provides, not names */
- int implicitobsoleteusesprovides; /* true: implicit obsoletes due to same name are matched against provides, not names */
- int obsoleteusescolors; /* true: obsoletes check arch color */
- int noinstalledobsoletes; /* true: ignore obsoletes of installed packages */
- int allowselfconflicts; /* true: packages which conflict with itself are installable */
-
Id *id2arch; /* map arch ids to scores */
unsigned char *id2color; /* map arch ids to colors */
Id lastarch; /* last valid entry in id2arch/id2color */
Datapos pos;
#ifdef LIBSOLV_INTERNAL
+ /* flags to tell the library how the installed package manager works */
+ int promoteepoch; /* true: missing epoch is replaced by epoch of dependency */
+ int obsoleteusesprovides; /* true: obsoletes are matched against provides, not names */
+ int implicitobsoleteusesprovides; /* true: implicit obsoletes due to same name are matched against provides, not names */
+ int obsoleteusescolors; /* true: obsoletes check arch color */
+ int noinstalledobsoletes; /* true: ignore obsoletes of installed packages */
+ int allowselfconflicts; /* true: packages which conflict with itself are installable */
+
/* hash for rel unification */
Hashtable relhashtbl; /* hashtable: (name,evr,op)Hash -> Id */
Hashmask relhashmask;
#define SOLV_DEBUG_TO_STDERR (1<<30)
+#define POOL_FLAG_PROMOTEEPOCH 1
+#define POOL_FLAG_ALLOWSELFCONFLICTS 2
+#define POOL_FLAG_OBSOLETEUSESPROVIDES 3
+#define POOL_FLAG_IMPLICITOBSOLETEUSESPROVIDES 4
+#define POOL_FLAG_OBSOLETEUSESCOLORS 5
+#define POOL_FLAG_NOINSTALLEDOBSOLETES 6
+
/* ----------------------------------------------- */
#ifdef MULTI_SEMANTICS
extern void pool_setdisttype(Pool *pool, int disttype);
#endif
+extern int pool_set_flag(Pool *pool, int flag, int value);
+extern int pool_get_flag(Pool *pool, int flag);
extern void pool_setvendorclasses(Pool *pool, const char **vendorclasses);
extern void pool_debug(Pool *pool, int type, const char *format, ...) __attribute__((format(printf, 3, 4)));