[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