home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / rescue / usr / lib / rpm / brp-compress next >
Text File  |  2006-11-29  |  2KB  |  83 lines

  1. #!/bin/sh
  2.  
  3. # If using normal root, avoid changing anything.
  4. if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
  5.     exit 0
  6. fi
  7.  
  8. LC_ALL=
  9. LANG=
  10. LC_TIME=POSIX
  11.  
  12. cd $RPM_BUILD_ROOT
  13.  
  14. # Compress man pages
  15. COMPRESS="gzip -9 -n"
  16. COMPRESS_EXT=.gz
  17.  
  18. function check_for_hard_link
  19. {
  20.     dir=$1
  21.     b=$2
  22.     type=$3
  23.  
  24.     inode=`ls -i $b | awk '{ print $1 }'`
  25.     others=`find $dir -type f -inum $inode`
  26.     for afile in $others ; do
  27.     [ "$afile" != "$b" ] && rm -f $afile
  28.     done
  29.  
  30.     case $type in
  31.     Z|gz) gunzip $b ;;
  32.     bz2) bunzip2 $b ;;
  33.     esac
  34.  
  35.     for afile in $others ; do
  36.     [ "${afile%.$type}" != "${b%.$type}" ] && ln ${b%.$type} ${afile%.$type}
  37.     done
  38. }
  39.  
  40. for d in ./usr/man/man* ./usr/man/*/man* ./usr/info \
  41.     ./usr/share/man/man* ./usr/share/man/*/man* ./usr/share/info \
  42.     ./usr/kerberos/man ./usr/X11R6/man/man* ./usr/lib/perl5/man/man* \
  43.     ./usr/share/doc/*/man/man* ./usr/lib/*/man/man*
  44. do
  45.     [ -d $d ] || continue
  46.     for f in `find $d -type f`
  47.     do
  48.         [ -f "$f" ] || continue
  49.     [ "`basename $f`" = "dir" ] && continue
  50.  
  51.     case "$f" in
  52.      *.Z) gunzip $f || check_for_hard_link $d $f Z; b=`echo $f | sed -e 's/\.Z$//'`;;
  53.      *.gz) gunzip $f || check_for_hard_link $d $f gz; b=`echo $f | sed -e 's/\.gz$//'`;;
  54.      *.bz2) bunzip2 $f || check_for_hard_link $d $f bz2; b=`echo $f | sed -e 's/\.bz2$//'`;;
  55.      *) b=$f;;
  56.     esac
  57.  
  58.     $COMPRESS $b </dev/null 2>/dev/null || {
  59.         inode=`ls -i $b | awk '{ print $1 }'`
  60.         others=`find $d -type f -inum $inode`
  61.         if [ -n "$others" ]; then
  62.         for afile in $others ; do
  63.             [ "$afile" != "$b" ] && rm -f $afile
  64.         done
  65.         $COMPRESS -f $b
  66.         for afile in $others ; do
  67.             [ "$afile" != "$b" ] && ln $b$COMPRESS_EXT $afile$COMPRESS_EXT
  68.         done
  69.         else
  70.         $COMPRESS -f $b
  71.         fi
  72.     }
  73.     done
  74.  
  75.     for f in `find $d -type l`
  76.     do
  77.     l=`ls -l $f | sed -e 's/.* -> //' -e 's/\.gz$//' -e 's/\.bz2$//' -e 's/\.Z$//'`
  78.     rm -f $f
  79.     b=`echo $f | sed -e 's/\.gz$//' -e 's/\.bz2$//' -e 's/\.Z$//'`
  80.     ln -sf $l$COMPRESS_EXT $b$COMPRESS_EXT
  81.     done
  82. done
  83.