Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Be explicit about why a port is being reinstalled
Baptiste Daroussin committed 12 years ago
commit aceaad1e0995a77b935a77b952d71fa58c734c6c
parent 9543456
4 files changed +18 -7
modified libpkg/pkg.h.in
@@ -213,7 +213,8 @@ typedef enum {
	PKG_OLD_VERSION,
	PKG_REPONAME,
	PKG_REPOURL,
-
	PKG_DIGEST, 
+
	PKG_DIGEST,
+
	PKG_REASON,
	/* end of fields */
	PKG_FLATSIZE = 64U,
	PKG_OLD_FLATSIZE,
modified libpkg/pkg_jobs.c
@@ -684,12 +684,14 @@ newer_than_local_pkg(struct pkg_jobs *j, struct pkg *rp, bool force)
		ret2 = pkg_options(lp, &lo);
		if (ret1 != ret2) {
			pkg_free(lp);
+
			pkg_set(rp, PKG_REASON, "options changed");
			return (true);
		}
		if (ret1 == EPKG_OK) {
			if (strcmp(pkg_option_opt(lo), pkg_option_opt(ro)) != 0 ||
				strcmp(pkg_option_value(lo), pkg_option_value(ro)) != 0) {
				pkg_free(lp);
+
				pkg_set(rp, PKG_REASON, "options changed");
				return (true);
			}
		}
@@ -704,12 +706,14 @@ newer_than_local_pkg(struct pkg_jobs *j, struct pkg *rp, bool force)
		ret2 = pkg_deps(lp, &ld);
		if (ret1 != ret2) {
			pkg_free(lp);
+
			pkg_set(rp, PKG_REASON, "direct dependency changed");
			return (true);
		}
		if (ret1 == EPKG_OK) {
			if (strcmp(pkg_dep_get(rd, PKG_DEP_NAME),
-
					pkg_dep_get(ld, PKG_DEP_NAME)) != 0) {
+
			    pkg_dep_get(ld, PKG_DEP_NAME)) != 0) {
				pkg_free(lp);
+
				pkg_set(rp, PKG_REASON, "direct dependency changed");
				return (true);
			}
		}
@@ -723,12 +727,14 @@ newer_than_local_pkg(struct pkg_jobs *j, struct pkg *rp, bool force)
		ret2 = pkg_shlibs_required(lp, &ls);
		if (ret1 != ret2) {
			pkg_free(lp);
+
			pkg_set(rp, PKG_REASON, "needed shared library changed");
			return (true);
		}
		if (ret1 == EPKG_OK) {
			if (strcmp(pkg_shlib_name(rs),
-
					pkg_shlib_name(ls)) != 0) {
+
			    pkg_shlib_name(ls)) != 0) {
				pkg_free(lp);
+
				pkg_set(rp, PKG_REASON, "needed shared library changed");
				return (true);
			}
		}
modified libpkg/private/pkg.h
@@ -48,7 +48,7 @@
#endif
#include "private/utils.h"

-
#define PKG_NUM_FIELDS 19
+
#define PKG_NUM_FIELDS 20
#define PKG_NUM_SCRIPTS 8

#if ARCHIVE_VERSION_NUMBER < 3000002
modified pkg/utils.c
@@ -539,7 +539,7 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
	struct pkg *pkg = NULL;
	char path[MAXPATHLEN];
	struct stat st;
-
	const char *name, *version, *oldversion, *pkgrepopath, *cachedir;
+
	const char *name, *version, *oldversion, *pkgrepopath, *cachedir, *why;
	int64_t dlsize, oldsize, newsize;
	int64_t flatsize, oldflatsize, pkgsize;
	bool locked;
@@ -563,7 +563,8 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
		pkg_get(pkg, PKG_OLD_VERSION, &oldversion, PKG_NAME, &name,
		    PKG_VERSION, &version, PKG_FLATSIZE, &flatsize,
		    PKG_OLD_FLATSIZE, &oldflatsize, PKG_PKGSIZE, &pkgsize,
-
		    PKG_REPOPATH, &pkgrepopath, PKG_LOCKED, &locked);
+
		    PKG_REPOPATH, &pkgrepopath, PKG_LOCKED, &locked,
+
		    PKG_REASON, &why);

		if (locked) {
			printf("\tPackage %s-%s is locked ",
@@ -615,7 +616,10 @@ print_jobs_summary(struct pkg_jobs *jobs, const char *msg, ...)
					printf("\tDowngrading %s: %s -> %s\n", name, oldversion, version);
					break;
				case 0:
-
					printf("\tReinstalling %s-%s\n", name, version);
+
					printf("\tReinstalling %s-%s", name, version);
+
					if (why != NULL)
+
						printf(" (%s)", why);
+
					printf("\n");
					break;
				case -1:
					printf("\tUpgrading %s: %s -> %s\n", name, oldversion, version);