diff --git a/libpkg/pkg_checksum.c b/libpkg/pkg_checksum.c index 880eccc..2976694 100644 --- a/libpkg/pkg_checksum.c +++ b/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 */ diff --git a/libpkg/pkg_jobs.c b/libpkg/pkg_jobs.c index 8ac466c..8597ce1 100644 --- a/libpkg/pkg_jobs.c +++ b/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);