diff options
Diffstat (limited to '')
-rwxr-xr-x | dh_installxfonts | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/dh_installxfonts b/dh_installxfonts new file mode 100755 index 0000000..c16659f --- /dev/null +++ b/dh_installxfonts @@ -0,0 +1,100 @@ +#!/usr/bin/perl + +=head1 NAME + +dh_installxfonts - register X fonts + +=cut + +use strict; +use warnings; +use Debian::Debhelper::Dh_Lib; + +our $VERSION = DH_BUILTIN_VERSION; + +=head1 SYNOPSIS + +B<dh_installxfonts> [S<I<debhelper options>>] + +=head1 DESCRIPTION + +B<dh_installxfonts> is a debhelper program that is responsible for +registering X fonts, so their corresponding F<fonts.dir>, F<fonts.alias>, +and F<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 F<fonts.alias> or F<fonts.scale> files, you should +install them into the correct location under F<etc/X11/fonts> in your +package build directory. + +Your package should depend on B<xfonts-utils> so that the +B<update-fonts->I<*> commands are available. (This program adds that dependency to +B<${misc:Depends}>.) + +This program automatically generates the F<postinst> and F<postrm> commands needed +to register X fonts. These commands are inserted into the maintainer +scripts by B<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(); + +# PROMISE: DH NOOP WITHOUT tmp(usr/share/fonts/X11) cli-options() + +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/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, @cmds_postinst, @cmds_postrm); + # Sort items for reproducible binary package contents. + foreach my $f (sort @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"; + if (-f "$tmp/etc/X11/fonts/$f/$package.alias") { + push @cmds_postinst, "update-fonts-alias --include /etc/X11/fonts/$f/$package.alias $f"; + push @cmds_postrm, "update-fonts-alias --exclude /etc/X11/fonts/$f/$package.alias $f"; + } + } + + autoscript($package, "postinst", "postinst-xfonts", + { 'CMDS' => join(";", @cmds, @cmds_postinst) }); + autoscript($package, "postrm", "postrm-xfonts", + { 'CMDS' => join(";", @cmds, @cmds_postrm) }); + + addsubstvar($package, "misc:Depends", "xfonts-utils"); + } +} + +=head1 SEE ALSO + +L<debhelper(7)> + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess <joeyh@debian.org> + +=cut |