[Aptitude-svn-commit] r3915 - in branches/aptitude-0.3/aptitude: . src/generic

Daniel Burrows dburrows at costa.debian.org
Thu Aug 18 01:18:33 UTC 2005


Author: dburrows
Date: Thu Aug 18 01:18:30 2005
New Revision: 3915

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/generic/aptcache.cc
   branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.cc
   branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h
Log:
Add support for penalizing solutions that break holds.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Thu Aug 18 01:18:30 2005
@@ -1,5 +1,10 @@
 2005-08-17  Daniel Burrows  <dburrows at debian.org>
 
+	* src/generic/aptcache.cc, src/generic/aptitude_resolver.cc, src/generic/aptitude_resolver.h:
+
+	  Add support for adding an extra penalty to solutions that break
+	  a user hold or install a forbidden package version.
+
 	* src/vscreen/vs_tree.cc:
 
 	  Fix the bug that caused the screen to scroll pointlessly at the

Modified: branches/aptitude-0.3/aptitude/src/generic/aptcache.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/aptcache.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/aptcache.cc	Thu Aug 18 01:18:30 2005
@@ -1384,7 +1384,8 @@
 			      aptcfg->FindI(PACKAGE "::ProblemResolver::InstallScore", -20),
 			      aptcfg->FindI(PACKAGE "::ProblemResolver::UpgradeScore", 0),
 			      aptcfg->FindI(PACKAGE "::ProblemResolver::NonDefaultScore", -40),
-			      aptcfg->FindI(PACKAGE "::ProblemResolver::EssentialRemoveScore", -100000));
+			      aptcfg->FindI(PACKAGE "::ProblemResolver::EssentialRemoveScore", -100000),
+			      aptcfg->FindI(PACKAGE "::ProblemResolver::BreakHoldScore", -300));
 
   resolver->add_priority_scores(aptcfg->FindI(PACKAGE "::ProblemResolver::ImportantScore", 5),
 				aptcfg->FindI(PACKAGE "::ProblemResolver::RequiredScore", 4),

Modified: branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.cc	Thu Aug 18 01:18:30 2005
@@ -36,7 +36,8 @@
 void aptitude_resolver::add_action_scores(int preserve_score, int auto_score,
 					  int remove_score, int keep_score,
 					  int install_score, int upgrade_score,
-					  int non_default_score, int essential_remove)
+					  int non_default_score, int essential_remove,
+					  int break_hold_score)
 {
   // Should I stick with APT iterators instead?  This is a bit more
   // convenient, though..
@@ -89,6 +90,11 @@
 		  else
 		    add_version_score(v, upgrade_score);
 		}
+
+	      if(!p.get_pkg().CurrentVer().end() &&
+		 (state.selection_state == pkgCache::State::Hold ||
+		  state.forbidver == v.get_ver().VerStr()))
+		add_version_score(v, break_hold_score);
 	    }
 	  else
 	    // We know that:

Modified: branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h	Thu Aug 18 01:18:30 2005
@@ -81,11 +81,15 @@
    * \param essential_remove an additional modification applied to the
    * removal of an essential package (typically used to deep-six such
    * solutions by, eg, setting it to -100000)
+   *
+   * \param break_hold_score an additional modification applied to
+   * solutions that break a hold or violate a forbidding.
    */
   void add_action_scores(int preserve_score, int auto_score,
 			 int remove_score, int keep_score,
 			 int install_score, int upgrade_score,
-			 int non_default_score, int essential_remove);
+			 int non_default_score, int essential_remove,
+			 int break_hold_score);
 
   /** Score packages/versions according to their priorities.  Normally
    *  you want important>=required>=standard>=optional>=extra.



More information about the Aptitude-svn-commit mailing list