Enhance UpgradeRepo interface.
authorMichael Andres <ma@suse.de>
Fri, 23 Oct 2009 10:20:18 +0000 (12:20 +0200)
committerMichael Andres <ma@suse.de>
Fri, 23 Oct 2009 10:20:18 +0000 (12:20 +0200)
zypp/Resolver.cc
zypp/Resolver.h
zypp/solver/detail/Resolver.h

index 6e3b9cf..db9ff6c 100644 (file)
@@ -99,6 +99,7 @@ namespace zypp
   bool Resolver::solveSrcPackages() const              { return _pimpl->solveSrcPackages(); }
 
   void Resolver::addUpgradeRepo( Repository repo_r )   { _pimpl->addUpgradeRepo( repo_r ); }
+  bool Resolver::upgradingRepo( Repository repo_r ) const { return _pimpl->upgradingRepo( repo_r ); }
   void Resolver::removeUpgradeRepo( Repository repo_r )        { _pimpl->removeUpgradeRepo( repo_r ); }
   void Resolver::removeUpgradeRepos()                  { _pimpl->removeUpgradeRepos(); }
 
index b6b748b..74db641 100644 (file)
@@ -218,15 +218,26 @@ namespace zypp
     void setDefaultSolveSrcPackages();
     bool solveSrcPackages() const;
 
+    /** \name Upgrade to content of a specific repository.
+     * \note This is an ordinary solver request. You should simply
+     * \ref resolvePool to execute, and not \ref doUpgrade.
+     */
+    //@{
     /**
      * Adding request to perform a dist upgrade restricted to this repository.
+     *
      * This is what e.g. <tt>zypper dup --repo myrepo</tt> should perform.
      * \see \ref doUpgrade
      */
     void addUpgradeRepo( Repository repo_r );
 
     /**
-     * Remove the upgrade request for this repo.
+     * Whether there is an \c UpgradeRepo request pending for this repo.
+     */
+    bool upgradingRepo( Repository repo_r ) const;
+
+    /**
+     * Remove an upgrade request for this repo.
      */
     void removeUpgradeRepo( Repository repo_r );
 
@@ -234,6 +245,7 @@ namespace zypp
      * Remove all upgrade repo requests.
      */
     void removeUpgradeRepos();
+    //@}
 
     /**
      * Adding additional requirement
index 8f65722..ee4ee7b 100644 (file)
@@ -154,7 +154,8 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable {
     ResPool pool() const;
     void setPool( const ResPool & pool ) { _pool = pool; }
 
-    void addUpgradeRepo( Repository repo_r )           { if ( repo_r ) _upgradeRepos.insert( repo_r ); }
+    void addUpgradeRepo( Repository repo_r )           { if ( repo_r && ! repo_r.isSystemRepo() ) _upgradeRepos.insert( repo_r ); }
+    bool upgradingRepo( Repository repo_r ) const      { return( _upgradeRepos.find( repo_r ) != _upgradeRepos.end() ); }
     void removeUpgradeRepo( Repository repo_r )                { _upgradeRepos.erase( repo_r ); }
     void removeUpgradeRepos()                          { _upgradeRepos.clear(); }
     const std::set<Repository> & upgradeRepos() const  { return _upgradeRepos; }