[packages/poldek] - don't signal failure on sub-deps of boolean dependecies - rel 13

baggins baggins at pld-linux.org
Wed Jun 8 20:53:16 CEST 2022


commit 28d3fe2cfefd0be9392cd47a0fd8e324c8d65e3f
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Wed Jun 8 20:52:05 2022 +0200

    - don't signal failure on sub-deps of boolean dependecies
    - rel 13

 boolean-deps.patch | 60 ++++++++++++++++++++++++++++++++++++++----------------
 poldek.spec        |  2 +-
 2 files changed, 43 insertions(+), 19 deletions(-)
---
diff --git a/poldek.spec b/poldek.spec
index d16d971..706ec64 100644
--- a/poldek.spec
+++ b/poldek.spec
@@ -22,7 +22,7 @@
 %define		ver_rpm		1:4.14
 %endif
 
-%define		rel	12
+%define		rel	13
 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 a5429e8..325d1c7 100644
--- a/boolean-deps.patch
+++ b/boolean-deps.patch
@@ -1,6 +1,6 @@
-diff -ur poldek-0.42.2-orig/capreq.h poldek-0.42.2/capreq.h
---- poldek-0.42.2-orig/capreq.h	2020-01-25 22:59:59.000000000 +0100
-+++ poldek-0.42.2/capreq.h	2022-05-20 16:50:58.746605571 +0200
+diff -ur poldek-0.42.2/capreq.h poldek-0.42.2-boolean-deps/capreq.h
+--- poldek-0.42.2/capreq.h	2020-01-25 22:59:59.000000000 +0100
++++ poldek-0.42.2-boolean-deps/capreq.h	2022-06-08 20:48:12.797280673 +0200
 @@ -58,6 +58,22 @@
      char    _buff[0];            /* for evr, first byte is always '\0' */
  };
@@ -24,9 +24,9 @@ diff -ur poldek-0.42.2-orig/capreq.h poldek-0.42.2/capreq.h
  /* CAUTION: side effects! */
  #define capreq_name(cr)     (cr)->name
  #define capreq_name_len(cr)     (cr)->namelen
-diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requirements.c
---- poldek-0.42.2-orig/install3/requirements.c	2020-04-06 14:24:18.000000000 +0200
-+++ poldek-0.42.2/install3/requirements.c	2022-05-20 17:05:57.456189112 +0200
+diff -ur poldek-0.42.2/install3/requirements.c poldek-0.42.2-boolean-deps/install3/requirements.c
+--- poldek-0.42.2/install3/requirements.c	2020-04-06 14:24:18.000000000 +0200
++++ poldek-0.42.2-boolean-deps/install3/requirements.c	2022-06-08 20:48:12.797280673 +0200
 @@ -16,13 +16,163 @@
  
  #include "ictx.h"
@@ -142,7 +142,8 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
 +        if (len)
 +            *len = q - cap;
 +        return breq;
-+    }
+     }
+-    return 0;
 +
 +    for (o = BooleanOps; o->n; o++)
 +        if (!strncmp(q, o->n, o->l))
@@ -182,8 +183,7 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
 +		breq->leftn->req = parse_single_dep(q, &parsed_len);
 +	    }
 +	}
-     }
--    return 0;
++    }
 +    while (*q == ' ')
 +        q++;
 +    if (*q != ')' && op != CAPREQ_BOOL_OP_AND && op != CAPREQ_BOOL_OP_OR) {
@@ -197,7 +197,7 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
  }
  
  static
-@@ -553,6 +703,9 @@
+@@ -553,8 +703,11 @@
  
  }
  
@@ -205,9 +205,22 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
 +// i3pkg - package to be installed
 +// req - dependency we are looking for
  static int process_req(int indent, struct i3ctx *ictx,
-                        struct i3pkg *i3pkg, const struct capreq *req)
+-                       struct i3pkg *i3pkg, const struct capreq *req)
++                       struct i3pkg *i3pkg, const struct capreq *req, int boolean)
  {
-@@ -653,6 +806,49 @@
+     struct poldek_ts *ts = ictx->ts; /* just for short */
+     struct pkg       *pkg, *tomark = NULL;
+@@ -644,7 +797,8 @@
+     else
+         errfmt = _("%s: req %s not found");
+ 
+-    i3_error(ictx, pkg, I3ERR_NOTFOUND, errfmt, pkg_id(pkg), strreq);
++    if (boolean == 0)
++        i3_error(ictx, pkg, I3ERR_NOTFOUND, errfmt, pkg_id(pkg), strreq);
+     rc = 0;
+ 
+  l_end:
+@@ -653,6 +807,49 @@
      return rc;
  }
  
@@ -216,7 +229,7 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
 +{
 +    int rcl, rcr, rce;
 +    if (breq->req)
-+        rcl = process_req(indent, ictx, i3pkg, breq->req);
++        rcl = process_req(indent, ictx, i3pkg, breq->req, 1);
 +    else
 +        rcl = process_boolean_req(indent, ictx, i3pkg, breq->left);
 +    if (breq->op != CAPREQ_BOOL_OP_OR)
@@ -257,7 +270,7 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
  
  static tn_array *with_suggests(int indent, struct i3ctx *ictx, struct pkg *pkg)
  {
-@@ -660,6 +853,7 @@
+@@ -660,6 +857,7 @@
      struct pkg *oldpkg = NULL;
      char *autochoice = NULL;    /* testing only */
      int i;
@@ -265,7 +278,7 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
  
      if (pkg->sugs == NULL)
          return NULL;
-@@ -693,8 +887,14 @@
+@@ -693,8 +891,14 @@
  
          //trace(indent, "%d) suggested %s", i, reqstr);
  
@@ -281,7 +294,7 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
  
          if (iset_provides(ictx->inset, req)) {
              trace(indent, "- %s: already marked", reqstr);
-@@ -791,6 +991,7 @@
+@@ -791,6 +995,7 @@
      const struct capreq *req = NULL;
      unsigned            itflags = PKG_ITER_REQIN;
      int                 nerrors = 0, backtrack = 0;
@@ -289,7 +302,7 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
  
      pkg = i3pkg->pkg;
      n_assert(pkg);
-@@ -806,10 +1007,16 @@
+@@ -806,10 +1011,18 @@
      while ((req = pkg_req_iter_get(it))) {
          int rc;
  
@@ -300,8 +313,10 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
 +                   capreq_stra(req), pkg->name ? pkg->name : "(null)");
 +            breq = parse_boolean_dep(capreq_name(req), 0, NULL);
 +            rc = process_boolean_req(indent + 2, ictx, i3pkg, breq);
++            if (rc <= 0)
++                i3_error(ictx, i3pkg->pkg, I3ERR_NOTFOUND, _("%s: req %s not found"), pkg_id(i3pkg->pkg), capreq_stra(req));
 +        } else {
-+            rc = process_req(indent, ictx, i3pkg, req);
++            rc = process_req(indent, ictx, i3pkg, req, 0);
 +        }
  
 -        if ((rc = process_req(indent, ictx, i3pkg, req)) <= 0) {
@@ -309,3 +324,12 @@ diff -ur poldek-0.42.2-orig/install3/requirements.c poldek-0.42.2/install3/requi
              nerrors++;
              if (rc < 0) {
                  backtrack = 1;
+@@ -836,7 +1049,7 @@
+ 
+ 		req = n_array_nth(suggests, i);
+ 
+-		if ((rc = process_req(indent, ictx, i3pkg, req)) <= 0) {
++		if ((rc = process_req(indent, ictx, i3pkg, req, 0)) <= 0) {
+         	    nerrors++;
+         	    if (rc < 0) {
+             		backtrack = 1;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/poldek.git/commitdiff/28d3fe2cfefd0be9392cd47a0fd8e324c8d65e3f



More information about the pld-cvs-commit mailing list