]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_installudev
cmake: Pass CPPFLAGS in CFLAGS. Closes: #668813 Thanks, Simon Ruderich for the patch...
[debhelper.git] / dh_installudev
index 696543f182ed9955185d78d9af9ca94ee3131de5..fa369a026d6286d3642adb8b3512394ed2c0bb24 100755 (executable)
@@ -4,7 +4,6 @@
 
 dh_installudev - install udev rules files
 
 
 dh_installudev - install udev rules files
 
-
 =cut
 
 use strict;
 =cut
 
 use strict;
@@ -17,41 +16,45 @@ B<dh_installudev> [S<I<debhelper options>>] [B<-n>] [B<--name=>I<name>] [B<--pri
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
-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.
+B<dh_installudev> is a debhelper program that is responsible for
+installing B<udev> rules files.
 
 
-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. See L<dh_installdeb(1)> for an
-explanation of how this works.
+Code is added to the F<preinst> and F<postinst> to handle the upgrade from the
+old B<udev> rules file location.
 
 
-=head1 OPTIONS
+=head1 FILES
 
 =over 4
 
 
 =over 4
 
-=item B<-n>, B<--noscripts>
+=item debian/I<package>.udev
+
+Installed into F<lib/udev/rules.d/> in the package build directory.
 
 
-Do not modify postinst/postrm scripts.
+=back
+
+=head1 OPTIONS
+
+=over 4
 
 =item B<--name=>I<name>
 
 
 =item B<--name=>I<name>
 
-Use "name" as the filename the rules file is installed in
-/etc/udev/. When this parameter is used, dh_installudev looks for and
-installs files named debian/package.name.udev instead of the usual
-debian/package.udev.
+When this parameter is used, B<dh_installudev> looks for and
+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 F<rules.d> symlink. Default is 60.
+
+=item B<-n>, B<--noscripts>
+
+Do not modify F<preinst>/F<postinst> 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.
 
@@ -59,30 +62,52 @@ 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}}) {
        my $tmp=tmpdir($package);
        my $rules_file=pkgfile($package,"udev");
        my $filename=basename($rules_file);
 }
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
        my $tmp=tmpdir($package);
        my $rules_file=pkgfile($package,"udev");
        my $filename=basename($rules_file);
+       if ($filename eq 'udev') {
+               $filename = "$package.udev";
+       }
        $filename=~s/\.udev$/.rules/;
        $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") {
-                       doit("install","-d","$tmp/etc/udev");
+               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");
                }
        }
 }
                }
        }
 }