X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=dh_compress;h=575d3bcb2054b27b3d1bbd0d7134a268ee502091;hb=ec77e19bf7a20d35edadb2089c3632fca8f54ed3;hp=5e8bb379ce45f8a6fd69c0650067f9062555afc4;hpb=726335b0e13b2083903a680ab7ad7ac83bcfd811;p=debhelper.git diff --git a/dh_compress b/dh_compress index 5e8bb37..575d3bc 100755 --- a/dh_compress +++ b/dh_compress @@ -24,16 +24,16 @@ 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 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, 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. +If a debian/package.compress file exists, the default files are not +compressed. Instead, the debian/packages.compress 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. =head1 OPTIONS @@ -42,7 +42,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.jpeg will exclude jpeg 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. @@ -95,15 +95,16 @@ 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" \\ - ! -iname "*.jar" ! -iname "*.zip" \\ + ! -iname "*.jar" ! -iname "*.zip" ! -iname "*.css" \\ + ! -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 +151,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,21 +167,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.