summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoscripts/postinst-udev10
-rw-r--r--autoscripts/postrm-udev5
-rw-r--r--autoscripts/preinst-udev12
-rw-r--r--debian/changelog15
-rwxr-xr-xdh_installudev30
5 files changed, 47 insertions, 25 deletions
diff --git a/autoscripts/postinst-udev b/autoscripts/postinst-udev
index efb84d1c..cbf8dbe4 100644
--- a/autoscripts/postinst-udev
+++ b/autoscripts/postinst-udev
@@ -1,3 +1,9 @@
-if [ "$1" = configure -a -z "$2" ]; then
- ln -sf ../#FILE# /etc/udev/rules.d/#PRIO##FILE#
+if [ "$1" = configure ]; then
+ if [ -e /etc/udev/#FILE# ]; then
+ echo "Preserving user changes to /etc/udev/rules.d/#PRIO##FILE# ..."
+ if [ -e /etc/udev/rules.d/#PRIO##FILE# ]; then
+ mv -f /etc/udev/rules.d/#PRIO##FILE# /etc/udev/rules.d/#PRIO##FILE#.dpkg-new
+ fi
+ mv -f /etc/udev/#FILE# /etc/udev/rules.d/#PRIO##FILE#
+ fi
fi
diff --git a/autoscripts/postrm-udev b/autoscripts/postrm-udev
deleted file mode 100644
index b0af6c01..00000000
--- a/autoscripts/postrm-udev
+++ /dev/null
@@ -1,5 +0,0 @@
-if [ "$1" = purge ]; then
- if [ -L /etc/udev/rules.d/#PRIO##FILE# ]; then
- rm /etc/udev/rules.d/#PRIO##FILE#
- fi
-fi
diff --git a/autoscripts/preinst-udev b/autoscripts/preinst-udev
new file mode 100644
index 00000000..9c63d191
--- /dev/null
+++ b/autoscripts/preinst-udev
@@ -0,0 +1,12 @@
+if [ "$1" = install ] || [ "$1" = upgrade ]; then
+ if [ -e /etc/udev/#FILE# ]; then
+ if [ "`md5sum \"/etc/udev/#FILE#\" | sed -e \"s/ .*//\"`" = \
+ "`sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/udev/#FILE#'{s/.* //;p}}\" /var/lib/dpkg/status`" ]
+ then
+ rm -f /etc/udev/#FILE#
+ fi
+ fi
+ if [ -L /etc/udev/rules.d/#PRIO##FILE# ]; then
+ rm -f /etc/udev/rules.d/#PRIO##FILE#
+ fi
+fi
diff --git a/debian/changelog b/debian/changelog
index ee96f3b1..dc168eb1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,18 @@
+debhelper (5.0.45) UNRELEASED; urgency=low
+
+ * dh_installudev: Install udev rules directly into /etc/udev/rules.d/, not
+ using the symlinks. MD has agreed that this is more appropriate for most
+ packages.
+ * That fixes the longstanding bug that the symlink was only made on brand
+ new installs of the package, rather than on upgrade to the first version
+ that includes the udev rules file. Closes: #359614
+ * dh_installudev: Add preinst and postinst code to handle cleanly moving
+ the rules file to the new location on upgrade.
+ * This would be a good time for the many packages that manage rules files
+ w/o using dh_installudev to begin to use it..
+
+ -- Joey Hess <joeyh@debian.org> Thu, 12 Apr 2007 15:35:20 -0400
+
debhelper (5.0.44) unstable; urgency=low
* dh_installudev: Don't fail if the link already somehow exists on initial
diff --git a/dh_installudev b/dh_installudev
index 6406c6a9..859efc8d 100755
--- a/dh_installudev
+++ b/dh_installudev
@@ -19,23 +19,16 @@ B<dh_installudev> [S<I<debhelper options>>] [B<-n>] [B<--name=>I<name>] [B<--pri
dh_installudev is a debhelper program that is responsible for
installing udev rules files.
-Files named debian/package.udev will be installed as
-etc/udev/package.rules in the package build directory.
+Files named debian/package.udev will be installed in
+etc/udev/rules.d/ in the package build directory.
-Then postinst and postrm commands are automatically generated to enable
-the rules file when the package is first installed, by creating a symlink
-to it in the /etc/udev/rules.d/ directory. These commands are inserted into
-the maintainer scripts by dh_installdeb. See L<dh_installdeb(1)> for an
-explanation of how this works.
+Code is added to the preinst and postinst to handle the upgrade from the
+old udev rules file location.
=head1 OPTIONS
=over 4
-=item B<-n>, B<--noscripts>
-
-Do not modify postinst/postrm scripts.
-
=item B<--name=>I<name>
When this parameter is used, dh_installudev looks for and
@@ -46,7 +39,9 @@ debian/package.udev.
Sets the priority string of the rules.d symlink. Default is z60.
-=back
+=item B<-n>, B<--noscripts>
+
+Do not modify postinst/postrm scripts.
=head1 NOTES
@@ -54,6 +49,8 @@ Note that this command is not idempotent. "dh_clean -k" should be called
between invocations of this command. Otherwise, it may cause multiple
instances of the same text to be added to maintainer scripts.
+=back
+
=cut
init();
@@ -78,13 +75,10 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
if (! -e "$tmp/etc/udev/rules.d") {
doit("install","-d","$tmp/etc/udev/rules.d");
}
- doit("install","-m","0644",$rules_file,"$tmp/etc/udev/$filename");
-
+ doit("install","-m","0644",$rules_file,"$tmp/etc/udev/rules.d/$dh{PRIORITY}$filename");
if (! $dh{NOSCRIPTS}) {
- autoscript($package,"postinst","postinst-udev",
- "s/#FILE#/$filename/g;s/#PRIO#/$dh{PRIORITY}/g");
- autoscript($package,"postrm","postrm-udev",
- "s/#FILE#/$filename/g;s/#PRIO#/$dh{PRIORITY}/g");
+ autoscript($package,"preinst","preinst-udev","s/#FILE#/$filename/g;s/#PRIO#/$dh{PRIORITY}/g");
+ autoscript($package,"postinst","postinst-udev","s/#FILE#/$filename/g;s/#PRIO#/$dh{PRIORITY}/g");
}
}
}