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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 30.07.25 um 18:40 schrieb Carlo Marcelo Arenas Belón:
> 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@xxxxxxxxx>
> ---
>  .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.

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

> 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





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux