summaryrefslogtreecommitdiffstats
path: root/debian/extra/initramfs-tools/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'debian/extra/initramfs-tools/hooks')
-rwxr-xr-xdebian/extra/initramfs-tools/hooks/udev20
1 files changed, 19 insertions, 1 deletions
diff --git a/debian/extra/initramfs-tools/hooks/udev b/debian/extra/initramfs-tools/hooks/udev
index 5a860e1..06f3c5e 100755
--- a/debian/extra/initramfs-tools/hooks/udev
+++ b/debian/extra/initramfs-tools/hooks/udev
@@ -46,11 +46,29 @@ for rules in 50-firmware.rules 50-udev-default.rules \
fi
done
+# See if chzdev can filter out generated rules, per LP: #2044104
+ZDEV_FILTERING=0
+if [ -e /usr/sbin/chzdev ] && \
+ dpkg --compare-versions "$(dpkg-query -f '${Version}' -W s390-tools 2> /dev/null)" '>=' '2.33.0';
+then
+ ZDEV_FILTERING=1
+fi
+
# now copy all custom udev rules which don't have an equivalent in /usr/lib (e. g.
# 70-persistent-net.rules or similar); They might contain network names or
# other bits which are relevant for the initramfs.
for rules in /etc/udev/rules.d/*.rules; do
- if [ -e "$rules" ] && [ ! -e "/usr/lib/${rules#/etc/}" ]; then
+ if [ ! -e "$rules" ]; then
+ continue
+ fi
+
+ # Skip rules generated by chzdev as they are handled by its own hook.
+ # See LP: #2044104
+ if [ $ZDEV_FILTERING -eq 1 ] && /usr/sbin/chzdev --is-owner "$rules"; then
+ continue;
+ fi
+
+ if [ ! -e "/usr/lib/${rules#/etc/}" ]; then
cp -p "$rules" "$DESTDIR/usr/lib/udev/rules.d/"
fi
done