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

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

From
Johannes Sixt <j6t@kdbg.org>
Date
Jul 30, 2025, 19:02 UTC
Message-ID
<cb63b63b-4a74-4649-bebb-002d1e6e66f7@kdbg.org>
In-Reply-To
<20250730164052.15371-5-carenas@gmail.com>
Am 30.07.25 um 18:40 schrieb Carlo Marcelo Arenas Belón:
Show 45 quoted lines
> 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)

I'm not a Makefile expert concerning double-colon targets. Therefore, I wonder why do we need git-gui--ask-pass twice on Windows.

Show 12 quoted lines
>  
>  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
Some dependency must be missing here, since my build fails with
git-gui@cb/no-tcl86-on-macos:1015> make
GITGUI_VERSION=0.21.0.221.g8045a
    GEN git-gui
    GEN git-gui--askpass
generate-script.sh: line 15: .: GIT-GUI-BUILD-OPTIONS: file not found
make: *** [Makefile:177: git-gui--askpass] Error 1
Show 72 quoted lines
> 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,
I can't comment on the meson part at all.
-- Hannes
Previous: Carlo Marcelo Arenas BelónNext: Patrick Steinhardt
Message 7 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.