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

[PATCH v4 0/2] i18n: make GETTEXT_POISON a runtime option

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 8, 2018, 21:15 UTC
Message-ID
<20181108211530.29017-1-avarab@gmail.com>
In-Reply-To
<20181101193115.32681-1-avarab@gmail.com>

Addresses all the feedback against v3. Includes a patch by Junio sitting in "pu" (and I fixed the grammar error Eric pointed out in its commit message).

Range-diff:
1:  cc24ba8de8 ! 1:  2210ee8bd9 i18n: make GETTEXT_POISON a runtime option
    @@ -34,11 +34,11 @@
     
         Notes on the implementation:
     
    -     * We still compile a dedicated GETTEXT_POISON build in Travis CI.
    -       This is probably the wrong thing to do and should be followed-up
    -       with something similar to ae59a4e44f ("travis: run tests with
    -       GIT_TEST_SPLIT_INDEX", 2018-01-07) to re-use an existing test setup
    -       for running in the GIT_TEST_GETTEXT_POISON mode.
    +     * We still compile a dedicated GETTEXT_POISON build in Travis
    +       CI. Perhaps this should be revisited and integrated into the
    +       "linux-gcc" build, see ae59a4e44f ("travis: run tests with
    +       GIT_TEST_SPLIT_INDEX", 2018-01-07) for prior art in that area. Then
    +       again maybe not, see [2].
     
          * We now skip a test in t0000-basic.sh under
            GIT_TEST_GETTEXT_POISON=YesPlease that wasn't skipped before. This
    @@ -56,12 +56,22 @@
            so we populate the "poison_requested" variable in a codepath that's
            won't suffer from that race condition.
     
    -    See also [3] for more on the motivation behind this patch, and the
    +     * We error out in the Makefile if you're still saying
    +       GETTEXT_POISON=YesPlease to prompt users to change their
    +       invocation.
    +
    +     * We should not print out poisoned messages during the test
    +       initialization itself to keep it more readable, so the test library
    +       hides the variable if set in $GIT_TEST_GETTEXT_POISON_ORIG during
    +       setup. See [3].
    +
    +    See also [4] for more on the motivation behind this patch, and the
         history of the GETTEXT_POISON facility.
     
         1. https://public-inbox.org/git/871s8gd32p.fsf@evledraar.gmail.com/
    -    2. https://public-inbox.org/git/87woq7b58k.fsf@evledraar.gmail.com/
    -    3. https://public-inbox.org/git/878t2pd6yu.fsf@evledraar.gmail.com/
    +    2. https://public-inbox.org/git/20181102163725.GY30222@szeder.dev/
    +    3. https://public-inbox.org/git/20181022202241.18629-2-szeder.dev@gmail.com/
    +    4. https://public-inbox.org/git/878t2pd6yu.fsf@evledraar.gmail.com/
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
    @@ -181,7 +191,7 @@
      #else
      static inline void git_setup_gettext(void)
      {
    -+	use_gettext_poison();; /* getenv() reentrancy paranoia */
    ++	use_gettext_poison(); /* getenv() reentrancy paranoia */
      }
      static inline int gettext_width(const char *s)
      {
    @@ -392,8 +402,32 @@
      --- a/t/test-lib.sh
      +++ b/t/test-lib.sh
     @@
    + TZ=UTC
    + export LANG LC_ALL PAGER TZ
    + EDITOR=:
    ++
    ++# GIT_TEST_GETTEXT_POISON should not influence git commands executed
    ++# during initialization of test-lib and the test repo. Back it up,
    ++# unset and then restore after initialization is finished.
    ++if test -n "$GIT_TEST_GETTEXT_POISON"
    ++then
    ++	GIT_TEST_GETTEXT_POISON_ORIG=$GIT_TEST_GETTEXT_POISON
    ++	unset GIT_TEST_GETTEXT_POISON
    ++fi
    ++
    + # A call to "unset" with no arguments causes at least Solaris 10
    + # /usr/xpg4/bin/sh and /bin/ksh to bail out.  So keep the unsets
    + # deriving from the command substitution clustered with the other
    +@@
    + test -n "$USE_LIBPCRE2" && test_set_prereq LIBPCRE2
      test -z "$NO_GETTEXT" && test_set_prereq GETTEXT
      
    ++if test -n "$GIT_TEST_GETTEXT_POISON_ORIG"
    ++then
    ++	GIT_TEST_GETTEXT_POISON=$GIT_TEST_GETTEXT_POISON_ORIG
    ++	unset GIT_TEST_GETTEXT_POISON_ORIG
    ++fi
    ++
      # Can we rely on git's output in the C locale?
     -if test -n "$GETTEXT_POISON"
     +if test -z "$GIT_TEST_GETTEXT_POISON"
-:  ---------- > 2:  a6948d936a Makefile: ease dynamic-gettext-poison transition
Junio C Hamano (1):
  Makefile: ease dynamic-gettext-poison transition
Ævar Arnfjörð Bjarmason (1):
  i18n: make GETTEXT_POISON a runtime option
 .travis.yml               |  2 +-
 Makefile                  |  8 +-------
 ci/lib-travisci.sh        |  4 ++--
 gettext.c                 | 11 +++++++----
 gettext.h                 |  9 +++------
 git-sh-i18n.sh            |  2 +-
 po/README                 | 13 ++++---------
 t/README                  |  6 ++++++
 t/lib-gettext.sh          |  2 +-
 t/t0000-basic.sh          |  2 +-
 t/t0205-gettext-poison.sh |  8 +++++---
 t/t3406-rebase-message.sh |  2 +-
 t/t7201-co.sh             |  6 +++---
 t/t9902-completion.sh     |  3 ++-
 t/test-lib-functions.sh   |  8 ++++----
 t/test-lib.sh             | 22 +++++++++++++++++-----
 16 files changed, 59 insertions(+), 49 deletions(-)
-- 
2.19.1.930.g4563a0d9d0
Previous: Eric SunshineNext: Ævar Arnfjörð Bjarmason
Message 37 of 49 in “Poison gettext with the Ook language”
  1. Poison gettext with the Ook languageNguyễn Thái Ngọc Duy, Oct 22, 2018
  2. SZEDER GáborOct 22, 2018
  3. 1/8 test-lib.sh: preserve GIT_GETTEXT_POISON from the environmentSZEDER Gábor, Oct 22, 2018
  4. 2/8 gettext: don't poison if GIT_GETTEXT_POISON is set but emptySZEDER Gábor, Oct 22, 2018
  5. Ævar Arnfjörð BjarmasonOct 22, 2018
  6. 3/8 lib-rebase: loosen GETTEXT_POISON check in fake editorSZEDER Gábor, Oct 22, 2018
  7. 4/8 gettext: #ifdef away GETTEXT POISON-related code from _() and Q_()SZEDER Gábor, Oct 22, 2018
  8. 5/8 gettext: put "# GETTEXT POISON #" string literal into a macroSZEDER Gábor, Oct 22, 2018
  9. 6/8 gettext: use an enum for the mode of GETTEXT POISONingSZEDER Gábor, Oct 22, 2018
  10. 7/8 gettext: introduce GIT_GETTEXT_POISON=scrambledSZEDER Gábor, Oct 22, 2018
  11. Duy NguyenOct 23, 2018
  12. 8/8 travis-ci: run GETTEXT POISON build job in scrambled mode, tooSZEDER Gábor, Oct 22, 2018
  13. Duy NguyenOct 23, 2018
  14. Jakub NarebskiOct 27, 2018
  15. Johannes SchindelinOct 22, 2018
  16. Ævar Arnfjörð BjarmasonOct 22, 2018
  17. Ævar Arnfjörð BjarmasonOct 22, 2018
  18. Junio C HamanoOct 22, 2018
  19. i18n: make GETTEXT_POISON a runtime optionÆvar Arnfjörð Bjarmason, Oct 23, 2018
  20. Junio C HamanoOct 24, 2018
  21. Jeff KingOct 24, 2018
  22. Junio C HamanoOct 25, 2018
  23. Jeff KingOct 25, 2018
  24. Ramsay JonesOct 25, 2018
  25. Jeff KingOct 25, 2018
  26. Ævar Arnfjörð BjarmasonOct 26, 2018
  27. Jeff KingOct 27, 2018
  28. Ævar Arnfjörð BjarmasonOct 27, 2018
  29. i18n: make GETTEXT_POISON a runtime optionÆvar Arnfjörð Bjarmason, Oct 24, 2018
  30. i18n: make GETTEXT_POISON a runtime optionÆvar Arnfjörð Bjarmason, Nov 1, 2018
  31. Junio C HamanoNov 2, 2018
  32. SZEDER GáborNov 2, 2018
  33. Ævar Arnfjörð BjarmasonNov 8, 2018
  34. SZEDER GáborNov 8, 2018
  35. Junio C HamanoNov 8, 2018
  36. Eric SunshineNov 8, 2018
  37. 0/2 i18n: make GETTEXT_POISON a runtime optionÆvar Arnfjörð Bjarmason, Nov 8, 2018
  38. 1/2 i18n: make GETTEXT_POISON a runtime optionÆvar Arnfjörð Bjarmason, Nov 8, 2018
  39. 2/2 Makefile: ease dynamic-gettext-poison transitionÆvar Arnfjörð Bjarmason, Nov 8, 2018
  40. Johannes SchindelinOct 23, 2018
  41. Ævar Arnfjörð BjarmasonOct 23, 2018
  42. Johannes SchindelinOct 23, 2018
  43. Duy NguyenOct 23, 2018
  44. Ævar Arnfjörð BjarmasonOct 23, 2018
  45. Duy NguyenOct 24, 2018
  46. Ævar Arnfjörð BjarmasonOct 24, 2018
  47. Junio C HamanoOct 25, 2018
  48. Jeff KingOct 25, 2018
  49. Junio C HamanoOct 27, 2018

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.