]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_installmodules
cmake: Pass CPPFLAGS in CFLAGS. Closes: #668813 Thanks, Simon Ruderich for the patch...
[debhelper.git] / dh_installmodules
index 282d52cf9e854da00d069c23490f26bcb266fbfb..9b3fc2038feac733c6de8f73dcd2fdc404fa8daa 100755 (executable)
@@ -17,20 +17,29 @@ B<dh_installmodules> [S<I<debhelper options>>] [B<-n>] [B<--name=>I<name>]
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
-dh_installmodules is a debhelper program that is responsible for
+B<dh_installmodules> is a debhelper program that is responsible for
 registering kernel modules.
 
 registering kernel modules.
 
-Files named debian/package.modules will be installed as
-etc/modutils/package in the package build directory. This is for use by
-modutils. Files named debian/package.modprobe will be installed in
-etc/modprobe.d/package in the package build directory, to be used by
-module-init-tools's version of modprobe.
+Kernel modules are searched for in the package build directory and if
+found, F<preinst>, F<postinst> and F<postrm> commands are automatically generated to
+run B<depmod> and register the modules when the package is installed. 
+These commands are inserted into the maintainer scripts by
+L<dh_installdeb(1)>.
 
 
-Then postinst and postrm commands are automatically generated to register
-the modules when the package is installed. See L<dh_installdeb(1)> for an
-explanation of how this works. Note that this will be done for any
-package this program acts on which has either a package.modules or
-has .o or .ko files in /lib/modules.
+=head1 FILES
+
+=over 4
+
+=item debian/I<package>.modprobe
+
+Installed to etc/modprobe.d/I<package>.conf in the package build directory.
+
+=item debian/I<package>.modules
+
+These files were installed for use by modutils, but are now not used
+and B<dh_installmodules> will warn if these files are present.
+
+=back
 
 =head1 OPTIONS
 
 
 =head1 OPTIONS
 
@@ -38,20 +47,19 @@ has .o or .ko files in /lib/modules.
 
 =item B<-n>, B<--noscripts>
 
 
 =item B<-n>, B<--noscripts>
 
-Do not modify postinst/postrm scripts.
+Do not modify F<preinst>/F<postinst>/F<postrm> scripts.
 
 =item B<--name=>I<name>
 
 
 =item B<--name=>I<name>
 
-When this parameter is used, dh_installmodules looks for and
-installs files named debian/package.name.modules and
-debian/package.name.modprobe instead of the usual
-debian/package.modules and debian/package.modprobe
+When this parameter is used, B<dh_installmodules> looks for and
+installs files named debian/I<package>.I<name>.modprobe instead
+of the usual debian/I<package>.modprobe
 
 =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,14 +67,26 @@ instances of the same text to be added to maintainer scripts.
 
 init();
 
 
 init();
 
-# Returns true if there are any .o or .ko files in the passed directory.
+# Looks for kernel modules in the passed directory. If any are found,
+# returns the kernel version (or versions) that the modules seem to be for.
 sub find_kernel_modules {
        my $searchdir=shift;
 sub find_kernel_modules {
        my $searchdir=shift;
-       my @results=();
+       my %versions;
 
        return unless -d $searchdir;
 
        return unless -d $searchdir;
-       find(sub { push @results, $_ if /\.k?o$/ }, $searchdir);
-       return @results > 0;
+       find(sub {
+               if (/\.k?o$/) {
+                       my ($kvers)=$File::Find::dir=~m!lib/modules/([^/]+)/!;
+                       if (! defined $kvers || ! length $kvers) {
+                               warning("Cannot determine kernel version for module $File::Find::name");
+                       }
+                       else {
+                               $versions{$kvers}=1;
+                       }
+               }
+       }, $searchdir);
+
+       return keys %versions;
 }
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
 }
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
@@ -79,23 +99,25 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
        }
 
        if ($modutils_file) {
        }
 
        if ($modutils_file) {
-               if (! -e "$tmp/etc/modutils") {
-                       doit("install","-d","$tmp/etc/modutils");
-               }
-               doit("install","-m","0644",$modutils_file,"$tmp/etc/modutils/".pkgfilename($package));
+               warning("ignoring $modutils_file, since modutils is no longer in Debian");
        }
 
        if ($modprobe_file) {
                if (! -e "$tmp/etc/modprobe.d") {
                        doit("install","-d","$tmp/etc/modprobe.d");
                }
        }
 
        if ($modprobe_file) {
                if (! -e "$tmp/etc/modprobe.d") {
                        doit("install","-d","$tmp/etc/modprobe.d");
                }
-               doit("install","-m","0644",$modprobe_file,"$tmp/etc/modprobe.d/".pkgfilename($package));
+               my $old="/etc/modprobe.d/".pkgfilename($package);
+               my $new=$old.".conf";
+               doit("install","-m","0644",$modprobe_file,"$tmp/$new");
+               autoscript($package,"preinst","preinst-moveconffile","s!#OLD#!$old!g;s!#PACKAGE#!$package!g");
+               autoscript($package,"postinst","postinst-moveconffile","s!#OLD#!$old!g;s!#NEW#!$new!g");
        }
        
        }
        
-       if (! $dh{NOSCRIPTS} &&
-           ($modutils_file || find_kernel_modules("$tmp/lib/modules"))) {
-                       autoscript($package,"postinst","postinst-modules","s/#PACKAGE#/$package/");
-                       autoscript($package,"postrm","postrm-modules","s/#PACKAGE#/$package/");
+       if (! $dh{NOSCRIPTS}) {
+               foreach my $kvers (find_kernel_modules("$tmp/lib/modules")) {
+                       autoscript($package,"postinst","postinst-modules","s/#KVERS#/$kvers/g");
+                       autoscript($package,"postrm","postrm-modules","s/#KVERS#/$kvers/g");
+               }
        }
 }
 
        }
 }