Update from anaconda.

CVS patchset: 3267
CVS date: 1999/09/07 22:48:55
This commit is contained in:
jbj 1999-09-07 22:48:55 +00:00
parent 002c65379f
commit 834db501ab
2 changed files with 67 additions and 20 deletions

View File

@ -9,6 +9,9 @@
#include "rpmlib.h"
#include "upgrade.h"
/* from lib/misc.c */
int rpmvercmp(const char * one, const char * two);
/* Forward types */
typedef struct rpmdbObject_s rpmdbObject;
@ -44,6 +47,9 @@ static PyObject * rpmHeaderFromFD(PyObject * self, PyObject * args);
static PyObject * findUpgradeSet(PyObject * self, PyObject * args);
static PyObject * errorSetCallback (PyObject * self, PyObject * args);
static PyObject * errorString (PyObject * self, PyObject * args);
static PyObject * versionCompare (PyObject * self, PyObject * args);
static PyObject * labelCompare (PyObject * self, PyObject * args);
static PyObject * rebuildDB (PyObject * self, PyObject * args);
static PyObject * rpmtransCreate(PyObject * self, PyObject * args);
static PyObject * rpmtransAdd(rpmtransObject * s, PyObject * args);
@ -64,10 +70,13 @@ static PyMethodDef rpmModuleMethods[] = {
{ "headerFromPackage", (PyCFunction) rpmHeaderFromPackage, METH_VARARGS, NULL },
{ "headerLoad", (PyCFunction) hdrLoad, METH_VARARGS, NULL },
{ "opendb", (PyCFunction) rpmOpenDB, METH_VARARGS, NULL },
{ "rebuilddb", (PyCFunction) rebuildDB, METH_VARARGS, NULL },
{ "readHeaderListFromFD", (PyCFunction) rpmHeaderFromFD, METH_VARARGS, NULL },
{ "readHeaderListFromFile", (PyCFunction) rpmHeaderFromFile, METH_VARARGS, NULL },
{ "errorSetCallback", (PyCFunction) errorSetCallback, METH_VARARGS, NULL },
{ "errorString", (PyCFunction) errorString, METH_VARARGS, NULL },
{ "versionCompare", (PyCFunction) versionCompare, METH_VARARGS, NULL },
{ "labelCompare", (PyCFunction) labelCompare, METH_VARARGS, NULL },
{ NULL }
} ;
@ -424,6 +433,14 @@ static rpmdbObject * rpmOpenDB(PyObject * self, PyObject * args) {
return o;
}
static PyObject * rebuildDB (PyObject * self, PyObject * args) {
char * root = "";
if (!PyArg_ParseTuple(args, "s", &root)) return NULL;
return Py_BuildValue("i", rpmdbRebuild(root));
}
static PyObject * rpmReadHeaders (FD_t fd) {
PyObject * list;
Header header;
@ -567,6 +584,43 @@ static PyObject * errorString (PyObject * self, PyObject * args) {
return PyString_FromString(rpmErrorString ());
}
static PyObject * versionCompare (PyObject * self, PyObject * args) {
hdrObject * h1, * h2;
if (!PyArg_ParseTuple(args, "O!O!", &hdrType, &h1, &hdrType, &h2)) return NULL;
return Py_BuildValue("i", rpmVersionCompare(h1->h, h2->h));
}
static PyObject * labelCompare (PyObject * self, PyObject * args) {
char *v1, *r1, *e1, *v2, *r2, *e2;
int rc;
if (!PyArg_ParseTuple(args, "(zzz)(zzz)",
&e1, &v1, &r1,
&e2, &v2, &r2)) return NULL;
if (e1 && !e2)
return Py_BuildValue("i", 1);
else if (!e1 && e2)
return Py_BuildValue("i", -1);
else if (e1 && e2) {
int ep1, ep2;
ep1 = atoi (e1);
ep2 = atoi (e2);
if (ep1 < ep2)
return Py_BuildValue("i", -1);
else if (ep1 > ep2)
return Py_BuildValue("i", 1);
}
rc = rpmvercmp(v1, v2);
if (rc)
return Py_BuildValue("i", rc);
return Py_BuildValue("i", rpmvercmp(r1, r2));
}
static PyObject * rpmHeaderFromPackage(PyObject * self, PyObject * args) {
hdrObject * h;
Header header;

View File

@ -3,27 +3,20 @@
import rpm
import os
def cb(what, amount, total, key, data):
if (what == rpm.RPMCALLBACK_INST_OPEN_FILE):
d = os.open(key, os.O_RDONLY)
return d
## fd = os.open('/mnt/redhat/comps/dist/6.0/i386/util-linux-2.9o-13.i386.rpm', 0)
## (hdr1, foo) = rpm.headerFromPackage (fd)
## os.close (fd)
## fd = os.open ('/mnt/redhat/comps/dist/6.1/i386/util-linux-2.9v-20.i386.rpm', 0)
## (hdr2, foo) = rpm.headerFromPackage (fd)
## os.close (fd)
fd = os.open('foo', os.O_RDONLY);
(h, isSource) = rpm.headerFromPackage(fd)
print "from foo:", h[rpm.RPMTAG_NAME]
os.close(fd)
## print rpm.versionCompare (hdr1, hdr1)
#list = rpm.readHeaderList('hdlist')
#print "got", len(list), "items"
## print rpm.labelCompare ((None, "2.9j", "14"), (None, "2.9j", "15"))
d = rpm.opendb(0)
ts = rpm.TransactionSet("/", d)
ts.add(h, "foo")
rc = ts.depcheck()
print rc
ts.order()
print "run", ts.run(rpm.RPMTRANS_FLAG_TEST, 0, cb, "arg")
db = rpm.opendb ()
rc = db.findpackage ("Xconfigurator")
for rec in rc:
print db[rec]
print db[rec]['name']