[CVS] RPM: rpm/ CHANGES rpm/python/ header-py.c header-py.h rpmmodule....
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Per Ãyvind Karlsen Root: /v/rpm/cvs Email: pkarl...@rpm5.org Module: rpm Date: 27-Jan-2011 19:24:42 Branch: HEAD Handle: 2011012718244100 Modified files: rpm CHANGES rpm/python header-py.c header-py.h rpmmodule.c Log: python: export rpmEVRparse() & rpmEVRcompare() in evrSplit() & evrcompare() Summary: RevisionChanges Path 1.3557 +2 -0 rpm/CHANGES 1.113 +38 -0 rpm/python/header-py.c 1.19+10 -0 rpm/python/header-py.h 1.181 +4 -0 rpm/python/rpmmodule.c patch -p0 <<'@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.3556 -r1.3557 CHANGES --- rpm/CHANGES 27 Jan 2011 17:28:57 - 1.3556 +++ rpm/CHANGES 27 Jan 2011 18:24:41 - 1.3557 @@ -1,4 +1,6 @@ 5.4.0 -> 5.4.1: +- proyvind: python: export rpmEVRparse() & rpmEVRcompare() in evrSplit() & + evrCompare(). - proyvind: fix return code for ignored signals breaking ie. rpmbuild with gnome-terminal (mdvbz#62262) - proyvind: add tools/dbconvert for rpmdb conversion to/from hash/btree & @@ . patch -p0 <<'@@ .' Index: rpm/python/header-py.c $ cvs diff -u -r1.112 -r1.113 header-py.c --- rpm/python/header-py.c27 Jan 2011 18:16:24 - 1.112 +++ rpm/python/header-py.c27 Jan 2011 18:24:41 - 1.113 @@ -968,3 +968,41 @@ return Py_BuildValue("i", rc); } + +PyObject * evrCompare (PyObject * self, PyObject * args, + PyObject * kwds) +{ +EVR_t lEVR = rpmEVRnew(RPMSENSE_EQUAL, 0), + rEVR = rpmEVRnew(RPMSENSE_EQUAL, 0); +int rc; +char * evr1, * evr2; +char * kwlist[] = {"evr0", "evr1", NULL}; + +if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist, &evr1, &evr2)) + return NULL; + +rpmEVRparse(evr1, lEVR); +rpmEVRparse(evr2, rEVR); +rc = rpmEVRcompare(lEVR, rEVR); +lEVR = rpmEVRfree(lEVR); +rEVR = rpmEVRfree(rEVR); + +return PyLong_FromLong(rc); +} + +PyObject * evrSplit (PyObject * self, PyObject * args, PyObject * kwds) +{ +EVR_t EVR = rpmEVRnew(RPMSENSE_EQUAL, 0); +char * evr; +char * kwlist[] = {"evr", NULL}; +PyObject * tuple; + +if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &evr)) + return NULL; + +rpmEVRparse(evr, EVR); +tuple = Py_BuildValue("(Isss)", EVR->F[RPMEVR_E] ? atoi(EVR->F[RPMEVR_E]) : 0, EVR->F[RPMEVR_V], EVR->F[RPMEVR_R], EVR->F[RPMEVR_D]); +EVR = rpmEVRfree(EVR); + +return tuple; +} @@ . patch -p0 <<'@@ .' Index: rpm/python/header-py.h $ cvs diff -u -r1.18 -r1.19 header-py.h --- rpm/python/header-py.h8 Dec 2008 01:20:02 - 1.18 +++ rpm/python/header-py.h27 Jan 2011 18:24:41 - 1.19 @@ -42,6 +42,16 @@ /** \ingroup py_c */ +PyObject * evrSplit (PyObject * self, PyObject * args, PyObject * kwds) + /*@*/; + +/** \ingroup py_c + */ +PyObject * evrCompare (PyObject * self, PyObject * args, PyObject * kwds) + /*@*/; + +/** \ingroup py_c + */ PyObject * labelCompare (PyObject * self, PyObject * args) /*@*/; @@ . patch -p0 <<'@@ .' Index: rpm/python/rpmmodule.c $ cvs diff -u -r1.180 -r1.181 rpmmodule.c --- rpm/python/rpmmodule.c1 Dec 2010 16:46:03 - 1.180 +++ rpm/python/rpmmodule.c27 Jan 2011 18:24:41 - 1.181 @@ -256,6 +256,10 @@ NULL }, { "labelCompare", (PyCFunction) labelCompare, METH_VARARGS|METH_KEYWORDS, NULL }, +{ "evrCompare", (PyCFunction) evrCompare, METH_VARARGS|METH_KEYWORDS, + NULL }, +{ "evrSplit", (PyCFunction) evrSplit, METH_VARARGS|METH_KEYWORDS, + NULL }, { "setVerbosity", (PyCFunction) setVerbosity, METH_VARARGS|METH_KEYWORDS, NULL }, { "setEpochPromote", (PyCFunction) setEpochPromote, METH_VARARGS|METH_KEYWORDS, @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm/ CHANGES rpm/python/ header-py.c header-py.h rpmmodule....
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Per Ãyvind Karlsen Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 06-Dec-2008 15:52:14 Branch: HEAD Handle: 2008120614521400 Modified files: rpm CHANGES rpm/python header-py.c header-py.h rpmmodule.c Log: python: add writeHeaderListToFD() & writeHeaderListToFile(). (improved version of TurboLinux patch) Summary: RevisionChanges Path 1.2668 +2 -0 rpm/CHANGES 1.98+75 -0 rpm/python/header-py.c 1.17+10 -0 rpm/python/header-py.h 1.175 +4 -0 rpm/python/rpmmodule.c patch -p0 <<'@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.2667 -r1.2668 CHANGES --- rpm/CHANGES 6 Dec 2008 13:57:11 - 1.2667 +++ rpm/CHANGES 6 Dec 2008 14:52:14 - 1.2668 @@ -1,5 +1,7 @@ 5.2a2 -> 5.2a3: +- proyvind: python: add writeHeaderListToFD() & writeHeaderListToFile(). + (improved version of TurboLinux patch) - proyvind: rpm4compat: disable warnings about unused variables. - proyvind: Mandriva: Always treat file conflicts during install (rpm -i) as errors. (dont-filter-install-file-conflicts) @@ . patch -p0 <<'@@ .' Index: rpm/python/header-py.c $ cvs diff -u -r1.97 -r1.98 header-py.c --- rpm/python/header-py.c10 Oct 2008 21:51:35 - 1.97 +++ rpm/python/header-py.c6 Dec 2008 14:52:14 - 1.98 @@ -670,6 +670,7 @@ PyObject * rpmReadHeaders (FD_t fd) { PyObject * list; +PyObject * ret = NULL; Header h; hdrObject * hdr; @@ -828,6 +829,80 @@ /** */ +PyObject * rpmWriteHeaders (PyObject * list, FD_t fd) +{ +int count; + +if (!fd) { + PyErr_SetFromErrno(pyrpmError); + return NULL; +} + +for(count = 0; count < PyList_Size(list); count++){ + Py_BEGIN_ALLOW_THREADS + const char item[] = "Header"; + const char * msg = NULL; + hdrObject * hdr = (hdrObject *)PyList_GetItem(list, count); + rpmRC rc = rpmpkgWrite(item, fd, hdr->h, &msg); + if (rc != RPMRC_OK) + rpmlog(RPMLOG_ERR, "%s: %s: %s : error code: %d\n", "rpmpkgWrite", item, msg, rc); + msg = _free(msg); + Py_END_ALLOW_THREADS +} + +Py_RETURN_TRUE; +} + +/** + */ +PyObject * rpmHeaderToFD(PyObject * self, PyObject * args, + PyObject * kwds) +{ +FD_t fd; +int fileno; +PyObject * list; +PyObject * ret; +char * kwlist[] = {"headers", "fd", NULL}; + +if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oi", kwlist, &list, &fileno)) + return NULL; + +fd = fdDup(fileno); + +ret = rpmWriteHeaders (list, fd); +Fclose(fd); + +return list; +} + +/** + */ +PyObject * rpmHeaderToFile(PyObject * self, PyObject * args, + PyObject *kwds) +{ +char * filespec; +FD_t fd; +PyObject * list; +PyObject * ret; +char * kwlist[] = {"headers", "file", NULL}; + +if (!PyArg_ParseTupleAndKeywords(args, kwds, "Os", kwlist, &list, &filespec)) + return NULL; + +fd = Fopen(filespec, "w.fdio"); +if (!fd) { + PyErr_SetFromErrno(pyrpmError); + return NULL; +} + +ret = rpmWriteHeaders (list, fd); +Fclose(fd); + +return ret; +} + +/** + */ PyObject * versionCompare (PyObject * self, PyObject * args, PyObject * kwds) { @@ . patch -p0 <<'@@ .' Index: rpm/python/header-py.h $ cvs diff -u -r1.16 -r1.17 header-py.h --- rpm/python/header-py.h9 Feb 2008 16:35:49 - 1.16 +++ rpm/python/header-py.h6 Dec 2008 14:52:14 - 1.17 @@ -67,6 +67,16 @@ /** \ingroup py_c */ +PyObject * rpmHeaderToFile(PyObject * self, PyObject * args, PyObject * kwds) + /[EMAIL PROTECTED]/; + +/** \ingroup py_c + */ +PyObject * rpmHeaderToFD(PyObject * self, PyObject * args, PyObject * kwds) + /[EMAIL PROTECTED]/; + +/** \ingroup py_c + */ PyObject * rpmReadHeaders (FD_t fd) /[EMAIL PROTECTED]/; @@ . patch -p0 <<'@@ .' Index: rpm/python/rpmmodule.c $ cvs diff -u -r1.174 -r1.175 rpmmodule.c --- rpm/python/rpmmodule.c17 Aug 200
[CVS] RPM: rpm/ CHANGES rpm/python/ header-py.c header-py.h rpmmodule....
RPM Package Manager, CVS Repository http://rpm5.org/cvs/ Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: [EMAIL PROTECTED] Module: rpm Date: 04-Dec-2007 23:41:54 Branch: HEAD Handle: 2007120422415301 Modified files: rpm CHANGES rpm/python header-py.c header-py.h rpmmodule.c rpm/rpmdb librpmdb.vers rpm/rpmio rpmnss.h rpmpgp.c Log: - jbj: resurrect rpmMergeHeadersFromFD goop. Yah, mon, DEAD code ... - jbj: re-add symbols needed for rpm-python import to loader map. - jbj: stub in WITH_NSS define to try rpmnss. Yep, borked, but now tested. Summary: RevisionChanges Path 1.1936 +3 -0 rpm/CHANGES 1.88+101 -0 rpm/python/header-py.c 1.14+4 -2 rpm/python/header-py.h 1.160 +2 -0 rpm/python/rpmmodule.c 1.39+1 -0 rpm/rpmdb/librpmdb.vers 1.3 +2 -0 rpm/rpmio/rpmnss.h 2.77+9 -1 rpm/rpmio/rpmpgp.c patch -p0 <<'@@ .' Index: rpm/CHANGES $ cvs diff -u -r1.1935 -r1.1936 CHANGES --- rpm/CHANGES 4 Dec 2007 19:45:58 - 1.1935 +++ rpm/CHANGES 4 Dec 2007 22:41:53 - 1.1936 @@ -1,4 +1,7 @@ 5.0a4 -> 5.0b1: +- jbj: resurrect rpmMergeHeadersFromFD goop. Yah, mon, DEAD code ... +- jbj: re-add symbols needed for rpm-python import to loader map. +- jbj: stub in WITH_NSS define to try rpmnss. Yep, borked, but now tested. - jbj: complete rpmnss.[ch] implementation (untested). - jbj: stub in the rpmnss.[ch] implementation. - jbj: pluggable RSA/DSA signature verification framework. @@ . patch -p0 <<'@@ .' Index: rpm/python/header-py.c $ cvs diff -u -r1.87 -r1.88 header-py.c --- rpm/python/header-py.c1 Dec 2007 17:58:47 - 1.87 +++ rpm/python/header-py.c4 Dec 2007 22:41:53 - 1.88 @@ -756,6 +756,107 @@ return list; } +#if defined(DEAD) +/** + * This assumes the order of list matches the order of the new headers, and + * throws an exception if that isn't true. + */ +int rpmMergeHeaders(PyObject * list, FD_t fd, rpmTag matchTag) +{ +HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); +Header h; +HeaderIterator hi; +rpmTagData newMatch; +rpmTagData oldMatch; +hdrObject * hdr; +rpmTagCount count = 0; +const char item[] = "Header"; +rpmRC rc; +int xx; + +Py_BEGIN_ALLOW_THREADS +h = NULL; +rc = rpmpkgRead(item, fd, &h, NULL); +Py_END_ALLOW_THREADS + +while (h) { + he->tag = matchTag; + xx = headerGet(h, he, 0); + newMatch.ui32p = he->p.ui32p; + if (!xx) { + PyErr_SetString(pyrpmError, "match tag missing in new header"); + return 1; + } + + hdr = (hdrObject *) PyList_GetItem(list, count++); + if (!hdr) return 1; + + he->tag = matchTag; + xx = headerGet(h, he, 0); + oldMatch.ui32p = he->p.ui32p; + if (!xx) { + PyErr_SetString(pyrpmError, "match tag missing in new header"); + return 1; + } + + if (*newMatch.ui32p != *oldMatch.ui32p) { + PyErr_SetString(pyrpmError, "match tag mismatch"); + return 1; + } + + for (hi = headerInit(h); + headerNext(hi, he, 0); + he->p.ptr = _free(he->p.ptr)) + { + /* could be dupes */ + headerDel(hdr->h, he, 0); + headerPut(hdr->h, he, 0); + } + hi = headerFini(hi); + h = headerFree(h); + + Py_BEGIN_ALLOW_THREADS + h = NULL; + rc = rpmpkgRead(item, fd, &h, NULL); + Py_END_ALLOW_THREADS +} + +return 0; +} + +PyObject * +rpmMergeHeadersFromFD(PyObject * self, PyObject * args, PyObject * kwds) +{ +FD_t fd; +int fileno; +PyObject * list; +int rc; +rpmTag matchTag; +char * kwlist[] = {"list", "fd", "matchTag", NULL}; + +if (!PyArg_ParseTupleAndKeywords(args, kwds, "Oii", kwlist, &list, + &fileno, &matchTag)) + return NULL; + +if (!PyList_Check(list)) { + PyErr_SetString(PyExc_TypeError, "first parameter must be a list"); + return NULL; +} + +fd = fdDup(fileno); + +rc = rpmMergeHeaders (list, fd, matchTag); +Fclose(fd); + +if (rc) { + return NULL; +} + +Py_INCREF(Py_None); +return Py_None; +} +#en