Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Fix autoremove solving.
Vsevolod Stakhov committed 12 years ago
commit a3bb1216e6392c4e59bd3356664eb6f7d86d96b6
parent 8220b04
2 files changed +19 -1
modified libpkg/pkg_delete.c
@@ -49,6 +49,16 @@ pkg_delete(struct pkg *pkg, struct pkgdb *db, unsigned flags)

	assert(pkg != NULL);
	assert(db != NULL);
+
	/*
+
	 * Do not trust the existing entries as it may have changed if we
+
	 * delete packages in batch.
+
	 */
+
	pkg_list_free(pkg, PKG_RDEPS);
+
	/*
+
	 * Ensure that we have all the informations we need
+
	 */
+
	if ((ret = pkgdb_load_rdeps(db, pkg)) != EPKG_OK)
+
		return (ret);

	if ((ret = pkgdb_load_files(db, pkg)) != EPKG_OK)
		return (ret);
modified libpkg/pkg_jobs.c
@@ -540,7 +540,6 @@ jobs_solve_autoremove(struct pkg_jobs *j)
				pkg_emit_locked(pkg);
			}
			else if (pkg_jobs_test_automatic(j, pkg, 0)) {
-
				pkg_get(pkg, PKG_ORIGIN, &origin);
				pkg_debug(2, "removing %s as it has no non-automatic reverse depends",
						origin);
				pkg_jobs_add_req(j, origin, pkg, false, 0);
@@ -549,6 +548,15 @@ jobs_solve_autoremove(struct pkg_jobs *j)
			pkg_jobs_add_universe(j, pkg, 0, true);
		}
		else {
+
			if(pkg_is_locked(unit->pkg)) {
+
				pkg_emit_locked(unit->pkg);
+
			}
+
			else if (pkg_jobs_test_automatic(j, unit->pkg, 0)) {
+
				pkg_debug(2, "removing %s as it has no non-automatic reverse depends",
+
						origin);
+
				pkg_jobs_add_req(j, origin, unit->pkg, false, 0);
+
			}
+

			pkg_free(pkg);
		}
		pkg = NULL;