summaryrefslogtreecommitdiffstats
path: root/abuild.in
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2015-08-19 10:59:00 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2015-08-19 10:59:00 +0200
commitfe2332d186cad4edc0a1b721ce657015a60c00f5 (patch)
tree0a82ac4b4292f96482711af4ed972e15356fb86d /abuild.in
parent72fefe0f1d17e21e89c9f72217e14e5b982edb12 (diff)
downloadabuild-fe2332d186cad4edc0a1b721ce657015a60c00f5.tar.bz2
abuild-fe2332d186cad4edc0a1b721ce657015a60c00f5.tar.xz
abuild: fix man pages compression
fix handling of hardlinks and symlinks. also compress n man pages and localized man pages
Diffstat (limited to 'abuild.in')
-rw-r--r--abuild.in27
1 files changed, 24 insertions, 3 deletions
diff --git a/abuild.in b/abuild.in
index f5cc17c..b8d8851 100644
--- a/abuild.in
+++ b/abuild.in
@@ -1438,9 +1438,30 @@ default_doc() {
done
# compress man pages
- find "$subpkgdir"/usr/share/man/*[1-9] \
- -type f \! -name \*.gz \! -name \*.bz2 2>/dev/null |
- xargs -r gzip -9
+ local previnode= prevname= mandir="$subpkgdir"/usr/share/man
+ [ -d "$mandir" ] && find "$subpkgdir"/usr/share/man \
+ -type f \( -name \*.[0-9n] -o -name \*.[0-9][a-z]* \) \
+ -exec stat -c "%i %n" {} \; | sort -n \
+ | while read inode name; do
+
+ if [ "$inode" = "$previnode" ]; then
+ # update hard link
+ rm "$name"
+ ln "$prevname".gz "$name".gz
+ else
+ gzip -9 "$name"
+ fi
+
+ previnode="$inode"
+ prevname="$name"
+ done
+ [ -d "$mandir" ] && find "$subpkgdir"/usr/share/man \
+ -type l \( -name \*.[0-9n] -o -name \*.[0-9][a-z]* \) \
+ | while read symlink; do
+
+ ln -s $(readlink $symlink).gz "$symlink".gz
+ rm "$symlink"
+ done
rm -f "$subpkgdir/usr/share/info/dir"