Merge branch 'jc/po-pritime-fix'
authorJunio C Hamano <gitster@pobox.com>
Fri, 21 Jul 2017 21:57:36 +0000 (14:57 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Jul 2017 21:57:37 +0000 (14:57 -0700)
We started using "%" PRItime, imitating "%" PRIuMAX and friends, as
a way to format the internal timestamp value, but this does not
play well with gettext(1) i18n framework, and causes "make pot"
that is run by the l10n coordinator to create a broken po/git.pot
file. This is a possible workaround for that problem.

* jc/po-pritime-fix:
Makefile: help gettext tools to cope with our custom PRItime format

1  2 
Makefile
diff --combined Makefile
index 9b98535a044256a8887e579d963809aff46fdc0b,b1ff6fad198f6f778f1e07c58558c30bf5b45003..461c845d33cbc5f201096ea4b3e1048492cb0a6a
+++ b/Makefile
@@@ -1022,15 -1022,10 +1022,15 @@@ ifdef DEVELOPE
  CFLAGS += $(DEVELOPER_CFLAGS)
  endif
  
 +comma := ,
 +empty :=
 +space := $(empty) $(empty)
 +
  ifdef SANITIZE
 +SANITIZERS := $(foreach flag,$(subst $(comma),$(space),$(SANITIZE)),$(flag))
  BASIC_CFLAGS += -fsanitize=$(SANITIZE) -fno-sanitize-recover=$(SANITIZE)
  BASIC_CFLAGS += -fno-omit-frame-pointer
 -ifeq ($(SANITIZE),undefined)
 +ifneq ($(filter undefined,$(SANITIZERS)),)
  BASIC_CFLAGS += -DNO_UNALIGNED_LOADS
  endif
  endif
@@@ -2221,12 -2216,33 +2221,33 @@@ LOCALIZED_SH += t/t0200/test.s
  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.
  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
        $(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