summaryrefslogtreecommitdiff
path: root/dh_undocumented
blob: 7d98b207d5eb264260c417f5ef9b898e53d9e084 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/usr/bin/perl -w

=head1 NAME

dh_undocumented - make symlinks to undocumented.7.gz man page

=cut

use strict;
use Debian::Debhelper::Dh_Lib;

=head1 SYNOPSIS

B<dh_undocumented> [S<I<debhelper options>>] [B<-A>] [S<I<manpage ...>>]

=head1 DESCRIPTION

dh_undocumented is a debhelper program that is responsible for making
symlinks to L<undocumented(7)> for man pages that are not present in your
package.

The program takes a list of man pages that should be symlinked to
L<undocumented(7)>. It examines the extension to see what section the man
page belongs in. After figuring this out, it generates the necessary
symlinks.

The lists of man pages that need symlinks can be specified in two ways. Any
man page names specified as
parameters will be set up in the first package dh_undocumented 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.

Also, a file named debian/package.undocumented can list other man page
names to set up.

=head1 OPTIONS

=over 4

=item B<-A>, B<--all>

Install undocumented man page symlinks for any man pages specified by
command line parameters in ALL packages acted on. I doubt anyone will find
this useful, it's here for consitency with other debhelper programs.

=item I<manpage ...>

Install undocumented man page symlinks for each of these man pages
into the first package acted on. (Or in all packages acted on if -A is
specified.)

=back NOTES

Note that Debian policy prohibits links to L<undocumented(7)> unless the
package has an open bug report stating that it has no man page. You should
really just write a man page instead; this program is an easy way out.

=cut

init();

foreach my $package (@{$dh{DOPACKAGES}}) {
	my $tmp=tmpdir($package);
	my $undocumented=pkgfile($package,"undocumented");

	my @undoc;
	if ($undocumented) {
		@undoc=filearray($undocumented);
	}

	if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) {
		push @undoc, @ARGV;
	}	

	foreach my $file (@undoc) {
		$file=~s/.gz$//; # .gz extension is optional in input.

		# Determine what directory the file belongs in,
		# /usr/share/man, or /usr/X11R6/man, and how the link to
		# the undocumented.7 man page will look.
		my ($dir, $reldir);
		my ($section)=$file=~m/^.*\.(\d)/;
		if (!$section) {
			error("\"$file\" does not have an extension.");
		}	
		if ($section != 7) {
			$dir="usr/share/man/man$section";
			$reldir="../man7/";
		}
		else {
			$dir="usr/share/man/man$section";
			$reldir="";
		}

		# If an uncompressed version of the page exists, something
		# is weird.
		if (-e "$tmp/$dir/$file") {
			error("A man page $tmp/$dir/$file exists.");
		}
		
		if (! -d "$tmp/$dir") {
			doit("install","-d","$tmp/$dir");
		}		
		doit("ln","-sf","${reldir}undocumented.7.gz","$tmp/$dir/$file.gz");
	}
}

=head1 SEE ALSO

L<debhelper(1)>

This program is a part of debhelper.

=head1 AUTHOR

Joey Hess <joeyh@debian.org>

=cut