[packages/poldek] - lazy evaluate 'or' deps - fix 'if' and 'unless' return values - rel 11
baggins
baggins at pld-linux.org
Sat May 21 10:32:09 CEST 2022
commit c6ad8d0d7c7721b619e7ec4cb8cbe7bc8c776725
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sat May 21 10:31:12 2022 +0200
- lazy evaluate 'or' deps
- fix 'if' and 'unless' return values
- rel 11
boolean-deps.patch | 19 +++++++++++--------
poldek.spec | 2 +-
2 files changed, 12 insertions(+), 9 deletions(-)
---
diff --git a/poldek.spec b/poldek.spec
index fd68e60..dd21354 100644
--- a/poldek.spec
+++ b/poldek.spec
@@ -22,7 +22,7 @@
%define ver_rpm 1:4.14
%endif
-%define rel 10
+%define rel 11
Summary: RPM packages management helper tool
Summary(hu.UTF-8): RPM csomagkezelést segítő eszköz
Summary(pl.UTF-8): Pomocnicze narzędzie do zarządzania pakietami RPM
diff --git a/boolean-deps.patch b/boolean-deps.patch
index 180820c..a5429e8 100644
--- a/boolean-deps.patch
+++ b/boolean-deps.patch
@@ -207,7 +207,7 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
static int process_req(int indent, struct i3ctx *ictx,
struct i3pkg *i3pkg, const struct capreq *req)
{
-@@ -653,6 +806,46 @@
+@@ -653,6 +806,49 @@
return rc;
}
@@ -219,27 +219,30 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
+ rcl = process_req(indent, ictx, i3pkg, breq->req);
+ else
+ rcl = process_boolean_req(indent, ictx, i3pkg, breq->left);
-+ if (breq->right)
-+ rcr = process_boolean_req(indent, ictx, i3pkg, breq->right);
-+ else
-+ return rcl;
++ if (breq->op != CAPREQ_BOOL_OP_OR)
++ if (breq->right)
++ rcr = process_boolean_req(indent, ictx, i3pkg, breq->right);
++ else
++ return rcl;
+ switch (breq->op) {
+ case CAPREQ_BOOL_OP_AND:
+ return (rcl > 0 && rcr > 0) ? 1 : -1;
+ case CAPREQ_BOOL_OP_OR:
-+ return (rcl > 0 || rcr > 0) ? 1 : -1;
++ if (rcl <= 0 && breq->right)
++ return process_boolean_req(indent, ictx, i3pkg, breq->right);
++ return rcl;
+ case CAPREQ_BOOL_OP_IF:
+ if (rcr > 0)
+ return rcl;
+ if (breq->leftn)
+ return process_boolean_req(indent, ictx, i3pkg, breq->leftn);
-+ return -1;
++ return 1;
+ case CAPREQ_BOOL_OP_UNLESS:
+ if (rcr <= 0)
+ return rcl;
+ if (breq->leftn)
+ return process_boolean_req(indent, ictx, i3pkg, breq->leftn);
-+ return -1;
++ return 1;
+ case CAPREQ_BOOL_OP_WITH:
+ // TODO: check that both deps are stisfied by the same package
+ return (rcl > 0 && rcr > 0) ? 1 : -1;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/poldek.git/commitdiff/c6ad8d0d7c7721b619e7ec4cb8cbe7bc8c776725
More information about the pld-cvs-commit
mailing list