73 lines
2.0 KiB
Diff
73 lines
2.0 KiB
Diff
From 2b5d3bb8f4676afe9dee4eef13858c3c5088716c Mon Sep 17 00:00:00 2001
|
|
From: Juan RP <xtraeme@gmail.com>
|
|
Date: Thu, 7 Feb 2013 18:50:55 +0100
|
|
Subject: [PATCH 10/10] libxbps: when resolving deps, ignore all of them that
|
|
depend on the origin pkg.
|
|
|
|
---
|
|
NEWS | 3 +++
|
|
include/xbps_api.h.in | 2 +-
|
|
lib/rindex_pkgdeps.c | 18 +++++++++++++++++-
|
|
lib/transaction_sortdeps.c | 7 ++++++-
|
|
4 files changed, 27 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/lib/rindex_pkgdeps.c b/lib/rindex_pkgdeps.c
|
|
index f69749c..efa19c4 100644
|
|
--- lib/rindex_pkgdeps.c
|
|
+++ lib/rindex_pkgdeps.c
|
|
@@ -158,7 +158,7 @@ find_repo_deps(struct xbps_handle *xhp,
|
|
prop_array_t curpkgrdeps;
|
|
pkg_state_t state;
|
|
size_t x;
|
|
- const char *reqpkg, *pkgver_q, *reason = NULL;
|
|
+ const char *reqpkg, *reqpkgname, *pkgver_q, *reason = NULL;
|
|
char *pkgname;
|
|
int rv = 0;
|
|
|
|
@@ -317,6 +317,22 @@ find_repo_deps(struct xbps_handle *xhp,
|
|
}
|
|
prop_dictionary_get_cstring_nocopy(curpkgd,
|
|
"pkgver", &pkgver_q);
|
|
+ prop_dictionary_get_cstring_nocopy(curpkgd,
|
|
+ "pkgname", &reqpkgname);
|
|
+ /*
|
|
+ * Check dependency validity.
|
|
+ */
|
|
+ pkgname = xbps_pkg_name(curpkg);
|
|
+ assert(pkgname);
|
|
+ if (strcmp(pkgname, reqpkgname) == 0) {
|
|
+ xbps_dbg_printf_append(xhp, "[ignoring wrong dependency "
|
|
+ "%s (depends on itself)]\n",
|
|
+ reqpkg);
|
|
+ free(pkgname);
|
|
+ continue;
|
|
+ }
|
|
+ free(pkgname);
|
|
+
|
|
/*
|
|
* Check if package has matched conflicts.
|
|
*/
|
|
diff --git a/lib/transaction_sortdeps.c b/lib/transaction_sortdeps.c
|
|
index dd346fb..c3aa4bb 100644
|
|
--- lib/transaction_sortdeps.c
|
|
+++ lib/transaction_sortdeps.c
|
|
@@ -205,9 +205,14 @@ again:
|
|
rv = EINVAL;
|
|
break;
|
|
}
|
|
+ if ((xbps_match_virtual_pkg_in_dict(curpkgd, str, true)) ||
|
|
+ (xbps_match_virtual_pkg_in_dict(curpkgd, str, false))) {
|
|
+ xbps_dbg_printf_append(xhp, "ignore wrong "
|
|
+ "dependency %s (depends on itself)\n", str);
|
|
+ continue;
|
|
+ }
|
|
prop_dictionary_get_cstring_nocopy(curpkgd,
|
|
"transaction", &tract);
|
|
-
|
|
lpd = pkgdep_alloc(curpkgd, str);
|
|
|
|
if (pdn == NULL) {
|
|
--
|
|
1.8.1.1
|
|
|