Instead of doing a sed (s|PRItime|PRIuMAX) in working tree directly, we
can use a tweaked version of gettext, which can replace PRItime macro to
PRIuMAX (version 1.x) in runtime. We do not need to reset our working
tree anymore, and this operation can be run without a version controlled
working tree.
The tweaked version of gettext is hosted at:
https://github.com/jiangxin/gettext
Signed-off-by: Jiang Xin <[email protected]>
---
Makefile | 29 ++++++++++-------------------
1 file changed, 10 insertions(+), 19 deletions(-)
diff --git a/Makefile b/Makefile
index 461c845d33..782c519133 100644
--- a/Makefile
+++ b/Makefile
@@ -2221,33 +2221,23 @@ LOCALIZED_SH += t/t0200/test.sh
LOCALIZED_PERL += t/t0200/test.perl
endif
-## Note that this is meant to be run only by the localization coordinator
-## under a very controlled condition, i.e. (1) it is to be run in a
-## Git repository (not a tarball extract), (2) any local modifications
-## will be lost.
## Gettext tools cannot work with our own custom PRItime type, so
-## we replace PRItime with PRIuMAX. We need to update this to
-## PRIdMAX if we switch to a signed type later.
+## we use a hacked version of xgettext to replace PRItime with PRIuMAX.
+## We need to update this to PRIdMAX if we switch to a signed type later.
-po/git.pot: $(GENERATED_H) FORCE
- # All modifications will be reverted at the end, so we do not
- # want to have any local change.
- git diff --quiet HEAD && git diff --quiet --cached
-
- @for s in $(LOCALIZED_C) $(LOCALIZED_SH) $(LOCALIZED_PERL); \
- do \
- sed -e 's|PRItime|PRIuMAX|g' <"$$s" >"$$s+" && \
- cat "$$s+" >"$$s" && rm "$$s+"; \
- done
+check-xgettext:
+ @if ! $(XGETTEXT) --version | grep -q "PRItime tweak v1"; then \
+ echo >&2 "Error: must use a hacked version of xgettext, which
can convert PRItime macro as we need."; \
+ echo >&2 "Error: download it from
https://github.com/jiangxin/gettext"; \
+ exit 1; \
+ fi
+po/git.pot: check-xgettext $(GENERATED_H) FORCE
$(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ $(XGETTEXT_FLAGS_C) $(LOCALIZED_C)
$(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ --join-existing $(XGETTEXT_FLAGS_SH)
\
$(LOCALIZED_SH)
$(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ --join-existing
$(XGETTEXT_FLAGS_PERL) \
$(LOCALIZED_PERL)
-
- # Reverting the munged source, leaving only the updated $@
- git reset --hard
mv $@+ $@
.PHONY: pot
@@ -2737,6 +2727,7 @@ check-builtins::
.PHONY: coverage coverage-clean coverage-compile coverage-test coverage-report
.PHONY: coverage-untested-functions cover_db cover_db_html
.PHONY: coverage-clean-results
+.PHONY: check-xgettext
coverage:
$(MAKE) coverage-test
--
2.14.0.rc0.1.g3ccfa2fb49