X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_installexamples;h=a39aa59359e29c859b768eba6f42cc824e34a66d;hb=e2a6d4cec4a7ee952cf6a7f250d80f1d75a38f95;hp=fae330124de49f9744db524bb8979b8fb703aeb7;hpb=088be5d001d899c42b9d572e91198791748e5b46;p=debhelper.git diff --git a/dh_installexamples b/dh_installexamples index fae3301..a39aa59 100755 --- a/dh_installexamples +++ b/dh_installexamples @@ -11,20 +11,23 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS -B [S>] [B<-A>] [S>] +B [S>] [B<-A>] [B<-X>I] [S ...>] =head1 DESCRIPTION -dh_installexamples is a debhelper program that is responsible for -installing examples into usr/share/doc/package/examples in package +B is a debhelper program that is responsible for +installing examples into F in package build directories. -Any file names specified as parameters will be installed into the first -package dh_installexamples is told to act on. By default, this is the first -binary package in debian/control, but if you use -p, -i, or -a flags, it -will be the first package specified by those flags. +=head1 FILES -Files named debian/package.examples can list other files to be installed. +=over 4 + +=item debian/I.examples + +Lists example files or directories to be installed. + +=back =head1 OPTIONS @@ -35,17 +38,22 @@ Files named debian/package.examples can list other files to be installed. Install any files specified by command line parameters in ALL packages acted on. -=item I +=item B<-X>I, B<--exclude=>I + +Exclude files that contain I anywhere in their filename from +being installed. + +=item I ... -Install these files as examples into the first package acted on. (Or into -all packages if -A is specified.) +Install these files (or directories) as examples into the first package +acted on. (Or into all packages if B<-A> is specified.) =back =head1 NOTES -Note that dh_installexamples will happily copy entire directory hierarchies -if you ask it to (it uses cp -a internally). If it is asked to install a +Note that B will happily copy entire directory hierarchies +if you ask it to (similar to B). If it is asked to install a directory, it will install the complete contents of the directory. =cut @@ -53,6 +61,8 @@ directory, it will install the complete contents of the directory. init(); foreach my $package (@{$dh{DOPACKAGES}}) { + next if is_udeb($package); + my $tmp=tmpdir($package); my $file=pkgfile($package,"examples"); @@ -65,19 +75,37 @@ foreach my $package (@{$dh{DOPACKAGES}}) { if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) { push @examples, @ARGV; } - + if (@examples) { if (! -d "$tmp/usr/share/doc/$package/examples") { doit("install","-d","$tmp/usr/share/doc/$package/examples"); } - doit("cp","-a",@examples,"$tmp/usr/share/doc/$package/examples"); + my $exclude = ''; + if ($dh{EXCLUDE_FIND}) { + $exclude .= ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)'; + } + + foreach my $example (@examples) { + next if excludefile($example); + if (-d $example && $exclude) { + my $basename = basename($example); + my $dir = ($basename eq '.') ? $example : "$example/.."; + my $pwd=`pwd`; + chomp $pwd; + my $exclude2 = '-type f'.$exclude; + complex_doit("cd '$dir' && find '$basename' -type f$exclude -exec cp --parents -dp {} $pwd/$tmp/usr/share/doc/$package/examples \\;"); + } + else { + doit("cp", "-a", $example, "$tmp/usr/share/doc/$package/examples"); + } + } } } =head1 SEE ALSO -L +L This program is a part of debhelper.