git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiang Xin <worldhello.net@gmail.com>
To: Git List <git@vger.kernel.org>
Cc: Junio C Hamano <gitster@pobox.com>, Jiang Xin <worldhello.net@gmail.com>
Subject: [PATCH] Makefile: generate pot file using a tweaked version of xgettext
Date: Sat, 22 Jul 2017 08:52:38 +0800	[thread overview]
Message-ID: <a87e7252bf9de8a87e5dc7712946f72459778d6c.1500684532.git.worldhello.net@gmail.com> (raw)
In-Reply-To: <CANYiYbGkuGNNYn4OF5w=1+Pqn9hEHWcD+DYVB6AXRs0vFEsY2Q@mail.gmail.com>

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 <worldhello.net@gmail.com>
---
 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


  reply	other threads:[~2017-07-22  0:52 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-15  5:06 [L10N] Kickoff of translation for Git 2.14.0 round 1 Jiang Xin
2017-07-15 19:30 ` Jean-Noël Avila
2017-07-17  0:56   ` Jiang Xin
2017-07-17 16:06     ` Johannes Schindelin
2017-07-18  1:28       ` Jiang Xin
2017-07-17 15:23   ` [PATCH] PRItime: wrap PRItime for better l10n compatibility Jiang Xin
2017-07-17 17:10     ` Junio C Hamano
2017-07-18  1:33       ` Jiang Xin
2017-07-18 17:35         ` Junio C Hamano
2017-07-19  0:57           ` Jiang Xin
2017-07-19 13:25             ` Johannes Schindelin
2017-07-19 21:32               ` Junio C Hamano
2017-07-19 23:03               ` Junio C Hamano
2017-07-20 18:19                 ` Junio C Hamano
2017-07-20 18:24                   ` Junio C Hamano
2017-07-20 18:57                   ` Junio C Hamano
2017-07-21 14:38                     ` Jean-Noël Avila
2017-07-21 14:54                       ` Junio C Hamano
2017-07-22 11:21                         ` Johannes Schindelin
2017-07-22 15:53                           ` Junio C Hamano
2017-07-25 10:20                             ` Johannes Schindelin
2017-07-25 20:46                               ` Junio C Hamano
2017-07-21 22:17                   ` Jiang Xin
2017-07-21 22:40                     ` Junio C Hamano
2017-07-21 23:13                       ` Jiang Xin
2017-07-21 23:34                         ` Junio C Hamano
2017-07-22  0:43                           ` Jiang Xin
2017-07-22  0:52                             ` Jiang Xin [this message]
2017-07-22  2:44                             ` Junio C Hamano
2017-07-22 11:28                             ` Johannes Schindelin
2017-07-22 15:48                               ` Junio C Hamano
2017-07-24  1:50                                 ` Jiang Xin
2017-07-25 10:22                                 ` Johannes Schindelin
2017-07-25 20:49                                   ` Junio C Hamano
2017-07-24  1:38                               ` Jiang Xin
2017-07-24 19:09                                 ` Junio C Hamano
2017-07-25 10:25                                 ` Johannes Schindelin
2017-07-23  2:33                             ` Jean-Noël AVILA
2017-07-23 21:54                               ` Junio C Hamano
2017-07-24  2:02                               ` Jiang Xin
2017-07-24 19:10                                 ` Junio C Hamano
2017-07-22 17:02   ` [L10N] Kickoff of translation for Git 2.14.0 round 1 Kaartic Sivaraam
2017-07-23  2:43     ` Jean-Noël Avila
2017-07-19  5:44 ` Jordi Mas
2017-07-20  0:50   ` Jiang Xin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a87e7252bf9de8a87e5dc7712946f72459778d6c.1500684532.git.worldhello.net@gmail.com \
    --to=worldhello.net@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).