Author: schubi2 Date: Thu May 8 14:21:32 2008 New Revision: 9988 URL: http://svn.opensuse.org/viewcvs/zypp?rev=9988&view=rev Log: - new solution action for removing requirements/conflicts Bug 387631 Modified: trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.cc trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.h trunk/libzypp/zypp/solver/detail/SATResolver.cc trunk/libzypp/zypp/solver/detail/SolutionAction.cc trunk/libzypp/zypp/solver/detail/SolutionAction.h Modified: trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.cc?rev=9988&r1=9987&r2=9988&view=diff ============================================================================== --- trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.cc (original) +++ trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.cc Thu May 8 14:21:32 2008 @@ -53,6 +53,12 @@ _details = ""; } +void ProblemSolutionCombi::addSingleAction( Capability capability, const TransactionKind action) +{ + addAction (new TransactionSolutionAction(capability, action)); + actNumber++; +} + void ProblemSolutionCombi::addSingleAction( PoolItem item, const TransactionKind action) { addAction (new TransactionSolutionAction(item, action)); Modified: trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.h?rev=9988&r1=9987&r2=9988&view=diff ============================================================================== --- trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.h (original) +++ trunk/libzypp/zypp/solver/detail/ProblemSolutionCombi.h Thu May 8 14:21:32 2008 @@ -53,11 +53,16 @@ **/ ProblemSolutionCombi( ResolverProblem_Ptr parent ); /** - * Add a single action + * Add a single action of an item */ void addSingleAction( PoolItem item, const TransactionKind action); /** + * Add a single action of an capability + */ + void addSingleAction( Capability capability, const TransactionKind action); + + /** * returns the number of actions */ int actionCount() { return actNumber;} Modified: trunk/libzypp/zypp/solver/detail/SATResolver.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/SATResolver.cc?rev=9988&r1=9987&r2=9988&view=diff ============================================================================== --- trunk/libzypp/zypp/solver/detail/SATResolver.cc (original) +++ trunk/libzypp/zypp/solver/detail/SATResolver.cc Thu May 8 14:21:32 2008 @@ -1067,14 +1067,7 @@ break; case SOLVER_INSTALL_SOLVABLE_PROVIDES: { - Id p, *pp; - FOR_PROVIDES(p, pp, what); - { - PoolItem poolItem = _pool.find (sat::Solvable(p)); - if (poolItem.status().isToBeInstalled() - || poolItem.status().staysUninstalled()) - problemSolution->addSingleAction (poolItem, KEEP); - } + problemSolution->addSingleAction (Capability(what), REMOVE_REQUIRE); string description = str::form (_("do not ask to install a solvable providing %s"), dep2str(pool, what)); MIL << description << endl; problemSolution->addDescription (description); @@ -1082,14 +1075,7 @@ break; case SOLVER_ERASE_SOLVABLE_PROVIDES: { - Id p, *pp; - FOR_PROVIDES(p, pp, what); - { - PoolItem poolItem = _pool.find (sat::Solvable(p)); - if (poolItem.status().isToBeUninstalled() - || poolItem.status().staysInstalled()) - problemSolution->addSingleAction (poolItem, KEEP); - } + problemSolution->addSingleAction (Capability(what), REMOVE_CONFLICT); string description = str::form (_("do not ask to delete all solvables providing %s"), dep2str(pool, what)); MIL << description << endl; problemSolution->addDescription (description); Modified: trunk/libzypp/zypp/solver/detail/SolutionAction.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/SolutionAction.cc?rev=9988&r1=9987&r2=9988&view=diff ============================================================================== --- trunk/libzypp/zypp/solver/detail/SolutionAction.cc (original) +++ trunk/libzypp/zypp/solver/detail/SolutionAction.cc Thu May 8 14:21:32 2008 @@ -63,13 +63,14 @@ { os << "TransactionSolutionAction: "; switch (_action) { - case KEEP: os << "Keep"; break; - case INSTALL: os << "Install"; break; - case REMOVE: os << "Remove"; break; - case UNLOCK: os << "Unlock"; break; + case KEEP: os << "Keep " << _item; break; + case INSTALL: os << "Install " << _item; break; + case REMOVE: os << "Remove " << _item; break; + case UNLOCK: os << "Unlock " << _item; break; + case REMOVE_REQUIRE: os << "Remove require " << _capability; break; + case REMOVE_CONFLICT: os << "Remove conflict " << _capability; break; } - os << " "; - os << _item; + os << endl; return os; } @@ -151,6 +152,12 @@ ret = _item.status().setLock (false, ResStatus::USER); if (!ret) ERR << "Cannot unlock " << _item << endl; break; + case REMOVE_REQUIRE: + resolver.removeExtraRequire (_capability); + break; + case REMOVE_CONFLICT: + resolver.removeExtraConflict (_capability); + break; default: ERR << "Wrong TransactionKind" << endl; ret = false; Modified: trunk/libzypp/zypp/solver/detail/SolutionAction.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/SolutionAction.h?rev=9988&r1=9987&r2=9988&view=diff ============================================================================== --- trunk/libzypp/zypp/solver/detail/SolutionAction.h (original) +++ trunk/libzypp/zypp/solver/detail/SolutionAction.h Thu May 8 14:21:32 2008 @@ -67,7 +67,9 @@ KEEP, INSTALL, REMOVE, - UNLOCK + UNLOCK, + REMOVE_REQUIRE, + REMOVE_CONFLICT, } TransactionKind; @@ -79,6 +81,11 @@ : SolutionAction(), _item( item ), _action( action ) {} + TransactionSolutionAction( Capability capability, + TransactionKind action ) + : SolutionAction(), + _capability( capability ), _action( action ) {} + TransactionSolutionAction( TransactionKind action ) : SolutionAction(), _item(), _action( action ) {} @@ -99,6 +106,7 @@ protected: PoolItem _item; + Capability _capability; const TransactionKind _action; }; -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org