aboutsummaryrefslogtreecommitdiffstats
path: root/brp-compress
diff options
context:
space:
mode:
Diffstat (limited to 'brp-compress')
-rwxr-xr-xbrp-compress58
1 files changed, 58 insertions, 0 deletions
diff --git a/brp-compress b/brp-compress
new file mode 100755
index 0000000..e409c26
--- /dev/null
+++ b/brp-compress
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# $Id$
+
+# If using normal root, avoid changing anything.
+if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
+ exit 0
+fi
+
+cd $RPM_BUILD_ROOT
+
+# Compress man pages
+COMPRESS="bzip2 -9 -n"
+COMPRESS_EXT=.bz2
+
+for d in ./usr/man/man* ./usr/man/*/man* ./usr/info \
+ ./usr/share/man/man* ./usr/share/man/*/man* ./usr/share/info \
+ ./usr/kerberos/man ./usr/X11R6/man/man* ./usr/lib/perl5/man/man* \
+ ./usr/share/doc/*/man/man* ./usr/lib/*/man/man*
+do
+ [ -d $d ] || continue
+ for f in `find $d -type f`
+ do
+ [ -f "$f" ] || continue
+ [ "`basename $f`" = "dir" ] && continue
+
+ case "$f" in
+ *.Z) gunzip $f; b=`echo $f | sed -e 's/\.Z$//'`;;
+ *.gz) gunzip $f; b=`echo $f | sed -e 's/\.gz$//'`;;
+ *.bz2) bunzip2 $f; b=`echo $f | sed -e 's/\.bz2$//'`;;
+ *) b=$f;;
+ esac
+
+ $COMPRESS $b </dev/null 2>/dev/null || {
+ inode=`ls -i $b | awk '{ print $1 }'`
+ others=`find $d -type f -inum $inode`
+ if [ -n "$others" ]; then
+ for afile in $others ; do
+ [ "$afile" != "$b" ] && rm -f $afile
+ done
+ $COMPRESS -f $b
+ for afile in $others ; do
+ [ "$afile" != "$b" ] && ln $b$COMPRESS_EXT $afile$COMPRESS_EXT
+ done
+ else
+ $COMPRESS -f $b
+ fi
+ }
+ done
+
+ for f in `find $d -type l`
+ do
+ l=`ls -l $f | sed -e 's/.* -> //' -e 's/\.gz$//' -e 's/\.bz2$//' -e 's/\.Z$//'`
+ rm -f $f
+ b=`echo $f | sed -e 's/\.gz$//' -e 's/\.bz2$//' -e 's/\.Z$//'`
+ ln -sf $l$COMPRESS_EXT $b$COMPRESS_EXT
+ done
+done