From eaf79d319dd785b1d8b213ffa4dc6a3a338434e8 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Wed, 28 Apr 2021 19:03:12 -0400 Subject: build: Build the guix.pot-update and contributing.pot-update targets only once. * po/doc/local.mk (doc-pot-update): Fix an issue where guix.pot-update an contributing.pot-update were built twice. --- po/doc/local.mk | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'po/doc/local.mk') diff --git a/po/doc/local.mk b/po/doc/local.mk index a11c74e536..90cb6a79bb 100644 --- a/po/doc/local.mk +++ b/po/doc/local.mk @@ -95,9 +95,8 @@ $(srcdir)/po/doc/%.pot-update: doc/%.texi TMP_POT_FILES = contributing.pot guix.pot doc-pot-update: - for f in $(TMP_POT_FILES); do \ - $(MAKE) $(srcdir)/po/doc/guix.pot-update; \ - $(MAKE) $(srcdir)/po/doc/contributing.pot-update; \ + for f in $(TMP_POT_FILES); do \ + $(MAKE) $(srcdir)/po/doc/$$f-update; \ done $(MAKE) $(srcdir)/po/doc/guix-cookbook.pot-update; msgcat $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES)) > $(srcdir)/po/doc/guix-manual.pot -- cgit v1.2.3 From 0d353b06ec6571972d2e8a3e3a3f0b27aa950e1c Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Thu, 29 Apr 2021 09:45:39 -0400 Subject: build: Make doc-po-update and doc-pot-update targets idempotent. It used to be that the running the doc-po-update and doc-pot-update targets would redo the same work on every run. This change splits the problem in smaller chunks and specifies build dependencies in a way that outputs only get rebuilt when their inputs changed. * po/doc/local.mk (DOC_PO_FILES): Harmonize escapes. (POT_OPTIONS): Re-indent uniformly. (doc-po-update-%, doc-po-update-cookbook-%): Re-implement with... (make-update-po-files-rule): ... this new function. (TMP_POT_FILES): Remove variable. (%D%/%.pot, %D%/guix-manual.pot): New pattern rules. (doc-pot-update, doc-po-update): Adjust prerequisites accordingly. --- po/doc/local.mk | 108 ++++++++++++++++++-------------------------------------- 1 file changed, 35 insertions(+), 73 deletions(-) (limited to 'po/doc/local.mk') diff --git a/po/doc/local.mk b/po/doc/local.mk index 90cb6a79bb..da43c0a314 100644 --- a/po/doc/local.mk +++ b/po/doc/local.mk @@ -1,5 +1,6 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2018 Julien Lepiller +# Copyright © 2021 Maxim Cournoyer # # This file is part of GNU Guix. # @@ -16,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with GNU Guix. If not, see . -DOC_PO_FILES= \ +DOC_PO_FILES = \ %D%/guix-manual.es.po \ %D%/guix-manual.de.po \ %D%/guix-manual.fa.po \ @@ -28,11 +29,11 @@ DOC_PO_FILES= \ %D%/guix-manual.sk.po \ %D%/guix-manual.zh_CN.po -DOC_COOKBOOK_PO_FILES= \ - %D%/guix-cookbook.de.po \ - %D%/guix-cookbook.fa.po \ - %D%/guix-cookbook.fr.po \ - %D%/guix-cookbook.ko.po \ +DOC_COOKBOOK_PO_FILES = \ + %D%/guix-cookbook.de.po \ + %D%/guix-cookbook.fa.po \ + %D%/guix-cookbook.fr.po \ + %D%/guix-cookbook.ko.po \ %D%/guix-cookbook.zh_Hans.po EXTRA_DIST = \ @@ -41,76 +42,37 @@ EXTRA_DIST = \ $(DOC_PO_FILES) \ $(DOC_COOKBOOK_PO_FILES) -POT_OPTIONS = --package-name "guix manual" --package-version "$(VERSION)" \ - --copyright-holder "the authors of Guix (msgids)" \ - --msgid-bugs-address "bug-guix@gnu.org" +POT_OPTIONS = \ + --package-name "guix manual" --package-version "$(VERSION)" \ + --copyright-holder "the authors of Guix (msgids)" \ + --msgid-bugs-address "bug-guix@gnu.org" -doc-po-update-%: - @lang=`echo "$@" | sed -e's/^doc-po-update-//'` ; \ - output="$(srcdir)/po/doc/guix-manual.$$lang.po" ; \ - input="$(srcdir)/po/doc/guix-manual.pot" ; \ - if test -f "$$output"; then \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $$output $$input"; \ - cd $(srcdir) \ - && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ - $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) "$$output" "$$input";; \ - *) \ - $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} "$$output" "$$input";; \ - esac; \ - }; \ - touch "$$output"; \ - else \ - echo "File $$output does not exist. If you are a translator, you can create it with 'msginit'." 1>&2; \ - exit 1; \ - fi +# make-download-po-files-rule PO_FILES POT_FILE_INPUT +define make-update-po-files-rule +$(1): $(2) + @if ! [ -f "$$@" ]; then \ + echo "File $$po_file does not exist. If you are a translator, \ +you can create it with 'msginit'." 1>&2; \ + exit 1; \ + fi && \ + lang=$$$$(echo $$@ | $(SED) -E 's|.*\.([^.]*)\.po$$$$|\1|') && \ + echo $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) \ + --lang=$$$${lang} "$$@" "$$<" && \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$$$${lang} "$$@" "$$<" +endef -doc-po-update-cookbook-%: - @lang=`echo "$@" | sed -e's/^doc-po-update-cookbook-//'` ; \ - output="$(srcdir)/po/doc/guix-cookbook.$$lang.po" ; \ - input="$(srcdir)/po/doc/guix-cookbook.pot" ; \ - if test -f "$$output"; then \ - test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ - echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $$output $$input"; \ - cd $(srcdir) \ - && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ - $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) "$$output" "$$input";; \ - *) \ - $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} "$$output" "$$input";; \ - esac; \ - }; \ - touch "$$output"; \ - else \ - echo "File $$output does not exist. If you are a translator, you can create it with 'msginit'." 1>&2; \ - exit 1; \ - fi - -$(srcdir)/po/doc/%.pot-update: doc/%.texi +%D%/%.pot: $(srcdir)/doc/%.texi $(AM_V_PO4A)$(PO4A_UPDATEPO) -M UTF-8 -f texinfo -m "$<" \ - -p "$$(echo $@ | sed 's|-update||')" $(POT_OPTIONS) - @touch "$$(echo $@ | sed 's|-update||')" - -TMP_POT_FILES = contributing.pot guix.pot - -doc-pot-update: - for f in $(TMP_POT_FILES); do \ - $(MAKE) $(srcdir)/po/doc/$$f-update; \ - done - $(MAKE) $(srcdir)/po/doc/guix-cookbook.pot-update; - msgcat $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES)) > $(srcdir)/po/doc/guix-manual.pot - rm -f $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES)) + -p "$@" $(POT_OPTIONS) && \ + touch $@ -doc-po-update: doc-pot-update - for f in $(DOC_PO_FILES); do \ - lang="`echo "$$f" | $(SED) -es'|.*/guix-manual\.\(.*\)\.po$$|\1|g'`"; \ - $(MAKE) "doc-po-update-$$lang"; \ - done - for f in $(DOC_COOKBOOK_PO_FILES); do \ - lang="`echo "$$f" | $(SED) -es'|.*/guix-cookbook\.\(.*\)\.po$$|\1|g'`"; \ - $(MAKE) "doc-po-update-cookbook-$$lang"; \ - done +%D%/guix-manual.pot: %D%/guix.pot %D%/contributing.pot + msgcat $< > $@ +$(eval $(call make-update-po-files-rule,$(DOC_PO_FILES),%D%/guix-manual.pot)) +$(eval $(call make-update-po-files-rule,\ + $(DOC_COOKBOOK_PO_FILES),%D%/guix-cookbook.pot)) -.PHONY: doc-po-update doc-pot-update +doc-pot-update: %D%/guix-manual.pot %D%/guix-cookbook.pot +doc-po-update: $(DOC_PO_FILES) $(DOC_COOKBOOK_PO_FILES) +.PHONY: doc-pot-update doc-po-update -- cgit v1.2.3 From 0084f0054f1b8f8a778ced6622775a1a9c3e50d3 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 30 Apr 2021 09:49:46 -0400 Subject: build: Correct a mistake in the guix-manual.pot rule. This is a follow-up to commit 0d353b06ec. * po/doc/local.mk: Fix function name in comment. (%D%/guix-manual.pot): Refer to *all* the prerequisites via the $^ special variable rather than $<, which only refers to the first one. Reported-by: Julien Lepiller --- po/doc/local.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'po/doc/local.mk') diff --git a/po/doc/local.mk b/po/doc/local.mk index da43c0a314..4458774efe 100644 --- a/po/doc/local.mk +++ b/po/doc/local.mk @@ -47,7 +47,7 @@ POT_OPTIONS = \ --copyright-holder "the authors of Guix (msgids)" \ --msgid-bugs-address "bug-guix@gnu.org" -# make-download-po-files-rule PO_FILES POT_FILE_INPUT +# make-update-po-files-rule PO_FILES POT_FILE_INPUT define make-update-po-files-rule $(1): $(2) @if ! [ -f "$$@" ]; then \ @@ -67,7 +67,7 @@ endef touch $@ %D%/guix-manual.pot: %D%/guix.pot %D%/contributing.pot - msgcat $< > $@ + msgcat $^ > $@ $(eval $(call make-update-po-files-rule,$(DOC_PO_FILES),%D%/guix-manual.pot)) $(eval $(call make-update-po-files-rule,\ -- cgit v1.2.3 From f13049f3a856d842fee1abb50e61481b891f2020 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Mon, 3 May 2021 00:54:12 -0400 Subject: nls: Remove the doc-po-update target. As discussed with Julien Lepiller on IRC, updating the PO files is not useful. This change removes the target and associated rules that allowed updating them. This has the benefit of not having the PO files updated automatically when generating the .pot files, which was causing spurious changes under the po sub-directory. * po/doc/local.mk (make-update-po-files-rule): Remove function and its uses. (doc-po-update): Remove target. --- po/doc/local.mk | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) (limited to 'po/doc/local.mk') diff --git a/po/doc/local.mk b/po/doc/local.mk index 4458774efe..4c47491c32 100644 --- a/po/doc/local.mk +++ b/po/doc/local.mk @@ -47,20 +47,6 @@ POT_OPTIONS = \ --copyright-holder "the authors of Guix (msgids)" \ --msgid-bugs-address "bug-guix@gnu.org" -# make-update-po-files-rule PO_FILES POT_FILE_INPUT -define make-update-po-files-rule -$(1): $(2) - @if ! [ -f "$$@" ]; then \ - echo "File $$po_file does not exist. If you are a translator, \ -you can create it with 'msginit'." 1>&2; \ - exit 1; \ - fi && \ - lang=$$$$(echo $$@ | $(SED) -E 's|.*\.([^.]*)\.po$$$$|\1|') && \ - echo $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) \ - --lang=$$$${lang} "$$@" "$$<" && \ - $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$$$${lang} "$$@" "$$<" -endef - %D%/%.pot: $(srcdir)/doc/%.texi $(AM_V_PO4A)$(PO4A_UPDATEPO) -M UTF-8 -f texinfo -m "$<" \ -p "$@" $(POT_OPTIONS) && \ @@ -69,10 +55,5 @@ endef %D%/guix-manual.pot: %D%/guix.pot %D%/contributing.pot msgcat $^ > $@ -$(eval $(call make-update-po-files-rule,$(DOC_PO_FILES),%D%/guix-manual.pot)) -$(eval $(call make-update-po-files-rule,\ - $(DOC_COOKBOOK_PO_FILES),%D%/guix-cookbook.pot)) - doc-pot-update: %D%/guix-manual.pot %D%/guix-cookbook.pot -doc-po-update: $(DOC_PO_FILES) $(DOC_COOKBOOK_PO_FILES) -.PHONY: doc-pot-update doc-po-update +.PHONY: doc-pot-update -- cgit v1.2.3