Beispiel #1
0
static PyObject *
detect_arch(PyObject *unused, PyObject *args)
{
    char *arch;

    if (ret2e(hy_detect_arch(&arch), "Failed detecting architecture."))
	return NULL;
    return PyString_FromString(arch);
}
Beispiel #2
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;
}
Beispiel #3
0
static PyObject *
write_debugdata(_GoalObject *self, PyObject *dir_str)
{
    PyObject *tmp_py_str = NULL;
    const char *dir = pycomp_get_string(dir_str, &tmp_py_str);

    if (dir == NULL) {
	Py_XDECREF(tmp_py_str);
	return NULL;
    }

    int ret = hy_goal_write_debugdata(self->goal, dir);
    Py_XDECREF(tmp_py_str);
    if (ret2e(ret, "write_debugdata() failed"))
	return NULL;
    Py_RETURN_NONE;
}
Beispiel #4
0
static PyObject *
split_nevra(PyObject *unused, PyObject *nevra_o)
{
    PyObject *tmp_py_str = NULL;
    const char *nevra = pycomp_get_string(nevra_o, &tmp_py_str);

    if (nevra == NULL) {
        Py_XDECREF(tmp_py_str);
        return NULL;
    }
    long epoch;
    char *name, *version, *release, *arch;

    int split_nevra_ret = hy_split_nevra(nevra, &name, &epoch, &version, &release, &arch);
    Py_XDECREF(tmp_py_str); // release memory after unicode string conversion

    if (ret2e(split_nevra_ret, "Failed parsing NEVRA."))
	return NULL;

    PyObject *ret = Py_BuildValue("slsss", name, epoch, version, release, arch);
    if (ret == NULL)
	return NULL;
    return ret;
}