summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2014-12-05 09:41:00 +0100
committerGuillem Jover <guillem@debian.org>2014-12-27 23:18:37 +0100
commitf58eee9edbfc876d92af50323e1492b676a705d4 (patch)
tree3ca631d85d21989337fc9c2543a74f2f022107d6
parent2a7390d1108b221cc2fa34923f723caff9b0a2d1 (diff)
downloaddpkg-f58eee9edbfc876d92af50323e1492b676a705d4.tar.gz
dpkg: Reset trigger cycle tracking on unsatisfied dependencies during trigproc
If we are not going to process triggers due to an unsatisfied dependency, we should reset the trigger cycle tracking information so that we do not end up reporting bogus cycle errors. Closes: #771730
-rw-r--r--debian/changelog2
-rw-r--r--src/trigproc.c7
2 files changed, 9 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index da54d81a7..cba7ec337 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,8 @@ dpkg (1.17.23) UNRELEASED; urgency=low
[ Guillem Jover ]
* Use a matching group instead of ${^MATCH} in s/// in dselect build script.
* Skip tar extractor tests if tar is not GNU tar >= 1.27.
+ * Reset the trigger cycle tracking on unsatisfied dependencies during
+ trigger processing. Closes: #771730
[ Updated programs translations ]
* Basque (Iñaki Larrañaga Murgoitio). Closes: #771893
diff --git a/src/trigproc.c b/src/trigproc.c
index ea91c7400..bb173460f 100644
--- a/src/trigproc.c
+++ b/src/trigproc.c
@@ -385,6 +385,13 @@ trigproc(struct pkginfo *pkg, enum trigproc_type type)
enqueue_package(pkg);
return;
} else if (ok == DEP_CHECK_HALT) {
+ /* We cannot process this package on this dpkg run,
+ * and we can get here repeatedly if this package is
+ * required to make progress for other packages. So
+ * reset the trigger cycles tracking to avoid bogus
+ * cycle detections. */
+ trigproc_reset_cycle();
+
/* When doing opportunistic trigger processig, nothing
* requires us to be able to make progress; skip the
* package and silently ignore the error due to