diff options
| author | Michael Vogt <michael.vogt@ubuntu.com> | 2005-11-22 11:21:49 +0000 |
|---|---|---|
| committer | Michael Vogt <michael.vogt@ubuntu.com> | 2005-11-22 11:21:49 +0000 |
| commit | f398b1a5833fdf50f8c0c541958d5770ea767be8 (patch) | |
| tree | 95d91a49f637820cd0b554cf381d35105b7e75cc /python | |
| parent | c26431eebbd6d9b90bba2498355e1874a15aba60 (diff) | |
| download | python-apt-f398b1a5833fdf50f8c0c541958d5770ea767be8.tar.gz | |
* fix in the pkgmanager.cc code (/me needs to be hit with a clue-stick)
Diffstat (limited to 'python')
| -rw-r--r-- | python/acquire.cc | 8 | ||||
| -rw-r--r-- | python/pkgmanager.cc | 56 |
2 files changed, 49 insertions, 15 deletions
diff --git a/python/acquire.cc b/python/acquire.cc index 91d75a6b..87f2717a 100644 --- a/python/acquire.cc +++ b/python/acquire.cc @@ -60,8 +60,12 @@ static PyObject *AcquireItemRepr(PyObject *Self) char S[300]; snprintf(S,sizeof(S),"<pkgAcquire::ItemIterator object: " - "DestFile:'%s' ID:%i>", - (*I)->DestFile.c_str(),(*I)->ID); + "Status: %i Complete: %i Local: %i IsTrusted: %i " + "FileSize: %i DestFile:'%s' " + "DescURI: '%s' ID:%i ErrorText: '%s'>", + (*I)->Status, (*I)->Complete, (*I)->Local, (*I)->IsTrusted(), + (*I)->FileSize, (*I)->DestFile.c_str(), (*I)->DescURI().c_str(), + (*I)->ID,(*I)->ErrorText.c_str()); return PyString_FromString(S); } diff --git a/python/pkgmanager.cc b/python/pkgmanager.cc index 9504fd94..b4c64d3e 100644 --- a/python/pkgmanager.cc +++ b/python/pkgmanager.cc @@ -14,18 +14,14 @@ #include <apt-pkg/packagemanager.h> #include <apt-pkg/pkgsystem.h> +#include <apt-pkg/error.h> #include <iostream> -struct PkgManagerStruct -{ - pkgPackageManager pm; -}; - static PyObject *PkgManagerGetArchives(PyObject *Self,PyObject *Args) { - PkgManagerStruct &Struct = GetCpp<PkgManagerStruct>(Self); + pkgPackageManager *pm = GetCpp<pkgPackageManager*>(Self); PyObject *fetcher, *list, *recs; if (PyArg_ParseTuple(Args, "O!O!O!", @@ -38,24 +34,53 @@ static PyObject *PkgManagerGetArchives(PyObject *Self,PyObject *Args) PkgSourceListStruct &s_list = GetCpp<PkgSourceListStruct>(list); PkgRecordsStruct &s_records = GetCpp<PkgRecordsStruct>(recs); - bool res = Struct.pm.GetArchives(&s_fetcher.fetcher, + bool res = pm->GetArchives(&s_fetcher.fetcher, &s_list.List, &s_records.Records); - return HandleErrors(Py_None); + return HandleErrors(Py_BuildValue("b",res)); +} + +static PyObject *PkgManagerDoInstall(PyObject *Self,PyObject *Args) +{ + //PkgManagerStruct &Struct = GetCpp<PkgManagerStruct>(Self); + pkgPackageManager *pm = GetCpp<pkgPackageManager*>(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<PkgManagerStruct>(Self); + pkgPackageManager *pm = GetCpp<pkgPackageManager*>(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 archvies 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<PkgManagerStruct>(Self); + //PkgManagerStruct &Struct = GetCpp<PkgManagerStruct>(Self); + pkgPackageManager *pm = GetCpp<pkgPackageManager*>(Self); // some constants if(strcmp("ResultCompleted",Name) == 0) @@ -74,10 +99,10 @@ PyTypeObject PkgManagerType = PyObject_HEAD_INIT(&PyType_Type) 0, // ob_size "PackageManager", // tp_name - sizeof(CppOwnedPyObject<PkgManagerStruct>), // tp_basicsize + sizeof(CppOwnedPyObject<pkgPackageManager*>), // tp_basicsize 0, // tp_itemsize // Methods - CppOwnedDealloc<PkgManagerStruct>, // tp_dealloc + CppOwnedDealloc<pkgPackageManager*>, // tp_dealloc 0, // tp_print PkgManagerAttr, // tp_getattr 0, // tp_setattr @@ -89,6 +114,9 @@ PyTypeObject PkgManagerType = 0, // tp_hash }; +#include <apt-pkg/init.h> +#include <apt-pkg/configuration.h> + PyObject *GetPkgManager(PyObject *Self,PyObject *Args) { PyObject *Owner; @@ -97,9 +125,11 @@ PyObject *GetPkgManager(PyObject *Self,PyObject *Args) pkgPackageManager *pm = _system->CreatePM(GetCpp<pkgDepCache*>(Owner)); - CppOwnedPyObject<pkgPackageManager> *PkgManagerObj = - CppOwnedPyObject_NEW<pkgPackageManager>(0,&PkgManagerType, *pm); + CppPyObject<pkgPackageManager*> *PkgManagerObj = + CppPyObject_NEW<pkgPackageManager*>(&PkgManagerType,pm); + // FIXME: mem-leak??? + Py_INCREF(PkgManagerObj); return PkgManagerObj; } |
