diff options
Diffstat (limited to 'dh_icons')
-rwxr-xr-x | dh_icons | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/dh_icons b/dh_icons new file mode 100755 index 0000000..2af6856 --- /dev/null +++ b/dh_icons @@ -0,0 +1,87 @@ +#!/usr/bin/perl + +=head1 NAME + +dh_icons - Update caches of Freedesktop icons + +=cut + +use strict; +use warnings; +use File::Find; +use Debian::Debhelper::Dh_Lib; + +our $VERSION = DH_BUILTIN_VERSION; + +=head1 SYNOPSIS + +B<dh_icons> [S<I<debhelper options>>] [B<-n>] + +=head1 DESCRIPTION + +B<dh_icons> is a debhelper program that updates caches of Freedesktop icons +when needed, using the B<update-icon-caches> program provided by GTK+2.12. +Currently this program does not handle installation of the files, though it +may do so at a later date, so should be run after icons are installed in +the package build directories. + +It takes care of adding maintainer script fragments to call +B<update-icon-caches> for icon directories. (This is not done for gnome and +hicolor icons, as those are handled by triggers.) +These commands are inserted into the maintainer scripts by L<dh_installdeb(1)>. + +=head1 OPTIONS + +=over 4 + +=item B<-n>, B<--no-scripts> + +Do not modify maintainer scripts. + +=back + +=cut + +init(); + +# PROMISE: DH NOOP WITHOUT tmp(usr/share/icons) cli-options() +my $baseicondir="/usr/share/icons"; + +foreach my $package (@{$dh{DOPACKAGES}}) { + my $tmp=tmpdir($package); + my $icondir="$tmp$baseicondir"; + if (-d $icondir) { + my @dirlist; + opendir(my $dirfd, $icondir) or error("Cannot opendir($icondir): $!"); + while (my $subdir = readdir($dirfd)) { + next if $subdir =~ /^\./; + next if $subdir eq "gnome"; + next if $subdir eq "hicolor"; + my $needs_cache = 0; + find sub { + $needs_cache = 1 if -f and (/\.png$/ or /\.svg$/ or /\.xpm$/ or /\.icon$/); + }, "$icondir/$subdir" ; + push @dirlist, "$baseicondir/$subdir" if $needs_cache; + } + closedir($dirfd); + if (@dirlist and ! $dh{NOSCRIPTS}) { + my $list=join(" ", sort @dirlist); + autoscript($package, 'postinst', 'postinst-icons', { 'DIRLIST' => $list }); + autoscript($package, 'postrm', 'postrm-icons', { 'DIRLIST' => $list }); + } + } +} + +=head1 SEE ALSO + +L<debhelper> + +This program is a part of debhelper. + +=head1 AUTHOR + +Ross Burton <ross@burtonini.com> +Jordi Mallach <jordi@debian.org> +Josselin Mouette <joss@debian.org> + +=cut |