From e3f13297ffa7ed3bc905b4bdabf65f511d9aca58 Mon Sep 17 00:00:00 2001 From: Michael Andres Date: Fri, 23 Oct 2009 12:20:18 +0200 Subject: [PATCH] Enhance UpgradeRepo interface. --- zypp/Resolver.cc | 1 + zypp/Resolver.h | 14 +++++++++++++- zypp/solver/detail/Resolver.h | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/zypp/Resolver.cc b/zypp/Resolver.cc index 6e3b9cf..db9ff6c 100644 --- a/zypp/Resolver.cc +++ b/zypp/Resolver.cc @@ -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(); } diff --git a/zypp/Resolver.h b/zypp/Resolver.h index b6b748b..74db641 100644 --- a/zypp/Resolver.h +++ b/zypp/Resolver.h @@ -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. zypper dup --repo myrepo 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 diff --git a/zypp/solver/detail/Resolver.h b/zypp/solver/detail/Resolver.h index 8f65722..ee4ee7b 100644 --- a/zypp/solver/detail/Resolver.h +++ b/zypp/solver/detail/Resolver.h @@ -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 & upgradeRepos() const { return _upgradeRepos; } -- 2.7.4