Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Reinstall when dep origin change as well
Baptiste Daroussin committed 11 years ago
commit 4ac0527bd9f3be9d79f0f9750e6f9fa6695d7fc3
parent 6de7aeb
2 files changed +8 -3
modified libpkg/pkg_checksum.c
@@ -128,6 +128,7 @@ pkg_checksum_generate(struct pkg *pkg, char *dest, size_t destlen,
	pkg_checksum_type_t type)
{
	unsigned char *bdigest;
+
	char *olduid;
	size_t blen;
	struct pkg_checksum_entry *entries = NULL;
	struct pkg_option *option = NULL;
@@ -169,7 +170,9 @@ pkg_checksum_generate(struct pkg *pkg, char *dest, size_t destlen,
	}

	while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
		pkg_checksum_add_entry("depend", dep->uid, &entries);
+
		asprintf(&olduid, "%s~%s", pkg_dep_get(dep, PKG_DEP_NAME), pkg_dep_get(dep, PKG_DEP_ORIGIN));
+
		pkg_checksum_add_entry("depend", olduid, &entries);
+
		free(olduid);
	}

	/* Sort before hashing */
modified libpkg/pkg_jobs.c
@@ -1078,8 +1078,10 @@ pkg_jobs_need_upgrade(struct pkg *rp, struct pkg *lp)
			return (true);
		}
		if (ret1 == EPKG_OK) {
-
			if (strcmp(pkg_dep_get(rd, PKG_DEP_NAME),
-
					pkg_dep_get(ld, PKG_DEP_NAME)) != 0) {
+
			if ((strcmp(pkg_dep_get(rd, PKG_DEP_NAME),
+
			    pkg_dep_get(ld, PKG_DEP_NAME)) != 0) ||
+
			    (strcmp(pkg_dep_get(rd, PKG_DEP_ORIGIN),
+
			    pkg_dep_get(ld, PKG_DEP_ORIGIN)) != 0)) {
				free(rp->reason);
				rp->reason = strdup("direct dependency changed");
				return (true);