]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_compress
r582: * Fix build with 077 umask. Closes: #187757
[debhelper.git] / dh_compress
index 7a930bc329754774067b661a031383f21e4ccf11..9d287af420b6477b2b425ce49f2ae2cddfd6e295 100755 (executable)
@@ -1,11 +1,69 @@
 #!/usr/bin/perl -w
-#
-# Compresses files and makes sure that symlinks pointing to the 
-# compressed files get fixed.
+
+=head1 NAME
+
+dh_compress - compress files and fix symlinks in package build directories
+
+=cut
 
 use strict;
 use Cwd;
 use Debian::Debhelper::Dh_Lib;
+
+=head1 SYNOPSIS
+
+B<dh_compress> [S<I<debhelper options>>] [B<-X>I<item>] [B<-A>] [S<I<file ...>>]
+
+=head1 DESCRIPTION
+
+dh_compress is a debhelper program that is responsible for compressing
+the files in package build directories, and makes sure that any symlinks
+that pointed to the files before they were compressed are updated to point
+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/
+
+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 OPTIONS
+
+=over 4
+
+=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.
+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.
+
+=item B<-A>, B<--all>
+
+Compress all files specified by command line parameters in ALL packages
+acted on.
+
+=item I<file ...>
+
+Add these files to the list of files to compress.
+
+=back
+
+=head1 CONFORMS TO
+
+Debian policy, version 3.0
+
+=cut
+
 init();
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
@@ -30,20 +88,22 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                push @files, split(/\n/,`sh $olddir/$compress 2>/dev/null`);
        }
        else {
-               # By default, fall back to what the policy manual says to
-               # compress. Note that all the excludes of odd things like _z 
+               # Note that all the excludes of odd things like _z 
                # are because gzip refuses to compress such files, assumming
                # they are zip files. I looked at the gzip source to get the
                # complete list of such extensions: ".gz", ".z", ".taz", 
                # ".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 "*-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;
                `);
        }
 
@@ -102,7 +162,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                doit("ln","$hardlinks{$_}.gz","$_.gz");
        }
 
-       verbose_print("cd $olddir");
+       verbose_print("cd '$olddir'");
        chdir($olddir);
 
        # Fix up symlinks that were pointing to the uncompressed files.
@@ -117,3 +177,15 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                }
        }
 }
+
+=head1 SEE ALSO
+
+L<debhelper(7)>
+
+This program is a part of debhelper.
+
+=head1 AUTHOR
+
+Joey Hess <joeyh@debian.org>
+
+=cut