Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
vital: fix regression: allow for remove with --force
Baptiste Daroussin committed 1 year ago
commit 539f55acf9dae5d9c3c89eef87f16a643ddadf19
parent c5112c0
2 files changed +4 -3
modified libpkg/pkg_jobs.c
@@ -1491,6 +1491,7 @@ jobs_solve_deinstall(struct pkg_jobs *j)
	struct job_pattern *jp;
	struct pkg *pkg = NULL;
	struct pkgdb_it *it;
+
	bool force = (j->flags & PKG_FLAG_FORCE);
	LL_FOREACH(j->patterns, jp) {
		if ((it = pkgdb_query(j->db, jp->pattern, jp->match)) == NULL)
			return (EPKG_FATAL);
@@ -1502,7 +1503,7 @@ jobs_solve_deinstall(struct pkg_jobs *j)
		while (pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC|PKG_LOAD_RDEPS|
		    PKG_LOAD_DEPS|PKG_LOAD_ANNOTATIONS|PKG_LOAD_PROVIDES|
		    PKG_LOAD_SHLIBS_PROVIDED) == EPKG_OK) {
-
			if(pkg->locked || pkg->vital) {
+
			if(pkg->locked || (pkg->vital && !force)) {
				if (tsearch(pkg, &j->lockedpkgs, comp) == NULL) {
					pkgdb_it_free(it);
					return (EPKG_FATAL);
modified tests/frontend/vital.sh
@@ -39,9 +39,9 @@ EOF
		pkg -o REPOS_DIR=/dev/null -r ${TMPDIR}/target query "%V" test

	atf_check \
-
		-o empty \
+
		-o inline:"The following package(s) are locked or vital and may not be removed:\n\n\ttest\n\n" \
		-e empty  \
-
		-s exit:1 \
+
		-s exit:7 \
		pkg -r ${TMPDIR}/target delete -qy test
	atf_check \
		-o empty \