summaryrefslogtreecommitdiff
path: root/python/pkgmanager.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-11-18 01:01:37 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-11-18 01:01:37 +0000
commitc187e828e1661d09a8437214b2f90dcc25c05c99 (patch)
treea08f97e80e66887baafa5bd41384ab78ff92b082 /python/pkgmanager.cc
parent4da233eef44c921152daf224a043ab8e2181ef9f (diff)
downloadpython-apt-c187e828e1661d09a8437214b2f90dcc25c05c99.tar.gz
* basic pkgAcquire + pkgPackageManager support added
Diffstat (limited to 'python/pkgmanager.cc')
-rw-r--r--python/pkgmanager.cc109
1 files changed, 109 insertions, 0 deletions
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 <apt-pkg/packagemanager.h>
+#include <apt-pkg/pkgsystem.h>
+
+#include <iostream>
+
+
+struct PkgManagerStruct
+{
+ pkgPackageManager pm;
+};
+
+static PyObject *PkgManagerGetArchives(PyObject *Self,PyObject *Args)
+{
+ PkgManagerStruct &Struct = GetCpp<PkgManagerStruct>(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<PkgAcquireStruct>(fetcher);
+ PkgSourceListStruct &s_list = GetCpp<PkgSourceListStruct>(list);
+ PkgRecordsStruct &s_records = GetCpp<PkgRecordsStruct>(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<PkgManagerStruct>(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<PkgManagerStruct>), // tp_basicsize
+ 0, // tp_itemsize
+ // Methods
+ CppOwnedDealloc<PkgManagerStruct>, // 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<pkgDepCache*>(Owner));
+
+ CppOwnedPyObject<pkgPackageManager> *PkgManagerObj =
+ CppOwnedPyObject_NEW<pkgPackageManager>(0,&PkgManagerType, *pm);
+
+ return PkgManagerObj;
+}
+
+
+
+
+ /*}}}*/