diff options
Diffstat (limited to 'dh_installexamples')
-rwxr-xr-x | dh_installexamples | 109 |
1 files changed, 94 insertions, 15 deletions
diff --git a/dh_installexamples b/dh_installexamples index e8e5e3d6..8934e2fb 100755 --- a/dh_installexamples +++ b/dh_installexamples @@ -1,31 +1,110 @@ #!/usr/bin/perl -w -# -# Reads debian/examples, installs all files listed there into -# /usr/doc/$PACKAGE/examples -BEGIN { push @INC, "debian", "/usr/share/debhelper" } -use Dh_Lib; +=head1 NAME + +dh_installexamples - install example files into package build directories + +=cut + +use strict; +use Debian::Debhelper::Dh_Lib; + +=head1 SYNOPSIS + +B<dh_installexamples> [S<I<debhelper options>>] [B<-A>] [B<-X>I<item>] [S<I<file ...>>] + +=head1 DESCRIPTION + +dh_installexamples is a debhelper program that is responsible for +installing examples into usr/share/doc/package/examples 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. + +Files named debian/package.examples can list other files to be installed. + +=head1 OPTIONS + +=over 4 + +=item B<-A>, B<--all> + +Install any files specified by command line parameters in ALL packages +acted on. + +=item I<file ...> + +Install these files as examples into the first package acted on. (Or into +all packages if -A is specified.) + +=item B<-Xitem>, B<--exclude=item> + +Exclude files that contain "item" anywhere in their filename from +being installed. + +=back + +=head1 NOTES + +Note that dh_installexamples will happily copy entire directory hierarchies +if you ask it to (similar to cp -a). If it is asked to install a +directory, it will install the complete contents of the directory. + +=cut + init(); -foreach $PACKAGE (@{$dh{DOPACKAGES}}) { - $TMP=tmpdir($PACKAGE); - $file=pkgfile($PACKAGE,"examples"); +foreach my $package (@{$dh{DOPACKAGES}}) { + my $tmp=tmpdir($package); + my $file=pkgfile($package,"examples"); - undef @examples; + my @examples; if ($file) { - @examples=filearray($file); + @examples=filearray($file, "."); } - if (($PACKAGE eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) { + if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) { push @examples, @ARGV; } - + if (@examples) { - if (! -d "$TMP/usr/doc/$PACKAGE/examples") { - doit("install","-d","$TMP/usr/doc/$PACKAGE/examples"); + if (! -d "$tmp/usr/share/doc/$package/examples") { + doit("install","-d","$tmp/usr/share/doc/$package/examples"); + } + + my $exclude = ''; + if ($dh{EXCLUDE_FIND}) { + $exclude = ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)'; } - doit("cp","-a",@examples,"$TMP/usr/doc/$PACKAGE/examples"); + foreach my $example (@examples) { + next if excludefile($example); + if (-d $example && $exclude) { + my ($dir_basename) = basename($example); + # Pity there's no cp --exclude .. + my $pwd=`pwd`; + chomp $pwd; + complex_doit("cd $example/.. && find $dir_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<debhelper(7)> + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess <joeyh@debian.org> + +=cut |