|
Lukáš Hrázký |
4e70f6 |
From 3d3dc6b7bf722b08c07003003e5d8cc0aa7eb1ee Mon Sep 17 00:00:00 2001
|
|
Lukáš Hrázký |
4e70f6 |
From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
|
|
Lukáš Hrázký |
4e70f6 |
Date: Wed, 9 Mar 2022 15:23:47 +0100
|
|
Lukáš Hrázký |
4e70f6 |
Subject: [PATCH] Revert "Wrap c api to python for parsing metadata together"
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
This reverts commit 670006b9f37d8298fe2ec1d6cfc5cdf175a3128b.
|
|
Lukáš Hrázký |
4e70f6 |
---
|
|
Lukáš Hrázký |
4e70f6 |
src/python/createrepo_cmodule.c | 2 -
|
|
Lukáš Hrázký |
4e70f6 |
src/python/xml_parser-py.c | 156 +++++++-------------------------
|
|
Lukáš Hrázký |
4e70f6 |
src/python/xml_parser-py.h | 8 --
|
|
Lukáš Hrázký |
4e70f6 |
3 files changed, 32 insertions(+), 134 deletions(-)
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
diff --git a/src/python/createrepo_cmodule.c b/src/python/createrepo_cmodule.c
|
|
Lukáš Hrázký |
4e70f6 |
index c0b9200..6937246 100644
|
|
Lukáš Hrázký |
4e70f6 |
--- a/src/python/createrepo_cmodule.c
|
|
Lukáš Hrázký |
4e70f6 |
+++ b/src/python/createrepo_cmodule.c
|
|
Lukáš Hrázký |
4e70f6 |
@@ -79,8 +79,6 @@ static struct PyMethodDef createrepo_c_methods[] = {
|
|
Lukáš Hrázký |
4e70f6 |
METH_VARARGS, xml_parse_repomd__doc__},
|
|
Lukáš Hrázký |
4e70f6 |
{"xml_parse_updateinfo", (PyCFunction)py_xml_parse_updateinfo,
|
|
Lukáš Hrázký |
4e70f6 |
METH_VARARGS, xml_parse_updateinfo__doc__},
|
|
Lukáš Hrázký |
4e70f6 |
- {"xml_parse_main_metadata_together",(PyCFunctionWithKeywords)py_xml_parse_main_metadata_together,
|
|
Lukáš Hrázký |
4e70f6 |
- METH_VARARGS | METH_KEYWORDS, xml_parse_main_metadata_together__doc__},
|
|
Lukáš Hrázký |
4e70f6 |
{"checksum_name_str", (PyCFunction)py_checksum_name_str,
|
|
Lukáš Hrázký |
4e70f6 |
METH_VARARGS, checksum_name_str__doc__},
|
|
Lukáš Hrázký |
4e70f6 |
{"checksum_type", (PyCFunction)py_checksum_type,
|
|
Lukáš Hrázký |
4e70f6 |
diff --git a/src/python/xml_parser-py.c b/src/python/xml_parser-py.c
|
|
Lukáš Hrázký |
4e70f6 |
index a1f92f8..0879128 100644
|
|
Lukáš Hrázký |
4e70f6 |
--- a/src/python/xml_parser-py.c
|
|
Lukáš Hrázký |
4e70f6 |
+++ b/src/python/xml_parser-py.c
|
|
Lukáš Hrázký |
4e70f6 |
@@ -34,7 +34,7 @@ typedef struct {
|
|
Lukáš Hrázký |
4e70f6 |
PyObject *py_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
PyObject *py_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
PyObject *py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- PyObject *py_pkgs; /*!< Current processed package */
|
|
Lukáš Hrázký |
4e70f6 |
+ PyObject *py_pkg; /*!< Current processed package */
|
|
Lukáš Hrázký |
4e70f6 |
} CbData;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
static int
|
|
Lukáš Hrázký |
4e70f6 |
@@ -48,6 +48,12 @@ c_newpkgcb(cr_Package **pkg,
|
|
Lukáš Hrázký |
4e70f6 |
PyObject *arglist, *result;
|
|
Lukáš Hrázký |
4e70f6 |
CbData *data = cbdata;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
+ if (data->py_pkg) {
|
|
Lukáš Hrázký |
4e70f6 |
+ // Decref ref count on previous processed package
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_DECREF(data->py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
+ data->py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
+ }
|
|
Lukáš Hrázký |
4e70f6 |
+
|
|
Lukáš Hrázký |
4e70f6 |
arglist = Py_BuildValue("(sss)", pkgId, name, arch);
|
|
Lukáš Hrázký |
4e70f6 |
result = PyObject_CallObject(data->py_newpkgcb, arglist);
|
|
Lukáš Hrázký |
4e70f6 |
Py_DECREF(arglist);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -67,18 +73,13 @@ c_newpkgcb(cr_Package **pkg,
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
if (result == Py_None) {
|
|
Lukáš Hrázký |
4e70f6 |
*pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
+ data->py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_DECREF(result);
|
|
Lukáš Hrázký |
4e70f6 |
} else {
|
|
Lukáš Hrázký |
4e70f6 |
*pkg = Package_FromPyObject(result);
|
|
Lukáš Hrázký |
4e70f6 |
- if (data->py_pkgcb != Py_None) {
|
|
Lukáš Hrázký |
4e70f6 |
- // Store reference to the python pkg (result) only if we will need it later
|
|
Lukáš Hrázký |
4e70f6 |
- PyObject *keyFromPtr = PyLong_FromVoidPtr(*pkg);
|
|
Lukáš Hrázký |
4e70f6 |
- PyDict_SetItem(data->py_pkgs, keyFromPtr, result);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_DECREF(keyFromPtr);
|
|
Lukáš Hrázký |
4e70f6 |
- }
|
|
Lukáš Hrázký |
4e70f6 |
+ data->py_pkg = result; // Store reference to current package
|
|
Lukáš Hrázký |
4e70f6 |
}
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
- Py_DECREF(result);
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
return CR_CB_RET_OK;
|
|
Lukáš Hrázký |
4e70f6 |
}
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
@@ -90,23 +91,16 @@ c_pkgcb(cr_Package *pkg,
|
|
Lukáš Hrázký |
4e70f6 |
PyObject *arglist, *result, *py_pkg;
|
|
Lukáš Hrázký |
4e70f6 |
CbData *data = cbdata;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
- PyObject *keyFromPtr = PyLong_FromVoidPtr(pkg);
|
|
Lukáš Hrázký |
4e70f6 |
- py_pkg = PyDict_GetItem(data->py_pkgs, keyFromPtr);
|
|
Lukáš Hrázký |
4e70f6 |
- if (py_pkg) {
|
|
Lukáš Hrázký |
4e70f6 |
- arglist = Py_BuildValue("(O)", py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
- result = PyObject_CallObject(data->py_pkgcb, arglist);
|
|
Lukáš Hrázký |
4e70f6 |
- PyDict_DelItem(data->py_pkgs, keyFromPtr);
|
|
Lukáš Hrázký |
4e70f6 |
- } else {
|
|
Lukáš Hrázký |
4e70f6 |
- // The package was not provided by user in c_newpkgcb,
|
|
Lukáš Hrázký |
4e70f6 |
- // create new python package object
|
|
Lukáš Hrázký |
4e70f6 |
- PyObject *new_py_pkg = Object_FromPackage(pkg, 1);
|
|
Lukáš Hrázký |
4e70f6 |
- arglist = Py_BuildValue("(O)", new_py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
- result = PyObject_CallObject(data->py_pkgcb, arglist);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_DECREF(new_py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
- }
|
|
Lukáš Hrázký |
4e70f6 |
+ if (data->py_pkg)
|
|
Lukáš Hrázký |
4e70f6 |
+ py_pkg = data->py_pkg;
|
|
Lukáš Hrázký |
4e70f6 |
+ else
|
|
Lukáš Hrázký |
4e70f6 |
+ py_pkg = Object_FromPackage(pkg, 1);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
+ arglist = Py_BuildValue("(O)", py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
+ result = PyObject_CallObject(data->py_pkgcb, arglist);
|
|
Lukáš Hrázký |
4e70f6 |
Py_DECREF(arglist);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_DECREF(keyFromPtr);
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_DECREF(py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
+ data->py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
if (result == NULL) {
|
|
Lukáš Hrázký |
4e70f6 |
// Exception raised
|
|
Lukáš Hrázký |
4e70f6 |
@@ -197,7 +191,7 @@ py_xml_parse_primary(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_newpkgcb = py_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_pkgcb = py_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = PyDict_New();
|
|
Lukáš Hrázký |
4e70f6 |
+ cbdata.py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
cr_xml_parse_primary(filename,
|
|
Lukáš Hrázký |
4e70f6 |
ptr_c_newpkgcb,
|
|
Lukáš Hrázký |
4e70f6 |
@@ -212,8 +206,7 @@ py_xml_parse_primary(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_newpkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_pkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_warningcb);
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(cbdata.py_pkgs);
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_XDECREF(cbdata.py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
if (tmp_err) {
|
|
Lukáš Hrázký |
4e70f6 |
nice_exception(&tmp_err, NULL);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -279,7 +272,7 @@ py_xml_parse_primary_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_newpkgcb = py_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_pkgcb = py_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = PyDict_New();
|
|
Lukáš Hrázký |
4e70f6 |
+ cbdata.py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
cr_xml_parse_primary_snippet(target, ptr_c_newpkgcb, &cbdata, ptr_c_pkgcb, &cbdata,
|
|
Lukáš Hrázký |
4e70f6 |
ptr_c_warningcb, &cbdata, do_files, &tmp_err);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -287,7 +280,7 @@ py_xml_parse_primary_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_newpkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_pkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_warningcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(cbdata.py_pkgs);
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_XDECREF(cbdata.py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
if (tmp_err) {
|
|
Lukáš Hrázký |
4e70f6 |
nice_exception(&tmp_err, NULL);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -351,7 +344,7 @@ py_xml_parse_filelists(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_newpkgcb = py_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_pkgcb = py_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = PyDict_New();
|
|
Lukáš Hrázký |
4e70f6 |
+ cbdata.py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
cr_xml_parse_filelists(filename,
|
|
Lukáš Hrázký |
4e70f6 |
ptr_c_newpkgcb,
|
|
Lukáš Hrázký |
4e70f6 |
@@ -365,7 +358,7 @@ py_xml_parse_filelists(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_newpkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_pkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_warningcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(cbdata.py_pkgs);
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_XDECREF(cbdata.py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
if (tmp_err) {
|
|
Lukáš Hrázký |
4e70f6 |
nice_exception(&tmp_err, NULL);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -429,7 +422,7 @@ py_xml_parse_filelists_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_newpkgcb = py_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_pkgcb = py_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = PyDict_New();
|
|
Lukáš Hrázký |
4e70f6 |
+ cbdata.py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
cr_xml_parse_filelists_snippet(target, ptr_c_newpkgcb, &cbdata, ptr_c_pkgcb,
|
|
Lukáš Hrázký |
4e70f6 |
&cbdata, ptr_c_warningcb, &cbdata, &tmp_err);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -437,7 +430,7 @@ py_xml_parse_filelists_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_newpkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_pkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_warningcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(cbdata.py_pkgs);
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_XDECREF(cbdata.py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
if (tmp_err) {
|
|
Lukáš Hrázký |
4e70f6 |
nice_exception(&tmp_err, NULL);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -501,7 +494,7 @@ py_xml_parse_other(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_newpkgcb = py_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_pkgcb = py_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = PyDict_New();
|
|
Lukáš Hrázký |
4e70f6 |
+ cbdata.py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
cr_xml_parse_other(filename,
|
|
Lukáš Hrázký |
4e70f6 |
ptr_c_newpkgcb,
|
|
Lukáš Hrázký |
4e70f6 |
@@ -515,7 +508,7 @@ py_xml_parse_other(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_newpkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_pkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_warningcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(cbdata.py_pkgs);
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_XDECREF(cbdata.py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
if (tmp_err) {
|
|
Lukáš Hrázký |
4e70f6 |
nice_exception(&tmp_err, NULL);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -579,7 +572,7 @@ py_xml_parse_other_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_newpkgcb = py_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_pkgcb = py_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = PyDict_New();
|
|
Lukáš Hrázký |
4e70f6 |
+ cbdata.py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
cr_xml_parse_other_snippet(target, ptr_c_newpkgcb, &cbdata, ptr_c_pkgcb, &cbdata,
|
|
Lukáš Hrázký |
4e70f6 |
ptr_c_warningcb, &cbdata, &tmp_err);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -587,7 +580,7 @@ py_xml_parse_other_snippet(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_newpkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_pkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
Py_XDECREF(py_warningcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(cbdata.py_pkgs);
|
|
Lukáš Hrázký |
4e70f6 |
+ Py_XDECREF(cbdata.py_pkg);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
if (tmp_err) {
|
|
Lukáš Hrázký |
4e70f6 |
nice_exception(&tmp_err, NULL);
|
|
Lukáš Hrázký |
4e70f6 |
@@ -630,7 +623,7 @@ py_xml_parse_repomd(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_newpkgcb = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_pkgcb = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
+ cbdata.py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
repomd = Repomd_FromPyObject(py_repomd);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
@@ -684,7 +677,7 @@ py_xml_parse_updateinfo(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_newpkgcb = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_pkgcb = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
+ cbdata.py_pkg = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
updateinfo = UpdateInfo_FromPyObject(py_updateinfo);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
@@ -704,88 +697,3 @@ py_xml_parse_updateinfo(G_GNUC_UNUSED PyObject *self, PyObject *args)
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
Py_RETURN_NONE;
|
|
Lukáš Hrázký |
4e70f6 |
}
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
-PyObject *
|
|
Lukáš Hrázký |
4e70f6 |
-py_xml_parse_main_metadata_together(G_GNUC_UNUSED PyObject *self, PyObject *args, PyObject *kwargs)
|
|
Lukáš Hrázký |
4e70f6 |
-{
|
|
Lukáš Hrázký |
4e70f6 |
- char *primary_filename;
|
|
Lukáš Hrázký |
4e70f6 |
- char *filelists_filename;
|
|
Lukáš Hrázký |
4e70f6 |
- char *other_filename;
|
|
Lukáš Hrázký |
4e70f6 |
- int allow_out_of_order = 1;
|
|
Lukáš Hrázký |
4e70f6 |
- PyObject *py_newpkgcb, *py_pkgcb, *py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- CbData cbdata;
|
|
Lukáš Hrázký |
4e70f6 |
- GError *tmp_err = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- static char *kwlist[] = { "primary", "filelists", "other", "newpkgcb", "pkgcb",
|
|
Lukáš Hrázký |
4e70f6 |
- "warningcb", "allow_out_of_order", NULL };
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sssOOO|p:py_xml_parse_main_metadata_together", kwlist,
|
|
Lukáš Hrázký |
4e70f6 |
- &primary_filename, &filelists_filename, &other_filename, &py_newpkgcb,
|
|
Lukáš Hrázký |
4e70f6 |
- &py_pkgcb, &py_warningcb, &allow_out_of_order)) {
|
|
Lukáš Hrázký |
4e70f6 |
- return NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- }
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- if (!PyCallable_Check(py_newpkgcb) && py_newpkgcb != Py_None) {
|
|
Lukáš Hrázký |
4e70f6 |
- PyErr_SetString(PyExc_TypeError, "newpkgcb must be callable or None");
|
|
Lukáš Hrázký |
4e70f6 |
- return NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- }
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- if (!PyCallable_Check(py_pkgcb) && py_pkgcb != Py_None) {
|
|
Lukáš Hrázký |
4e70f6 |
- PyErr_SetString(PyExc_TypeError, "pkgcb must be callable or None");
|
|
Lukáš Hrázký |
4e70f6 |
- return NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- }
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- if (!PyCallable_Check(py_warningcb) && py_warningcb != Py_None) {
|
|
Lukáš Hrázký |
4e70f6 |
- PyErr_SetString(PyExc_TypeError, "warningcb must be callable or None");
|
|
Lukáš Hrázký |
4e70f6 |
- return NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- }
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- if (py_newpkgcb == Py_None && py_pkgcb == Py_None) {
|
|
Lukáš Hrázký |
4e70f6 |
- PyErr_SetString(PyExc_ValueError, "both pkgcb and newpkgcb cannot be None");
|
|
Lukáš Hrázký |
4e70f6 |
- return NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- }
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XINCREF(py_newpkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XINCREF(py_pkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XINCREF(py_warningcb);
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- cr_XmlParserNewPkgCb ptr_c_newpkgcb = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- cr_XmlParserPkgCb ptr_c_pkgcb = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- cr_XmlParserWarningCb ptr_c_warningcb = NULL;
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- if (py_newpkgcb != Py_None)
|
|
Lukáš Hrázký |
4e70f6 |
- ptr_c_newpkgcb = c_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
- if (py_pkgcb != Py_None)
|
|
Lukáš Hrázký |
4e70f6 |
- ptr_c_pkgcb = c_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
- if (py_warningcb != Py_None)
|
|
Lukáš Hrázký |
4e70f6 |
- ptr_c_warningcb = c_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_newpkgcb = py_newpkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgcb = py_pkgcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_warningcb = py_warningcb;
|
|
Lukáš Hrázký |
4e70f6 |
- cbdata.py_pkgs = PyDict_New();
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- cr_xml_parse_main_metadata_together(primary_filename,
|
|
Lukáš Hrázký |
4e70f6 |
- filelists_filename,
|
|
Lukáš Hrázký |
4e70f6 |
- other_filename,
|
|
Lukáš Hrázký |
4e70f6 |
- ptr_c_newpkgcb,
|
|
Lukáš Hrázký |
4e70f6 |
- &cbdata,
|
|
Lukáš Hrázký |
4e70f6 |
- ptr_c_pkgcb,
|
|
Lukáš Hrázký |
4e70f6 |
- &cbdata,
|
|
Lukáš Hrázký |
4e70f6 |
- ptr_c_warningcb,
|
|
Lukáš Hrázký |
4e70f6 |
- &cbdata,
|
|
Lukáš Hrázký |
4e70f6 |
- allow_out_of_order,
|
|
Lukáš Hrázký |
4e70f6 |
- &tmp_err);
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(py_newpkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(py_pkgcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(py_warningcb);
|
|
Lukáš Hrázký |
4e70f6 |
- Py_XDECREF(cbdata.py_pkgs);
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- if (tmp_err) {
|
|
Lukáš Hrázký |
4e70f6 |
- nice_exception(&tmp_err, NULL);
|
|
Lukáš Hrázký |
4e70f6 |
- return NULL;
|
|
Lukáš Hrázký |
4e70f6 |
- }
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
- Py_RETURN_NONE;
|
|
Lukáš Hrázký |
4e70f6 |
-}
|
|
Lukáš Hrázký |
4e70f6 |
diff --git a/src/python/xml_parser-py.h b/src/python/xml_parser-py.h
|
|
Lukáš Hrázký |
4e70f6 |
index 3260005..e5eea9f 100644
|
|
Lukáš Hrázký |
4e70f6 |
--- a/src/python/xml_parser-py.h
|
|
Lukáš Hrázký |
4e70f6 |
+++ b/src/python/xml_parser-py.h
|
|
Lukáš Hrázký |
4e70f6 |
@@ -64,12 +64,4 @@ PyDoc_STRVAR(xml_parse_updateinfo__doc__,
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
PyObject *py_xml_parse_updateinfo(PyObject *self, PyObject *args);
|
|
Lukáš Hrázký |
4e70f6 |
|
|
Lukáš Hrázký |
4e70f6 |
-PyDoc_STRVAR(xml_parse_main_metadata_together__doc__,
|
|
Lukáš Hrázký |
4e70f6 |
-"xml_parse_main_metadata_together(primary_filename, filelists_filename, other_filename, newpkgcb, pkgcb, warningcb) -> None\n\n"
|
|
Lukáš Hrázký |
4e70f6 |
-"Parse primary.xml, filelists.xml and other.xml together at the same time."
|
|
Lukáš Hrázký |
4e70f6 |
-"- It can handle if packages are not in the same order in all 3 files but memory requirements grow."
|
|
Lukáš Hrázký |
4e70f6 |
-"- It is not guaranteed that newpkgcb is always followed by pkgcb for the given package, it is possible newpkgcb will be called several times for different packages and only after that pkgcbs will be called.");
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
-PyObject *py_xml_parse_main_metadata_together(PyObject *self, PyObject *args, PyObject *kwargs);
|
|
Lukáš Hrázký |
4e70f6 |
-
|
|
Lukáš Hrázký |
4e70f6 |
#endif
|
|
Lukáš Hrázký |
4e70f6 |
--
|
|
Lukáš Hrázký |
4e70f6 |
2.34.3
|
|
Lukáš Hrázký |
4e70f6 |
|