- python: bare bones rollback bindings.
CVS patchset: 5600 CVS date: 2002/08/05 16:25:39
This commit is contained in:
parent
7132723815
commit
3a99677e95
1
CHANGES
1
CHANGES
|
@ -214,6 +214,7 @@
|
||||||
- provide repackage progress callbacks, compression is slow.
|
- provide repackage progress callbacks, compression is slow.
|
||||||
- fix: don't repackage %%ghost files.
|
- fix: don't repackage %%ghost files.
|
||||||
- add --predefine to define macros before reading macro configuration.
|
- add --predefine to define macros before reading macro configuration.
|
||||||
|
- python: bare bones rollback bindings.
|
||||||
|
|
||||||
4.0.3 -> 4.0.4:
|
4.0.3 -> 4.0.4:
|
||||||
- solaris: translate i86pc to i386 (#57182).
|
- solaris: translate i86pc to i386 (#57182).
|
||||||
|
|
|
@ -10,8 +10,7 @@
|
||||||
#define PyObject_HEAD int _PyObjectHead;
|
#define PyObject_HEAD int _PyObjectHead;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <rpmlib.h>
|
#include <rpmcli.h>
|
||||||
#include <rpmmacro.h>
|
|
||||||
|
|
||||||
#include "header-py.h"
|
#include "header-py.h"
|
||||||
#include "rpmdb-py.h"
|
#include "rpmdb-py.h"
|
||||||
|
@ -222,6 +221,7 @@ fprintf(stderr, "*** rpmts_AddInstall(%p) ts %p\n", s, s->ts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \ingroup python
|
/** \ingroup python
|
||||||
|
* @todo Permit finer control (i.e. not just --allmatches) of deleted elments.
|
||||||
*/
|
*/
|
||||||
static PyObject *
|
static PyObject *
|
||||||
rpmts_AddErase(rpmtsObject * s, PyObject * args)
|
rpmts_AddErase(rpmtsObject * s, PyObject * args)
|
||||||
|
@ -247,9 +247,8 @@ fprintf(stderr, "*** rpmts_AddErase(%p) ts %p\n", s, s->ts);
|
||||||
Header h;
|
Header h;
|
||||||
while ((h = rpmdbNextIterator(mi)) != NULL) {
|
while ((h = rpmdbNextIterator(mi)) != NULL) {
|
||||||
unsigned int recOffset = rpmdbGetIteratorOffset(mi);
|
unsigned int recOffset = rpmdbGetIteratorOffset(mi);
|
||||||
if (recOffset) {
|
if (recOffset)
|
||||||
rpmtsAddEraseElement(s->ts, h, recOffset);
|
rpmtsAddEraseElement(s->ts, h, recOffset);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rpmdbFreeIterator(mi);
|
rpmdbFreeIterator(mi);
|
||||||
|
@ -277,7 +276,10 @@ fprintf(stderr, "*** rpmts_Check(%p) ts %p\n", s, s->ts);
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, "|i:Check", &allSuggestions)) return NULL;
|
if (!PyArg_ParseTuple(args, "|i:Check", &allSuggestions)) return NULL;
|
||||||
|
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
xx = rpmtsCheck(s->ts);
|
xx = rpmtsCheck(s->ts);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
ps = rpmtsProblems(s->ts);
|
ps = rpmtsProblems(s->ts);
|
||||||
if (ps) {
|
if (ps) {
|
||||||
list = PyList_New(0);
|
list = PyList_New(0);
|
||||||
|
@ -362,7 +364,9 @@ fprintf(stderr, "*** rpmts_Order(%p) ts %p\n", s, s->ts);
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, ":Order")) return NULL;
|
if (!PyArg_ParseTuple(args, ":Order")) return NULL;
|
||||||
|
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
xx = rpmtsOrder(s->ts);
|
xx = rpmtsOrder(s->ts);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
|
@ -386,6 +390,126 @@ fprintf(stderr, "*** rpmts_Clean(%p) ts %p\n", s, s->ts);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** \ingroup python
|
||||||
|
*/
|
||||||
|
static PyObject *
|
||||||
|
rpmts_IDTXload(rpmtsObject * s, PyObject * args)
|
||||||
|
/*@globals _Py_NoneStruct @*/
|
||||||
|
/*@modifies s, _Py_NoneStruct @*/
|
||||||
|
{
|
||||||
|
PyObject * result = NULL;
|
||||||
|
rpmTag tag = RPMTAG_INSTALLTID;
|
||||||
|
IDTX idtx;
|
||||||
|
|
||||||
|
if (_rpmts_debug)
|
||||||
|
fprintf(stderr, "*** rpmts_IDTXload(%p) ts %p\n", s, s->ts);
|
||||||
|
|
||||||
|
if (!PyArg_ParseTuple(args, ":IDTXload")) return NULL;
|
||||||
|
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
|
idtx = IDTXload(s->ts, tag);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
|
if (idtx == NULL || idtx->nidt <= 0) {
|
||||||
|
result = Py_None;
|
||||||
|
} else {
|
||||||
|
PyObject * tuple;
|
||||||
|
IDT idt;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
result = PyTuple_New(idtx->nidt);
|
||||||
|
for (i = 0; i < idtx->nidt; i++) {
|
||||||
|
idt = idtx->idt + i;
|
||||||
|
tuple = Py_BuildValue("(iO)", idt->val.u32, hdr_Wrap(idt->h));
|
||||||
|
PyTuple_SET_ITEM(result, i, tuple);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
idtx = IDTXfree(idtx);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \ingroup python
|
||||||
|
*/
|
||||||
|
static PyObject *
|
||||||
|
rpmts_IDTXglob(rpmtsObject * s, PyObject * args)
|
||||||
|
/*@globals _Py_NoneStruct @*/
|
||||||
|
/*@modifies s, _Py_NoneStruct @*/
|
||||||
|
{
|
||||||
|
PyObject * result = NULL;
|
||||||
|
rpmTag tag = RPMTAG_REMOVETID;
|
||||||
|
const char * globstr;
|
||||||
|
IDTX idtx;
|
||||||
|
|
||||||
|
if (_rpmts_debug)
|
||||||
|
fprintf(stderr, "*** rpmts_IDTXglob(%p) ts %p\n", s, s->ts);
|
||||||
|
|
||||||
|
if (!PyArg_ParseTuple(args, ":IDTXglob")) return NULL;
|
||||||
|
|
||||||
|
globstr = rpmExpand("%{_repackage_dir}/*.rpm", NULL);
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
|
idtx = IDTXglob(s->ts, globstr, tag);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
globstr = _free(globstr);
|
||||||
|
|
||||||
|
if (idtx->nidt <= 0) {
|
||||||
|
result = Py_None;
|
||||||
|
} else {
|
||||||
|
PyObject * tuple;
|
||||||
|
IDT idt;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
result = PyTuple_New(idtx->nidt);
|
||||||
|
for (i = 0; i < idtx->nidt; i++) {
|
||||||
|
idt = idtx->idt + i;
|
||||||
|
tuple = Py_BuildValue("(iO)", idt->val.u32, hdr_Wrap(idt->h));
|
||||||
|
PyTuple_SET_ITEM(result, i, tuple);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
idtx = IDTXfree(idtx);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** \ingroup python
|
||||||
|
*/
|
||||||
|
static PyObject *
|
||||||
|
rpmts_Rollback(rpmtsObject * s, PyObject * args)
|
||||||
|
/*@globals _Py_NoneStruct @*/
|
||||||
|
/*@modifies s, _Py_NoneStruct @*/
|
||||||
|
{
|
||||||
|
struct rpmInstallArguments_s * ia = alloca(sizeof(*ia));
|
||||||
|
rpmtransFlags transFlags;
|
||||||
|
const char ** av = NULL;
|
||||||
|
uint_32 rbtid;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if (_rpmts_debug)
|
||||||
|
fprintf(stderr, "*** rpmts_Rollback(%p) ts %p\n", s, s->ts);
|
||||||
|
|
||||||
|
if (!PyArg_ParseTuple(args, "u:Rollback", &rbtid)) return NULL;
|
||||||
|
|
||||||
|
memset(ia, 0, sizeof(*ia));
|
||||||
|
ia->qva_flags = (VERIFY_DIGEST|VERIFY_SIGNATURE|VERIFY_HDRCHK);
|
||||||
|
ia->transFlags |= (INSTALL_UPGRADE|INSTALL_FRESHEN|INSTALL_INSTALL);
|
||||||
|
ia->transFlags |= RPMTRANS_FLAG_NOMD5;
|
||||||
|
ia->installInterfaceFlags = (INSTALL_UPGRADE|INSTALL_FRESHEN|INSTALL_INSTALL);
|
||||||
|
ia->rbtid = rbtid;
|
||||||
|
ia->relocations = NULL;
|
||||||
|
ia->probFilter |= RPMPROB_FILTER_OLDPACKAGE;
|
||||||
|
|
||||||
|
transFlags = rpmtsSetFlags(s->ts, ia->transFlags);
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
|
rc = rpmRollback(s->ts, ia, av);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
transFlags = rpmtsSetFlags(s->ts, transFlags);
|
||||||
|
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
|
||||||
/** \ingroup python
|
/** \ingroup python
|
||||||
*/
|
*/
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
@ -464,7 +588,9 @@ fprintf(stderr, "*** rpmts_RebuildDB(%p) ts %p\n", s, s->ts);
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, ":RebuildDB")) return NULL;
|
if (!PyArg_ParseTuple(args, ":RebuildDB")) return NULL;
|
||||||
|
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
xx = rpmtsRebuildDB(s->ts);
|
xx = rpmtsRebuildDB(s->ts);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
|
@ -484,7 +610,9 @@ fprintf(stderr, "*** rpmts_VerifyDB(%p) ts %p\n", s, s->ts);
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args, ":VerifyDB")) return NULL;
|
if (!PyArg_ParseTuple(args, ":VerifyDB")) return NULL;
|
||||||
|
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
xx = rpmtsVerifyDB(s->ts);
|
xx = rpmtsVerifyDB(s->ts);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
|
@ -679,7 +807,10 @@ static PyObject * rpmts_Run(rpmtsObject * s, PyObject * args)
|
||||||
if (_rpmts_debug)
|
if (_rpmts_debug)
|
||||||
fprintf(stderr, "*** rpmts_Run(%p) ts %p flags %x ignore %x\n", s, s->ts, s->ts->transFlags, ignoreSet);
|
fprintf(stderr, "*** rpmts_Run(%p) ts %p flags %x ignore %x\n", s, s->ts, s->ts->transFlags, ignoreSet);
|
||||||
|
|
||||||
|
Py_BEGIN_ALLOW_THREADS
|
||||||
rc = rpmtsRun(s->ts, NULL, ignoreSet);
|
rc = rpmtsRun(s->ts, NULL, ignoreSet);
|
||||||
|
Py_END_ALLOW_THREADS
|
||||||
|
|
||||||
ps = rpmtsProblems(s->ts);
|
ps = rpmtsProblems(s->ts);
|
||||||
|
|
||||||
if (cbInfo.pythonError) {
|
if (cbInfo.pythonError) {
|
||||||
|
@ -847,6 +978,12 @@ static struct PyMethodDef rpmts_methods[] = {
|
||||||
NULL },
|
NULL },
|
||||||
{"clean", (PyCFunction) rpmts_Clean, METH_VARARGS,
|
{"clean", (PyCFunction) rpmts_Clean, METH_VARARGS,
|
||||||
NULL },
|
NULL },
|
||||||
|
{"IDTXload", (PyCFunction) rpmts_IDTXload, METH_VARARGS,
|
||||||
|
NULL },
|
||||||
|
{"IDTXglob", (PyCFunction) rpmts_IDTXglob, METH_VARARGS,
|
||||||
|
NULL },
|
||||||
|
{"rollback", (PyCFunction) rpmts_Rollback, METH_VARARGS,
|
||||||
|
NULL },
|
||||||
{"openDB", (PyCFunction) rpmts_OpenDB, METH_VARARGS,
|
{"openDB", (PyCFunction) rpmts_OpenDB, METH_VARARGS,
|
||||||
"ts.openDB() -> None\n\
|
"ts.openDB() -> None\n\
|
||||||
- Open the default transaction rpmdb.\n\
|
- Open the default transaction rpmdb.\n\
|
||||||
|
|
|
@ -17,7 +17,7 @@ Name: rpm
|
||||||
%define version @VERSION@
|
%define version @VERSION@
|
||||||
Version: %{version}
|
Version: %{version}
|
||||||
%{expand: %%define rpm_version %{version}}
|
%{expand: %%define rpm_version %{version}}
|
||||||
Release: 0.68
|
Release: 0.69
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
Source: ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.0.x/rpm-%{rpm_version}.tar.gz
|
Source: ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.0.x/rpm-%{rpm_version}.tar.gz
|
||||||
Copyright: GPL
|
Copyright: GPL
|
||||||
|
@ -517,6 +517,9 @@ fi
|
||||||
%{__prefix}/include/popt.h
|
%{__prefix}/include/popt.h
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 5 2002 Jeff Johnson <jbj@redhat.com> 4.1-0.69
|
||||||
|
- python: bare bones rollback bindings.
|
||||||
|
|
||||||
* Sun Aug 4 2002 Jeff Johnson <jbj@redhat.com> 4.1-0.68
|
* Sun Aug 4 2002 Jeff Johnson <jbj@redhat.com> 4.1-0.68
|
||||||
- resurrect --rollback.
|
- resurrect --rollback.
|
||||||
- renumber the callback types to be an orthogonal bit mask.
|
- renumber the callback types to be an orthogonal bit mask.
|
||||||
|
|
Loading…
Reference in New Issue