From: Michael Tremer Date: Thu, 2 Nov 2017 18:14:50 +0000 (+0100) Subject: Don't execute a transaction when it is empty X-Git-Tag: 0.9.28~1285^2~1320 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b0b51211201c68fdcc44c841dd1e5452b0a8b1c;p=pakfire.git Don't execute a transaction when it is empty Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/transaction.c b/src/_pakfire/transaction.c index 6004f84db..2f84fd099 100644 --- a/src/_pakfire/transaction.c +++ b/src/_pakfire/transaction.c @@ -111,6 +111,10 @@ static PyObject* Transaction_dump(TransactionObject* self) { return PyUnicode_FromString(string); } +static Py_ssize_t Transaction_len(TransactionObject* self) { + return pakfire_transaction_count(self->transaction); +} + static struct PyMethodDef Transaction_methods[] = { { "dump", @@ -132,6 +136,10 @@ static struct PyGetSetDef Transaction_getsetters[] = { { NULL }, }; +static PySequenceMethods Transaction_sequence = { + sq_length: (lenfunc)Transaction_len, +}; + PyTypeObject TransactionType = { PyVarObject_HEAD_INIT(NULL, 0) tp_name: "_pakfire.Transaction", @@ -144,6 +152,7 @@ PyTypeObject TransactionType = { tp_methods: Transaction_methods, tp_getset: Transaction_getsetters, tp_iter: (getiterfunc)Transaction_iter, + tp_as_sequence: &Transaction_sequence, }; static PyObject* TransactionIterator_new(PyTypeObject* type, PyObject* args, PyObject* kwds) { diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index dee81712c..05024cd6e 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -263,6 +263,7 @@ global: pakfire_step_needs_download; # transaction + pakfire_transaction_count; pakfire_transaction_create; pakfire_transaction_dump; pakfire_transaction_free; diff --git a/src/pakfire/cli.py b/src/pakfire/cli.py index 70f8c8d42..105ba1e88 100644 --- a/src/pakfire/cli.py +++ b/src/pakfire/cli.py @@ -262,6 +262,12 @@ class Cli(object): self.ui.message(line) def _execute_transaction(self, transaction): + # Don't do anything if the transaction is empty + if len(transaction) == 0: + self.ui.message(_("Nothing to do")) + return + + # Dump the transaction self._dump_transaction(transaction) # Ask the user to confirm to go ahead