X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_installman;h=52d1e6b11541c7e5c7d3150b8911eca5b2eed521;hb=18a0da8092ea9f3dc48bca92b36f592af25a608d;hp=602d61b342d9a545ffeaf2f154d46d491a18df0c;hpb=ef27cc7aabe55d66bdd2321d310264cba3cc4fca;p=debhelper.git diff --git a/dh_installman b/dh_installman index 602d61b..52d1e6b 100755 --- a/dh_installman +++ b/dh_installman @@ -12,37 +12,38 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS -B [S>] [S>] +B [S>] [S ...>] =head1 DESCRIPTION -dh_installman is a debhelper program that handles installing +B is a debhelper program that handles installing man pages into the correct locations in package build directories. You tell -it what man pages go in your packages, and it figures out where to -install them based on the section field in their .TH line. If you have a -properly formatted .TH line, your man page will be installed into the right -directory, with the right name (this includes proper handling of pages -with a subsection, like "3perl", which are placed in man3, and given an -extension of ".3perl"). If your .TH line is incorrect or missing, the program -may guess wrong based on the file extension. +it what man pages go in your packages, and it figures out where to install +them based on the section field in their B<.TH> or B<.Dt> line. If you have +a properly formatted B<.TH> or B<.Dt> line, your man page will be installed +into the right directory, with the right name (this includes proper handling +of pages with a subsection, like B<3perl>, which are placed in F, and +given an extension of F<.3perl>). If your B<.TH> or B<.Dt> line is incorrect +or missing, the program may guess wrong based on the file extension. It also supports translated man pages, by looking for extensions -like .ll.8 and .ll_LL.8, or by use of the --language switch. +like F<.ll.8> and F<.ll_LL.8>, or by use of the B<--language> switch. -If dh_installman seems to install a man page into the wrong section or with +If B seems to install a man page into the wrong section or with the wrong extension, this is because the man page has the wrong section -listed in its .TH line. Edit the man page and correct the section, and -dh_installman will follow suit. See L for details about the .TH -section. If dh_installman seems to install a man page into a directory -like /usr/share/man/pl/man1/, that is because your program has a -name like "foo.pl", and dh_installman assumes that means it is translated -into Polish. Use --language=C to avoid this. - -After the man page installation step, dh_installman will check to see if +listed in its B<.TH> or B<.Dt> line. Edit the man page and correct the +section, and B will follow suit. See L for details +about the B<.TH> section, and L for the B<.Dt> section. If +B seems to install a man page into a directory +like F, that is because your program has a +name like F, and B assumes that means it is translated +into Polish. Use B<--language=C> to avoid this. + +After the man page installation step, B will check to see if any of the man pages in the temporary directories of any of the packages it -is acting on contain ".so" links. If so, it changes them to symlinks. +is acting on contain F<.so> links. If so, it changes them to symlinks. -Also, dh_installman will use man to guess the character encoding of each +Also, B will use man to guess the character encoding of each manual page and convert it to UTF-8. If the guesswork fails for some reason, you can override it using an encoding declaration. See L for details. @@ -66,15 +67,15 @@ Lists man pages to be installed. Install all files specified by command line parameters in ALL packages acted on. -=item B<--language>=ll +=item B<--language=>I Use this to specify that the man pages being acted on are written in the specified language. -=item I +=item I ... Install these man pages into the first package acted on. (Or in all -packages if -A is specified). +packages if B<-A> is specified). =back @@ -118,7 +119,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } my $section; - # See if there is a .TH entry in the man page. If so, + # See if there is a .TH or .Dt entry in the man page. If so, # we'll pull the section field from that. if ($gz) { open (IN, "zcat $page|") or die "$page: $!"; @@ -127,7 +128,8 @@ foreach my $package (@{$dh{DOPACKAGES}}) { open (IN, $page) or die "$page: $!"; } while () { - if (/^\.TH\s+\S+\s+"?(\d+[^"\s]*)"?/) { + if (/^\.TH\s+\S+\s+"?(\d+[^"\s]*)"?/ || + /^\.Dt\s+\S+\s+(\d+[^\s]*)/) { $section=$1; last; } @@ -167,7 +169,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { $destdir="$tmp/usr/share/man/$langcode/man$realsection/"; } $destdir=~tr:/:/:s; # just for looks - my $instpage="$destdir/$instname.$section"; + my $instpage="$destdir$instname.$section"; next if -l $instpage; next if compat(5) && -e $instpage; @@ -197,8 +199,9 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } # Now utf-8 conversion. - foreach my $dir (qw{usr/share/man}) { - if (-e "$tmp/$dir") { + if (defined `man --version`) { + foreach my $dir (qw{usr/share/man}) { + next unless -e "$tmp/$dir"; find(sub { return if ! -f $_ || -l $_; my ($tmp, $orig)=($_.".new", $_); @@ -241,12 +244,17 @@ sub find_so_man { dirname($solink)) { $solink=basename($solink); } - else { + # A so link with a path is relative to the base of the man + # page hierarchy, but without a path, is relative to the + # current section. + elsif ($solink =~ m!/!) { $solink="../$solink"; } - push @sofiles,"$File::Find::dir/$_"; - push @sodests,$solink; + if (-e $solink || -e "$solink.gz") { + push @sofiles,"$File::Find::dir/$_"; + push @sodests,$solink; + } } }