Hello community,

here is the log from the commit of package libsolv for openSUSE:Factory checked 
in at 2019-09-02 13:23:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libsolv (Old)
 and      /work/SRC/openSUSE:Factory/.libsolv.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libsolv"

Mon Sep  2 13:23:25 2019 rev:73 rq:727216 version:0.7.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/libsolv/libsolv.changes  2019-07-29 
17:24:13.978350150 +0200
+++ /work/SRC/openSUSE:Factory/.libsolv.new.7948/libsolv.changes        
2019-09-02 13:23:27.365333816 +0200
@@ -1,0 +2,8 @@
+Wed Aug 28 14:49:19 CEST 2019 - [email protected]
+
+- Fix repository priority handling for multiversion packages
+- Make code compatible with swig 4.0, remove obj0 instances
+- repo2solv: support zchunk compressed data
+- bump version to 0.7.6
+
+-------------------------------------------------------------------

Old:
----
  libsolv-0.7.5.tar.bz2

New:
----
  libsolv-0.7.6.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libsolv.spec ++++++
--- /var/tmp/diff_new_pack.5MYkJB/_old  2019-09-02 13:23:27.857333723 +0200
+++ /var/tmp/diff_new_pack.5MYkJB/_new  2019-09-02 13:23:27.857333723 +0200
@@ -52,7 +52,7 @@
 %bcond_with zypp
 
 Name:           libsolv
-Version:        0.7.5
+Version:        0.7.6
 Release:        0
 Summary:        Package dependency solver using a satisfiability algorithm
 License:        BSD-3-Clause

++++++ libsolv-0.7.5.tar.bz2 -> libsolv-0.7.6.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/NEWS new/libsolv-0.7.6/NEWS
--- old/libsolv-0.7.5/NEWS      2019-06-12 13:45:06.000000000 +0200
+++ new/libsolv-0.7.6/NEWS      2019-08-28 15:02:38.000000000 +0200
@@ -2,6 +2,16 @@
 This file contains the major changes between
 libsolv versions:
 
+Version 0.7.6
+- selected bug fixes:
+  * fix repository priority handling for multiversion packages
+  * better support of inverval deps in pool_match_dep()
+  * support src rpms that have non-empty provides
+- new features
+  * bindings: add get_disabled_list() and set_disabled_list()
+  * bindings: add whatcontainsdep()
+  * bindings: make the selection filters return the self object
+
 Version 0.7.5
 - selected bug fixes:
   * fix favorq leaking between solver runs if the solver is reused
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/TODO_1.0 new/libsolv-0.7.6/TODO_1.0
--- old/libsolv-0.7.5/TODO_1.0  2019-04-08 13:29:14.000000000 +0200
+++ new/libsolv-0.7.6/TODO_1.0  2019-08-02 11:44:38.000000000 +0200
@@ -9,6 +9,10 @@
 
 - write more manpages
 
+- forcebest pruning is not optimal: it should keep multiple packages
+  with the same version instead of reducing to just one package for
+  each name
+
 IDEAS:
 
 drop SEARCH_FILES and add SEARCH_BASENAME instead?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/VERSION.cmake 
new/libsolv-0.7.6/VERSION.cmake
--- old/libsolv-0.7.5/VERSION.cmake     2019-06-12 13:45:06.000000000 +0200
+++ new/libsolv-0.7.6/VERSION.cmake     2019-08-28 15:02:38.000000000 +0200
@@ -49,5 +49,5 @@
 
 SET(LIBSOLV_MAJOR "0")
 SET(LIBSOLV_MINOR "7")
-SET(LIBSOLV_PATCH "5")
+SET(LIBSOLV_PATCH "6")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/bindings/solv.i 
new/libsolv-0.7.6/bindings/solv.i
--- old/libsolv-0.7.5/bindings/solv.i   2019-07-09 14:50:01.000000000 +0200
+++ new/libsolv-0.7.6/bindings/solv.i   2019-08-13 09:49:46.000000000 +0200
@@ -629,10 +629,8 @@
 %typemap(out) disown_helper {
 #if defined(SWIGRUBY)
   SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_Pool, SWIG_POINTER_DISOWN |  0 );
-#elif defined(SWIGPYTHON) && SWIG_VERSION < 0x040000
-  SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Pool, SWIG_POINTER_DISOWN |  0 );
 #elif defined(SWIGPYTHON)
-  SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Pool, SWIG_POINTER_DISOWN |  
0 );
+  SWIG_ConvertPtr($self, &argp1,SWIGTYPE_p_Pool, SWIG_POINTER_DISOWN |  0 );
 #elif defined(SWIGPERL)
   SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Pool, SWIG_POINTER_DISOWN |  0 );
 #elif defined(SWIGTCL)
@@ -656,7 +654,7 @@
 %define returnself(func)
 #if defined(SWIGPYTHON)
 %typemap(out) void func {
-  $result = obj0;
+  $result = $self;
   Py_INCREF($result);
 }
 #elif defined(SWIGPERL)
@@ -2011,6 +2009,14 @@
     pool_flush_namespaceproviders($self, ns, evr);
   }
 
+  %typemap(out) Queue whatcontainsdep Queue2Array(XSolvable *, 1, 
new_XSolvable(arg1, id));
+  %newobject whatcontainsdep;
+  Queue whatcontainsdep(Id keyname, DepId dep, Id marker = -1) {
+    Queue q;
+    queue_init(&q);
+    pool_whatcontainsdep($self, keyname, dep, &q, marker);
+    return q;
+  }
 
   %typemap(out) Queue whatmatchesdep Queue2Array(XSolvable *, 1, 
new_XSolvable(arg1, id));
   %newobject whatmatchesdep;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/doc/libsolv-bindings.txt 
new/libsolv-0.7.6/doc/libsolv-bindings.txt
--- old/libsolv-0.7.5/doc/libsolv-bindings.txt  2019-07-01 13:14:18.000000000 
+0200
+++ new/libsolv-0.7.6/doc/libsolv-bindings.txt  2019-07-29 06:34:22.000000000 
+0200
@@ -495,6 +495,20 @@
 
 Filter list of solvables by repo priority, architecture and version.
 
+       Solvable *whatcontainsdep(Id keyname, DepId dep, Id marker = -1)
+       my @solvables = $pool->whatcontainsdep($keyname, $dep)
+       solvables = pool.whatcontainsdep(keyname, dep)
+       solvables = pool.whatcontainsdep(keyname, dep)
+
+Return all solvables for which keyname contains the dependency.
+
+       Solvable *whatmatchesdep(Id keyname, DepId dep, Id marker = -1)
+       my @solvables = $pool->whatmatchesdep($keyname, $sdep)
+       solvables = pool.whatmatchesdep(keyname, dep)
+       solvables = pool.whatmatchesdep(keyname, dep)
+
+Return all solvables that have dependencies in keyname that match the 
dependency.
+
        Solvable *whatmatchessolvable(Id keyname, Solvable solvable, Id marker 
= -1)
        my @solvables = $pool->whatmatchessolvable($keyname, $solvable)
        solvables = pool.whatmatchessolvable(keyname, solvable)
@@ -836,7 +850,7 @@
 
 The id of this dependency.
 
-== Methods ==
+=== METHODS ===
 
        Dep Rel(int flags, DepId evrid, bool create = 1)
        my $reldep = $dep->Rel($flags, $evrdep);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/ext/pool_parserpmrichdep.c 
new/libsolv-0.7.6/ext/pool_parserpmrichdep.c
--- old/libsolv-0.7.5/ext/pool_parserpmrichdep.c        2018-10-01 
11:09:18.000000000 +0200
+++ new/libsolv-0.7.6/ext/pool_parserpmrichdep.c        2019-07-16 
13:24:18.000000000 +0200
@@ -27,13 +27,23 @@
   { NULL, 0, 0},
 };
 
+static inline const char *
+skipnonwhite(const char *p)
+{
+  int bl = 0;
+  while (*p && !(*p == ' ' || *p == ',' || (*p == ')' && bl-- <= 0)))
+    if (*p++ == '(')
+      bl++;
+  return p;
+}
+
 static Id
 parseRichDep(Pool *pool, const char **depp, Id chainfl)
 {
   const char *p = *depp;
   const char *n;
   Id id, evr;
-  int fl, bl;
+  int fl;
   struct RichOpComp *op;
 
   if (!chainfl && *p++ != '(')
@@ -51,10 +61,7 @@
   else
     {
       n = p;
-      bl = 0;
-      while (*p && !(*p == ' ' || *p == ',' || (*p == ')' && bl-- <= 0)))
-       if (*p++ == '(')
-         bl++;
+      p = skipnonwhite(p);
       if (n == p)
        return 0;
       id = pool_strn2id(pool, n, p - n, 1);
@@ -79,10 +86,7 @@
              while (*p == ' ')
                p++;
              n = p;
-             bl = 0;
-             while (*p && !(*p == ' ' || *p == ',' || (*p == ')' && bl-- <= 
0)))
-               if (*p++ == '(')
-                 bl++;
+             p = skipnonwhite(p);
              if (p - n > 2 && n[0] == '0' && n[1] == ':')
                n += 2;         /* strip zero epoch */
              if (n == p)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/package/libsolv.changes 
new/libsolv-0.7.6/package/libsolv.changes
--- old/libsolv-0.7.5/package/libsolv.changes   2019-07-12 14:14:36.000000000 
+0200
+++ new/libsolv-0.7.6/package/libsolv.changes   2019-08-28 15:02:38.000000000 
+0200
@@ -1,4 +1,12 @@
 -------------------------------------------------------------------
+Wed Aug 28 14:49:19 CEST 2019 - [email protected]
+
+- Fix repository priority handling for multiversion packages
+- Make code compatible with swig 4.0, remove obj0 instances
+- repo2solv: support zchunk compressed data
+- bump version to 0.7.6
+
+-------------------------------------------------------------------
 Wed Jul 10 07:48:10 UTC 2019 - Martin Liška <[email protected]>
 
 - Add -ffat-lto-objects to $optflags as the package provides
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/src/pool.c new/libsolv-0.7.6/src/pool.c
--- old/libsolv-0.7.5/src/pool.c        2019-07-01 14:55:30.000000000 +0200
+++ new/libsolv-0.7.6/src/pool.c        2019-07-15 16:59:24.000000000 +0200
@@ -814,6 +814,23 @@
   return pool_match_flags_evr(pool, pflags, pevr, flags, evr);
 }
 
+
+static int
+is_interval_dep(Pool *pool, Id d1, Id d2)
+{
+  Reldep *rd1, *rd2;
+  if (!ISRELDEP(d1) || !ISRELDEP(d2))
+    return 0;
+  rd1 = GETRELDEP(pool, d1);
+  rd2 = GETRELDEP(pool, d2);
+  if (rd1->name != rd2->name || rd1->flags >= 8 || rd2->flags >= 8)
+    return 0;
+  if (((rd1->flags ^ rd2->flags) & (REL_LT|REL_GT)) != (REL_LT|REL_GT))
+    return 0;
+  return 1;
+}
+
+
 /* match two dependencies (d1 = provider) */
 
 int
@@ -830,6 +847,8 @@
       rd1 = GETRELDEP(pool, d1);
       if (rd1->flags == REL_AND || rd1->flags == REL_OR || rd1->flags == 
REL_WITH || rd1->flags == REL_WITHOUT || rd1->flags == REL_COND || rd1->flags 
== REL_UNLESS)
        {
+         if (rd1->flags == REL_WITH && is_interval_dep(pool, rd1->name, 
rd1->evr))
+           return pool_match_dep(pool, rd1->name, d2) && pool_match_dep(pool, 
rd1->evr, d2);
          if (pool_match_dep(pool, rd1->name, d2))
            return 1;
          if ((rd1->flags == REL_COND || rd1->flags == REL_UNLESS) && 
ISRELDEP(rd1->evr))
@@ -849,6 +868,8 @@
       rd2 = GETRELDEP(pool, d2);
       if (rd2->flags == REL_AND || rd2->flags == REL_OR || rd2->flags == 
REL_WITH || rd2->flags == REL_WITHOUT || rd2->flags == REL_COND || rd2->flags 
== REL_UNLESS)
        {
+         if (rd2->flags == REL_WITH && is_interval_dep(pool, rd2->name, 
rd2->evr))
+           return pool_match_dep(pool, d1, rd2->name) && pool_match_dep(pool, 
d1, rd2->evr);
          if (pool_match_dep(pool, d1, rd2->name))
            return 1;
          if ((rd2->flags == REL_COND || rd2->flags == REL_UNLESS) && 
ISRELDEP(rd2->evr))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/src/repodata.c 
new/libsolv-0.7.6/src/repodata.c
--- old/libsolv-0.7.5/src/repodata.c    2019-04-11 16:48:30.000000000 +0200
+++ new/libsolv-0.7.6/src/repodata.c    2019-08-28 14:51:03.000000000 +0200
@@ -211,11 +211,13 @@
   cid = schematahash[h];
   if (cid)
     {
-      if (!memcmp(data->schemadata + data->schemata[cid], schema, len * 
sizeof(Id)))
+      if ((data->schemata[cid] + len <= data->schemadatalen) &&
+                         !memcmp(data->schemadata + data->schemata[cid], 
schema, len * sizeof(Id)))
         return cid;
       /* cache conflict, do a slow search */
       for (cid = 1; cid < data->nschemata; cid++)
-        if (!memcmp(data->schemadata + data->schemata[cid], schema, len * 
sizeof(Id)))
+        if ((data->schemata[cid] + len <= data->schemadatalen) &&
+                               !memcmp(data->schemadata + data->schemata[cid], 
schema, len * sizeof(Id)))
           return cid;
     }
   /* a new one */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.7.5/src/solver.c 
new/libsolv-0.7.6/src/solver.c
--- old/libsolv-0.7.5/src/solver.c      2019-06-13 16:11:37.000000000 +0200
+++ new/libsolv-0.7.6/src/solver.c      2019-08-02 16:34:26.000000000 +0200
@@ -1720,12 +1720,27 @@
            {
              if (specialupdaters && (d = specialupdaters[i - 
installed->start]) != 0)
                {
+                 int j;
                  /* special multiversion handling, make sure best version is 
chosen */
                  if (rr->p == i && solv->decisionmap[i] >= 0)
                    queue_push(dq, i);
                  while ((p = pool->whatprovidesdata[d++]) != 0)
                    if (solv->decisionmap[p] >= 0)
                      queue_push(dq, p);
+                 for (j = 0; j < dq->count; j++)
+                   {
+                     Id p2 = dq->elements[j];
+                     if (pool->solvables[p2].repo != installed)
+                       continue;
+                     d = specialupdaters[i - installed->start];
+                     while ((p = pool->whatprovidesdata[d++]) != 0)
+                       {
+                         if (solv->decisionmap[p] >= 0 || 
pool->solvables[p].repo == installed)
+                           continue;
+                         if (solvable_identical(pool->solvables + p, 
pool->solvables + p2))
+                           queue_push(dq, p);  /* identical to installed, put 
it on the list so we have a repo prio */
+                       }
+                   }
                  if (dq->count && solv->update_targets && 
solv->update_targets->elements[i - installed->start])
                    prune_to_update_targets(solv, 
solv->update_targets->elements + solv->update_targets->elements[i - 
installed->start], dq);
                  if (dq->count)


Reply via email to