summaryrefslogtreecommitdiffstats
path: root/bin/find_dpkg_trigger_cycles.sh
diff options
context:
space:
mode:
authorJohannes 'josch' Schauer <josch@mister-muffin.de>2017-03-30 14:37:58 +0200
committerHolger Levsen <holger@layer-acht.org>2017-03-31 10:57:17 +0200
commitdd347bb5e0587fed7e6881c8cb0ed3ca60b6595b (patch)
tree024e05e4e1006df10d36aacec9c652d06400bf89 /bin/find_dpkg_trigger_cycles.sh
parent79c4c28f25c71ce9147530e16a11b3e7230d4b79 (diff)
downloadjenkins.debian.net-dd347bb5e0587fed7e6881c8cb0ed3ca60b6595b.tar.xz
bin/find_dpkg_trigger_cycles.sh: ignore dependencies on Essential:yes packages
The implicit dependencies of all binary packages on all Essential:yes packages cannot result in a trigger cycle for two reasons: 1. Policy §3.8 says "Since dpkg will not prevent upgrading of other packages while an `essential' package is in an unconfigured state" which implies that because triggers check the possibility to process or not triggers based on normal dpkg dependency resolution, then essential does not apply. 2. The trigger documentation in /usr/share/doc/dpkg-dev/triggers.txt.gz does not mention Essential at all and when talking about dependency satisfiability it only refers to Depends field. Signed-off-by: Mattia Rizzolo <mattia@debian.org>
Diffstat (limited to 'bin/find_dpkg_trigger_cycles.sh')
-rwxr-xr-xbin/find_dpkg_trigger_cycles.sh15
1 files changed, 12 insertions, 3 deletions
diff --git a/bin/find_dpkg_trigger_cycles.sh b/bin/find_dpkg_trigger_cycles.sh
index 879d5f39..9fdad932 100755
--- a/bin/find_dpkg_trigger_cycles.sh
+++ b/bin/find_dpkg_trigger_cycles.sh
@@ -226,7 +226,10 @@ cat $DIRECTORY/interested-file | while read pkg ttype ipath; do
echo "getting dependency closure..." >&2
# go through all packages in the dependency closure and check if any
# of the files they ship match one of the interested paths
- dose-ceve -c $pkg -T cudf -t deb \
+ #
+ # We ignore the implicit dependencies on Essential:yes packages because
+ # they do not create trigger cycles.
+ dose-ceve --deb-ignore-essential -c $pkg -T cudf -t deb \
$DIRECTORY/var/lib/apt/lists/*_dists_${DIST}_main_binary-${ARCH}_Packages \
| awk '/^package:/ { print $2 }' \
| apt-file $APT_FILE_OPTS show -F --from-file - \
@@ -244,7 +247,10 @@ cat $DIRECTORY/interested-file | while read pkg ttype ipath; do
echo "getting dependency closure..." >&2
# go through all packages in the dependency closure and check if any
# of them activate a matching path
- dose-ceve -c $pkg -T cudf -t deb \
+ #
+ # We ignore the implicit dependencies on Essential:yes packages because
+ # they do not create trigger cycles.
+ dose-ceve --deb-ignore-essential -c $pkg -T cudf -t deb \
$DIRECTORY/var/lib/apt/lists/*_dists_${DIST}_main_binary-${ARCH}_Packages \
| awk '/^package:/ { print $2 }' \
| while read dep; do
@@ -266,7 +272,10 @@ cat $DIRECTORY/interested-explicit | while read pkg ttype iname; do
echo "getting dependency closure..." >&2
# go through all packages in the dependency closure and check if any of
# them activate the trigger in which this package is interested
- dose-ceve -c $pkg -T cudf -t deb \
+ #
+ # We ignore the implicit dependencies on Essential:yes packages because
+ # they do not create trigger cycles.
+ dose-ceve --deb-ignore-essential -c $pkg -T cudf -t deb \
$DIRECTORY/var/lib/apt/lists/*_dists_${DIST}_main_binary-${ARCH}_Packages \
| awk '/^package:/ { print $2 }' \
| while read dep; do