diff options
author | joey <joey> | 1999-08-17 05:03:50 +0000 |
---|---|---|
committer | joey <joey> | 1999-08-17 05:03:50 +0000 |
commit | 86dad95164449b89ef4d97df2750c3e8b94cf47f (patch) | |
tree | dc23099a72228d2e86fdcd1d5cc8735db321cd9b /dh_compress | |
parent | d914f3382342fd6fdff6aa56f2a707486e9b31a0 (diff) | |
download | debhelper-86dad95164449b89ef4d97df2750c3e8b94cf47f.tar.gz |
r139: Initial Import
Diffstat (limited to 'dh_compress')
-rwxr-xr-x | dh_compress | 130 |
1 files changed, 61 insertions, 69 deletions
diff --git a/dh_compress b/dh_compress index 76f7614d..0cc79c78 100755 --- a/dh_compress +++ b/dh_compress @@ -1,82 +1,74 @@ -#!/bin/sh -e +#!/usr/bin/perl -w # # Compresses files and makes sure that symlinks pointing to the # compressed files get fixed. -PATH=debian:$PATH:/usr/lib/debhelper -. dh_lib +use Cwd; +BEGIN { push @INC, "debian", "/usr/lib/debhelper" } +use Dh_Lib; +init(); -# Returns a list of all the files that we want to compress, -# (ignoring any files we were asked to exclude on the command -# line). Assumes we are already in the temp directory. -filelist () { - # First of all, deal with any files specified right on the command line. - if [ \( "$PACKAGE" = "$DH_FIRSTPACKAGE" -o "$DH_PARAMS_ALL" \) \ - -a "$*" ]; then - # Convert to having each file on its own line - # so grep will work. - echo "$*" | tr " " "\n" - fi - - if [ "$compress" ]; then - # The config file is a sh script that outputs the files to be compressed - # (typically using find). - sh $olddir/$compress 2>/dev/null || true - else - # By default fall back on what the policy manual says to compress. - find usr/info usr/man usr/X11*/man -type f ! -name "*.gz" 2>/dev/null || true - find usr/doc -type f \( -size +4k -or -name "changelog*" \) \ - ! -name "*.htm*" ! -name "*.gif" ! -name "*.gz" \ - ! -name "copyright" 2>/dev/null || true - fi -} - -# Returns a list of all the files we want to compress, -# after taking command line exclusions into account. -# Call only if DH_EXCLUDE_GREP is non-empty. -filelist_excluded () { - # Use grep -F so we don't have to worry about regexp's. - (filelist "$*" | grep -v -F \ - "`echo "$DH_EXCLUDE_GREP" | tr "|" "\n"`") || true -} - -for PACKAGE in $DH_DOPACKAGES; do - TMP=`tmpdir $PACKAGE` - compress=`pkgfile $PACKAGE compress` +foreach $PACKAGE (@{$dh{DOPACKAGES}}) { + $TMP=tmpdir($PACKAGE); + $compress=pkgfile($PACKAGE,"compress"); # Run the file name gathering commands from within the directory # structure that will be effected. - olddir=`pwd` - # Can't use doit here, that breaks --no-act mode. - verbose_echo "cd $TMP" - cd "$TMP" + $olddir=getcwd(); + chdir($TMP) || error("Can't cd to $TMP: $!"); + + # Figure out what files to compress. + @files=(); + # First of all, deal with any files specified right on the command line. + if (($PACKAGE eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) { + push @files,#ARGV; + } + if ($compress) { + # The config file is a sh script that outputs the files to be compressed + # (typically using find). + push @files, split(/\n/,`sh $olddir/$compress 2>/dev/null`); + } + else { + # By default, fall back to what the policy manual says to compress. + push @files, split(/\n/,` + find usr/info usr/man usr/X11*/man -type f ! -name "*.gz" 2>/dev/null || true; + find usr/doc -type f \\( -size +4k -or -name "changelog*" \\) \\ + ! -name "*.htm*" ! -name "*.gif" ! -name "*.gz" \\ + ! -name "copyright" 2>/dev/null || true + `); + } - # Get the list of files to compress. - if [ "$DH_EXCLUDE_GREP" ]; then - files=`filelist_excluded $*` - else - files=`filelist $*` - fi + # Exclude files from compression. + if (@files && defined($dh{EXCLUDE}) && $dh{EXCLUDE}) { + @new=(); + foreach (@files) { + $ok=1; + foreach $x (@{$dh{EXCLUDE}}) { + if (/\Q$x\E/) { + $ok=''; + last; + } + } + push @new,$_ if $ok; + } + @files=@new; + } - if [ "$files" ]; then - # This is just a cosmetic fix. - files=`echo $files | tr "\n" " "` - - doit "gzip -f9 $files" || true - fi + if (@files) { + doit("gzip","-9f",@files); + } - # Change back to old pwd. - verbose_echo "cd $olddir" - cd "$olddir" + chdir($olddir); # Fix up symlinks that were pointing to the uncompressed files. - for file in `find $TMP -type l`; do - DIRECTORY=`expr $file : "\(.*\)/[^/]*"` - NAME=`expr $file : ".*/\([^/]*\)"` - LINKVAL=`ls -l $DIRECTORY/$NAME | awk '{ print $11;}'` - if [ ! -e $DIRECTORY/$LINKVAL -a -f $DIRECTORY/$LINKVAL.gz ]; then - doit "rm $DIRECTORY/$NAME" - doit "ln -s $LINKVAL.gz $DIRECTORY/$NAME.gz" - fi - done -done + open (FIND,"find $TMP -type l |"); + while (<FIND>) { + chomp; + ($directory)=m:(.*)/:; + $linkval=readlink($_); + if (! -e "$directory/$linkval" && -e "$directory/$linkval.gz") { + doit("rm","-f",$_); + doit("ln","-sf","$linkval.gz","$_.gz"); + } + } +} |