From 714392de4f3336e978f8751a61bb00974a34ab4b Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 20 Jul 2011 11:03:29 +0200 Subject: [PATCH] Fix import of database packages by checking the input a bit better. --- pakfire/constants.py | 2 +- pakfire/repository/index.py | 45 +++++++++++++++++++++++++++---------- po/pakfire.pot | 12 +++++++--- src/pool.c | 4 +++- src/relation.c | 5 ++++- src/solvable.c | 21 +++++++++++++++++ 6 files changed, 71 insertions(+), 18 deletions(-) diff --git a/pakfire/constants.py b/pakfire/constants.py index f1f86e8f0..bb2982e25 100644 --- a/pakfire/constants.py +++ b/pakfire/constants.py @@ -38,7 +38,7 @@ MAKEFILE_EXTENSION = "nm" PACKAGE_FILENAME_FMT = "%(name)s-%(version)s-%(release)s.%(arch)s.%(ext)s" -BUILD_PACKAGES = ["build-essentials",] +BUILD_PACKAGES = ["build-essentials=1:3.0-alpha2-19.ip3",] SHELL_PACKAGES = ["elinks", "less", "pakfire", "vim",] BUILD_ROOT = "/var/lib/pakfire/build" diff --git a/pakfire/repository/index.py b/pakfire/repository/index.py index 4714ad107..5a7494b83 100644 --- a/pakfire/repository/index.py +++ b/pakfire/repository/index.py @@ -79,25 +79,47 @@ class Index(object): pkg.friendly_version, pkg.arch) # Save metadata. - solvable.set_vendor(pkg.vendor) - solvable.set_hash1(pkg.hash1) + if pkg.vendor: + solvable.set_vendor(pkg.vendor) + + hash1 = pkg.hash1 + assert hash1 + solvable.set_hash1(hash1) + + assert pkg.uuid solvable.set_uuid(pkg.uuid) - solvable.set_maintainer(pkg.maintainer) - solvable.set_groups(" ".join(pkg.groups)) + + if pkg.maintainer: + solvable.set_maintainer(pkg.maintainer) + + if pkg.groups: + solvable.set_groups(" ".join(pkg.groups)) # Save upstream information (summary, description, license, url). - solvable.set_summary(pkg.summary) - solvable.set_description(pkg.description) - solvable.set_license(pkg.license) - solvable.set_url(pkg.url) + if pkg.summary: + solvable.set_summary(pkg.summary) + + if pkg.description: + solvable.set_description(pkg.description) + + if pkg.license: + solvable.set_license(pkg.license) + + if pkg.url: + solvable.set_url(pkg.url) # Save build information. - solvable.set_buildhost(pkg.build_host) - solvable.set_buildtime(pkg.build_time) + if pkg.build_host: + solvable.set_buildhost(pkg.build_host) + + if pkg.build_time: + solvable.set_buildtime(pkg.build_time) # Save filename. filename = os.path.basename(pkg.filename) + assert filename solvable.set_filename(filename) + solvable.set_downloadsize(pkg.size) solvable.set_installsize(pkg.inst_size) @@ -322,8 +344,7 @@ class IndexLocal(Index): i += 1 pb.update(i) - # XXX currently broken - #self.add_package(pkg) + self.add_package(pkg) if pb: pb.finish() diff --git a/po/pakfire.pot b/po/pakfire.pot index f1d2d7bb3..6293a9aae 100644 --- a/po/pakfire.pot +++ b/po/pakfire.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-07-17 12:07+0200\n" +"POT-Creation-Date: 2011-07-20 11:00+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -290,13 +290,19 @@ msgstr "" msgid "Requires" msgstr "" -#: ../pakfire/repository/index.py:216 +#: ../pakfire/repository/index.py:215 #, python-format msgid "%s: package database" msgstr "" +#. Create progress bar. +#: ../pakfire/repository/index.py:289 +#, python-format +msgid "Loading from %s" +msgstr "" + #. Add all packages from the database to the index. -#: ../pakfire/repository/index.py:317 +#: ../pakfire/repository/index.py:339 msgid "Loading installed packages" msgstr "" diff --git a/src/pool.c b/src/pool.c index 02befe528..eb530d6e2 100644 --- a/src/pool.c +++ b/src/pool.c @@ -46,7 +46,7 @@ PyObject* Pool_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { } PyObject *Pool_dealloc(PoolObject *self) { - // pool_free(self->_pool); + pool_free(self->_pool); self->ob_type->tp_free((PyObject *)self); } @@ -120,6 +120,7 @@ PyObject *Pool_search(PoolObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s|is", &match, &option, &keyname)) { /* XXX raise exception */ + return NULL; } return _Pool_search(self->_pool, NULL, match, option, keyname); @@ -142,6 +143,7 @@ PyObject *Pool_providers(PoolObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &name)) { /* XXX raise exception */ + return NULL; } Id id = pool_str2id(self->_pool, name, 0); diff --git a/src/relation.c b/src/relation.c index 779aac702..10020e6b3 100644 --- a/src/relation.c +++ b/src/relation.c @@ -18,11 +18,12 @@ PyObject* Relation_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { RelationObject *self; PoolObject *pool; const char *name; - const char *evr; + const char *evr = NULL; int flags = 0; if (!PyArg_ParseTuple(args, "Os|si", &pool, &name, &evr, &flags)) { /* XXX raise exception */ + return NULL; } Id _name = pool_str2id(pool->_pool, name, 1); @@ -44,4 +45,6 @@ PyObject* Relation_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { PyObject *Relation_dealloc(RelationObject *self) { self->ob_type->tp_free((PyObject *)self); + + Py_RETURN_NONE; } diff --git a/src/solvable.c b/src/solvable.c index c00bf6502..feb1a0095 100644 --- a/src/solvable.c +++ b/src/solvable.c @@ -24,6 +24,7 @@ PyObject* Solvable_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { if (!PyArg_ParseTuple(args, "Oss|s", &repo, &name, &evr, &arch)) { /* XXX raise exception */ + return NULL; } self = (SolvableObject *)type->tp_alloc(type, 0); @@ -48,6 +49,8 @@ PyObject* Solvable_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { PyObject *Solvable_dealloc(SolvableObject *self) { self->ob_type->tp_free((PyObject *)self); + + Py_RETURN_NONE; } PyObject *Solvable_get_name(SolvableObject *self) { @@ -88,6 +91,7 @@ PyObject *Solvable_set_vendor(SolvableObject *self, PyObject *args) { const char *vendor; if (!PyArg_ParseTuple(args, "s", &vendor)) { /* XXX raise exception */ + return NULL; } solvable->vendor = pool_str2id(self->_pool, vendor, 1); @@ -107,6 +111,7 @@ PyObject *Solvable_add_provides(SolvableObject *self, PyObject *args) { RelationObject *rel; if (!PyArg_ParseTuple(args, "O", &rel)) { /* XXX raise exception */ + return NULL; } solv->provides = repo_addid_dep(solv->repo, solv->provides, rel->_id, 0); @@ -152,6 +157,7 @@ PyObject *Solvable_add_requires(SolvableObject *self, PyObject *args) { RelationObject *rel; if (!PyArg_ParseTuple(args, "O", &rel)) { /* XXX raise exception */ + return NULL; } solv->requires = repo_addid_dep(solv->repo, solv->requires, rel->_id, 0); @@ -171,6 +177,7 @@ PyObject *Solvable_add_obsoletes(SolvableObject *self, PyObject *args) { RelationObject *rel; if (!PyArg_ParseTuple(args, "O", &rel)) { /* XXX raise exception */ + return NULL; } solv->obsoletes = repo_addid_dep(solv->repo, solv->obsoletes, rel->_id, 0); @@ -190,6 +197,7 @@ PyObject *Solvable_add_conflicts(SolvableObject *self, PyObject *args) { RelationObject *rel; if (!PyArg_ParseTuple(args, "O", &rel)) { /* XXX raise exception */ + return NULL; } solv->conflicts = repo_addid_dep(solv->repo, solv->conflicts, rel->_id, 0); @@ -210,6 +218,7 @@ PyObject *Solvable_set_uuid(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &uuid)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_PKGID, uuid); @@ -232,6 +241,7 @@ PyObject *Solvable_set_hash1(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &hash1)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_CHECKSUM, hash1); @@ -254,6 +264,7 @@ PyObject *Solvable_set_summary(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &summary)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_SUMMARY, summary); @@ -276,6 +287,7 @@ PyObject *Solvable_set_description(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &desc)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_DESCRIPTION, desc); @@ -299,6 +311,7 @@ PyObject *Solvable_set_url(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &url)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_URL, url); @@ -321,6 +334,7 @@ PyObject *Solvable_set_groups(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &groups)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_GROUP, groups); @@ -343,6 +357,7 @@ PyObject *Solvable_set_filename(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &filename)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_MEDIAFILE, filename); @@ -366,6 +381,7 @@ PyObject *Solvable_set_license(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &license)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_LICENSE, license); @@ -389,6 +405,7 @@ PyObject *Solvable_set_buildhost(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &buildhost)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_BUILDHOST, buildhost); @@ -412,6 +429,7 @@ PyObject *Solvable_set_maintainer(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "s", &maintainer)) { /* XXX raise exception */ + return NULL; } repo_set_str(solv->repo, self->_id, SOLVABLE_PACKAGER, maintainer); @@ -435,6 +453,7 @@ PyObject *Solvable_set_downloadsize(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "i", &downloadsize)) { /* XXX raise exception */ + return NULL; } repo_set_num(solv->repo, self->_id, SOLVABLE_DOWNLOADSIZE, downloadsize); @@ -458,6 +477,7 @@ PyObject *Solvable_set_installsize(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "i", &installedsize)) { /* XXX raise exception */ + return NULL; } repo_set_num(solv->repo, self->_id, SOLVABLE_INSTALLSIZE, installedsize); @@ -481,6 +501,7 @@ PyObject *Solvable_set_buildtime(SolvableObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, "i", &buildtime)) { /* XXX raise exception */ + return NULL; } repo_set_num(solv->repo, self->_id, SOLVABLE_BUILDTIME, buildtime); -- 2.47.3