diff options
-rw-r--r-- | autoscripts/postinst-udev | 10 | ||||
-rw-r--r-- | autoscripts/postrm-udev | 5 | ||||
-rw-r--r-- | autoscripts/preinst-udev | 12 | ||||
-rw-r--r-- | debian/changelog | 15 | ||||
-rwxr-xr-x | dh_installudev | 30 |
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"); } } } |