From 777cb35eb82b1e26613e7b16717cf78b4a959354 Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Thu, 3 Dec 2020 20:03:20 +0100 Subject: compress-man-pages: symlink compressed manpages deterministically For example graphviz has chained symlinked manpages: dot2gxl.1 is a symlink to gv2gxl.1 which is a symlink to gxl2gv.1 The second loop replaces each non-compressed symlink to a compressed symlink. The target is determined with 'readlink -f', which follows links recursively until the first name that is not a link (so either the 'target name' or the first 'dangling' symlink). This means that if the loop converted dot2gxl.1 before converting gv2gxl.1 it would add a symlink `dot2gxl.1.gz->gxl2gv.1.gz`. When it converted gv2gxl.1 first, it would then add a `dot2gxl.1.gz->gv2gxl.1.gz` symlink. Both are 'correct', but it's weird the result depends on the order in which 'find' returns the files. This PR makes the behaviour deterministic. fixes #104708 --- pkgs/build-support/setup-hooks/compress-man-pages.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'pkgs/build-support/setup-hooks') diff --git a/pkgs/build-support/setup-hooks/compress-man-pages.sh b/pkgs/build-support/setup-hooks/compress-man-pages.sh index 82e48cd8aa7..f5af76e8168 100644 --- a/pkgs/build-support/setup-hooks/compress-man-pages.sh +++ b/pkgs/build-support/setup-hooks/compress-man-pages.sh @@ -21,6 +21,7 @@ compressManPages() { # Point symlinks to compressed manpages. find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\)$' -print0 \ + | sort -z \ | while IFS= read -r -d $'\0' f do local target -- cgit 1.4.1