From: joeyh <joeyh>
Date: Sun, 8 Jul 2007 22:16:15 +0000 (+0000)
Subject: r2010: * dh_icons: New program to update Freedesktop icon caches. Thanks
X-Git-Tag: 5.0.51~1
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=780fefcdcfd21f335378899f2e20d92978b476e7;p=debhelper.git

r2010: * dh_icons: New program to update Freedesktop icon caches. Thanks
  to Josselin Mouette, Ross Burton, Jordi Mallach, and Loïc Minier.
  Closes: #329460
* Note that as a transitional measure, dh_icons will currently only update
  existing caches, and not create and new caches. Once everything is
  updating the icon caches, this will be changed. See #329460 for the full
  plan.
---

diff --git a/autoscripts/postinst-icons b/autoscripts/postinst-icons
new file mode 100644
index 0000000..3c018b3
--- /dev/null
+++ b/autoscripts/postinst-icons
@@ -0,0 +1,7 @@
+if which gtk-update-icon-cache >/dev/null 2>&1; then
+	for dir in #DIRLIST#; do
+		if [ -f "$dir"/icon-theme.cache ]; then
+			gtk-update-icon-cache --force --quiet "$dir"
+		fi
+	done
+fi
diff --git a/autoscripts/postrm-icons b/autoscripts/postrm-icons
new file mode 100644
index 0000000..3765560
--- /dev/null
+++ b/autoscripts/postrm-icons
@@ -0,0 +1,15 @@
+if [ "$1" = "remove" ]; then
+	for dir in #DIRLIST#; do
+		if [ -d "$dir" ]; then
+			if [ -f "$dir"/index.theme ] && \
+			   [ -f "$dir"/icon-theme.cache ] && \
+			   which gtk-update-icon-cache >/dev/null 2>&1
+			then
+				gtk-update-icon-cache --force --quiet "$dir"
+			else
+				rm -f "$dir"/icon-theme.cache
+				rmdir -p --ignore-fail-on-non-empty "$dir"
+			fi
+		fi
+	done
+fi
diff --git a/debian/changelog b/debian/changelog
index 9874acd..0462e8a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,17 @@
 debhelper (5.0.51) UNRELEASED; urgency=low
 
+  * dh_icons: New program to update Freedesktop icon caches. Thanks
+    to Josselin Mouette, Ross Burton, Jordi Mallach, and Loïc Minier.
+    Closes: #329460
+  * Note that as a transitional measure, dh_icons will currently only update
+    existing caches, and not create and new caches. Once everything is
+    updating the icon caches, this will be changed. See #329460 for the full
+    plan.
   * Remove possibly confusing (though strictly accurate) sentence from
     dh_installdirs.1. Closes: #429318
   * dh_gencontrol: Fix man page typo. Closes: #431232
 
- -- Joey Hess <joeyh@debian.org>  Sat, 30 Jun 2007 17:19:00 -0400
+ -- Joey Hess <joeyh@debian.org>  Sun, 08 Jul 2007 17:54:50 -0400
 
 debhelper (5.0.50) unstable; urgency=low
 
diff --git a/dh_icons b/dh_icons
new file mode 100755
index 0000000..aa077e4
--- /dev/null
+++ b/dh_icons
@@ -0,0 +1,73 @@
+#!/usr/bin/perl -w
+
+=head1 NAME
+
+dh_icons - Update Freedesktop icon caches
+
+=cut
+
+use strict;
+use File::Find;
+use Debian::Debhelper::Dh_Lib;
+
+=head1 SYNOPSIS
+
+B<dh_icons> [S<I<debhelper options>>] [B<-n>]
+
+=head1 DESCRIPTION
+
+dh_icons is a debhelper program that updates Freedesktop icon caches
+when needed, using the gtk-update-icon-cache program provided by GTK+2.0.
+Currently this program does not handle installation of the files, though it
+may do so at a later date. It takes care of adding maintainer script
+fragments to call F<gtk-update-icon-cache>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-n>, B<--noscripts>
+
+Do not modify maintainer scripts.
+
+=cut
+
+init();
+
+my $baseicondir="/usr/share/icons";
+
+foreach my $package (@{$dh{DOPACKAGES}}) {
+	my $tmp=tmpdir($package);
+	my $icondir="$tmp$baseicondir";
+	if (-d $icondir) {
+		my @dirlist;
+		opendir(DIRHANDLE, $icondir);
+		while (my $subdir = readdir(DIRHANDLE)) {
+			next if $subdir =~ /^\./;
+			my $needs_cache = 0;
+			find sub {
+				$needs_cache = 1 if -f and (/\.png$/ or /\.svg$/ or /\.jpg$/);
+			}, "$icondir/$subdir" ;
+			push @dirlist, "$baseicondir/$subdir" if $needs_cache;
+		}
+		if (@dirlist and ! $dh{NOSCRIPTS}) {
+			my $list=join(" ", @dirlist);
+			autoscript($package,"postinst","postinst-icons","s%#DIRLIST#%$list%");
+			autoscript($package,"postrm","postrm-icons","s%#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