git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 6/6] perl: use mock i18n functions under NO_GETTEXT=Y

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
May 10, 2021, 10:50 UTC
Message-ID
<patch-6.6-7a5e7cf39a5-20210510T104937Z-avarab@gmail.com>
In-Reply-To
<cover-0.6-00000000000-20210510T104937Z-avarab@gmail.com>

Change the logic of the i18n functions I added in 5e9637c6297 (i18n: add infrastructure for translating Git with gettext, 2011-11-18) to use pass-through functions when NO_GETTEXT is defined.

This speeds up the compilation time of commands that use this library when NO_GETTEXT=Y is in effect. Loading it and POSIX.pm is around 20ms on my machine, whereas it takes 2ms to just instantiate perl itself.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
 Makefile         |  3 +++
 perl/Git/I18N.pm | 10 ++++++++++
 2 files changed, 13 insertions(+)
diff --git a/Makefile b/Makefile
index aaa972c56aa..0705fc2d3fb 100644
--- a/Makefile
+++ b/Makefile
@@ -1986,6 +1986,7 @@ ETC_GITCONFIG_SQ = $(subst ','\'',$(ETC_GITCONFIG))
 ETC_GITATTRIBUTES_SQ = $(subst ','\'',$(ETC_GITATTRIBUTES))
 
 DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
+NO_GETTEXT_SQ = $(subst ','\'',$(NO_GETTEXT))
 bindir_SQ = $(subst ','\'',$(bindir))
 bindir_relative_SQ = $(subst ','\'',$(bindir_relative))
 mandir_SQ = $(subst ','\'',$(mandir))
@@ -2276,6 +2277,7 @@ PERL_DEFINES += $(PERLLIB_EXTRA_SQ)
 PERL_DEFINES += $(perllibdir_SQ)
 PERL_DEFINES += $(RUNTIME_PREFIX)
 PERL_DEFINES += $(NO_PERL_CPAN_FALLBACKS)
+PERL_DEFINES += $(NO_GETTEXT)
 
 # Support Perl runtime prefix. In this mode, a different header is installed
 # into Perl scripts.
@@ -2680,6 +2682,7 @@ endif
 perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES
 	$(QUIET_GEN)mkdir -p $(dir $@) && \
 	sed -e 's|@@LOCALEDIR@@|$(perl_localedir_SQ)|g' \
+	    -e 's|@@NO_GETTEXT@@|$(NO_GETTEXT_SQ)|g' \
 	    -e 's|@@NO_PERL_CPAN_FALLBACKS@@|$(NO_PERL_CPAN_FALLBACKS_SQ)|g' \
 	< $< > $@
 
diff --git a/perl/Git/I18N.pm b/perl/Git/I18N.pm
index 2037f387c89..895e759c57a 100644
--- a/perl/Git/I18N.pm
+++ b/perl/Git/I18N.pm
@@ -16,9 +16,19 @@ BEGIN
 our @EXPORT = qw(__ __n N__);
 our @EXPORT_OK = @EXPORT;
 
+# See Git::LoadCPAN's NO_PERL_CPAN_FALLBACKS_STR for a description of
+# this "'@@' [...] '@@'" pattern.
+use constant NO_GETTEXT_STR => '@@' . 'NO_GETTEXT' . '@@';
+use constant NO_GETTEXT => (
+	q[@@NO_GETTEXT@@] ne ''
+	and
+	q[@@NO_GETTEXT@@] ne NO_GETTEXT_STR
+);
+
 sub __bootstrap_locale_messages {
 	our $TEXTDOMAIN = 'git';
 	our $TEXTDOMAINDIR ||= $ENV{GIT_TEXTDOMAINDIR} || '@@LOCALEDIR@@';
+	die "NO_GETTEXT=" . NO_GETTEXT_STR if NO_GETTEXT;
 
 	require POSIX;
 	POSIX->import(qw(setlocale));
-- 
2.31.1.838.g924d365b763
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 19 of 26 in “Makefile/perl: correctly re-generate build/* + speed up under NO_GETTEXT=Y”
  1. 0/4 Makefile/perl: correctly re-generate build/* + speed up under NO_GETTEXT=YÆvar Arnfjörð Bjarmason, May 5, 2021
  2. 1/4 Makefile: don't re-define PERL_DEFINESÆvar Arnfjörð Bjarmason, May 5, 2021
  3. Jeff KingMay 5, 2021
  4. Junio C HamanoMay 6, 2021
  5. Jeff KingMay 6, 2021
  6. Ævar Arnfjörð BjarmasonMay 6, 2021
  7. Junio C HamanoMay 6, 2021
  8. Ævar Arnfjörð BjarmasonMay 6, 2021
  9. Jeff KingMay 6, 2021
  10. Junio C HamanoMay 7, 2021
  11. 3/4 Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS changeÆvar Arnfjörð Bjarmason, May 5, 2021
  12. 2/4 Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changesÆvar Arnfjörð Bjarmason, May 5, 2021
  13. 4/4 perl: use mock i18n functions under NO_GETTEXT=YÆvar Arnfjörð Bjarmason, May 5, 2021
  14. 0/6 Makefile/perl: correctly re-generate build/* + speed up under NO_GETTEXT=YÆvar Arnfjörð Bjarmason, May 10, 2021
  15. 1/6 Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changesÆvar Arnfjörð Bjarmason, May 10, 2021
  16. 2/6 Makefile: don't re-define PERL_DEFINESÆvar Arnfjörð Bjarmason, May 10, 2021
  17. 4/6 Makefile: split up the deceleration of PERL_DEFINESÆvar Arnfjörð Bjarmason, May 10, 2021
  18. 3/6 Makefile: make PERL_DEFINES recursively expandedÆvar Arnfjörð Bjarmason, May 10, 2021
  19. 6/6 perl: use mock i18n functions under NO_GETTEXT=YÆvar Arnfjörð Bjarmason, May 10, 2021
  20. 5/6 Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS changeÆvar Arnfjörð Bjarmason, May 10, 2021
  21. Junio C HamanoMay 10, 2021
  22. Ævar Arnfjörð BjarmasonMay 11, 2021
  23. Junio C HamanoMay 11, 2021
  24. Makefile: make PERL_DEFINES recursively expandedÆvar Arnfjörð Bjarmason, May 12, 2021
  25. Jeff KingMay 12, 2021
  26. Junio C HamanoMay 12, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.