From a7cd7a385a74cde37181b54989e1a4305cce34a3 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 20 Jul 2011 18:31:52 +0200 Subject: [PATCH] Tell the solver the correct priority of a repository. --- pakfire/repository/base.py | 7 +++++++ pakfire/repository/remote.py | 4 ++-- src/_pakfiremodule.c | 2 ++ src/repo.c | 17 +++++++++++++++++ src/repo.h | 2 ++ 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/pakfire/repository/base.py b/pakfire/repository/base.py index 448ac1a54..2b60829eb 100644 --- a/pakfire/repository/base.py +++ b/pakfire/repository/base.py @@ -16,6 +16,7 @@ class RepositoryFactory(object): # Reference to corresponding Repo object in the solver. self.solver_repo = satsolver.Repo(self.pool, self.name) + self.solver_repo.set_priority(self.priority) logging.debug("Initialized new repository: %s" % self) @@ -93,3 +94,9 @@ class RepositoryDummy(RepositoryFactory): def __init__(self, pakfire): RepositoryFactory.__init__(self, pakfire, "dummy", "This is a dummy repository.") + + @property + def priority(self): + # This will never be used in the solving process, but still it needs + # a value. + return 0 diff --git a/pakfire/repository/remote.py b/pakfire/repository/remote.py index 2410f002d..4805b2eca 100644 --- a/pakfire/repository/remote.py +++ b/pakfire/repository/remote.py @@ -12,13 +12,13 @@ from pakfire.constants import * class RepositorySolv(base.RepositoryFactory): def __init__(self, pakfire, name, description, url, mirrorlist, gpgkey, enabled=True): - base.RepositoryFactory.__init__(self, pakfire, name, description) - # Parse arguments. self.url = url self.gpgkey = gpgkey self.mirrorlist = mirrorlist + base.RepositoryFactory.__init__(self, pakfire, name, description) + # Initialize mirror servers. self.mirrors = downloader.MirrorList(self.pakfire, self) diff --git a/src/_pakfiremodule.c b/src/_pakfiremodule.c index d4fff1493..b55d41367 100644 --- a/src/_pakfiremodule.c +++ b/src/_pakfiremodule.c @@ -53,6 +53,8 @@ static PyMethodDef Repo_methods[] = { {"size", (PyCFunction)Repo_size, METH_NOARGS, NULL}, {"get_enabled", (PyCFunction)Repo_get_enabled, METH_NOARGS, NULL}, {"set_enabled", (PyCFunction)Repo_set_enabled, METH_VARARGS, NULL}, + {"get_priority", (PyCFunction)Repo_get_priority, METH_NOARGS, NULL}, + {"set_priority", (PyCFunction)Repo_set_priority, METH_VARARGS, NULL}, {"write", (PyCFunction)Repo_write, METH_VARARGS, NULL}, {"read", (PyCFunction)Repo_read, METH_VARARGS, NULL}, { NULL, NULL, 0, NULL } diff --git a/src/repo.c b/src/repo.c index fdbc4c014..eccf32963 100644 --- a/src/repo.c +++ b/src/repo.c @@ -83,6 +83,23 @@ PyObject *Repo_set_enabled(RepoObject *self, PyObject *args) { Py_RETURN_NONE; } +PyObject *Repo_get_priority(RepoObject *self) { + Py_BuildValue("i", self->_repo->priority); +} + +PyObject *Repo_set_priority(RepoObject *self, PyObject *args) { + int priority; + + if (!PyArg_ParseTuple(args, "i", &priority)) { + /* XXX raise exception */ + return NULL; + } + + self->_repo->priority = priority; + + Py_RETURN_NONE; +} + PyObject *Repo_write(RepoObject *self, PyObject *args) { const char *filename; diff --git a/src/repo.h b/src/repo.h index 4ada99715..8c76341ce 100644 --- a/src/repo.h +++ b/src/repo.h @@ -18,6 +18,8 @@ extern PyObject *Repo_name(RepoObject *self); extern PyObject *Repo_size(RepoObject *self); extern PyObject *Repo_get_enabled(RepoObject *self); extern PyObject *Repo_set_enabled(RepoObject *self, PyObject *args); +extern PyObject *Repo_get_priority(RepoObject *self); +extern PyObject *Repo_set_priority(RepoObject *self, PyObject *args); extern PyObject *Repo_write(RepoObject *self, PyObject *args); extern PyObject *Repo_read(RepoObject *self, PyObject *args); -- 2.39.5