- python: the death of rpmdb-py.[ch], use ts.fooDB() methods instead.

- python: the death of rpm.headerFromPackage(), use ts.hdrFromFdno().
- python: permit direct ts.dbMatch() python iterations.
- python: the death of rpm.checksig(), use ts.hdrFromFdno() instead.

CVS patchset: 5603
CVS date: 2002/08/05 21:46:50
This commit is contained in:
jbj 2002-08-05 21:46:50 +00:00
parent bd5ee7affa
commit 5211039a20
9 changed files with 52 additions and 184 deletions

View File

@ -217,9 +217,13 @@
- python: bare bones rollback bindings.
- python: enable threads on callbacks and longish rpmlib calls.
- python: expose RPMTAG_SOURCEPACKAGE to identify source headers.
- python: eliminate headerFromPackage() tuple return, deprecated.
- python: eliminate rpm.headerFromPackage() tuple return, deprecated.
- python: add ts.hdrFromFdno(fdno) method.
- fix: check for lead magic, better error message on failure (#69751).
- python: the death of rpmdb-py.[ch], use ts.fooDB() methods instead.
- python: the death of rpm.headerFromPackage(), use ts.hdrFromFdno().
- python: permit direct ts.dbMatch() python iterations.
- python: the death of rpm.checksig(), use ts.hdrFromFdno() instead.
4.0.3 -> 4.0.4:
- solaris: translate i86pc to i386 (#57182).

View File

@ -66,7 +66,7 @@ poptmodule.so$(EXEEXT): $(poptmodule_so_OBJECTS)
# rpmrc-py.c rpmte-py.c rpmts-py.c
# rpmmodule.c header-py.c
splint_srcs = hash.c upgrade.c \
rpmal-py.c rpmds-py.c rpmdb-py.c rpmfd-py.c rpmfi-py.c rpmmi-py.c \
rpmal-py.c rpmds-py.c rpmfd-py.c rpmfi-py.c rpmmi-py.c \
rpmrc-py.c rpmte-py.c rpmts-py.c
.PHONY: lclint

View File

@ -33,16 +33,21 @@
* Header objects can be returned by database queries or loaded from a
* binary package on disk.
*
* The headerFromPackage function returns the package header from a
* package on disk.
* The ts.hdrFromFdno() function returns the package header from a
* package on disk, verifying package signatures and digests of the
* package while reading.
*
* Note: The older method rpm.headerFromPackage() which has been replaced
* by ts.hdrFromFdno() used to return a (hdr, isSource) tuple.
*
* Note: rpm.headerFromPackage() used to return a (hdr, isSource) tuple.
* If you need to distinguish source/binary headers, do:
* \code
* import os, rpm
*
* fd = os.open("/tmp/foo-1.0-1.i386.rpm", os.O_RDONLY)
* hdr = rpm.headerFromPackage(fd)
* ts = rpm.TranssactionSet()
* fdno = os.open("/tmp/foo-1.0-1.i386.rpm", os.O_RDONLY)
* hdr = ts.hdrFromFdno(fdno)
* os.close(fdno)
* if hdr[rpm.RPMTAG_SOURCEPACKAGE]:
* print "header is from a source package"
* else:
@ -72,7 +77,7 @@
* print hdr['release']
* \endcode
*
* This method of access is a bit slower because the name must be
* This method of access is a teensy bit slower because the name must be
* translated into the tag number dynamically. You also must make sure
* the strings in header lookups don't get translated, or the lookups
* will fail.
@ -865,49 +870,6 @@ Header hdrGetHeader(hdrObject * s)
return s->h;
}
/**
* @deprecated Use ts.hdrFromFdno() instead.
*/
PyObject * rpmHeaderFromPackage(PyObject * self, PyObject * args)
{
hdrObject * hdr;
Header h;
FD_t fd;
int rawFd;
rpmRC rc;
if (!PyArg_ParseTuple(args, "i", &rawFd)) return NULL;
fd = fdDup(rawFd);
{ rpmts ts;
ts = rpmtsCreate();
rc = rpmReadPackageFile(ts, fd, "rpmHeaderFromPackage", &h);
rpmtsFree(ts);
}
Fclose(fd);
switch (rc) {
case RPMRC_BADSIZE:
case RPMRC_OK:
hdr = hdr_Wrap(h);
h = headerFree(h); /* XXX ref held by hdr */
break;
case RPMRC_NOTFOUND:
Py_INCREF(Py_None);
hdr = (hdrObject *) Py_None;
break;
case RPMRC_FAIL:
case RPMRC_SHORTREAD:
default:
PyErr_SetString(pyrpmError, "error reading package");
return NULL;
}
return Py_BuildValue("N", hdr);
}
/**
*/
PyObject * hdrLoad(PyObject * self, PyObject * args)

View File

@ -43,7 +43,5 @@ PyObject * rhnLoad(PyObject * self, PyObject * args)
/*@*/;
PyObject * hdrLoad(PyObject * self, PyObject * args)
/*@*/;
PyObject * rpmHeaderFromPackage(PyObject * self, PyObject * args)
/*@*/;
#endif

View File

@ -11,8 +11,8 @@
#endif
#include <rpmlib.h>
#include <rpmdb.h>
#include "rpmdb-py.h"
#include "rpmmi-py.h"
#include "header-py.h"
@ -40,11 +40,7 @@
* \code
* import rpm
* ts = rpm.TransactionSet()
* mi = ts.dbMatch()
* while mi:
* h = mi.next()
* if not h:
* break
* for h in ts.dbMatch():
* print h['name']
* \endcode
*
@ -54,10 +50,7 @@
* import rpm
* ts = rpm.TransactionSet()
* mi = ts.dbMatch('name', "kernel")
* while mi:
* h = mi.next()
* if not h:
* break;
* for h in mi:
* print "%s-%s-%s" % (h['name'], h['version'], h['release'])
* \endcode
*
@ -68,10 +61,7 @@
* ts = rpm.TransactionSet()
* mi = ts.dbMatch()
* mi.pattern('name', rpm.RPMMIRE_GLOB, "XFree*")
* while mi:
* h = mi.next{}
* if not h:
* break;
* for h in mi:
* print "%s-%s-%s" % (h['name'], h['version'], h['release'])
* \endcode
*
@ -82,27 +72,6 @@
*/
/*@{*/
/**
*/
static PyObject *
rpmmi_Next(rpmmiObject * s, PyObject *args)
/*@globals _Py_NoneStruct @*/
/*@modifies s, _Py_NoneStruct @*/
{
Header h;
if (!PyArg_ParseTuple(args, ":Next"))
return NULL;
if (s->mi == NULL || (h = rpmdbNextIterator(s->mi)) == NULL) {
if (s->mi) s->mi = rpmdbFreeIterator(s->mi);
Py_INCREF(Py_None);
return Py_None;
}
return (PyObject *) hdr_Wrap(h);
}
#if Py_TPFLAGS_HAVE_ITER
/**
*/
static PyObject *
@ -128,7 +97,27 @@ rpmmi_iternext(rpmmiObject * s)
}
return (PyObject *) hdr_Wrap(h);
}
#endif
/**
*/
static PyObject *
rpmmi_Next(rpmmiObject * s, PyObject *args)
/*@globals _Py_NoneStruct @*/
/*@modifies s, _Py_NoneStruct @*/
{
PyObject * result;
if (!PyArg_ParseTuple(args, ":Next"))
return NULL;
result = rpmmi_iternext(s);
if (result == NULL) {
Py_INCREF(Py_None);
return Py_None;
}
return result;
}
/**
*/
@ -164,7 +153,7 @@ rpmmi_Pattern(rpmmiObject * s, PyObject * args)
static struct PyMethodDef rpmmi_methods[] = {
{"next", (PyCFunction) rpmmi_Next, METH_VARARGS,
"mi.next() -> hdr\n\
- Retrieve next header that matches.\n" },
- Retrieve next header that matches. Iterate directly in python if possible.\n" },
{"pattern", (PyCFunction) rpmmi_Pattern, METH_VARARGS,
"mi.pattern(TagN, mire_type, pattern)\n\
- Set a secondary match pattern on tags from retrieved header.\n" },
@ -185,7 +174,7 @@ static void rpmmi_dealloc(/*@only@*/ /*@null@*/ rpmmiObject * s)
/** \ingroup python
*/
static PyObject * rpmmi_getattr (rpmdbObject *s, char *name)
static PyObject * rpmmi_getattr (rpmmiObject *s, char *name)
/*@*/
{
return Py_FindMethod (rpmmi_methods, (PyObject *) s, name);
@ -249,13 +238,8 @@ PyTypeObject rpmmi_Type = {
rpmmiObject * rpmmi_Wrap(rpmdbMatchIterator mi)
{
rpmmiObject * mio;
rpmmiObject * mio = (rpmmiObject *) PyObject_NEW(rpmmiObject, &rpmmi_Type);
if (mi == NULL) {
Py_INCREF(Py_None);
return (rpmmiObject *) Py_None;
}
mio = (rpmmiObject *) PyObject_NEW(rpmmiObject, &rpmmi_Type);
if (mio == NULL) {
PyErr_SetString(pyrpmError, "out of memory creating rpmmiObject");
return NULL;

View File

@ -10,7 +10,8 @@
#define PyObject_HEAD int _PyObjectHead;
#endif
#include "rpmcli.h" /* XXX for rpmCheckSig */
#include <rpmcli.h> /* XXX for rpmCheckSig */
#include <rpmdb.h>
#include "legacy.h"
#include "misc.h"
@ -19,7 +20,6 @@
#include "header-py.h"
#include "rpmal-py.h"
#include "rpmdb-py.h"
#include "rpmds-py.h"
#include "rpmfd-py.h"
#include "rpmfi-py.h"
@ -178,33 +178,6 @@ static PyObject * findUpgradeSet(PyObject * self, PyObject * args)
return result;
}
#ifdef _LEGACY_BINDINGS_TOO
/**
*/
static PyObject * rpmInitDB(PyObject * self, PyObject * args)
{
char *root;
int forWrite = 0;
if (!PyArg_ParseTuple(args, "i|s", &forWrite, &root)) return NULL;
if (rpmdbInit(root, forWrite ? O_RDWR | O_CREAT: O_RDONLY)) {
char * errmsg = "cannot initialize database in %s";
char * errstr = NULL;
int errsize;
errsize = strlen(errmsg) + strlen(root);
errstr = alloca(errsize);
snprintf(errstr, errsize, errmsg, root);
PyErr_SetString(pyrpmError, errstr);
return NULL;
}
Py_INCREF(Py_None);
return(Py_None);
}
#endif
/**
*/
static PyObject * errorCB = NULL;
@ -277,32 +250,6 @@ static PyObject * errorString (PyObject * self, PyObject * args)
return PyString_FromString(rpmErrorString ());
}
/**
*/
static PyObject * checkSig (PyObject * self, PyObject * args)
{
char * filename;
int flags;
int rc = 255;
if (PyArg_ParseTuple(args, "si", &filename, &flags)) {
rpmts ts;
const char * av[2];
QVA_t ka = memset(alloca(sizeof(*ka)), 0, sizeof(*ka));
av[0] = filename;
av[1] = NULL;
ka->qva_mode = 'K';
ka->qva_flags = (VERIFY_DIGEST|VERIFY_SIGNATURE);
ka->sign = 0;
ka->passPhrase = NULL;
ts = rpmtsCreate();
rc = rpmcliSign(ts, ka, av);
rpmtsFree(ts);
}
return Py_BuildValue("i", rc);
}
/**
*/
static PyObject * setVerbosity (PyObject * self, PyObject * args)
@ -348,20 +295,10 @@ static PyMethodDef rpmModuleMethods[] = {
NULL },
{ "findUpgradeSet", (PyCFunction) findUpgradeSet, METH_VARARGS,
NULL },
{ "headerFromPackage", (PyCFunction) rpmHeaderFromPackage, METH_VARARGS,
NULL },
{ "headerLoad", (PyCFunction) hdrLoad, METH_VARARGS,
NULL },
{ "rhnLoad", (PyCFunction) rhnLoad, METH_VARARGS,
NULL },
#ifdef _LEGACY_BINDINGS_TOO
{ "initdb", (PyCFunction) rpmInitDB, METH_VARARGS,
NULL },
{ "opendb", (PyCFunction) rpmOpenDB, METH_VARARGS,
NULL },
{ "rebuilddb", (PyCFunction) rebuildDB, METH_VARARGS,
NULL },
#endif
{ "mergeHeaderListFromFD", (PyCFunction) rpmMergeHeadersFromFD, METH_VARARGS,
NULL },
{ "readHeaderListFromFD", (PyCFunction) rpmHeaderFromFD, METH_VARARGS,
@ -376,8 +313,6 @@ static PyMethodDef rpmModuleMethods[] = {
NULL },
{ "labelCompare", (PyCFunction) labelCompare, METH_VARARGS,
NULL },
{ "checksig", (PyCFunction) checkSig, METH_VARARGS,
NULL },
{ "setVerbosity", (PyCFunction) setVerbosity, METH_VARARGS,
NULL },
{ "setEpochPromote", (PyCFunction) setEpochPromote, METH_VARARGS,
@ -407,7 +342,6 @@ void initrpm(void)
#if Py_TPFLAGS_HAVE_ITER /* XXX backport to python-1.5.2 */
if (PyType_Ready(&hdr_Type) < 0) return;
if (PyType_Ready(&rpmal_Type) < 0) return;
if (PyType_Ready(&rpmdb_Type) < 0) return;
if (PyType_Ready(&rpmds_Type) < 0) return;
if (PyType_Ready(&rpmfd_Type) < 0) return;
if (PyType_Ready(&rpmfi_Type) < 0) return;
@ -445,9 +379,6 @@ void initrpm(void)
Py_INCREF(&rpmal_Type);
PyModule_AddObject(m, "al", (PyObject *) &rpmal_Type);
Py_INCREF(&rpmdb_Type);
PyModule_AddObject(m, "db", (PyObject *) &rpmdb_Type);
Py_INCREF(&rpmds_Type);
PyModule_AddObject(m, "ds", (PyObject *) &rpmds_Type);
@ -471,7 +402,6 @@ void initrpm(void)
#else
hdr_Type.ob_type = &PyType_Type;
rpmal_Type.ob_type = &PyType_Type;
rpmdb_Type.ob_type = &PyType_Type;
rpmds_Type.ob_type = &PyType_Type;
rpmfd_Type.ob_type = &PyType_Type;
rpmfi_Type.ob_type = &PyType_Type;

View File

@ -22,7 +22,6 @@ extern PyTypeObject PyDictIter_Type;
#if Py_TPFLAGS_HAVE_ITER /* XXX backport to python-1.5.2 */
#include "header-py.h" /* XXX debug only */
#include "rpmal-py.h" /* XXX debug only */
#include "rpmdb-py.h" /* XXX debug only */
#include "rpmds-py.h" /* XXX debug only */
#include "rpmfd-py.h" /* XXX debug only */
#include "rpmfi-py.h" /* XXX debug only */
@ -110,7 +109,6 @@ static const char * lbl(void * s)
if (o->ob_type == &hdr_Type) return "hdr";
if (o->ob_type == &rpmal_Type) return "rpmal";
if (o->ob_type == &rpmdb_Type) return "rpmdb";
if (o->ob_type == &rpmds_Type) return "rpmds";
if (o->ob_type == &rpmfd_Type) return "rpmfd";
if (o->ob_type == &rpmfi_Type) return "rpmfi";

View File

@ -1008,22 +1008,10 @@ static struct PyMethodDef rpmts_methods[] = {
{"addInstall", (PyCFunction) rpmts_AddInstall, METH_VARARGS,
NULL },
#ifdef _LEGACY_BINDINGS_TOO
{"add", (PyCFunction) rpmts_AddInstall, METH_VARARGS,
NULL },
#endif
{"addErase", (PyCFunction) rpmts_AddErase, METH_VARARGS,
NULL },
#ifdef _LEGACY_BINDINGS_TOO
{"remove", (PyCFunction) rpmts_AddErase, METH_VARARGS,
NULL },
#endif
{"check", (PyCFunction) rpmts_Check, METH_VARARGS,
NULL },
#ifdef _LEGACY_BINDINGS_TOO
{"depcheck", (PyCFunction) rpmts_Check, METH_VARARGS,
NULL },
#endif
{"order", (PyCFunction) rpmts_Order, METH_VARARGS,
NULL },
{"run", (PyCFunction) rpmts_Run, METH_VARARGS,

View File

@ -521,9 +521,13 @@ fi
- python: bare bones rollback bindings.
- python: enable threads on callbacks and longish rpmlib calls.
- python: expose RPMTAG_SOURCEPACKAGE to identify source headers.
- python: eliminate headerFromPackage() tuple return, deprecated.
- python: eliminate rpm.headerFromPackage() tuple return, deprecated.
- python: add ts.hdrFromFdno(fdno) method.
- fix: check for lead magic, better error message on failure (#69751).
- python: the death of rpmdb-py.[ch], use ts.fooDB() methods instead.
- python: the death of rpm.headerFromPackage(), use ts.hdrFromFdno().
- python: permit direct ts.dbMatch() python iterations.
- python: the death of rpm.checksig(), use ts.hdrFromFdno() instead.
* Sun Aug 4 2002 Jeff Johnson <jbj@redhat.com> 4.1-0.68
- resurrect --rollback.