예제 #1
0
static PyObject *
modify_excl_incl(_SackObject *self, PyObject *o)
{
    DnfSack *sack = self->sack;
    auto pset = pyseq_to_packageset(o, sack);
    if (!pset)
        return NULL;
    sackExcludeIncludeFunc(sack, pset.get());
    Py_RETURN_NONE;
}
예제 #2
0
static PyObject *
add_includes(_SackObject *self, PyObject *seq)
{
    HifSack *sack = self->sack;
    HifPackageSet *pset = pyseq_to_packageset(seq, sack);
    if (pset == NULL)
        return NULL;
    hif_sack_add_includes(sack, pset);
    g_object_unref(pset);
    Py_RETURN_NONE;
}
예제 #3
0
파일: goal-py.c 프로젝트: Conan-Kudo/libhif
static PyObject *
add_protected(_GoalObject *self, PyObject *seq)
{
    HyGoal goal = self->goal;
    DnfPackageSet *pset = pyseq_to_packageset(seq, goal->sack);
    if (pset == NULL)
        return NULL;
    dnf_goal_add_protected(goal, pset);
    g_object_unref(pset);
    Py_RETURN_NONE;
}
예제 #4
0
static PyObject *
set(_SelectorObject *self, PyObject *args)
{
    key_t keyname;
    int cmp_type;
    PyObject *match;

    if (!PyArg_ParseTuple(args, "iiO", &keyname, &cmp_type, &match))
        return NULL;

    if (keyname == HY_PKG) {
        const DnfPackageSet *pset;
        if (queryObject_Check(match)) {
            HyQuery target = queryFromPyObject(match);
            pset = hy_query_run_set(target);
        } else if (PyList_Check(match)) {
            DnfSack *sack = sackFromPyObject(self->sack);
            assert(sack);
            pset = pyseq_to_packageset(match, sack);
        }  else {
            (ret2e(DNF_ERROR_BAD_SELECTOR, "Invalid value type: Only List and Query supported"));
            return NULL;
        }

        if (ret2e(hy_selector_pkg_set(self->sltr, keyname, cmp_type, pset),
                  "Invalid Selector spec." )) {
               return NULL;
        }
    } else {
        const char *cmatch;
        PyObject *tmp_py_str = NULL;
        cmatch = pycomp_get_string(match, &tmp_py_str);
        if (ret2e(hy_selector_set(self->sltr, keyname, cmp_type, cmatch),
                  "Invalid Selector spec." ))
            return NULL;

    }
    Py_RETURN_NONE;
}
예제 #5
0
static PyObject *
set_modules_enabled_by_pkgset(_SackObject *self, PyObject *args, PyObject *kwds)
{
    const char *kwlist[] = {"module_container", "pkgs", NULL};
    PyObject * pyModuleContainer;
    PyObject * pyPkgSet;

    if (!PyArg_ParseTupleAndKeywords(args, kwds, "OO", (char**) kwlist, &pyModuleContainer,
                                     &pyPkgSet))
        return NULL;
    auto pset = pyseq_to_packageset(pyPkgSet, self->sack);
    if (!pset) {
        return NULL;
    }

    auto swigContainer = reinterpret_cast< ModulePackageContainerPyObject * >(
        PyObject_GetAttrString(pyModuleContainer, "this"));
    auto moduleContainer = swigContainer->ptr;
    auto modules = moduleContainer->requiresModuleEnablement(*pset.get());
    for (auto module: modules) {
        moduleContainer->enable(module->getName(), module->getStream());
    }
    Py_RETURN_NONE;
}