summaryrefslogtreecommitdiff
path: root/dh_installxfonts
blob: b7921a2b5bd6b558d5d54d07dc56dec0182d5cb6 (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
#!/usr/bin/perl -w

=head1 NAME

dh_installxfonts - register X fonts

=cut

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

=head1 SYNOPSIS

B<dh_installxfonts> [S<I<debhelper options>>]

=head1 DESCRIPTION

dh_installxfonts is a debhelper program that is responsible for
registering X fonts, so their corresponding fonts.dir, fonts.alias,
and fonts.scale be rebuilt properly at install time.

Before calling this program, you should have installed any X fonts provided
by your package into the appropriate location in the package build
directory, and if you have fonts.alias or fonts.scale files, you should
install them into the correct location under etc/X11/fonts in your
package build directory.

Your package should depend on xfonts-utils so that the
update-fonts-* commands are available. (This program adds that dependency to
${misc:Depends}.)

This program automatically generates the postinst and postrm commands needed
to register X fonts. These commands are inserted into the maintainer
scripts by dh_installdeb. See L<dh_installdeb(1)> for an explanation of how
this works.

=head1 NOTES

See L<update-fonts-alias(8)>, L<update-fonts-scale(8)>, and
L<update-fonts-dir(8)> for more information about X font installation.

See Debian policy, section 11.8.5. for details about doing fonts the Debian
way.

=cut

init();

foreach my $package (@{$dh{DOPACKAGES}}) {
	my $tmp=tmpdir($package);

	# Find all font directories in the package build directory.
	my @fontdirs;
	foreach my $parentdir ("$tmp/usr/X11R6/lib/X11/fonts/", "$tmp/usr/share/fonts/X11/") {
		opendir DIR, $parentdir || next;
		@fontdirs = grep { -d "$parentdir/$_" && !/^\./ } (readdir DIR);
		closedir DIR;
	}

	if (@fontdirs) {
		# Figure out what commands the postinst and postrm will need 
		# to call.
		my @cmds;
		foreach my $f (@fontdirs) {
			# This must come before update-fonts-dir.
			push @cmds, "update-fonts-scale $f"
				if -f "$tmp/etc/X11/fonts/$f/$package.scale";
			push @cmds, "update-fonts-dir --x11r7-layout $f";
			push @cmds, "update-fonts-alias $f"
				if -f "$tmp/etc/X11/fonts/$f/$package.alias";
		}

		autoscript($package, "postinst", "postinst-xfonts",
			"s:#CMDS#:".join(";", @cmds).":;");
		autoscript($package, "postrm", "postrm-xfonts",
			"s:#CMDS#:".join(";", @cmds).":;");

		addsubstvar($package, "misc:Depends", "xfonts-utils");
	}
	else {
		# remove
		addsubstvar($package, "misc:Depends", "xfonts-utils", "", 1);
	}
}

=head1 SEE ALSO

L<debhelper(7)>

This program is a part of debhelper.

=head1 AUTHOR

Joey Hess <joeyh@debian.org>

=cut