git-gui: honor TCLTK_PATH in git-gui--askpass

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>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
This commit is contained in:
Carlo Marcelo Arenas Belón
2025-07-31 01:06:27 -07:00
committed by Johannes Sixt
parent df41037be0
commit 0e3233b913
5 changed files with 42 additions and 10 deletions

1
.gitignore vendored
View File

@@ -4,4 +4,5 @@ git-gui.tcl
GIT-GUI-BUILD-OPTIONS GIT-GUI-BUILD-OPTIONS
GIT-VERSION-FILE GIT-VERSION-FILE
git-gui git-gui
git-gui--askpass
lib/tclIndex lib/tclIndex

View File

@@ -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 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 @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 ifdef GITGUI_WINDOWS_WRAPPER
all:: git-gui all:: git-gui
endif endif
all:: $(GITGUI_MAIN) lib/tclIndex $(ALL_MSGFILES) all:: $(GITGUI_MAIN) git-gui--askpass lib/tclIndex $(ALL_MSGFILES)
install: all install: all
$(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(gitexecdir_SQ)' $(INSTALL_D1) $(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 @sed 's|^GITGUI_VERSION=||' <GIT-VERSION-FILE >$(TARDIR)/version
clean:: 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 $(RM_RF) GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
ifdef GITGUI_WINDOWS_WRAPPER ifdef GITGUI_WINDOWS_WRAPPER
$(RM_RF) git-gui $(RM_RF) git-gui

22
generate-script.sh Executable file
View File

@@ -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"

View File

@@ -38,14 +38,6 @@ version_file = custom_target(
build_always_stale: true, 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 = 'git-gui'
gitgui_main_install_dir = get_option('libexecdir') / 'git-core' gitgui_main_install_dir = get_option('libexecdir') / 'git-core'
@@ -61,6 +53,20 @@ if target_machine.system() == 'windows'
) )
endif 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( custom_target(
input: 'git-gui.sh', input: 'git-gui.sh',
output: gitgui_main, output: gitgui_main,