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/
-
-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.
+(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, 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
=item B<-X>I<item>, B<--exclude=>I<item>
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.
# ".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*" -or -name "NEWS*" \\) \\
+ 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" \\
+ ! -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;
`);
}
# 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
chdir($olddir);
# Fix up symlinks that were pointing to the uncompressed files.
- open (FIND,"find $tmp -type l |");
- while (<FIND>) {
- 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<debhelper(1)>
+L<debhelper(7)>
This program is a part of debhelper.