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

[PATCH 4/5] git-gui: honor TCLTK_PATH in git-gui--askpass

From
Carlo Marcelo Arenas Belón <carenas@gmail.com>
Date
Jul 30, 2025, 16:40 UTC
Message-ID
<20250730164052.15371-5-carenas@gmail.com>
In-Reply-To
<20250730164052.15371-1-carenas@gmail.com>

Since its introduction in 8c76212 (git-gui: Add a simple implementation of SSH_ASKPASS., 2008-10-15), git-gui--askpass has been calling whatever wish interpreter is in the path, unlike git-gui.

Correct that by turning it into a script that would be processed at build time.

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
---
 .gitignore                              |  1 +
 Makefile                                |  9 ++++++---
 generate-script.sh                      | 22 ++++++++++++++++++++++
 git-gui--askpass => git-gui--askpass.sh |  0
 meson.build                             | 22 ++++++++++++++--------
 5 files changed, 43 insertions(+), 11 deletions(-)
 create mode 100755 generate-script.sh
 rename git-gui--askpass => git-gui--askpass.sh (100%)
diff --git a/.gitignore b/.gitignore
index ba845f3..5130b4f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,5 @@ git-gui.tcl
 GIT-GUI-BUILD-OPTIONS
 GIT-VERSION-FILE
 git-gui
+git-gui--askpass
 lib/tclIndex
diff --git a/Makefile b/Makefile
index 2ac5f44..b2d7ffb 100644
--- a/Makefile
+++ b/Makefile
@@ -173,10 +173,13 @@ GIT-GUI-BUILD-OPTIONS: FORCE
 	@if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi
 	@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
 
+git-gui--askpass: git-gui--askpass.sh GIT-GUI-BUILD-OPTIONS generate-script.sh
+	$(QUIET_GEN)$(SHELL_PATH) generate-script.sh $@ $< GIT-GUI-BUILD-OPTIONS
+
 ifdef GITGUI_WINDOWS_WRAPPER
-all:: git-gui
+all:: git-gui git-gui--askpass
 endif
-all:: $(GITGUI_MAIN) lib/tclIndex $(ALL_MSGFILES)
+all:: $(GITGUI_MAIN) git-gui--askpass lib/tclIndex $(ALL_MSGFILES)
 
 install: all
 	$(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(gitexecdir_SQ)' $(INSTALL_D1)
@@ -215,7 +218,7 @@ dist-version: GIT-VERSION-FILE
 	@sed 's|^GITGUI_VERSION=||' <GIT-VERSION-FILE  >$(TARDIR)/version
 
 clean::
-	$(RM_RF) $(GITGUI_MAIN) lib/tclIndex po/*.msg $(PO_TEMPLATE)
+	$(RM_RF) $(GITGUI_MAIN) git-gui--askpass lib/tclIndex po/*.msg $(PO_TEMPLATE)
 	$(RM_RF) GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
 ifdef GITGUI_WINDOWS_WRAPPER
 	$(RM_RF) git-gui
diff --git a/generate-script.sh b/generate-script.sh
new file mode 100755
index 0000000..0dd2da9
--- /dev/null
+++ b/generate-script.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+set -e
+
+if test $# -ne 3
+then
+	echo >&2 "USAGE: $0 <OUTPUT> <INPUT> <GIT-GUI-BUILD-OPTIONS>"
+	exit 1
+fi
+
+OUTPUT="$1"
+INPUT="$2"
+BUILD_OPTIONS="$3"
+
+. "$BUILD_OPTIONS"
+
+sed \
+	-e "1s|#!.*/sh|#!$SHELL_PATH|" \
+	-e "1,3s|^exec wish|exec '$TCLTK_PATH'|" \
+	"$INPUT" >"$OUTPUT"
+
+chmod a+x "$OUTPUT"
diff --git a/git-gui--askpass b/git-gui--askpass.sh
similarity index 100%
rename from git-gui--askpass
rename to git-gui--askpass.sh
diff --git a/meson.build b/meson.build
index 1cedc82..320ba09 100644
--- a/meson.build
+++ b/meson.build
@@ -38,14 +38,6 @@ version_file = custom_target(
   build_always_stale: true,
 )
 
-configure_file(
-  input: 'git-gui--askpass',
-  output: 'git-gui--askpass',
-  copy: true,
-  install: true,
-  install_dir: get_option('libexecdir') / 'git-core',
-)
-
 gitgui_main = 'git-gui'
 gitgui_main_install_dir = get_option('libexecdir') / 'git-core'
 
@@ -61,6 +53,20 @@ if target_machine.system() == 'windows'
   )
 endif
 
+custom_target(
+  output: 'git-gui--askpass',
+  input: 'git-gui--askpass.sh',
+  command: [
+    shell,
+    meson.current_source_dir() / 'generate-script.sh',
+    '@OUTPUT@',
+    '@INPUT@',
+    meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
+  ],
+  install: true,
+  install_dir: get_option('libexecdir') / 'git-core',
+)
+
 custom_target(
   input: 'git-gui.sh',
   output: gitgui_main,
-- 
2.50.1.475.g795bb014d8
Previous: Carlo Marcelo Arenas BelónNext: Johannes Sixt
Message 6 of 25 in “git-gui: workaround deprecation of Tcl/TK 8.5 in macOS”
  1. 0/5 git-gui: workaround deprecation of Tcl/TK 8.5 in macOSCarlo Marcelo Arenas Belón, Jul 30, 2025
  2. 1/5 git-gui: remove uname_O in MakefileCarlo Marcelo Arenas Belón, Jul 30, 2025
  3. Junio C HamanoJul 30, 2025
  4. 2/5 git-gui: fix dependency of GITGUI_MAIN on generatorCarlo Marcelo Arenas Belón, Jul 30, 2025
  5. 3/5 git-gui: retire Git Gui.appCarlo Marcelo Arenas Belón, Jul 30, 2025
  6. 4/5 git-gui: honor TCLTK_PATH in git-gui--askpassCarlo Marcelo Arenas Belón, Jul 30, 2025
  7. Johannes SixtJul 30, 2025
  8. Patrick SteinhardtJul 31, 2025
  9. 5/5 git-gui: ensure own version of git-gui--askpass is usedCarlo Marcelo Arenas Belón, Jul 30, 2025
  10. Johannes SixtJul 30, 2025
  11. Mark LevedahlJul 30, 2025
  12. Johannes SixtJul 30, 2025
  13. Carlo ArenasJul 30, 2025
  14. Patrick SteinhardtJul 31, 2025
  15. Junio C HamanoJul 30, 2025
  16. Junio C HamanoJul 30, 2025
  17. Carlo ArenasJul 30, 2025
  18. Junio C HamanoJul 31, 2025
  19. 0/5 git-gui: workaround deprecation of Tcl/Tk 8.5 in macOSCarlo Marcelo Arenas Belón, Jul 31, 2025
  20. 1/5 git-gui: remove uname_O in MakefileCarlo Marcelo Arenas Belón, Jul 31, 2025
  21. 2/5 git-gui: fix dependency of GITGUI_MAIN on generatorCarlo Marcelo Arenas Belón, Jul 31, 2025
  22. 3/5 git-gui: retire Git Gui.appCarlo Marcelo Arenas Belón, Jul 31, 2025
  23. 4/5 git-gui: honor TCLTK_PATH in git-gui--askpassCarlo Marcelo Arenas Belón, Jul 31, 2025
  24. 5/5 git-gui: ensure own version of git-gui--askpass is usedCarlo Marcelo Arenas Belón, Jul 31, 2025
  25. Johannes SixtJul 31, 2025

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.