From 31b1975b1e901bf714c8be40bf09c7e00e637729 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sun, 11 Mar 2012 17:15:49 +0100 Subject: [PATCH] xbps_match_any_virtualpkg_in_rundeps: break correctly from inner loop on match. --- lib/plist_match.c | 4 ++-- lib/repository_finddeps.c | 44 +++++++-------------------------------- 2 files changed, 9 insertions(+), 39 deletions(-) diff --git a/lib/plist_match.c b/lib/plist_match.c index 3c74641e..dd39ef60 100644 --- a/lib/plist_match.c +++ b/lib/plist_match.c @@ -74,9 +74,9 @@ xbps_match_any_virtualpkg_in_rundeps(prop_array_t rundeps, found = true; break; } - if (found) - break; } + if (found) + break; } return found; } diff --git a/lib/repository_finddeps.c b/lib/repository_finddeps.c index 0193070d..dda1c1d1 100644 --- a/lib/repository_finddeps.c +++ b/lib/repository_finddeps.c @@ -292,15 +292,18 @@ find_repo_deps(prop_dictionary_t transd, /* transaction dictionary */ if (rv == 0) { /* * Package is installed but does not match - * the dependency pattern. + * the dependency pattern, update pkg. */ + xbps_dbg_printf_append("installed `%s', " + "must be updated.\n", pkgver_q); + reason = "update"; } else if (rv == 1) { rv = 0; if (state == XBPS_PKG_STATE_UNPACKED) { /* * Package matches the dependency * pattern but was only unpacked, - * mark pkg to be configured. + * configure pkg. */ xbps_dbg_printf_append("installed `%s'" ", must be configured.\n", @@ -310,7 +313,7 @@ find_repo_deps(prop_dictionary_t transd, /* transaction dictionary */ /* * Package matches the dependency * pattern and is fully installed, - * skip and pass to next one. + * skip to next one. */ xbps_dbg_printf_append("installed " "`%s'.\n", pkgver_q); @@ -399,41 +402,8 @@ find_repo_deps(prop_dictionary_t transd, /* transaction dictionary */ } } } - /* - * Pass 4: check if new dependency is already installed, due - * to virtual packages. - */ - prop_dictionary_get_cstring_nocopy(curpkgd, "pkgver", &pkgver_q); - tmpd = xbps_find_pkg_dict_installed(pkgver_q, true); - if (tmpd == NULL) - tmpd = xbps_find_virtualpkg_dict_installed(pkgver_q, true); - - if (tmpd == NULL) { - /* dependency not installed */ - reason = "install"; - xbps_dbg_printf_append("(found `%s')\n", - pkgver_q); - } else { - /* dependency installed, check its state */ - state = 0; - if ((rv = xbps_pkg_state_dictionary(tmpd, &state)) != 0) { - prop_object_release(tmpd); - xbps_dbg_printf("failed to check pkg state " - "for `%s': %s\n", pkgver_q, strerror(rv)); - break; - } - if (state == XBPS_PKG_STATE_INSTALLED) { - reason = "update"; - xbps_dbg_printf_append("(found `%s')\n", - pkgver_q); - } else if (state == XBPS_PKG_STATE_UNPACKED) { - reason = "install"; - xbps_dbg_printf_append("(found `%s')\n", - pkgver_q); - } - prop_object_release(tmpd); - } prop_dictionary_set_cstring_nocopy(curpkgd, "transaction", reason); + prop_dictionary_get_cstring_nocopy(curpkgd, "pkgver", &pkgver_q); /* * Package is on repo, add it into the transaction dictionary. */