summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog2
-rw-r--r--src/packages.c18
2 files changed, 2 insertions, 18 deletions
diff --git a/debian/changelog b/debian/changelog
index ce5d3d823..e58d88de5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -26,6 +26,8 @@ dpkg (1.17.22) UNRELEASED; urgency=low
* Fail on trigger processing when it is required to progress. Trigger
processing is sometimes required and sometimes opportunistic, and we
should only fail on the former but ignore the latter. Closes: #768852
+ * Do not ignore trigger cycles for direct dependencies, these are just
+ normal trigger cycles, and as such should not be special cased.
[ Updated programs translations ]
* German (Sven Joachim).
diff --git a/src/packages.c b/src/packages.c
index 3aad4ab08..6ccedfe58 100644
--- a/src/packages.c
+++ b/src/packages.c
@@ -439,24 +439,6 @@ deppossi_ok_found(struct pkginfo *possdependee, struct pkginfo *requiredby,
debug(dbg_depcondetail, " triggers-awaited, no fixbytrig");
goto unsuitable;
}
- /* If we have a dependency cycle where a package A awaits trigger
- * processing and package P has them pending, and both depend on each
- * other, the dependency cycle breaking code is not smart enough to
- * break it at the correct place, as the relationship is directional.
- * So we handle it specially here.
- *
- * Otherwise we just defer it, but do not record that it can be fixed
- * by trigger processing, because we would get into an inifite loop. */
- if (requiredby == possdependee->trigaw.head->pend) {
- if (dependtry > 1) {
- debug(dbg_depcondetail, " triggers-awaited, fixed by us, "
- "break cycle so ok and found");
- return FOUND_OK;
- } else {
- debug(dbg_depcondetail, " triggers-awaited, fixed by us, defer");
- return FOUND_DEFER;
- }
- }
/* We don't check the status of trigaw.head->pend here, just in case
* we get into the pathological situation where Triggers-Awaited but
* the named package doesn't actually have any pending triggers. In