From 4b1447809ffbc0d77c0ad456bd6b3afcf0b8623e Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 7 Feb 2020 15:32:21 +0200 Subject: Build: Add support for translated man pages using po4a. The dependency on po4a is optional. It's never required to install the translated man pages when xz is built from a release tarball. If po4a is missing when building from xz.git, the translated man pages won't be generated but otherwise the build will work normally. The translations are only updated automatically by autogen.sh and by "make mydist". This makes it easy to keep po4a as an optional dependency and ensures that I won't forget to put updated translations to a release tarball. The translated man pages aren't installed if --disable-nls is used. The installation of translated man pages abuses Automake internals by calling "install-man" with redefined dist_man_MANS and man_MANS. This makes the hairy script code slightly less hairy. If it breaks some day, this code needs to be fixed; don't blame Automake developers. Also, this adds more quotes to the existing shell script code in the Makefile.am "-hook"s. --- src/xz/Makefile.am | 50 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 14 deletions(-) (limited to 'src/xz') diff --git a/src/xz/Makefile.am b/src/xz/Makefile.am index 0890aad7..4bc64f36 100644 --- a/src/xz/Makefile.am +++ b/src/xz/Makefile.am @@ -81,31 +81,53 @@ xzlinks += lzma unlzma lzcat endif install-exec-hook: - cd $(DESTDIR)$(bindir) && \ + cd "$(DESTDIR)$(bindir)" && \ target=`echo xz | sed '$(transform)'`$(EXEEXT) && \ for name in $(xzlinks); do \ link=`echo $$name | sed '$(transform)'`$(LN_EXEEXT) && \ - rm -f $$link && \ - $(LN_S) $$target $$link; \ + rm -f "$$link" && \ + $(LN_S) "$$target" "$$link"; \ done +# The installation of translated man pages abuses Automake internals +# by calling "install-man" with redefined dist_man_MANS and man_MANS. +# If this breaks some day, don't blame Automake developers. install-data-hook: - cd $(DESTDIR)$(mandir)/man1 && \ + languages= ; \ + if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \ + languages=`ls "$(top_srcdir)/po4a/man"`; \ + fi; \ target=`echo xz | sed '$(transform)'` && \ - for name in $(xzlinks); do \ - link=`echo $$name | sed '$(transform)'` && \ - rm -f $$link.1 && \ - $(LN_S) $$target.1 $$link.1; \ + for lang in . $$languages; do \ + man="$(top_srcdir)/po4a/man/$$lang/xz.1" ; \ + if test -f "$$man"; then \ + $(MAKE) dist_man_MANS="$$man" man_MANS= \ + mandir="$(mandir)/$$lang" install-man; \ + fi; \ + man1dir="$(DESTDIR)$(mandir)/$$lang/man1" && \ + if test -f "$$man1dir/$$target.1"; then ( \ + cd "$$man1dir" && \ + for name in $(xzlinks); do \ + link=`echo $$name | sed '$(transform)'` && \ + rm -f "$$link.1" && \ + $(LN_S) "$$target.1" "$$link.1"; \ + done \ + ); fi; \ done uninstall-hook: - cd $(DESTDIR)$(bindir) && \ + cd "$(DESTDIR)$(bindir)" && \ for name in $(xzlinks); do \ link=`echo $$name | sed '$(transform)'`$(LN_EXEEXT) && \ - rm -f $$link; \ + rm -f "$$link"; \ done - cd $(DESTDIR)$(mandir)/man1 && \ - for name in $(xzlinks); do \ - link=`echo $$name | sed '$(transform)'` && \ - rm -f $$link.1; \ + languages= ; \ + if test "$(USE_NLS)" = yes && test -d "$(top_srcdir)/po4a/man"; then \ + languages=`ls "$(top_srcdir)/po4a/man"`; \ + fi; \ + for lang in . $$languages; do \ + for name in xz $(xzlinks); do \ + name=`echo $$name | sed '$(transform)'` && \ + rm -f "$(DESTDIR)$(mandir)/$$lang/man1/$$name.1"; \ + done; \ done -- cgit v1.2.3