Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Change assumptions about failed variables.
Vsevolod Stakhov committed 10 years ago
commit cce96e875b7642d9c84326860e509cab7c7fc88f
parent 8ab6adf
1 file changed +11 -12
modified libpkg/pkg_solve.c
@@ -890,29 +890,28 @@ pkg_solve_picosat_iter(struct pkg_solve_problem *problem, int iter)
		if (var->top_level)
			continue;

-
		if (is_installed) {
-
			if (!var->failed) {
+
		if (!var->failed) {
+
			if (is_installed) {
				picosat_set_default_phase_lit(problem->sat, i + 1, 1);
				picosat_set_more_important_lit(problem->sat, i + 1);
			}
-
			else {
+
			else if  (!var->next && var->prev == var) {
+
				/* Prefer not to install if have no local version */
				picosat_set_default_phase_lit(problem->sat, i + 1, -1);
				picosat_set_less_important_lit(problem->sat, i + 1);
-
				var->failed = false;
			}
		}
		else {
-
			if (var->failed) {
-
				/* Prefer to upgrade/install if local failed */
-
				picosat_set_default_phase_lit(problem->sat, i + 1, 1);
-
				picosat_set_more_important_lit(problem->sat, i + 1);
-
				var->failed = false;
-
			}
-
			else if (!var->next && var->prev == var) {
-
				/* Prefer not to install if have no local version */
+
			if (var->unit->pkg->type == PKG_INSTALLED) {
				picosat_set_default_phase_lit(problem->sat, i + 1, -1);
				picosat_set_less_important_lit(problem->sat, i + 1);
			}
+
			else {
+
				picosat_set_default_phase_lit(problem->sat, i + 1, 1);
+
				picosat_set_more_important_lit(problem->sat, i + 1);
+
			}
+

+
			var->failed = false;
		}
	}