X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_compress;h=4e208b4f170cb085e00ca78a297a01ffd93aedbf;hb=4eb727d47ff6e04eb1634ca66df191bbf69e2009;hp=9d287af420b6477b2b425ce49f2ae2cddfd6e295;hpb=3aa6fbb20465d16cf23e1607b078ed3cedf95ebe;p=debhelper.git diff --git a/dh_compress b/dh_compress index 9d287af..4e208b4 100755 --- a/dh_compress +++ b/dh_compress @@ -24,16 +24,25 @@ 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, 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/ +(except the copyright file, .html and .css files, image 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/ and +usr/share/fonts/X11/ -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 -instead of the default files. The shell script will be run from -inside the package build directory. Note though that using -X is a much -better idea in general; you should only use a debian/package.compress file -if you really have to. +=head1 FILES + +=over 4 + +=item debian/I.compress + +If this file exists, the default files are not compressed. Instead, the +file is ran as a shell script, and all filenames that the shell script +outputs will be compressed. The shell script will be run from inside the +package build directory. Note though that using -X is a much better idea in +general; you should only use a debian/package.compress file if you really +need to. + +=back =head1 OPTIONS @@ -42,7 +51,7 @@ if you really have to. =item B<-X>I, B<--exclude=>I Exclude files that contain "item" anywhere in their filename from being -compressed. For example, -X.jpeg will exclude jpeg's from compression. +compressed. For example, -X.tiff will exclude tiff files from compression. You may use this option multiple times to build up a list of things to exclude. You can accomplish the same thing by using a debian/compress file, but this is easier. @@ -102,8 +111,10 @@ foreach my $package (@{$dh{DOPACKAGES}}) { ! -iname "*.tgz" ! -iname "*.z" ! -iname "*.bz2" \\ ! -iname "*-gz" ! -iname "*-z" ! -iname "*_z" \\ ! -iname "*.jar" ! -iname "*.zip" ! -iname "*.css" \\ + ! -iname "*.svg" ! -iname "*.svgz" \\ + ! -name "index.sgml" \\ ! -name "copyright" 2>/dev/null || true; - find usr/X11R6/lib/X11/fonts -type f -name "*.pcf" 2>/dev/null || true; + find usr/X11R6/lib/X11/fonts usr/share/fonts/X11 -type f -name "*.pcf" 2>/dev/null || true; `); } @@ -150,7 +161,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { # Make executables not be anymore. xargs(\@f,"chmod","a-x"); - xargs(\@f,"gzip","-9f"); + xargs(\@f,"gzip","-9nf"); } # Now change over any files we can that used to be hard links so @@ -166,16 +177,24 @@ 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