#!/usr/bin/perl -w =head1 NAME dh_installmodules - register modules with modutils =cut use strict; use Debian::Debhelper::Dh_Lib; use File::Find; =head1 SYNOPSIS dh_installmodules [debhelper options] [-n] =head1 DESCRIPTION dh_installmodules is a debhelper program that is responsible for registering kernel modules with modutils. Files named debian/package.modules will be installed as etc/modutils/package in the package build directory. Then postinst and postrm commands are automatically generated to register the modules when the package is installed. See L for an explanation of how this works. Note that this will be done for any package this program acts on which has either the above-mentioned file, or has .o files in /lib/modules. =head1 OPTIONS =over 4 =item B<-n>, B<--noscripts> Do not modify postinst/postrm scripts. =back =head1 NOTES 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. =cut init(); # Returns true if there are any .o files in the passed directory. sub find_kernel_modules { my $searchdir=shift; my @results=(); return unless -d $searchdir; find(sub { push @results, $_ if /\.o$/ }, $searchdir); return @results > 0; } foreach my $package (@{$dh{DOPACKAGES}}) { my $tmp=tmpdir($package); my $file=pkgfile($package,"modules"); if (! -e $tmp) { doit("install","-d",$tmp); } if ($file) { if (! -e "$tmp/etc/modutils") { doit("install","-d","$tmp/etc/modutils"); } doit("install","-m","0644",$file,"$tmp/etc/modutils/$package"); } if (! $dh{NOSCRIPTS} && ($file || find_kernel_modules("$tmp/lib/modules"))) { autoscript($package,"postinst","postinst-modules","s/#PACKAGE#/$package/"); autoscript($package,"postrm","postrm-modules","s/#PACKAGE#/$package/"); } } =head1 SEE ALSO L This program is a part of debhelper. =head1 AUTHOR Joey Hess =cut