From c187e828e1661d09a8437214b2f90dcc25c05c99 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 18 Nov 2005 01:01:37 +0000 Subject: * basic pkgAcquire + pkgPackageManager support added --- python/pkgmanager.cc | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 python/pkgmanager.cc (limited to 'python/pkgmanager.cc') diff --git a/python/pkgmanager.cc b/python/pkgmanager.cc new file mode 100644 index 00000000..9504fd94 --- /dev/null +++ b/python/pkgmanager.cc @@ -0,0 +1,109 @@ +// 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 "acquire.h" +#include "sourcelist.h" +#include "pkgrecords.h" + +#include +#include + +#include + + +struct PkgManagerStruct +{ + pkgPackageManager pm; +}; + +static PyObject *PkgManagerGetArchives(PyObject *Self,PyObject *Args) +{ + PkgManagerStruct &Struct = GetCpp(Self); + PyObject *fetcher, *list, *recs; + + if (PyArg_ParseTuple(Args, "O!O!O!", + &PkgAcquireType,&fetcher, + &PkgSourceListType, &list, + &PkgRecordsType, &recs) == 0) + return 0; + + PkgAcquireStruct &s_fetcher = GetCpp(fetcher); + PkgSourceListStruct &s_list = GetCpp(list); + PkgRecordsStruct &s_records = GetCpp(recs); + + bool res = Struct.pm.GetArchives(&s_fetcher.fetcher, + &s_list.List, + &s_records.Records); + + return HandleErrors(Py_None); +} + + +static PyMethodDef PkgManagerMethods[] = +{ + {"GetArchives",PkgManagerGetArchives,METH_VARARGS,"Load the selected archvies into the fetcher"}, + {} +}; + + +static PyObject *PkgManagerAttr(PyObject *Self,char *Name) +{ + PkgManagerStruct &Struct = 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(CppOwnedPyObject), // tp_basicsize + 0, // tp_itemsize + // Methods + CppOwnedDealloc, // 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 +}; + +PyObject *GetPkgManager(PyObject *Self,PyObject *Args) +{ + PyObject *Owner; + if (PyArg_ParseTuple(Args,"O!",&PkgDepCacheType,&Owner) == 0) + return 0; + + pkgPackageManager *pm = _system->CreatePM(GetCpp(Owner)); + + CppOwnedPyObject *PkgManagerObj = + CppOwnedPyObject_NEW(0,&PkgManagerType, *pm); + + return PkgManagerObj; +} + + + + + /*}}}*/ -- cgit v1.2.3