]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_installudev
Use cross-binutils helpers when cross-compiling
[debhelper.git] / dh_installudev
index 6406c6a9c9b40f2f44da7ab6af0b8bc550c99718..9bfd662948814b0de76cf44c8fd860df9a3e5934 100755 (executable)
@@ -19,38 +19,42 @@ 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.
 
 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.
+Code is added to the preinst and postinst to handle the upgrade from the
+old udev rules file location.
 
 
-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.
-
-=head1 OPTIONS
+=head1 FILES
 
 =over 4
 
 
 =over 4
 
-=item B<-n>, B<--noscripts>
+=item debian/I<package>.udev
 
 
-Do not modify postinst/postrm scripts.
+Installed into lib/udev/rules.d/ in the package build directory.
+
+=back
+
+=head1 OPTIONS
+
+=over 4
 
 =item B<--name=>I<name>
 
 When this parameter is used, dh_installudev looks for and
 
 =item B<--name=>I<name>
 
 When this parameter is used, dh_installudev looks for and
-installs files named debian/package.name.udev instead of the usual
-debian/package.udev.
+installs files named debian/I<package>.I<name>.udev instead of the usual
+debian/I<package>.udev.
 
 =item B<--priority=>I<priority>
 
 
 =item B<--priority=>I<priority>
 
-Sets the priority string of the rules.d symlink. Default is z60.
+Sets the priority string of the rules.d symlink. Default is 60.
+
+=item B<-n>, B<--noscripts>
+
+Do not modify postinst/postrm scripts.
 
 =back
 
 =head1 NOTES
 
 
 =back
 
 =head1 NOTES
 
-Note that this command is not idempotent. "dh_clean -k" should be called
+Note that this command is not idempotent. L<dh_prep(1)> should be called
 between invocations of this command. Otherwise, it may cause multiple
 instances of the same text to be added to maintainer scripts.
 
 between invocations of this command. Otherwise, it may cause multiple
 instances of the same text to be added to maintainer scripts.
 
@@ -58,11 +62,23 @@ instances of the same text to be added to maintainer scripts.
 
 init();
 
 
 init();
 
+# The priority used to look like z60_;
+# we need to calculate that old value to handle
+# conffile moves correctly.
+my $old_priority=$dh{PRIORITY};
+
+# In case a caller still uses the `z` prefix, remove it.
+if (defined $dh{PRIORITY}) {
+       $dh{PRIORITY}=~s/^z//;
+}
+
 if (! defined $dh{PRIORITY}) {
 if (! defined $dh{PRIORITY}) {
-       $dh{PRIORITY}="z60";
+       $dh{PRIORITY}="60";
+       $old_priority="z60";
 }
 if ($dh{PRIORITY}) {
 }
 if ($dh{PRIORITY}) {
-       $dh{PRIORITY}.="_";
+       $dh{PRIORITY}.="-";
+       $old_priority.="_";
 }
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
 }
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
@@ -73,18 +89,25 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                $filename = "$package.udev";
        }
        $filename=~s/\.udev$/.rules/;
                $filename = "$package.udev";
        }
        $filename=~s/\.udev$/.rules/;
+       my $oldfilename=$filename;
+       if (defined $dh{NAME}) {
+               $filename="$dh{NAME}.rules";
+       }
 
        if ($rules_file) {
 
        if ($rules_file) {
-               if (! -e "$tmp/etc/udev/rules.d") {
-                       doit("install","-d","$tmp/etc/udev/rules.d");
+               if (! -e "$tmp/lib/udev/rules.d") {
+                       doit("install","-d","$tmp/lib/udev/rules.d");
                }
                }
-               doit("install","-m","0644",$rules_file,"$tmp/etc/udev/$filename");
-
+               my $rule="/lib/udev/rules.d/$dh{PRIORITY}$filename";
+               doit("install","-m","0644",$rules_file,$tmp.$rule);
                if (! $dh{NOSCRIPTS}) {
                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");
+                       # Remove old rule from /etc, unless it's modified,
+                       # in which case we rename it to match the new
+                       # file in /lib, so it will override.
+                       my $old="/etc/udev/rules.d/$old_priority$oldfilename";
+                       $rule=~s/^\/lib/\/etc/;
+                       autoscript($package,"preinst","preinst-moveconffile","s!#OLD#!$old!g;s!#NEW#!$rule!g;s!#PACKAGE#!$package!g");
+                       autoscript($package,"postinst","postinst-moveconffile","s!#OLD#!$old!g;s!#NEW#!$rule!g");
                }
        }
 }
                }
        }
 }