// Description /*{{{*/
// $Id: acquire.cc,v 1.1 2003/06/03 03:03:23 mvo Exp $
/* ######################################################################
PkgManager - Wrapper for the pkgPackageManager code
##################################################################### */
#include "generic.h"
#include "apt_pkgmodule.h"
#include "pkgrecords.h"
#include
#include
#include
#include
#include
#include
static PyObject *PkgManagerGetArchives(PyObject *Self,PyObject *Args)
{
pkgPackageManager *pm = GetCpp(Self);
PyObject *fetcher, *list, *recs;
if (PyArg_ParseTuple(Args, "O!O!O!",
&PkgAcquireType,&fetcher,
&PkgSourceListType, &list,
&PkgRecordsType, &recs) == 0)
return 0;
pkgAcquire *s_fetcher = GetCpp(fetcher);
pkgSourceList *s_list = GetCpp(list);
PkgRecordsStruct &s_records = GetCpp(recs);
bool res = pm->GetArchives(s_fetcher, s_list,
&s_records.Records);
return HandleErrors(Py_BuildValue("b",res));
}
static PyObject *PkgManagerDoInstall(PyObject *Self,PyObject *Args)
{
//PkgManagerStruct &Struct = GetCpp(Self);
pkgPackageManager *pm = GetCpp(Self);
int status_fd = -1;
if (PyArg_ParseTuple(Args, "|i", &status_fd) == 0)
return 0;
pkgPackageManager::OrderResult res = pm->DoInstall(status_fd);
return HandleErrors(Py_BuildValue("i",res));
}
static PyObject *PkgManagerFixMissing(PyObject *Self,PyObject *Args)
{
//PkgManagerStruct &Struct = GetCpp(Self);
pkgPackageManager *pm = GetCpp(Self);
if (PyArg_ParseTuple(Args, "") == 0)
return 0;
bool res = pm->FixMissing();
return HandleErrors(Py_BuildValue("b",res));
}
static PyMethodDef PkgManagerMethods[] =
{
{"GetArchives",PkgManagerGetArchives,METH_VARARGS,"Load the selected archives into the fetcher"},
{"DoInstall",PkgManagerDoInstall,METH_VARARGS,"Do the actual install"},
{"FixMissing",PkgManagerFixMissing,METH_VARARGS,"Fix the install if a pkg couldn't be downloaded"},
{}
};
static PyObject *PkgManagerAttr(PyObject *Self,char *Name)
{
//PkgManagerStruct &Struct = GetCpp(Self);
pkgPackageManager *pm = GetCpp(Self);
// some constants
if(strcmp("ResultCompleted",Name) == 0)
return Py_BuildValue("i", pkgPackageManager::Completed);
if(strcmp("ResultFailed",Name) == 0)
return Py_BuildValue("i", pkgPackageManager::Failed);
if(strcmp("ResultIncomplete",Name) == 0)
return Py_BuildValue("i", pkgPackageManager::Incomplete);
return Py_FindMethod(PkgManagerMethods,Self,Name);
}
PyTypeObject PkgManagerType =
{
PyObject_HEAD_INIT(&PyType_Type)
0, // ob_size
"PackageManager", // tp_name
sizeof(CppPyObject), // tp_basicsize
0, // tp_itemsize
// Methods
CppDealloc, // tp_dealloc
0, // tp_print
PkgManagerAttr, // tp_getattr
0, // tp_setattr
0, // tp_compare
0, // tp_repr
0, // tp_as_number
0, // tp_as_sequence
0, // tp_as_mapping
0, // tp_hash
};
#include
#include
PyObject *GetPkgManager(PyObject *Self,PyObject *Args)
{
PyObject *Owner;
if (PyArg_ParseTuple(Args,"O!",&PkgDepCacheType,&Owner) == 0)
return 0;
pkgPackageManager *pm = _system->CreatePM(GetCpp(Owner));
CppPyObject *PkgManagerObj =
CppPyObject_NEW(&PkgManagerType,pm);
return PkgManagerObj;
}
/*}}}*/