freeipa/po/Makefile.hack.in
Christian Heimes d20cda2189 make: serialize strip-po / strip-pot
The strip-po target modifies files in place. This sometimes creates
conflicts with other make targets when make is run in parallel mode.

* split strip-po into strip-po and strip-pot
* move strip-po[t] from dependency to explicit, serial execution
* declare dependencies on POT/POFILES
* don't run strip on clean

Fixes: https://pagure.io/freeipa/issue/8323
Signed-off-by: Christian Heimes <cheimes@redhat.com>
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
2020-06-05 09:34:46 +02:00

67 lines
2.2 KiB
Makefile

# Auxiliary target for translation maintainer:
# Strip untranslated strings and comments with code lines from the po files
# to make them smaller before storage in SCM.
DISTFILES.common.extra3 = Makefile.hack.in
IPA_TEST_I18N = @top_srcdir@/ipatests/i18n.py
MSGATTRIB = @MSGATTRIB@
PYTHON = @PYTHON@
GIT_BRANCH = @GIT_BRANCH@
# Don't use strip-po[t] as a dependency, https://pagure.io/freeipa/issue/8323
.PHONY: strip-po strip-pot
strip-pot: $(DOMAIN).pot
grep -v '#: ipaclient/remote_plugins/' $(DOMAIN).pot > $(DOMAIN).pot.tmp
mv $(DOMAIN).pot.tmp $(DOMAIN).pot
if [ "$(GIT_BRANCH)" != "" ]; then \
export GIT_DIFF_IPA_POT=`git diff --numstat $(DOMAIN).pot | cut -f1,2 | tr '\t' ,` || :; \
if [ "$$GIT_DIFF_IPA_POT" = "2,2" -o "$$GIT_DIFF_IPA_POT" = "1,1" ]; then \
echo "No changes in $(DOMAIN).pot, restore the original"; \
git checkout -q -f $(DOMAIN).pot; \
fi; \
fi
strip-po: stamp-po
for po_file in $(POFILES); do \
$(MSGATTRIB) --translated --no-fuzzy --no-location -s $$po_file > $$po_file.tmp || exit 1; \
mv $$po_file.tmp $$po_file || exit 1; \
if [ "$(GIT_BRANCH)" != "" ]; then \
export GIT_DIFF_PO_FILE=`git diff --numstat $$po_file | cut -f1,2 | tr '\t' ,` || :; \
if [ "$$GIT_DIFF_PO_FILE" = "2,2" -o "$$GIT_DIFF_PO_FILE" = "1,1" ]; then \
echo "No translation changes in $$po_file, restore the original"; \
git checkout -q -f $$po_file; \
fi; \
fi; \
done
export FILES_TO_REMOVE=`find $(srcdir) -name '*.po' -empty` || exit 1; \
if [ "$$FILES_TO_REMOVE" != "" ]; then \
rm -v $$FILES_TO_REMOVE || exit 1; \
echo; echo Please remove the deleted files from LINGUAS!; echo; \
fi
clean: mostlyclean
rm -rf test_locale
rm -f *~ *.tmp test.po
all: $(DOMAIN).pot
$(MAKE) strip-pot strip-po
# linters
test-gettext: $(DOMAIN).pot
$(MAKE) strip-pot
$(PYTHON) $(IPA_TEST_I18N) --test-gettext
validate-pot: $(DOMAIN).pot
$(MAKE) strip-pot
$(PYTHON) $(IPA_TEST_I18N) --show-strings --validate-pot $<
validate-po: stamp-po
$(MAKE) strip-po
$(PYTHON) $(IPA_TEST_I18N) --show-strings --validate-po $(POFILES)
# forcefully re-generate .pot file and test it
validate-src-strings: $(DOMAIN).pot-update
$(MAKE) strip-pot
$(MAKE) validate-pot