From af593500c3e054ace021546ef23062eaddf14981 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sat, 24 Mar 2012 09:21:28 +0100 Subject: [PATCH] Fix a couple of issues resolving deps with virtual packages. --- include/xbps_api.h | 2 +- lib/repository_finddeps.c | 44 +++++++-------------------------------- 2 files changed, 8 insertions(+), 38 deletions(-) diff --git a/include/xbps_api.h b/include/xbps_api.h index 592c65c9..acfba659 100644 --- a/include/xbps_api.h +++ b/include/xbps_api.h @@ -56,7 +56,7 @@ */ #define XBPS_PKGINDEX_VERSION "1.4" -#define XBPS_API_VERSION "20120313-1" +#define XBPS_API_VERSION "20120324" #define XBPS_VERSION "0.15" /** 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. */