X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_compress;h=cbdf627c55e72205efd1d75f328e5ccc7bb3b3f6;hb=917726187d01b79c7aa454a953f2e483a5171061;hp=203f60c772d457f9b08a6608d3a6019c16a6f319;hpb=59d03c4ec32655ace4130ca25f4a3cb51918480e;p=debhelper.git diff --git a/dh_compress b/dh_compress index 203f60c..cbdf627 100755 --- a/dh_compress +++ b/dh_compress @@ -12,7 +12,7 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS - dh_compress [debhelper options] [-Xitem] [-A] [file ...] +B [S>] [B<-X>I] [B<-A>] [S>] =head1 DESCRIPTION @@ -23,10 +23,10 @@ to the new files. By default, dh_compress compresses files that debian policy mandates should be compressed, namely all files in usr/share/info, usr/share/man, -usr/X11R6/man, and all files in usr/share/doc that are larger than 4k in size, -(except the copyright file, .html files and .gif files), and all changelog -files. It skips any files that appear to be already compressed (based on their -extensions). +usr/X11R6/man, files in usr/share/doc that are larger than 4k in size, +(except the copyright file, .html and .css files, and files that appear to be +already compressed based on their extensions), and all changelog files. Plus +PCF fonts underneath usr/X11R6/lib/X11/fonts/ If a debian/package.compress file exists, however, it will be ran as a shell script, and all filenames that the shell script outputs will be compressed @@ -95,12 +95,15 @@ foreach my $package (@{$dh{DOPACKAGES}}) { # ".tgz", "-gz", "-z", "_z" push @files, split(/\n/,` find usr/info usr/share/info usr/man usr/share/man usr/X11*/man -type f ! -name "*.gz" 2>/dev/null || true; - find usr/doc usr/share/doc -type f \\( -size +4k -or -name "changelog*" \\) \\ + find usr/share/doc -type f \\( -size +4k -or -name "changelog*" -or -name "NEWS*" \\) \\ \\( -name changelog.html -or ! -iname "*.htm*" \\) \\ - ! -iname "*.gif" ! -iname "*.png" ! -iname "*.jpg" ! -iname "*.jpeg" ! -iname "*.gz" \\ - ! -iname "*.taz" ! -iname "*.tgz" ! -iname "*.z" ! -iname "*.bz2" \\ - ! -iname "*-gz" ! -iname "*-z" ! -iname "*_z" \\ - ! -name "copyright" 2>/dev/null || true + ! -iname "*.gif" ! -iname "*.png" ! -iname "*.jpg" \\ + ! -iname "*.jpeg" ! -iname "*.gz" ! -iname "*.taz" \\ + ! -iname "*.tgz" ! -iname "*.z" ! -iname "*.bz2" \\ + ! -iname "*-gz" ! -iname "*-z" ! -iname "*_z" \\ + ! -iname "*.jar" ! -iname "*.zip" ! -iname "*.css" \\ + ! -name "copyright" 2>/dev/null || true; + find usr/X11R6/lib/X11/fonts -type f -name "*.pcf" 2>/dev/null || true; `); } @@ -163,21 +166,29 @@ foreach my $package (@{$dh{DOPACKAGES}}) { chdir($olddir); # Fix up symlinks that were pointing to the uncompressed files. - open (FIND,"find $tmp -type l |"); - while () { - chomp; - my ($directory)=m:(.*)/:; - my $linkval=readlink($_); - if (! -e "$directory/$linkval" && -e "$directory/$linkval.gz") { - doit("rm","-f",$_); - doit("ln","-sf","$linkval.gz","$_.gz"); + my %links = map { chomp; $_ => 1 } `find $tmp -type l`; + my $changed; + # Keep looping through looking for broken links until no more + # changes are made. This is done in case there are links pointing + # to links, pointing to compressed files. + do { + $changed = 0; + foreach my $link (keys %links) { + my ($directory) = $link =~ m:(.*)/:; + my $linkval = readlink($link); + if (! -e "$directory/$linkval" && -e "$directory/$linkval.gz") { + doit("rm","-f",$link); + doit("ln","-sf","$linkval.gz","$link.gz"); + delete $links{$link}; + $changed++; + } } - } + } while $changed; } =head1 SEE ALSO -L +L This program is a part of debhelper.