Hello community,

here is the log from the commit of package libsolv for openSUSE:Factory checked 
in at 2017-02-18 03:16:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libsolv (Old)
 and      /work/SRC/openSUSE:Factory/.libsolv.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libsolv"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libsolv/libsolv.changes  2016-11-25 
12:02:42.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libsolv.new/libsolv.changes     2017-02-18 
03:16:15.524421576 +0100
@@ -1,0 +2,22 @@
+Wed Feb 15 11:34:59 CET 2017 - [email protected]
+
+- export solvable_matchesdep function, as we now use it in
+  the bindings [bnc#1025440]
+- bump version to 0.6.26
+
+-------------------------------------------------------------------
+Tue Feb  7 13:13:01 CET 2017 - [email protected]
+
+- add SOLVABLE_NAME hack for pool_whatmatchesdep and
+  solvable_matchesdep
+- add SOLVER_FLAG_STRONG_RECOMMENDS option
+- add SOLVER_FLAG_INSTALL_ALSO_UPDATES option
+- do not special case release-less provides in sort_by_common_dep
+- solver_problemruleinfo2str: return reason why a package is not
+  installable
+- guard against dirpool_add_dir being called with an illegal
+  component id
+- reject solv files with bad directories
+- bump version to 0.6.25
+
+-------------------------------------------------------------------

Old:
----
  libsolv-0.6.24.tar.bz2

New:
----
  libsolv-0.6.26.tar.bz2

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

Other differences:
------------------
++++++ libsolv.spec ++++++
--- /var/tmp/diff_new_pack.Tk7djy/_old  2017-02-18 03:16:16.008353228 +0100
+++ /var/tmp/diff_new_pack.Tk7djy/_new  2017-02-18 03:16:16.012352663 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libsolv
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           libsolv
-Version:        0.6.24
+Version:        0.6.26
 Release:        0
 Url:            https://github.com/openSUSE/libsolv
 Source:         libsolv-%{version}.tar.bz2
@@ -260,7 +260,7 @@
 %{_mandir}/man1/helix2solv*
 %endif
 %{_datadir}/cmake/Modules/*
-%{_libdir}/pkgconfig/libsolv.pc
+%{_libdir}/pkgconfig/libsolv*.pc
 %{_mandir}/man3/*
 
 %files demo

++++++ libsolv-0.6.24.tar.bz2 -> libsolv-0.6.26.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/CMakeLists.txt 
new/libsolv-0.6.26/CMakeLists.txt
--- old/libsolv-0.6.24/CMakeLists.txt   2016-09-09 17:32:18.000000000 +0200
+++ new/libsolv-0.6.26/CMakeLists.txt   2017-02-13 11:59:05.000000000 +0100
@@ -58,12 +58,17 @@
 ENDIF (DEFINED  INCLUDE)
 MESSAGE (STATUS "Header files will be installed in ${INCLUDE_INSTALL_DIR}")
 SET (BIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/bin")
+IF (NOT MAN_INSTALL_DIR)
 SET (MAN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/man")
 IF (IS_DIRECTORY "${CMAKE_INSTALL_PREFIX}/man"  AND NOT IS_DIRECTORY 
"${CMAKE_INSTALL_PREFIX}/share/man")
   SET (MAN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/man")
 ENDIF (IS_DIRECTORY "${CMAKE_INSTALL_PREFIX}/man"  AND NOT IS_DIRECTORY 
"${CMAKE_INSTALL_PREFIX}/share/man")
+ENDIF (NOT MAN_INSTALL_DIR)
 MESSAGE(STATUS "Man pages will be installed in ${MAN_INSTALL_DIR}")
 
+IF (NOT PKGCONFIG_INSTALL_DIR)
+  SET (PKGCONFIG_INSTALL_DIR ${LIB_INSTALL_DIR}/pkgconfig)
+ENDIF (NOT PKGCONFIG_INSTALL_DIR)
 ####################################################################
 # CONFIGURATION                                                    #
 ####################################################################
@@ -153,6 +158,7 @@
 ENDIF (ENABLE_ARCHREPO)
 
 FIND_PACKAGE (EXPAT REQUIRED)
+INCLUDE_DIRECTORIES (${EXPAT_INCLUDE_DIRS})
 FIND_PACKAGE (ZLIB REQUIRED)
 IF (ENABLE_LZMA_COMPRESSION)
 FIND_PACKAGE (LZMA REQUIRED)
@@ -206,6 +212,9 @@
     IF (DB_LIBRARY)
       SET (RPMDB_LIBRARY ${DB_LIBRARY} ${RPMDB_LIBRARY})
     ENDIF (DB_LIBRARY)
+    IF (DB_INCLUDE_DIR)
+      INCLUDE_DIRECTORIES (${DB_INCLUDE_DIR})
+    ENDIF (DB_INCLUDE_DIR)
   ENDIF (NOT HAVE_RPM_DB_H)
   INCLUDE (CheckLibraryExists)
   CHECK_LIBRARY_EXISTS(rpmio pgpDigGetParams "" HAVE_PGPDIGGETPARAMS)
@@ -384,9 +393,11 @@
 ENDMACRO (SPECFILE)
 
 MACRO (PCFILE)
-  MESSAGE (STATUS "Writing pkg-config file...")
+  MESSAGE (STATUS "Writing pkg-config files...")
   CONFIGURE_FILE (${CMAKE_SOURCE_DIR}/libsolv.pc.in 
${CMAKE_BINARY_DIR}/libsolv.pc @ONLY)
-  INSTALL( FILES ${CMAKE_BINARY_DIR}/libsolv.pc DESTINATION 
${LIB_INSTALL_DIR}/pkgconfig )
+  INSTALL( FILES ${CMAKE_BINARY_DIR}/libsolv.pc DESTINATION 
${PKGCONFIG_INSTALL_DIR} )
+  CONFIGURE_FILE (${CMAKE_SOURCE_DIR}/libsolvext.pc.in 
${CMAKE_BINARY_DIR}/libsolvext.pc @ONLY)
+  INSTALL( FILES ${CMAKE_BINARY_DIR}/libsolvext.pc DESTINATION 
${PKGCONFIG_INSTALL_DIR} )
 ENDMACRO (PCFILE)
 
 SPECFILE ()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/NEWS new/libsolv-0.6.26/NEWS
--- old/libsolv-0.6.24/NEWS     2016-11-10 15:21:14.000000000 +0100
+++ new/libsolv-0.6.26/NEWS     2017-02-15 11:39:06.000000000 +0100
@@ -2,6 +2,18 @@
 This file contains the major changes between
 libsolv versions:
 
+Version 0.6.26
+- export solvable_matchesdep function, as we now
+  use it in the bindings
+
+Version 0.6.25
+- new features:
+  * new SOLVER_FLAG_STRONG_RECOMMENDS flag
+  * new SOLVER_FLAG_INSTALL_ALSO_UPDATES flag
+  * new matchesdep() method in bindings
+  * SOLVABLE_NAME selects nevr matching for
+    pool_whatmatchesdep and solvable_matchesdep
+ 
 Version 0.6.24
 - new features:
   * new SOLVER_FLAG_FOCUS_BEST flag
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/VERSION.cmake 
new/libsolv-0.6.26/VERSION.cmake
--- old/libsolv-0.6.24/VERSION.cmake    2016-11-10 15:21:14.000000000 +0100
+++ new/libsolv-0.6.26/VERSION.cmake    2017-02-15 11:39:06.000000000 +0100
@@ -49,5 +49,5 @@
 
 SET(LIBSOLV_MAJOR "0")
 SET(LIBSOLV_MINOR "6")
-SET(LIBSOLV_PATCH "24")
+SET(LIBSOLV_PATCH "26")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/bindings/solv.i 
new/libsolv-0.6.26/bindings/solv.i
--- old/libsolv-0.6.24/bindings/solv.i  2016-11-18 13:56:14.000000000 +0100
+++ new/libsolv-0.6.26/bindings/solv.i  2016-12-14 11:39:05.000000000 +0100
@@ -2188,6 +2188,34 @@
   }
 #endif
 
+  Repo *createshadow(const char *name) {
+    Repo *repo = repo_create($self->pool, name);
+    if ($self->idarraysize) {
+      repo_reserve_ids(repo, 0, $self->idarraysize);
+      memcpy(repo->idarraydata, $self->idarraydata, sizeof(Id) * 
$self->idarraysize);
+      repo->idarraysize = $self->idarraysize;
+    }
+    repo->start = $self->start;
+    repo->end = $self->end;
+    repo->nsolvables = $self->nsolvables;
+    return repo;
+  }
+
+  void moveshadow(Queue q) {
+    Pool *pool = $self->pool;
+    int i;
+    for (i = 0; i < q.count; i++) {
+      Solvable *s;
+      Id p = q.elements[i];
+      if (p < $self->start || p >= $self->end)
+        continue;
+      s = pool->solvables + p;
+      if ($self->idarraysize != s->repo->idarraysize)
+        continue;
+      s->repo = $self;
+    }
+  }
+
 #if defined(SWIGTCL)
   %rename("==") __eq__;
 #endif
@@ -3288,6 +3316,7 @@
   static const int SOLVER_FLAG_NEED_UPDATEPROVIDE = 
SOLVER_FLAG_NEED_UPDATEPROVIDE;
   static const int SOLVER_FLAG_FOCUS_BEST = SOLVER_FLAG_FOCUS_BEST;
   static const int SOLVER_FLAG_STRONG_RECOMMENDS = 
SOLVER_FLAG_STRONG_RECOMMENDS;
+  static const int SOLVER_FLAG_INSTALL_ALSO_UPDATES = 
SOLVER_FLAG_INSTALL_ALSO_UPDATES;
 
   static const int SOLVER_REASON_UNRELATED = SOLVER_REASON_UNRELATED;
   static const int SOLVER_REASON_UNIT_RULE = SOLVER_REASON_UNIT_RULE;
@@ -3458,6 +3487,21 @@
   bool write_testcase(const char *dir) {
     return testcase_write($self, dir, TESTCASE_RESULT_TRANSACTION | 
TESTCASE_RESULT_PROBLEMS, 0, 0);
   }
+
+  Queue raw_decisions(int filter=0) {
+    Queue q;
+    queue_init(&q);
+    solver_get_decisionqueue($self, &q);
+    if (filter) {
+      int i, j;
+      for (i = j = 0; i < q.count; i++)
+        if ((filter > 0 && q.elements[i] > 1) ||
+            (filter < 0 && q.elements[i] < 0))
+          q.elements[j++] = q.elements[i];
+      queue_truncate(&q, j);
+    }
+    return q;
+  }
 }
 
 %extend Transaction {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/doc/libsolv-bindings.3 
new/libsolv-0.6.26/doc/libsolv-bindings.3
--- old/libsolv-0.6.24/doc/libsolv-bindings.3   2016-11-17 14:56:15.000000000 
+0100
+++ new/libsolv-0.6.26/doc/libsolv-bindings.3   2016-12-14 11:39:05.000000000 
+0100
@@ -2,12 +2,12 @@
 .\"     Title: Libsolv-Bindings
 .\"    Author: [see the "Author" section]
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 11/17/2016
+.\"      Date: 12/14/2016
 .\"    Manual: LIBSOLV
 .\"    Source: libsolv
 .\"  Language: English
 .\"
-.TH "LIBSOLV\-BINDINGS" "3" "11/17/2016" "libsolv" "LIBSOLV"
+.TH "LIBSOLV\-BINDINGS" "3" "12/14/2016" "libsolv" "LIBSOLV"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -3544,6 +3544,11 @@
 If multiple packages obsolete an installed package, the solver checks the 
provides of every such package and ignores all packages that do not provide the 
installed package name\&. Thus, you can have an official update candidate that 
provides the old name, and other packages that also obsolete the package but 
are not considered for updating\&. If you cannot use this feature, you can turn 
it off by setting this flag\&.
 .RE
 .PP
+\fBSOLVER_FLAG_NEED_UPDATEPROVIDE\fR
+.RS 4
+This is somewhat the opposite of SOLVER_FLAG_NO_UPDATEPROVIDE: Only packages 
that provied the installed package names are considered for updating\&.
+.RE
+.PP
 \fBSOLVER_FLAG_SPLITPROVIDES\fR
 .RS 4
 Make the solver aware of special provides of the form 
\(lq<packagename>:<path>\(rq used in SUSE systems to support package splits\&.
@@ -3586,7 +3591,27 @@
 .PP
 \fBSOLVER_FLAG_FOCUS_INSTALLED\fR
 .RS 4
-Resolve installed packages before resolving the given job\&. Setting this flag 
means that the solver will prefer picking a package version that fits the other 
installed packages over updating installed packages\&.
+Resolve installed packages before resolving the given jobs\&. Setting this 
flag means that the solver will prefer picking a package version that fits the 
other installed packages over updating installed packages\&.
+.RE
+.PP
+\fBSOLVER_FLAG_FOCUS_BEST\fR
+.RS 4
+First resolve the given jobs, then the dependencies of the resulting packages, 
then resolve all already installed packages\&. This will result in more 
packages being updated as when the flag is not used\&.
+.RE
+.PP
+\fBSOLVER_FLAG_INSTALL_ALSO_UPDATES\fR
+.RS 4
+Update the package if a job is already fulfilled by an installed package\&.
+.RE
+.PP
+\fBSOLVER_FLAG_YUM_OBSOLETES\fR
+.RS 4
+Turn on yum\-like package split handling\&. See the yum documentation for more 
details\&.
+.RE
+.PP
+\fBSOLVER_FLAG_URPM_REORDER\fR
+.RS 4
+Turn on urpm like package reordering for kernel packages\&. See the urpm 
documentation for more details\&.
 .RE
 .sp
 Basic rule types:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/doc/libsolv-bindings.txt 
new/libsolv-0.6.26/doc/libsolv-bindings.txt
--- old/libsolv-0.6.24/doc/libsolv-bindings.txt 2016-11-17 14:56:15.000000000 
+0100
+++ new/libsolv-0.6.26/doc/libsolv-bindings.txt 2016-12-14 11:39:05.000000000 
+0100
@@ -2127,6 +2127,11 @@
 updating. If you cannot use this feature, you can turn it off
 by setting this flag.
 
+*SOLVER_FLAG_NEED_UPDATEPROVIDE*::
+This is somewhat the opposite of SOLVER_FLAG_NO_UPDATEPROVIDE: Only
+packages that provied the installed package names are considered
+for updating.
+
 *SOLVER_FLAG_SPLITPROVIDES*::
 Make the solver aware of special provides of the form
 ``<packagename>:<path>'' used in SUSE systems to support package
@@ -2169,11 +2174,31 @@
 in no longer working packages in case they are orphaned.
 
 *SOLVER_FLAG_FOCUS_INSTALLED*::
-Resolve installed packages before resolving the given job.
+Resolve installed packages before resolving the given jobs.
 Setting this flag means that the solver will prefer picking
 a package version that fits the other installed packages
 over updating installed packages.
 
+*SOLVER_FLAG_FOCUS_BEST*::
+First resolve the given jobs, then the dependencies of the
+resulting packages, then resolve all already installed
+packages. This will result in more packages being updated
+as when the flag is not used.
+
+*SOLVER_FLAG_INSTALL_ALSO_UPDATES*::
+Update the package if a job is already fulfilled by an installed
+package.
+
+*SOLVER_FLAG_YUM_OBSOLETES*::
+Turn on yum-like package split handling. See the yum documentation
+for more details.
+
+*SOLVER_FLAG_URPM_REORDER*::
+Turn on urpm like package reordering for kernel packages. See
+the urpm documentation for more details.
+
+
+
 Basic rule types:
 
 *SOLVER_RULE_UNKNOWN*::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/ext/repo_rpmdb.c 
new/libsolv-0.6.26/ext/repo_rpmdb.c
--- old/libsolv-0.6.24/ext/repo_rpmdb.c 2016-09-09 17:32:18.000000000 +0200
+++ new/libsolv-0.6.26/ext/repo_rpmdb.c 2017-02-01 11:49:09.000000000 +0100
@@ -765,16 +765,15 @@
     {
       if (!fn[i])
        continue;
-      if (!*dn[i])
+      did = repodata_str2dir(data, dn[i], 1);
+      if (!did)
        {
-         Solvable *s = data->repo->pool->solvables + handle;
+          Solvable *s = data->repo->pool->solvables + handle;
           if (s->arch == ARCH_SRC || s->arch == ARCH_NOSRC)
            did = repodata_str2dir(data, "/usr/src", 1);
          else
            continue;   /* work around rpm bug */
        }
-      else
-        did = repodata_str2dir(data, dn[i], 1);
       repodata_add_dirnumnum(data, handle, SOLVABLE_DISKUSAGE, did, fkb[i], 
fn[i]);
     }
   solv_free(fn);
@@ -1575,7 +1574,7 @@
 static inline Id
 copydir(Pool *pool, Repodata *data, Repodata *fromdata, Id did, Id *cache)
 {
-  if (cache && cache[did & 255] == did)
+  if (cache && did && cache[did & 255] == did)
     return cache[(did & 255) + 256];
   return copydir_complex(pool, data, fromdata, did, cache);
 }
@@ -1583,8 +1582,16 @@
 static Id
 copydir_complex(Pool *pool, Repodata *data, Repodata *fromdata, Id did, Id 
*cache)
 {
-  Id parent = dirpool_parent(&fromdata->dirpool, did);
-  Id compid = dirpool_compid(&fromdata->dirpool, did);
+  Id parent, compid;
+  if (!did)
+    {
+      /* make sure that the dirpool has an entry */
+      if (!data->dirpool.ndirs)
+        dirpool_add_dir(&data->dirpool, 0, 0, 1);
+      return 0;
+    }
+  parent = dirpool_parent(&fromdata->dirpool, did);
+  compid = dirpool_compid(&fromdata->dirpool, did);
   if (parent)
     parent = copydir(pool, data, fromdata, parent, cache);
   if (data->localpool || fromdata->localpool)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/ext/testcase.c 
new/libsolv-0.6.26/ext/testcase.c
--- old/libsolv-0.6.24/ext/testcase.c   2016-11-18 13:56:14.000000000 +0100
+++ new/libsolv-0.6.26/ext/testcase.c   2016-11-29 14:45:33.000000000 +0100
@@ -117,6 +117,7 @@
   { SOLVER_FLAG_URPM_REORDER,               "urpmreorder", 0 },
   { SOLVER_FLAG_FOCUS_BEST,                 "focusbest", 0 },
   { SOLVER_FLAG_STRONG_RECOMMENDS,          "strongrecommends", 0 },
+  { SOLVER_FLAG_INSTALL_ALSO_UPDATES,       "installalsoupdates", 0 },
   { 0, 0, 0 }
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/libsolv.pc.in 
new/libsolv-0.6.26/libsolv.pc.in
--- old/libsolv-0.6.24/libsolv.pc.in    2016-02-11 17:01:33.000000000 +0100
+++ new/libsolv-0.6.26/libsolv.pc.in    2017-02-13 11:59:05.000000000 +0100
@@ -2,7 +2,7 @@
 includedir=@INCLUDE_INSTALL_DIR@
 
 Name: libsolv
-Description: Library for solving packages and reading repositories
+Description: Library for solving packages
 Version: @VERSION@
-Libs: -L${libdir} -lsolvext -lsolv
+Libs: -L${libdir} -lsolv
 Cflags: -I${includedir}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/libsolvext.pc.in 
new/libsolv-0.6.26/libsolvext.pc.in
--- old/libsolv-0.6.24/libsolvext.pc.in 1970-01-01 01:00:00.000000000 +0100
+++ new/libsolv-0.6.26/libsolvext.pc.in 2017-02-13 11:59:05.000000000 +0100
@@ -0,0 +1,9 @@
+libdir=@LIB_INSTALL_DIR@
+includedir=@INCLUDE_INSTALL_DIR@
+
+Name: libsolvext
+Description: Library for reading repositories
+Version: @VERSION@
+Requires: libsolv
+Libs: -L${libdir} -lsolvext
+Cflags: -I${includedir}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/package/libsolv.changes 
new/libsolv-0.6.26/package/libsolv.changes
--- old/libsolv-0.6.24/package/libsolv.changes  2016-11-10 15:21:14.000000000 
+0100
+++ new/libsolv-0.6.26/package/libsolv.changes  2017-02-15 13:29:06.000000000 
+0100
@@ -1,4 +1,26 @@
 -------------------------------------------------------------------
+Wed Feb 15 11:34:59 CET 2017 - [email protected]
+
+- export solvable_matchesdep function, as we now use it in
+  the bindings [bnc#1025440]
+- bump version to 0.6.26
+
+-------------------------------------------------------------------
+Tue Feb  7 13:13:01 CET 2017 - [email protected]
+
+- add SOLVABLE_NAME hack for pool_whatmatchesdep and
+  solvable_matchesdep
+- add SOLVER_FLAG_STRONG_RECOMMENDS option
+- add SOLVER_FLAG_INSTALL_ALSO_UPDATES option
+- do not special case release-less provides in sort_by_common_dep
+- solver_problemruleinfo2str: return reason why a package is not
+  installable
+- guard against dirpool_add_dir being called with an illegal
+  component id
+- reject solv files with bad directories
+- bump version to 0.6.25
+
+-------------------------------------------------------------------
 Thu Nov 10 15:09:25 CET 2016 - [email protected]
 
 - make testcase_str2solvid work with ignored packages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/package/libsolv.spec.in 
new/libsolv-0.6.26/package/libsolv.spec.in
--- old/libsolv-0.6.24/package/libsolv.spec.in  2016-11-10 11:16:21.000000000 
+0100
+++ new/libsolv-0.6.26/package/libsolv.spec.in  2017-02-16 11:44:10.000000000 
+0100
@@ -256,7 +256,7 @@
 %{_mandir}/man1/helix2solv*
 %endif
 %{_datadir}/cmake/Modules/*
-%{_libdir}/pkgconfig/libsolv.pc
+%{_libdir}/pkgconfig/libsolv*.pc
 %{_mandir}/man3/*
 
 %files demo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/dirpool.c 
new/libsolv-0.6.26/src/dirpool.c
--- old/libsolv-0.6.24/src/dirpool.c    2016-02-11 17:01:33.000000000 +0100
+++ new/libsolv-0.6.26/src/dirpool.c    2017-02-01 11:49:09.000000000 +0100
@@ -99,7 +99,7 @@
 Id
 dirpool_add_dir(Dirpool *dp, Id parent, Id comp, int create)
 {
-  Id did, d, ds, *dirtraverse;
+  Id did, d, ds;
 
   if (!dp->ndirs)
     {
@@ -110,14 +110,15 @@
       dp->dirs[0] = 0;
       dp->dirs[1] = 1; /* "" */
     }
+  if (comp <= 0)
+    return 0;
   if (parent == 0 && comp == 1)
     return 1;
   if (!dp->dirtraverse)
     dirpool_make_dirtraverse(dp);
   /* check all entries with this parent if we
    * already have this component */
-  dirtraverse = dp->dirtraverse;
-  ds = dirtraverse[parent];
+  ds = dp->dirtraverse[parent];
   while (ds)
     {
       /* ds: first component in this block
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/libsolv.ver 
new/libsolv-0.6.26/src/libsolv.ver
--- old/libsolv-0.6.24/src/libsolv.ver  2016-06-14 16:51:06.000000000 +0200
+++ new/libsolv-0.6.26/src/libsolv.ver  2017-02-15 11:39:06.000000000 +0100
@@ -310,6 +310,7 @@
                solvable_lookup_str_poollang;
                solvable_lookup_type;
                solvable_lookup_void;
+               solvable_matchesdep;
                solvable_selfprovidedep;
                solvable_set_deparray;
                solvable_set_id;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/policy.c 
new/libsolv-0.6.26/src/policy.c
--- old/libsolv-0.6.24/src/policy.c     2016-06-07 11:06:06.000000000 +0200
+++ new/libsolv-0.6.26/src/policy.c     2016-12-08 14:54:09.000000000 +0100
@@ -981,23 +981,7 @@
     return 0;
   a = aa[2] < 0 ? -aa[2] : aa[2];
   b = bb[2] < 0 ? -bb[2] : bb[2];
-  if (pool->disttype != DISTTYPE_DEB && a != b)
-    {
-      /* treat release-less versions different */
-      const char *as = pool_id2str(pool, a);
-      const char *bs = pool_id2str(pool, b);
-      if (strchr(as, '-'))
-       {
-         if (!strchr(bs, '-'))
-           return -2;
-       }
-      else
-       {
-         if (strchr(bs, '-'))
-           return 2;
-       }
-    }
-  r = pool_evrcmp(pool, b, a, EVRCMP_COMPARE);
+  r = pool_evrcmp(pool, b, a, pool->disttype != DISTTYPE_DEB ? 
EVRCMP_MATCH_RELEASE : EVRCMP_COMPARE);
   if (!r && (aa[2] < 0 || bb[2] < 0))
     {
       if (bb[2] >= 0)
@@ -1005,9 +989,7 @@
       if (aa[2] >= 0)
        return -1;
     }
-  if (r)
-    return r < 0 ? -1 : 1;
-  return 0;
+  return r;
 }
 
 /* common end of sort_by_srcversion and sort_by_common_dep */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/problems.c 
new/libsolv-0.6.26/src/problems.c
--- old/libsolv-0.6.24/src/problems.c   2016-10-07 15:06:16.000000000 +0200
+++ new/libsolv-0.6.26/src/problems.c   2017-01-18 13:39:56.000000000 +0100
@@ -1089,6 +1089,7 @@
 {
   Pool *pool = solv->pool;
   char *s;
+  Solvable *ss;
   switch (type)
     {
     case SOLVER_RULE_DISTUPGRADE:
@@ -1114,6 +1115,12 @@
         return pool_tmpjoin(pool, "cannot install the best update candidate 
for package ", pool_solvid2str(pool, source), 0);
      return "cannot install the best candidate for the job";
     case SOLVER_RULE_PKG_NOT_INSTALLABLE:
+      ss = pool->solvables + source;
+      if (pool_disabled_solvable(pool, ss))
+        return pool_tmpjoin(pool, "package ", pool_solvid2str(pool, source), " 
is disabled");
+      if (ss->arch && ss->arch != ARCH_SRC && ss->arch != ARCH_NOSRC &&
+          pool->id2arch && (ss->arch > pool->lastarch || 
!pool->id2arch[ss->arch]))
+        return pool_tmpjoin(pool, "package ", pool_solvid2str(pool, source), " 
does not have a compatible architecture");
       return pool_tmpjoin(pool, "package ", pool_solvid2str(pool, source), " 
is not installable");
     case SOLVER_RULE_PKG_NOTHING_PROVIDES_DEP:
       s = pool_tmpjoin(pool, "nothing provides ", pool_dep2str(pool, dep), 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/repo_solv.c 
new/libsolv-0.6.26/src/repo_solv.c
--- old/libsolv-0.6.24/src/repo_solv.c  2016-02-11 17:01:33.000000000 +0100
+++ new/libsolv-0.6.26/src/repo_solv.c  2017-02-01 11:49:09.000000000 +0100
@@ -873,11 +873,20 @@
        {
          id = read_id(&data, i + numid);
          if (id >= numid)
-           data.dirpool.dirs[i] = -(id - numid);
-         else if (idmap)
-           data.dirpool.dirs[i] = idmap[id];
-         else
-           data.dirpool.dirs[i] = id;
+           {
+             data.dirpool.dirs[i++] = -(id - numid);
+             if (i >= numdir)
+               {
+                 data.error = pool_error(pool, SOLV_ERROR_CORRUPT, "last dir 
entry is not a component");
+                 break;
+               }
+             id = read_id(&data, numid);
+           }
+         if (idmap)
+           id = idmap[id];
+         data.dirpool.dirs[i] = id;
+         if (id <= 0)
+            data.error = pool_error(pool, SOLV_ERROR_CORRUPT, "bad dir 
component");
        }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/repo_write.c 
new/libsolv-0.6.26/src/repo_write.c
--- old/libsolv-0.6.24/src/repo_write.c 2016-02-11 17:01:33.000000000 +0100
+++ new/libsolv-0.6.26/src/repo_write.c 2017-01-30 16:24:10.000000000 +0100
@@ -955,6 +955,10 @@
       dirmap[n++] = sib;
     }
 
+  /* check if our block has some content */
+  if (parent == n)
+    return n - 1;      /* nope, drop parent id again */
+
   /* now go through all the siblings we just added and
    * do recursive calls on them */
   lastn = n;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/repodata.c 
new/libsolv-0.6.26/src/repodata.c
--- old/libsolv-0.6.24/src/repodata.c   2016-02-26 11:50:45.000000000 +0100
+++ new/libsolv-0.6.26/src/repodata.c   2017-02-01 11:49:09.000000000 +0100
@@ -268,17 +268,13 @@
 #endif
   const char *dire;
 
-  parent = 0;
   if (!*dir)
-    return 0;
+    return data->dirpool.ndirs ? 0 : dirpool_add_dir(&data->dirpool, 0, 0, 
create);
   while (*dir == '/' && dir[1] == '/')
     dir++;
   if (*dir == '/' && !dir[1])
-    {
-      if (data->dirpool.ndirs)
-        return 1;
-      return dirpool_add_dir(&data->dirpool, 0, 1, create);
-    }
+    return data->dirpool.ndirs ? 1 : dirpool_add_dir(&data->dirpool, 0, 1, 
create);
+  parent = 0;
 #ifdef DIRCACHE_SIZE
   dirs = dir;
   if (data->dircache)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/solver.c 
new/libsolv-0.6.26/src/solver.c
--- old/libsolv-0.6.24/src/solver.c     2016-11-18 13:56:14.000000000 +0100
+++ new/libsolv-0.6.26/src/solver.c     2016-11-29 14:45:33.000000000 +0100
@@ -1711,6 +1711,8 @@
     return solv->urpmreorder;
   case SOLVER_FLAG_STRONG_RECOMMENDS:
     return solv->strongrecommends;
+  case SOLVER_FLAG_INSTALL_ALSO_UPDATES:
+    return solv->install_also_updates;
   default:
     break;
   }
@@ -1798,6 +1800,9 @@
   case SOLVER_FLAG_STRONG_RECOMMENDS:
     solv->strongrecommends = value;
     break;
+  case SOLVER_FLAG_INSTALL_ALSO_UPDATES:
+    solv->install_also_updates = value;
+    break;
   default:
     break;
   }
@@ -1838,24 +1843,26 @@
        continue;
       /* prune to installed if not updating */
       if (dq->count > 1 && solv->installed && !solv->updatemap_all &&
+         !solv->install_also_updates &&
          !(solv->job.elements[solv->ruletojob.elements[i - solv->jobrules]] & 
SOLVER_ORUPDATE))
        {
-         int j, k;
-         for (j = k = 0; j < dq->count; j++)
+         int j = dq->count, k;
+         if (solv->updatemap.size)
+           {
+             /* do not prune if an installed package wants to be updated */
+             for (j = 0; j < dq->count; j++)
+               if (pool->solvables[dq->elements[j]].repo == solv->installed
+                   && MAPTST(&solv->updatemap, dq->elements[j] - 
solv->installed->start))
+                 break;
+           }
+         if (j == dq->count)
            {
-             Solvable *s = pool->solvables + dq->elements[j];
-             if (s->repo == solv->installed)
-               {
-                 dq->elements[k++] = dq->elements[j];
-                 if (solv->updatemap.size && MAPTST(&solv->updatemap, 
dq->elements[j] - solv->installed->start))
-                   {
-                     k = 0;    /* package wants to be updated, do not prune */
-                     break;
-                   }
-               }
+             for (j = k = 0; j < dq->count; j++)
+               if (pool->solvables[dq->elements[j]].repo == solv->installed)
+                 dq->elements[k++] = dq->elements[j];
+             if (k)
+               dq->count = k;
            }
-         if (k)
-           dq->count = k;
        }
       olevel = level;
       level = selectandinstall(solv, level, dq, disablerules, i, 
SOLVER_REASON_RESOLVE_JOB);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/solver.h 
new/libsolv-0.6.26/src/solver.h
--- old/libsolv-0.6.24/src/solver.h     2016-11-18 13:56:14.000000000 +0100
+++ new/libsolv-0.6.26/src/solver.h     2016-11-29 14:45:33.000000000 +0100
@@ -165,6 +165,7 @@
   int do_yum_obsoletes;                        /* true: add special yumobs 
rules */
   int urpmreorder;                     /* true: do special urpm package 
reordering */
   int strongrecommends;                        /* true: create weak rules for 
recommends */
+  int install_also_updates;            /* true: do not prune install job rules 
to installed packages */
 
   Map dupmap;                          /* dup these packages*/
   int dupmap_all;                      /* dup all packages */
@@ -313,6 +314,7 @@
 #define SOLVER_FLAG_URPM_REORDER               23
 #define SOLVER_FLAG_FOCUS_BEST                 24
 #define SOLVER_FLAG_STRONG_RECOMMENDS          25
+#define SOLVER_FLAG_INSTALL_ALSO_UPDATES       26
 
 #define GET_USERINSTALLED_NAMES                        (1 << 0)        /* 
package names instead of ids */
 #define GET_USERINSTALLED_INVERTED             (1 << 1)        /* 
autoinstalled */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libsolv-0.6.24/src/suse.c 
new/libsolv-0.6.26/src/suse.c
--- old/libsolv-0.6.24/src/suse.c       2016-06-14 16:56:05.000000000 +0200
+++ new/libsolv-0.6.26/src/suse.c       2017-01-27 12:01:50.000000000 +0100
@@ -211,7 +211,7 @@
 Offset
 repo_fix_conflicts(Repo *repo, Offset conflicts)
 {
-  char buf[1024], *p, *dep;
+  char buf[1024], *dep;
   Pool *pool = repo->pool;
   Id id;
   int i;
@@ -224,11 +224,10 @@
       if (ISRELDEP(id))
        continue;
       dep = (char *)pool_id2str(pool, id);
-      if (!strncmp(dep, "otherproviders(", 15) && strlen(dep) < sizeof(buf) - 
2)
+      if (!strncmp(dep, "otherproviders(", 15) && dep[15] && strlen(dep) < 
sizeof(buf) - 2)
        {
          strcpy(buf, dep + 15);
-         if ((p = strchr(buf, ')')) != 0)
-           *p = 0;
+         buf[strlen(buf) - 1] = 0;
          id = pool_str2id(pool, buf, 1);
          id = pool_rel2id(pool, NAMESPACE_OTHERPROVIDERS, id, REL_NAMESPACE, 
1);
          repo->idarraydata[i] = id;


Reply via email to