Mailinglist Archive: opensuse-commit (2092 mails)

< Previous Next >
commit libzypp
  • From: root@xxxxxxxxxxxxxxx (h_root)
  • Date: Wed, 29 Aug 2007 22:36:42 +0200
  • Message-id: <20070829203642.8AA356781B8@xxxxxxxxxxxxxxx>

Hello community,

here is the log from the commit of package libzypp
checked in at Wed Aug 29 22:36:42 CEST 2007.

--------
--- libzypp/libzypp.changes     2007-08-28 19:03:28.000000000 +0200
+++ /mounts/work_src_done/STABLE/libzypp/libzypp.changes        2007-08-29 18:22:12.615460000 +0200
@@ -1,0 +2,67 @@
+Wed Aug 29 18:09:29 CEST 2007 - kkaempf@xxxxxxx
+
+- prevent progress report in destructor (#299680)
+- r6998
+
+-------------------------------------------------------------------
+Wed Aug 29 18:02:36 CEST 2007 - jkupec@xxxxxxx
+
+- treat non-filelists.xml <file> entries as file provides capabilities
+  in YUM parser (#304701)
+- r6992
+
+-------------------------------------------------------------------
+Wed Aug 29 16:32:01 CEST 2007 - kkaempf@xxxxxxx
+
+- the media.1/media uniquely identifies a 'susetags' repo, not
+  the content file (#304200)
+
+-------------------------------------------------------------------
+Wed Aug 29 15:42:17 CEST 2007 - jkupec@xxxxxxx
+
+- fixed locale dir (#304649)
+- r6984
+
+-------------------------------------------------------------------
+Wed Aug 29 15:39:52 CEST 2007 - kkaempf@xxxxxxx
+
+- don't treat normal package license as "license to confirm"
+  (#305906)
+
+-------------------------------------------------------------------
+Wed Aug 29 15:28:53 CEST 2007 - ma@xxxxxxx
+
+- Fixed fix for #293039. Segfault due to uninitialzed data.
+- version 3.19.3
+- revision 6980
+
+-------------------------------------------------------------------
+Wed Aug 29 15:10:20 CEST 2007 - schubi@xxxxxxx
+
+- reduced too much verbosed ResolverContext logging; Bug 303971
+- r 6977
+
+-------------------------------------------------------------------
+Wed Aug 29 13:55:28 CEST 2007 - ma@xxxxxxx
+
+- Fixed PlainDir repositories to provide real disk usage data. For
+  repomd and others that do not provide any detailed disk usage info,
+  assume the packgage size is required below "/". Peviously they were
+  treated as being empy.
+- version 3.19.2
+- revision 6972
+
+-------------------------------------------------------------------
+Wed Aug 29 13:36:42 CEST 2007 - schubi@xxxxxxx
+
+- Add a new solver solution in the case of running in a timeout:
+  ProblemSolutionDoubleTimeout.h
+  #Bug 302496
+- revision 6970
+
+-------------------------------------------------------------------
+Wed Aug 29 11:23:26 CEST 2007 - dmacvicar@xxxxxxx
+
+- bug in fix for (#292986)
+
+-------------------------------------------------------------------
@@ -23 +90 @@
-- real fix for reading signature ids. (#390535).  
+- real fix for reading signature ids. (#390535).
@@ -59 +126 @@
-- r 6901 
+- r 6901
@@ -80 +147 @@
-  (#302059)    
+  (#302059)
@@ -85 +152 @@
-- Do not strip resolvables which have the same name but different kind 
+- Do not strip resolvables which have the same name but different kind
@@ -88 +155 @@
-- r 6830 
+- r 6830

Old:
----
  libzypp-3.19.1.tar.bz2

New:
----
  libzypp-3.20.0.tar.bz2

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

Other differences:
------------------
++++++ libzypp.spec ++++++
--- /var/tmp/diff_new_pack.N23508/_old  2007-08-29 22:36:01.000000000 +0200
+++ /var/tmp/diff_new_pack.N23508/_new  2007-08-29 22:36:01.000000000 +0200
@@ -1,5 +1,5 @@
 #
-# spec file for package libzypp (Version 3.19.1)
+# spec file for package libzypp (Version 3.20.0)
 #
 # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
 # This file and all modifications and additions to the pristine
@@ -16,9 +16,9 @@
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Autoreqprov:    on
 Summary:        Package, Patch, Pattern, and Product Management
-Version:        3.19.1
+Version:        3.20.0
 Release:        1
-Source:         libzypp-3.19.1.tar.bz2
+Source:         libzypp-3.20.0.tar.bz2
 Source1:        libzypp-rpmlintrc
 Prefix:         /usr
 Provides:       yast2-packagemanager
@@ -44,7 +44,7 @@
     Ladislav Slezak <lslezak@xxxxxxx>
 
 %package devel
-Requires:       libzypp == 3.19.1
+Requires:       libzypp == 3.20.0
 Requires:       libxml2-devel curl-devel openssl-devel rpm-devel glibc-devel zlib-devel
 Requires:       bzip2 popt-devel dbus-1-devel glib2-devel hal-devel boost-devel libstdc++-devel
 Requires:       cmake
@@ -125,6 +125,43 @@
 %{_libdir}/pkgconfig/libzypp.pc
 
 %changelog
+* Wed Aug 29 2007 - kkaempf@xxxxxxx
+- prevent progress report in destructor (#299680)
+- r6998
+* Wed Aug 29 2007 - jkupec@xxxxxxx
+- treat non-filelists.xml <file> entries as file provides capabilities
+  in YUM parser (#304701)
+- r6992
+* Wed Aug 29 2007 - kkaempf@xxxxxxx
+- the media.1/media uniquely identifies a 'susetags' repo, not
+  the content file (#304200)
+* Wed Aug 29 2007 - jkupec@xxxxxxx
+- fixed locale dir (#304649)
+- r6984
+* Wed Aug 29 2007 - kkaempf@xxxxxxx
+- don't treat normal package license as "license to confirm"
+  (#305906)
+* Wed Aug 29 2007 - ma@xxxxxxx
+- Fixed fix for #293039. Segfault due to uninitialzed data.
+- version 3.19.3
+- revision 6980
+* Wed Aug 29 2007 - schubi@xxxxxxx
+- reduced too much verbosed ResolverContext logging; Bug 303971
+- r 6977
+* Wed Aug 29 2007 - ma@xxxxxxx
+- Fixed PlainDir repositories to provide real disk usage data. For
+  repomd and others that do not provide any detailed disk usage info,
+  assume the packgage size is required below "/". Peviously they were
+  treated as being empy.
+- version 3.19.2
+- revision 6972
+* Wed Aug 29 2007 - schubi@xxxxxxx
+- Add a new solver solution in the case of running in a timeout:
+  ProblemSolutionDoubleTimeout.h
+  [#]Bug 302496
+- revision 6970
+* Wed Aug 29 2007 - dmacvicar@xxxxxxx
+- bug in fix for (#292986)
 * Tue Aug 28 2007 - dmacvicar@xxxxxxx
 - (#297001) - libzypp: can't skip broken packages
 - re enable importing zypp keyring from rpm.(#302379)

++++++ libzypp-3.19.1.tar.bz2 -> libzypp-3.20.0.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/devel/devel.ma/Parse.cc new/libzypp-3.20.0/devel/devel.ma/Parse.cc
--- old/libzypp-3.19.1/devel/devel.ma/Parse.cc  2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/devel/devel.ma/Parse.cc  2007-08-29 18:20:39.000000000 +0200
@@ -17,6 +17,7 @@
 #include "zypp/Package.h"
 #include "zypp/Pattern.h"
 #include "zypp/Language.h"
+#include "zypp/Digest.h"
 #include "zypp/PackageKeyword.h"
 #include "zypp/NameKindProxy.h"
 #include "zypp/pool/GetResolvablesToInsDel.h"
@@ -48,9 +49,9 @@
 {
   bool operator()( const PoolItem & obj_r )
   {
-    //handle( asKind<Package>( obj_r ) );
+    handle( asKind<Package>( obj_r ) );
     //handle( asKind<Pattern>( obj_r ) );
-    handle( asKind<Product>( obj_r ) );
+    //handle( asKind<Product>( obj_r ) );
     return true;
   }
 
@@ -59,7 +60,7 @@
     if ( !p )
       return;
 
-    MIL << p->mediaNr() << endl;
+    //MIL << p->diskusage() << endl;
   }
 
   void handle( const Pattern_constPtr & p )
@@ -209,6 +210,52 @@
   }
 
 };
+///////////////////////////////////////////////////////////////////
+
+struct DigestReceive : public callback::ReceiveReport<DigestReport>
+{
+  DigestReceive()
+  {
+    connect();
+  }
+
+  virtual bool askUserToAcceptNoDigest( const zypp::Pathname &file )
+  {
+    USR << endl;
+    return false;
+  }
+  virtual bool askUserToAccepUnknownDigest( const Pathname &file, const std::string &name )
+  {
+    USR << endl;
+    return false;
+  }
+  virtual bool askUserToAcceptWrongDigest( const Pathname &file, const std::string &requested, const std::string &found )
+  {
+    USR << "fle " << PathInfo(file) << endl;
+    USR << "req " << requested << endl;
+    USR << "fnd " << found << endl;
+
+    waitForInput();
+
+    return false;
+  }
+};
+
+struct KeyRingSignalsReceive : public callback::ReceiveReport<KeyRingSignals>
+{
+  KeyRingSignalsReceive()
+  {
+    connect();
+  }
+  virtual void trustedKeyAdded( const PublicKey &/*key*/ )
+  {
+    USR << endl;
+  }
+  virtual void trustedKeyRemoved( const PublicKey &/*key*/ )
+  {
+    USR << endl;
+  }
+};
 
 ///////////////////////////////////////////////////////////////////
 
@@ -284,6 +331,9 @@
   //zypp::base::LogControl::instance().logfile( "log.restrict" );
   INT << "===[START]==========================================" << endl;
 
+  DigestReceive foo;
+  KeyRingSignalsReceive baa;
+
   RepoManager repoManager( makeRepoManager( "/Local/ROOT" ) );
   RepoInfoList repos = repoManager.knownRepositories();
   SEC << repos << endl;
@@ -296,7 +346,7 @@
        .setName( "Test Repo for factory." )
        .setEnabled( true )
        .setAutorefresh( false )
-       .addBaseUrl( Url("ftp://dist.suse.de/install/stable-x86/";) );
+       .addBaseUrl( Url("http://dist.suse.de/install/stable-x86/";) );
 
     repoManager.addRepository( nrepo );
     SEC << "refreshMetadat" << endl;
@@ -318,7 +368,7 @@
     if ( ! nrepo.enabled() )
       continue;
 
-    if ( ! repoManager.isCached( nrepo ) || 1 )
+    if ( ! repoManager.isCached( nrepo ) || 0 )
     {
       if ( repoManager.isCached( nrepo ) )
       {
@@ -326,7 +376,7 @@
        repoManager.cleanCache( nrepo );
       }
       SEC << "refreshMetadata" << endl;
-      repoManager.refreshMetadata( nrepo );
+      repoManager.refreshMetadata( nrepo, RepoManager::RefreshForced );
       SEC << "buildCache" << endl;
       repoManager.buildCache( nrepo );
     }
@@ -352,14 +402,7 @@
     MIL << "Added target: " << pool << endl;
   }
 
-  Capability _cap( CapFactory().parse<Language>( "de" ) );
-  SEC << "F" << endl;
-  forEachMatchIn( pool, Dep::FRESHENS, _cap, Print() );
-  SEC << "S" << endl;
-  forEachMatchIn( pool, Dep::SUPPLEMENTS, _cap, Print() );
-  SEC << "P" << endl;
-  forEachMatchIn( pool, Dep::PROVIDES, _cap, Print() );
-  SEC << endl;
+  INT << getZYpp()->diskUsage() << endl;
 
   std::for_each( pool.begin(), pool.end(), Xprint() );
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/devel/devel.ma/Tools.h new/libzypp-3.20.0/devel/devel.ma/Tools.h
--- old/libzypp-3.19.1/devel/devel.ma/Tools.h   2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/devel/devel.ma/Tools.h   2007-08-29 18:20:39.000000000 +0200
@@ -13,6 +13,7 @@
 #include <zypp/base/Counter.h>
 #include <zypp/base/Measure.h>
 
+#include <zypp/PathInfo.h>
 #include <zypp/Date.h>
 #include <zypp/ResObject.h>
 #include <zypp/pool/PoolStats.h>
@@ -27,6 +28,15 @@
 ///////////////////////////////////////////////////////////////////
 //
 
+void waitForInput()
+{
+  int i;
+  USR << "WAITING FOR INPUT!" << endl;
+  std::cin >> i;
+}
+
+///////////////////////////////////////////////////////////////////
+//
 template<class _Condition>
   struct SetTrue
   {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/package/libzypp.changes new/libzypp-3.20.0/package/libzypp.changes
--- old/libzypp-3.19.1/package/libzypp.changes  2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/package/libzypp.changes  2007-08-29 18:20:39.000000000 +0200
@@ -1,4 +1,71 @@
 -------------------------------------------------------------------
+Wed Aug 29 18:09:29 CEST 2007 - kkaempf@xxxxxxx
+
+- prevent progress report in destructor (#299680)
+- r6998
+
+-------------------------------------------------------------------
+Wed Aug 29 18:02:36 CEST 2007 - jkupec@xxxxxxx
+
+- treat non-filelists.xml <file> entries as file provides capabilities
+  in YUM parser (#304701)
+- r6992
+
+-------------------------------------------------------------------
+Wed Aug 29 16:32:01 CEST 2007 - kkaempf@xxxxxxx
+
+- the media.1/media uniquely identifies a 'susetags' repo, not
+  the content file (#304200)
+
+-------------------------------------------------------------------
+Wed Aug 29 15:42:17 CEST 2007 - jkupec@xxxxxxx
+
+- fixed locale dir (#304649)
+- r6984
+
+-------------------------------------------------------------------
+Wed Aug 29 15:39:52 CEST 2007 - kkaempf@xxxxxxx
+
+- don't treat normal package license as "license to confirm"
+  (#305906)
+
+-------------------------------------------------------------------
+Wed Aug 29 15:28:53 CEST 2007 - ma@xxxxxxx
+
+- Fixed fix for #293039. Segfault due to uninitialzed data.
+- version 3.19.3
+- revision 6980
+
+-------------------------------------------------------------------
+Wed Aug 29 15:10:20 CEST 2007 - schubi@xxxxxxx
+
+- reduced too much verbosed ResolverContext logging; Bug 303971
+- r 6977
+
+-------------------------------------------------------------------
+Wed Aug 29 13:55:28 CEST 2007 - ma@xxxxxxx
+
+- Fixed PlainDir repositories to provide real disk usage data. For
+  repomd and others that do not provide any detailed disk usage info,
+  assume the packgage size is required below "/". Peviously they were
+  treated as being empy.
+- version 3.19.2
+- revision 6972
+
+-------------------------------------------------------------------
+Wed Aug 29 13:36:42 CEST 2007 - schubi@xxxxxxx
+
+- Add a new solver solution in the case of running in a timeout:
+  ProblemSolutionDoubleTimeout.h
+  #Bug 302496
+- revision 6970
+
+-------------------------------------------------------------------
+Wed Aug 29 11:23:26 CEST 2007 - dmacvicar@xxxxxxx
+
+- bug in fix for (#292986)
+
+-------------------------------------------------------------------
 Tue Aug 28 18:48:26 CEST 2007 - dmacvicar@xxxxxxx
 
 - (#297001) - libzypp: can't skip broken packages
@@ -20,7 +87,7 @@
 -------------------------------------------------------------------
 Tue Aug 28 11:27:53 CEST 2007 - dmacvicar@xxxxxxx
 
-- real fix for reading signature ids. (#390535).  
+- real fix for reading signature ids. (#390535).
 - delete metadata when removing repo (#301037).
 
 -------------------------------------------------------------------
@@ -56,7 +123,7 @@
  * Changing of filesystem whithin a workflow, cause the solver results will
    be reset if the filesystem dependencies have been changed
  Bug 271912
-- r 6901 
+- r 6901
 
 -------------------------------------------------------------------
 Sun Aug 26 15:49:27 CEST 2007 - kkaempf@xxxxxxx
@@ -77,15 +144,15 @@
   intsys mode (#297136)
 - signature and checksum verification fixes. Still pending
   problem ZYpp getting no output from gpg when running from zypper.
-  (#302059)    
+  (#302059)
 
 -------------------------------------------------------------------
 Thu Aug 23 13:51:41 CEST 2007 - schubi@xxxxxxx
 
-- Do not strip resolvables which have the same name but different kind 
+- Do not strip resolvables which have the same name but different kind
   (ResolverInfo*)
 - Flag info NEEDEDBY correctly if it will be used by freshen/supplement
-- r 6830 
+- r 6830
 
 -------------------------------------------------------------------
 Wed Aug 22 18:58:44 CEST 2007 - mvidner@xxxxxxx
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/tests/zypp/data/KeyRing/la/repomd.xml.asc new/libzypp-3.20.0/tests/zypp/data/KeyRing/la/repomd.xml.asc
--- old/libzypp-3.19.1/tests/zypp/data/KeyRing/la/repomd.xml.asc        2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/tests/zypp/data/KeyRing/la/repomd.xml.asc        1970-01-01 01:00:00.000000000 +0100
@@ -1,7 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.0.7 (GNU/Linux)
-
-iD8DBQBGyKpaOzARt2udZSMRAgqTAJ9HCea0aWyQ4kh6/qn4k03kTZK7pwCe
-IYNnvANI2W7Lm4YDck68InnF2Cc=
-=1JqC
------END PGP SIGNATURE-----
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/tools/migrate-sources/migrate-sources.cc new/libzypp-3.20.0/tools/migrate-sources/migrate-sources.cc
--- old/libzypp-3.19.1/tools/migrate-sources/migrate-sources.cc 2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/tools/migrate-sources/migrate-sources.cc 2007-08-29 18:20:39.000000000 +0200
@@ -35,7 +35,7 @@
 
 static void migrate_sources( const Options &opt )
 {
-  if ( string(getenv("YAST_IS_RUNNING")) == "instsys" )
+  if ( getenv("YAST_IS_RUNNING") && (string(getenv("YAST_IS_RUNNING")) == "instsys" ))
   {
     MIL << "YaST is running in instsys. Not migrating old sources. YaST will do it." << endl;
     return;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/VERSION.cmake new/libzypp-3.20.0/VERSION.cmake
--- old/libzypp-3.19.1/VERSION.cmake    2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/VERSION.cmake    2007-08-29 18:20:39.000000000 +0200
@@ -45,6 +45,6 @@
 #
 
 SET(LIBZYPP_MAJOR "3")
-SET(LIBZYPP_MINOR "19")
-SET(LIBZYPP_COMPATMINOR "0")
-SET(LIBZYPP_PATCH "1")
+SET(LIBZYPP_MINOR "20")
+SET(LIBZYPP_COMPATMINOR "19")
+SET(LIBZYPP_PATCH "0")
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/capability/CapabilityImpl.cc new/libzypp-3.20.0/zypp/capability/CapabilityImpl.cc
--- old/libzypp-3.19.1/zypp/capability/CapabilityImpl.cc        2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/capability/CapabilityImpl.cc        2007-08-29 18:20:40.000000000 +0200
@@ -99,6 +99,16 @@
       return *name_r.c_str() == '/';
     }
 
+    bool isInterestingFileSpec( const std::string & name_r )
+    {
+      static str::smatch what;
+      static const str::regex filenameRegex(
+          "/(s?bin|lib(64)?|etc)/|^/usr/(games/|share/(dict/words|magic\\.mime)$)|^/opt/gnome/games/",
+          str::regex::optimize|str::regex::nosubs );
+
+      return str::regex_match( name_r, what, filenameRegex );
+    }
+
     bool isSplitSpec( const std::string & name_r )
     {
       return name_r.find( ":/" ) != std::string::npos;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/capability/CapabilityImpl.h new/libzypp-3.20.0/zypp/capability/CapabilityImpl.h
--- old/libzypp-3.19.1/zypp/capability/CapabilityImpl.h 2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/capability/CapabilityImpl.h 2007-08-29 18:20:40.000000000 +0200
@@ -173,6 +173,13 @@
     /** Test for a FileCap. \a name_r starts with \c "/". */
     bool isFileSpec( const std::string & name_r );
 
+    /** Test for a FileCap that is likely being REQUIRED.
+     * Files below \c /bin , \c /sbin ,  \c /lib etc. Scanning a
+     * packages filelist, an \e interesting FileCap might be worth
+     * being remembered in PROVIDES.
+    */
+    bool isInterestingFileSpec( const std::string & name_r );
+
     /** Test for a SplitCap. \a name_r constains \c ":/". */
     bool isSplitSpec( const std::string & name_r );
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/capability/FileCap.h new/libzypp-3.20.0/zypp/capability/FileCap.h
--- old/libzypp-3.19.1/zypp/capability/FileCap.h        2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/capability/FileCap.h        2007-08-29 18:20:40.000000000 +0200
@@ -22,13 +22,17 @@
   { /////////////////////////////////////////////////////////////////
 
     DEFINE_PTR_TYPE(FileCap)
-    
+
     ///////////////////////////////////////////////////////////////////
     //
     // CLASS NAME : FileCap
     //
     /** A \c filename matching if some Resolvable provides it.
      *
+     * \see \ref capability::isInterestingFileSpec to test whether some
+     * filename is likely targeted by some requires, thus worth being
+     * provided.
+     *
      * \todo Check whether we have to look into the Resolable filelist as well.
     */
     class FileCap : public CapabilityImpl
@@ -37,7 +41,7 @@
       typedef FileCap Self;
       typedef FileCap_Ptr Ptr;
       typedef FileCap_constPtr constPtr;
-      
+
       /** Ctor */
       FileCap( const Resolvable::Kind & refers_r, const std::string & fname_r )
       : CapabilityImpl( refers_r )
@@ -47,7 +51,7 @@
     public:
       std::string filename() const
       { return _fname; }
-      
+
       /**  */
       virtual const Kind & kind() const;
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/CMakeLists.txt new/libzypp-3.20.0/zypp/CMakeLists.txt
--- old/libzypp-3.19.1/zypp/CMakeLists.txt      2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/CMakeLists.txt      2007-08-29 18:20:40.000000000 +0200
@@ -2,7 +2,7 @@
 # SOURCES                                                          #
 ####################################################################
 
-ADD_DEFINITIONS(-DLOCALEDIR=\\\"/usr/share/libzypp\\\" -DTEXTDOMAIN=\\\"zypp\\\" )
+ADD_DEFINITIONS(-DLOCALEDIR=\\\"${CMAKE_INSTALL_PREFIX}/share/locale\\\" -DTEXTDOMAIN=\\\"zypp\\\" )
 
 ADD_EXECUTABLE(mkarray ${CMAKE_SOURCE_DIR}/zypp/cache/schema/mkarray.c )
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
@@ -602,6 +602,7 @@
   solver/detail/ProblemSolutionUninstall.cc
   solver/detail/ProblemSolutionUnlock.cc
   solver/detail/ProblemSolutionAllBranches.cc
+  solver/detail/ProblemSolutionDoubleTimeout.cc
   solver/detail/QueueItem.cc
   solver/detail/QueueItemBranch.cc
   solver/detail/QueueItemConflict.cc
@@ -640,6 +641,7 @@
   solver/detail/ProblemSolutionUninstall.h
   solver/detail/ProblemSolutionUnlock.h
   solver/detail/ProblemSolutionAllBranches.h
+  solver/detail/ProblemSolutionDoubleTimeout.h
   solver/detail/QueueItem.h
   solver/detail/QueueItemBranch.h
   solver/detail/QueueItemConflict.h
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/DiskUsage.h new/libzypp-3.20.0/zypp/DiskUsage.h
--- old/libzypp-3.19.1/zypp/DiskUsage.h 2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/DiskUsage.h 2007-08-29 18:20:40.000000000 +0200
@@ -62,7 +62,7 @@
       }
 
       /**
-       * 
+       *
        **/
       const Entry & operator=( const Entry & rhs ) const {
         return rhs;
@@ -106,6 +106,10 @@
       add( Entry( dirname_r, size_r, files_r ) );
     }
     /**
+     * Whether there is no entry available.
+     */
+    bool empty() const { return _dirs.empty(); }
+    /**
      * Number of entries
      **/
     unsigned size() const { return _dirs.size(); }
@@ -123,7 +127,7 @@
 
     typedef EntrySet::iterator               iterator;
     typedef EntrySet::reverse_iterator       reverse_iterator;

+
     /**
      * Forward iterator pointing to the first entry (if any)
      **/
@@ -140,10 +144,10 @@
      * Reverse iterator pointing before the first entry.
      **/
     reverse_iterator rend() { return _dirs.rend(); }

+
     typedef EntrySet::const_iterator         const_iterator;
     typedef EntrySet::const_reverse_iterator const_reverse_iterator;

+
     /**
      * Forward const iterator pointing to the first entry (if any)
      **/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/parser/plaindir/RepoParser.cc new/libzypp-3.20.0/zypp/parser/plaindir/RepoParser.cc
--- old/libzypp-3.19.1/zypp/parser/plaindir/RepoParser.cc       2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/parser/plaindir/RepoParser.cc       2007-08-29 18:20:40.000000000 +0200
@@ -45,10 +45,10 @@
     ERR << "readdir " << dir << " failed" << endl;
     return 0;
   }
-  
+
   for (std::list<std::string>::const_iterator it = dircontent.begin();
        it != dircontent.end();
-       ++it) 
+       ++it)
   {
     Pathname dir_path = dir + *it;
     if ( PathInfo(dir_path).isDir())
@@ -69,7 +69,7 @@
   status.setChecksum(str::numstring(t));
   return status;
 }
-  
+
 data::Package_Ptr makePackageDataFromHeader( const RpmHeader::constPtr header,
                                              set<string> * filerequires,
                                              const Pathname & location, data::RecordId &repoid )
@@ -81,15 +81,10 @@
     WAR << "Can't make Package from SourcePackage header" << endl;
     return 0;
   }
-  
+
   data::Package_Ptr pkg = new data::Package;
-  
-//   typedef std::set<capability::CapabilityImpl::Ptr> DependencyList;
-//   typedef std::map<zypp::Dep, DependencyList>       Dependencies;
+
   pkg->name = header->tag_name();
-//   impl->setRepository( repo );
-//   if (!location.empty())
-//     impl->setLocation( location );
 
   try  {
     pkg->edition = Edition( header->tag_version(),
@@ -114,7 +109,7 @@
     WAR << "Package " << pkg->name << " has bad architecture '" << header->tag_arch() << "'";
     return 0;
   }
-  
+
   pkg->deps[Dep::REQUIRES]    = header->tag_requires( filerequires );
   pkg->deps[Dep::PREREQUIRES] = header->tag_prerequires( filerequires );
   pkg->deps[Dep::CONFLICTS]   = header->tag_conflicts( filerequires );
@@ -126,53 +121,19 @@
   pkg->buildTime              = header->tag_buildtime();
   pkg->summary                = (TranslatedText)header->tag_summary();
   pkg->description            = (TranslatedText)header->tag_description();
-  pkg->licenseToConfirm       = (TranslatedText)header->tag_license();
 
-//   Dependencies deps;
-  
-//    RecordId shareDataWith;
-//    std::string vendor;
-//    ByteCount installedSize;
-//    Date buildTime;
-//    DefaultIntegral<bool,false> installOnly;
-//    TranslatedText summary;
-//    TranslatedText description;
-//    TranslatedText licenseToConfirm;
-//    TranslatedText insnotify;
-//    TranslatedText delnotify;
-//    RecordId  repository;
-
-//      Location repositoryLocation;
-
-  pkg->repositoryLocation = location;
-
-//       std::string group;
-//       std::set<std::string> keywords;
-//       Changelog changelog;
-//       std::list<std::string> authors;
-//       std::string buildhost;
-//       std::string distribution;
-//       std::string license;
-//       std::string packager;
-//       std::string url;
-//       std::string operatingSystem;
-//       std::string prein;
-//       std::string postin;
-//       std::string preun;
-//       std::string postun;
-//   
+  pkg->repositoryLocation     = location;
+
+  header->tag_du( pkg->diskusage );
 
   list<string> filenames = header->tag_filenames();
   pkg->deps[Dep::PROVIDES] = header->tag_provides ( filerequires );
-  static str::smatch what;
-  static const str::regex filenameRegex( "/(s?bin|lib(64)?|etc)/|^/usr/(games/|share/(dict/words|magic\\.mime)$)|^/opt/gnome/games/",
-                                         str::regex::optimize|str::regex::nosubs );
 
   for (list<string>::const_iterator filename = filenames.begin();
        filename != filenames.end();
        ++filename)
   {
-    if ( str::regex_match( *filename, what, filenameRegex ) )
+    if ( capability::isInterestingFileSpec( *filename ) )
     {
       try {
         pkg->deps[Dep::PROVIDES].insert(capability::buildFile( ResTraits<Package>::kind, *filename ));
@@ -188,7 +149,7 @@
   return pkg;
 }
 

+
 /** RepoParser implementation.
  * \todo Clean data on exeption.
  */
@@ -216,7 +177,7 @@
 
   private: // these (and _ticks) are actually scoped per parse() run.
 };
-///////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////
 //
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/parser/yum/FileReaderBaseImpl.cc new/libzypp-3.20.0/zypp/parser/yum/FileReaderBaseImpl.cc
--- old/libzypp-3.19.1/zypp/parser/yum/FileReaderBaseImpl.cc    2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/parser/yum/FileReaderBaseImpl.cc    2007-08-29 18:20:40.000000000 +0200
@@ -246,11 +246,16 @@
         return true;
       }
 
-      //! \todo xpath: //format/file (*) figure out where to store this and what's it about (in regard to filelists.xml.gz)
+      // file entries listed outside of filelists.xml to be treated
+      // like rpm:provides
+      // xpath: //format/file (*)
       if (reader_r->name() == "file")
       {
-        // file = reader_r.nodeText().asString();
-        // type = reader_r->getAttribute("type").asString();
+        // insert file dependency into the list
+        package_ptr->deps[Dep::PROVIDES].insert(
+          zypp::capability::parse(
+            ResTraits<Package>::kind,
+            reader_r.nodeText().asString()));
         return true;
       }
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/parser/yum/schema/rpm-ns.rnc new/libzypp-3.20.0/zypp/parser/yum/schema/rpm-ns.rnc
--- old/libzypp-3.19.1/zypp/parser/yum/schema/rpm-ns.rnc        2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/parser/yum/schema/rpm-ns.rnc        2007-08-29 18:20:40.000000000 +0200
@@ -135,6 +135,7 @@
 supplements =
     element-entry*
 
+# treat as 'provides' file capability
 element-file =
     element ns1:file { file }
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/parser/yum/schema/validate-repodata.sh new/libzypp-3.20.0/zypp/parser/yum/schema/validate-repodata.sh
--- old/libzypp-3.19.1/zypp/parser/yum/schema/validate-repodata.sh      2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/parser/yum/schema/validate-repodata.sh      2007-08-29 18:20:40.000000000 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id$
+# $Id: validate-repodata.sh 5812 2007-06-20 13:30:06Z mvidner $
 set -o errexit
 USAGE=false
 DO_xmllint=false
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/repo/cached/PackageImpl.cc new/libzypp-3.20.0/zypp/repo/cached/PackageImpl.cc
--- old/libzypp-3.19.1/zypp/repo/cached/PackageImpl.cc  2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/repo/cached/PackageImpl.cc  2007-08-29 18:20:40.000000000 +0200
@@ -197,6 +197,17 @@
     // lazy init
     _diskusage.reset( new DiskUsage );
     _repository->resolvableQuery().queryDiskUsage( _id, *_diskusage );
+    if ( _diskusage->empty() )
+    {
+      // No info: Creating a faked entry distributing the
+      // total package size in assumed 200 files to "/ZYPP_NO_DU_INFO"
+      //
+      // Note: Less likely that some system has a mountpoint named
+      // ZYPP_NO_DU_INFO, so the size will be accounted to '/'.
+      // but adding a faked mountpoint entry an application is able
+      // to spot and handle these faked data in a different manner.
+      _diskusage->add( "/ZYPP_NO_DU_INFO", size(), 200 );
+    }
   }
   return *_diskusage;
 }
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/repo/cached/RepoImpl.cc new/libzypp-3.20.0/zypp/repo/cached/RepoImpl.cc
--- old/libzypp-3.19.1/zypp/repo/cached/RepoImpl.cc     2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/repo/cached/RepoImpl.cc     2007-08-29 18:20:40.000000000 +0200
@@ -64,7 +64,9 @@
 
 RepoImpl::~RepoImpl()
 {
+  _ticks.toMax();
   MIL << "Destroying repo '" << info().alias() << "'" << endl;
+  _ticks.noSend();
 }
 
 void read_capabilities( sqlite3_connection &con,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/repo/cached/SrcPackageImpl.cc new/libzypp-3.20.0/zypp/repo/cached/SrcPackageImpl.cc
--- old/libzypp-3.19.1/zypp/repo/cached/SrcPackageImpl.cc       2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/repo/cached/SrcPackageImpl.cc       2007-08-29 18:20:40.000000000 +0200
@@ -118,6 +118,12 @@
     // lazy init
     _diskusage.reset( new DiskUsage );
     _repository->resolvableQuery().queryDiskUsage( _id, *_diskusage );
+    if ( _diskusage->empty() )
+    {
+      // No info: Creating a faked entry distributing the
+      // total source package size in assumed 20 files to "/usr/src/packages"
+      _diskusage->add( "/usr/src/packages", size(), 20 );
+    }
   }
   return *_diskusage;
 }
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/repo/susetags/Downloader.cc new/libzypp-3.20.0/zypp/repo/susetags/Downloader.cc
--- old/libzypp-3.19.1/zypp/repo/susetags/Downloader.cc 2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/repo/susetags/Downloader.cc 2007-08-29 18:20:40.000000000 +0200
@@ -35,7 +35,9 @@
 RepoStatus Downloader::status( MediaSetAccess &media )
 {
   Pathname content = media.provideFile( _path + "/content");
-  return RepoStatus(content);
+  Pathname mediafile = media.provideFile( _path + "/media.1/media" );
+
+  return RepoStatus(content) && RepoStatus(mediafile);
 }
 
 void Downloader::download( MediaSetAccess &media,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/RepoManager.cc new/libzypp-3.20.0/zypp/RepoManager.cc
--- old/libzypp-3.19.1/zypp/RepoManager.cc      2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/RepoManager.cc      2007-08-29 18:20:40.000000000 +0200
@@ -327,7 +327,7 @@
 
       case RepoType::YAST2_e :
       {
-        status = RepoStatus( rawpath + "/content");
+        status = (RepoStatus( rawpath + "/media.1/media") && RepoStatus( rawpath + "/content") );
       }
       break;
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/RepoStatus.cc new/libzypp-3.20.0/zypp/RepoStatus.cc
--- old/libzypp-3.19.1/zypp/RepoStatus.cc       2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/RepoStatus.cc       2007-08-29 18:20:40.000000000 +0200
@@ -10,6 +10,7 @@
  *
 */
 #include <iostream>
+#include <sstream>
 //#include "zypp/base/Logger.h"
 #include "zypp/RepoStatus.h"
 #include "zypp/PathInfo.h"
@@ -111,6 +112,19 @@
   Date RepoStatus::timestamp() const
   { return _pimpl->timestamp; }
   
+  RepoStatus operator&&( const RepoStatus &lhs, const RepoStatus &rhs )
+  {
+    RepoStatus result;
+    string combinedcs = (lhs.checksum() + rhs.checksum());
+    stringstream ss(combinedcs);
+    CheckSum newcs(CheckSum::sha1(ss));
+    result.setChecksum(newcs.checksum());
+    result.setTimestamp(lhs.timestamp());
+    if ( rhs.timestamp() > lhs.timestamp() )
+      result.setTimestamp(rhs.timestamp());
+    return result;
+  }
+
   /******************************************************************
   **
   **   FUNCTION NAME : operator<<
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/RepoStatus.h new/libzypp-3.20.0/zypp/RepoStatus.h
--- old/libzypp-3.19.1/zypp/RepoStatus.h        2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/RepoStatus.h        2007-08-29 18:20:40.000000000 +0200
@@ -107,6 +107,12 @@
   /** \relates RepoStatus Stream output */
   std::ostream & operator<<( std::ostream & str, const RepoStatus & obj );
 
+  /**
+   * combines 2 repostatus with a checksum based on both
+   * checksums and the newest timestamp
+   */
+  RepoStatus operator&&( const RepoStatus &lhs, const RepoStatus &rhs );
+
   /////////////////////////////////////////////////////////////////
 } // namespace zypp
 ///////////////////////////////////////////////////////////////////
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/ProblemSolutionAllBranches.cc new/libzypp-3.20.0/zypp/solver/detail/ProblemSolutionAllBranches.cc
--- old/libzypp-3.19.1/zypp/solver/detail/ProblemSolutionAllBranches.cc 2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/solver/detail/ProblemSolutionAllBranches.cc 2007-08-29 18:20:40.000000000 +0200
@@ -44,13 +44,21 @@
 
 //---------------------------------------------------------------------------
 
-ProblemSolutionAllBranches::ProblemSolutionAllBranches( ResolverProblem_Ptr parent)
+ProblemSolutionAllBranches::ProblemSolutionAllBranches( ResolverProblem_Ptr parent,
+                                                       const bool takeAll)
     : ProblemSolution (parent, "", "")
+      ,all(takeAll)
 {
-    _description = _("Make a solver run with ALL possibilities.");
-    _details = _("Regarding all resolvables with a compatible architecture.");
+    if (all) {
+       _description = _("Make a solver run with ALL possibilities.");
+       _details = _("Regarding all resolvables with a compatible architecture.");
+       addAction ( new TransactionSolutionAction (ALLBRANCHES_ON));
+    } else {
+       _description = _("Make a solver run with best architecture only.");
+       _details = _("Regarding resolvables with best architecture only.");
+       addAction ( new TransactionSolutionAction (ALLBRANCHES_OFF));   
+    }
 
-    addAction ( new TransactionSolutionAction (ALLBRANCHES));
 }
 
       ///////////////////////////////////////////////////////////////////
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/ProblemSolutionAllBranches.h new/libzypp-3.20.0/zypp/solver/detail/ProblemSolutionAllBranches.h
--- old/libzypp-3.19.1/zypp/solver/detail/ProblemSolutionAllBranches.h  2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/solver/detail/ProblemSolutionAllBranches.h  2007-08-29 18:20:40.000000000 +0200
@@ -43,12 +43,14 @@
         **/
        class ProblemSolutionAllBranches : public ProblemSolution
        {
+       private:
+             bool all;
        public:
 
            /**
             * Constructor.
             **/
-           ProblemSolutionAllBranches( ResolverProblem_Ptr parent);
+           ProblemSolutionAllBranches( ResolverProblem_Ptr parent, const bool takeAll = true);
        };
 
       ///////////////////////////////////////////////////////////////////
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/ProblemSolutionDoubleTimeout.cc new/libzypp-3.20.0/zypp/solver/detail/ProblemSolutionDoubleTimeout.cc
--- old/libzypp-3.19.1/zypp/solver/detail/ProblemSolutionDoubleTimeout.cc       1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-3.20.0/zypp/solver/detail/ProblemSolutionDoubleTimeout.cc       2007-08-29 18:20:40.000000000 +0200
@@ -0,0 +1,64 @@
+
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* ProblemSolution.cc
+ *
+ * Easy-to use interface to the ZYPP dependency resolver
+ *
+ * Copyright (C) 2000-2002 Ximian, Inc.
+ * Copyright (C) 2005 SUSE Linux Products GmbH
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#include <sstream>
+
+#include "zypp/base/String.h"
+#include "zypp/base/Gettext.h"
+#include "zypp/solver/detail/ProblemSolutionDoubleTimeout.h"
+
+using namespace std;
+
+/////////////////////////////////////////////////////////////////////////
+namespace zypp
+{ ///////////////////////////////////////////////////////////////////////
+  ///////////////////////////////////////////////////////////////////////
+  namespace solver
+  { /////////////////////////////////////////////////////////////////////
+    /////////////////////////////////////////////////////////////////////
+    namespace detail
+    { ///////////////////////////////////////////////////////////////////
+
+IMPL_PTR_TYPE(ProblemSolutionDoubleTimeout);
+
+//---------------------------------------------------------------------------
+
+ProblemSolutionDoubleTimeout::ProblemSolutionDoubleTimeout( ResolverProblem_Ptr parent)
+    : ProblemSolution (parent, "", "")
+{
+    _description = _("Double timeout");
+    _details = _("Start the next solver run with doubled timeout.");
+
+    addAction ( new TransactionSolutionAction (DOUBLETIMEOUT));
+}
+
+      ///////////////////////////////////////////////////////////////////
+    };// namespace detail
+    /////////////////////////////////////////////////////////////////////
+    /////////////////////////////////////////////////////////////////////
+  };// namespace solver
+  ///////////////////////////////////////////////////////////////////////
+  ///////////////////////////////////////////////////////////////////////
+};// namespace zypp
+/////////////////////////////////////////////////////////////////////////
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/ProblemSolutionDoubleTimeout.h new/libzypp-3.20.0/zypp/solver/detail/ProblemSolutionDoubleTimeout.h
--- old/libzypp-3.19.1/zypp/solver/detail/ProblemSolutionDoubleTimeout.h        1970-01-01 01:00:00.000000000 +0100
+++ new/libzypp-3.20.0/zypp/solver/detail/ProblemSolutionDoubleTimeout.h        2007-08-29 18:20:40.000000000 +0200
@@ -0,0 +1,64 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* Resolver_problems.cc
+ *
+ * Copyright (C) 2000-2002 Ximian, Inc.
+ * Copyright (C) 2005 SUSE Linux Products GmbH
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+
+#ifndef ZYPP_SOLVER_DETAIL_PROBLEMSOLUTIONDOUBLETIMEOUT_H
+#define ZYPP_SOLVER_DETAIL_PROBLEMSOLUTIONDOUBLETIMEOUT_H
+
+#include "zypp/ProblemSolution.h"
+#include "zypp/solver/detail/Types.h"
+
+/////////////////////////////////////////////////////////////////////////
+namespace zypp
+{ ///////////////////////////////////////////////////////////////////////
+  ///////////////////////////////////////////////////////////////////////
+  namespace solver
+  { /////////////////////////////////////////////////////////////////////
+    /////////////////////////////////////////////////////////////////////
+    namespace detail
+    { ///////////////////////////////////////////////////////////////////
+
+       /**
+        * Class representing one possible solution to one problem found during resolving
+        * Make the next solver with double timeout
+        * 
+        **/
+       class ProblemSolutionDoubleTimeout : public ProblemSolution
+       {
+       public:
+
+           /**
+            * Constructor.
+            **/
+           ProblemSolutionDoubleTimeout( ResolverProblem_Ptr parent);
+       };
+
+      ///////////////////////////////////////////////////////////////////
+    };// namespace detail
+    /////////////////////////////////////////////////////////////////////
+    /////////////////////////////////////////////////////////////////////
+  };// namespace solver
+  ///////////////////////////////////////////////////////////////////////
+  ///////////////////////////////////////////////////////////////////////
+};// namespace zypp
+/////////////////////////////////////////////////////////////////////////
+
+#endif // ZYPP_SOLVER_DETAIL_PROBLEMSOLUTIONDOUBLETIMEOUT_H
+
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/Resolver.cc new/libzypp-3.20.0/zypp/solver/detail/Resolver.cc
--- old/libzypp-3.19.1/zypp/solver/detail/Resolver.cc   2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/solver/detail/Resolver.cc   2007-08-29 18:20:40.000000000 +0200
@@ -1339,6 +1339,8 @@
 
     }
     else {
+       MIL << "!!! Have NO solution !!!" << endl;        
+#if 0 // It takes too much memory for logging. Do not use it !
        MIL << "!!! Have NO solution !!! Additional solver information:" << endl;
        int counter = 0;
        for (ResolverQueueList::iterator iter = _invalid_queues.begin();
@@ -1347,10 +1349,11 @@
            MIL << "-----------------------------------------------------------------" << endl;
            MIL << counter++ << ". failed queue:" << endl;
            ResolverQueue_Ptr invalid = *iter;
-//         invalid->context()->spewInfo (); No additional information needed here
+           invalid->context()->spewInfo (); No additional information needed here
            MIL << *invalid->context() << endl;
            MIL << "-----------------------------------------------------------------" << endl;
        }
+#endif
     }
 
     if (tryAllPossibilities) {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/Resolver.h new/libzypp-3.20.0/zypp/solver/detail/Resolver.h
--- old/libzypp-3.19.1/zypp/solver/detail/Resolver.h    2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/solver/detail/Resolver.h    2007-08-29 18:20:40.000000000 +0200
@@ -203,8 +203,8 @@
 
     void setTimeout (int seconds) { _timeout_seconds = seconds; }
     void setMaxSolverPasses (int count) { _maxSolverPasses = count; }
-    int timeout () { return _timeout_seconds; }
-    int maxSolverPasses () { return _maxSolverPasses; }
+    int timeout () const { return _timeout_seconds; }
+    int maxSolverPasses () const { return _maxSolverPasses; }
 
     ResPool pool (void) const;
     void setPool (const ResPool & pool) { _pool = pool; }
@@ -246,7 +246,7 @@
     const bool preferHighestVersion() { return _preferHighestVersion; }
 
     void setTryAllPossibilities (const bool tryAllPossibilities) { _tryAllPossibilities = tryAllPossibilities; }
-    const bool tryAllPossibilities () { return _tryAllPossibilities; };
+    const bool tryAllPossibilities () const { return _tryAllPossibilities; };
 
     bool verifySystem (bool considerNewHardware = false);
     void establishState (ResolverContext_Ptr context = NULL);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/Resolver_problems.cc new/libzypp-3.20.0/zypp/solver/detail/Resolver_problems.cc
--- old/libzypp-3.19.1/zypp/solver/detail/Resolver_problems.cc  2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/solver/detail/Resolver_problems.cc  2007-08-29 18:20:40.000000000 +0200
@@ -32,6 +32,7 @@
 #include "zypp/solver/detail/ProblemSolutionUnlock.h"
 #include "zypp/solver/detail/ProblemSolutionKeep.h"
 #include "zypp/solver/detail/ProblemSolutionAllBranches.h"
+#include "zypp/solver/detail/ProblemSolutionDoubleTimeout.h"
 
 #include "zypp/solver/detail/ResolverInfoChildOf.h"
 #include "zypp/solver/detail/ResolverInfoConflictsWith.h"
@@ -305,6 +306,8 @@
 {
     ResolverProblemList problems;
 
+    MIL << "Resolver::problems(" << (ignoreValidSolution ? "ignoreValidSolution": "") << ")" << endl;
+
     if (_best_context && !ignoreValidSolution) {
        MIL << "Valid solution found, no problems" << endl;
        return problems;
@@ -316,6 +319,18 @@
 
     if (invalid.empty()) {
        WAR << "No solver problems, but there is also no valid solution." << endl;
+       if (!_best_context
+           && timeout() > 0) {
+           // This can be generated by a timout only
+           string what = str::form (_("No valid solution found within %d seconds"), timeout());
+           string details = _("The solver has reached a defined timout");
+           ResolverProblem_Ptr problem = new ResolverProblem (what, details);
+           problem->addSolution (new ProblemSolutionDoubleTimeout (problem));
+           if (tryAllPossibilities())
+               problem->addSolution (new ProblemSolutionAllBranches (problem,false));
+           problems.push_back (problem);
+       }
+       
        return problems;
     }
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/SolutionAction.cc new/libzypp-3.20.0/zypp/solver/detail/SolutionAction.cc
--- old/libzypp-3.19.1/zypp/solver/detail/SolutionAction.cc     2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/solver/detail/SolutionAction.cc     2007-08-29 18:20:40.000000000 +0200
@@ -67,7 +67,9 @@
        case INSTALL:   os << "Install"; break;
        case REMOVE:    os << "Remove"; break;
        case UNLOCK:    os << "Unlock"; break;
-       case ALLBRANCHES:       os << "All branches"; break;                
+       case ALLBRANCHES_ON:    os << "All branches on"; break;
+       case ALLBRANCHES_OFF:   os << "All branches off"; break;            
+       case DOUBLETIMEOUT:     os << "Double timeout"; break;
     }
     os << " ";
     os << _item;
@@ -160,9 +162,15 @@
            ret = _item.status().setLock (false, ResStatus::USER);
            if (!ret) ERR << "Cannot unlock " << _item << endl;
            break;
-       case ALLBRANCHES:
+       case ALLBRANCHES_ON:
            resolver.setTryAllPossibilities (true);
            break;
+       case ALLBRANCHES_OFF:
+           resolver.setTryAllPossibilities (false);
+           break;
+       case DOUBLETIMEOUT:
+           resolver.setTimeout (resolver.timeout()*2);
+           break;          
        default:
            ERR << "Wrong TransactionKind" << endl;
            ret = false;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/solver/detail/SolutionAction.h new/libzypp-3.20.0/zypp/solver/detail/SolutionAction.h
--- old/libzypp-3.19.1/zypp/solver/detail/SolutionAction.h      2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/solver/detail/SolutionAction.h      2007-08-29 18:20:40.000000000 +0200
@@ -68,7 +68,9 @@
            INSTALL,
            REMOVE,
            UNLOCK,
-           ALLBRANCHES
+           ALLBRANCHES_ON,
+           ALLBRANCHES_OFF,        
+           DOUBLETIMEOUT
        } TransactionKind;
 
 
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/target/rpm/RpmDb.cc new/libzypp-3.20.0/zypp/target/rpm/RpmDb.cc
--- old/libzypp-3.19.1/zypp/target/rpm/RpmDb.cc 2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/target/rpm/RpmDb.cc 2007-08-29 18:20:40.000000000 +0200
@@ -1215,15 +1215,11 @@
   CapFactory capfactory;
   insertCaps( dataCollect[Dep::PROVIDES], header->tag_provides( filerequires ), capfactory );
 
-  static str::smatch what;
-  static const str::regex filenameRegex( "/(s?bin|lib(64)?|etc)/|^/usr/(games/|share/(dict/words|magic\\.mime)$)|^/opt/gnome/games/",
-                                         str::regex::optimize|str::regex::nosubs );
-
   for (list<string>::const_iterator filename = filenames.begin();
        filename != filenames.end();
        ++filename)
   {
-    if ( str::regex_match( *filename, what, filenameRegex ) )
+    if ( capability::isInterestingFileSpec( *filename ) )
     {
       try
       {
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/libzypp-3.19.1/zypp/zypp_detail/ZYppImpl.cc new/libzypp-3.20.0/zypp/zypp_detail/ZYppImpl.cc
--- old/libzypp-3.19.1/zypp/zypp_detail/ZYppImpl.cc     2007-08-28 19:03:01.000000000 +0200
+++ new/libzypp-3.20.0/zypp/zypp_detail/ZYppImpl.cc     2007-08-29 18:20:40.000000000 +0200
@@ -179,7 +179,13 @@
     }
 
     DiskUsageCounter::MountPointSet ZYppImpl::diskUsage()
-    { return _disk_usage->disk_usage(pool()); }
+    {
+      if ( ! _disk_usage )
+      {
+        setPartitions( DiskUsageCounter::detectMountPoints() );
+      }
+      return _disk_usage->disk_usage(pool());
+    }
 
     void ZYppImpl::setPartitions(const DiskUsageCounter::MountPointSet &mp)
     {
@@ -420,7 +426,7 @@
       {
         // noop: Someone decided to let target() throw if the ptr is NULL ;(
       }
-      
+
       int num=0;
       PathInfo locksrc( locksrcPath );
       if ( locksrc.isFile() )



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



Remember to have fun...

---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-commit+help@xxxxxxxxxxxx

< Previous Next >