summaryrefslogtreecommitdiffstats
path: root/dh_installxfonts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xdh_installxfonts100
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