aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2006-02-05 03:07:08 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2006-02-05 03:07:08 +0000
commitc7096eb53afaa6ce4574d39a55a4f0457eb8b229 (patch)
tree6b27e626296173d5b02be3f2590a4570a022ef70
parent7b7e1d8e174500155f0073512ab86fa50bfe247b (diff)
downloadpaludis-c7096eb53afaa6ce4574d39a55a4f0457eb8b229.tar.gz
paludis-c7096eb53afaa6ce4574d39a55a4f0457eb8b229.tar.xz
Some packages have blocks upon themselves. Drop these blocks and issue a QA warning.
-rw-r--r--paludis/dep_list.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/paludis/dep_list.cc b/paludis/dep_list.cc
index cddc5be..a2385fa 100644
--- a/paludis/dep_list.cc
+++ b/paludis/dep_list.cc
@@ -568,6 +568,8 @@ DepList::visit(const BlockDepAtom * const d)
/* special case: the provider of virtual/blah can DEPEND upon !virtual/blah. */
/// \bug This may have issues if a virtual is provided by a virtual...
+ //
+ /* special case: foo/bar can DEPEND upon !foo/bar. */
/* will we be installed by this point? */
std::list<DepListEntry>::iterator m(_implementation->merge_list.begin());
@@ -581,6 +583,14 @@ DepList::visit(const BlockDepAtom * const d)
throw BlockError("'" + stringify(*(d->blocked_atom())) + "' blocked by pending package '"
+ stringify(*m) + " (no current package)");
+ if (*_implementation->current_package == *m)
+ {
+ Log::get_instance()->message(ll_qa, "Package '" + stringify(*_implementation->current_package)
+ + "' has suspicious block upon '!" + stringify(*d->blocked_atom()) + "'");
+ ++m;
+ continue;
+ }
+
DepParserOptions dep_parser_options;
dep_parser_options.set(dpo_qualified_package_names);