Subject: Re: What's cooking in git.git (Feb 2026, #03)

From: Patrick Steinhardt <[email-masked]>
Date: Tue, 10 Feb 2026 14:26:28 +0100

On Mon, Feb 09, 2026 at 07:41:30PM +0000, Ramsay Jones wrote:
> On 09/02/2026 9:14 am, Patrick Steinhardt wrote:
> > On Sat, Feb 07, 2026 at 03:15:51PM -0800, Junio C Hamano wrote:
> [snip]
> > 
> >> * ps/meson-gitk-git-gui (2026-02-04) 1 commit
> >>  - meson: wire up gitk and git-gui
> >>
> >>  Plumb gitk/git-gui build and install procedure in meson based
> >>  builds.
> >>
> >>  Expecting a reroll.
> >>  source: <[email-masked]>
> > 
> > Probably makes more sense to say that this is waiting on a pull request
> > of gitk, as the patch series itself doesn't need to change.
> > 
> 
> So, I should probably wait until Junio pulls from Johannes Sixt, but as it stands
> on the seen branch (@203d64cf67), I have warning against 'git-gui' on Linux (but
> not cygwin). On Linux, I see:
> 
>   $ cat build/meson-logs/meson-log.txt
>   ...
>   Executing subproject git-gui
> 
>   Project name: git-gui
>   Project version: undefined
>   Program sh found: YES (/usr/bin/sh)
>   Program tclsh found: YES (/usr/bin/tclsh)
>   Program wish found: YES (/usr/bin/wish)
>   Configuring GIT-GUI-BUILD-OPTIONS using configuration
>   Program msgfmt found: YES (/usr/bin/msgfmt)
>   Build targets in project: 694
>   NOTICE: Future-deprecated features used:
>    * 0.64.0: {'copy arg in configure_file'}
>   Subproject git-gui finished.
>   ...
>   $ 
> 
> Note that on cygwin I don't get the warning and the number of build targets
> is 693, rather than 694 (I don't know if that's relevant). Also the version
> of meson on linux is 1.3.2, but on cygwin is 1.5.2 (so, I would have thought
> that the deprecation warning would also appear on cygwin! ;) ).

If I remember correctly this particular deprecation was rolled back
eventually. *goes double checking* Yup, it's been deprecated in Meson
0.64.0, but that deprecation has been rolled back in 0c802d260 (remove
deprecation warning for `configure_file` kwarg 'copy', 2024-05-24),
released as part of Meson 1.5.0.

So I'm not sure whether this really needs addressing. We _could_ make
this conditional and use `fs.copyfile()` on Meson newer or equal to
0.63.0 and older than 1.5.0. But whether that's worth it... dunno.
Probably not.

> The make and meson builds appear very similar, although some paths and version
> numbers differ:
> 
>   $ diff build/subprojects/git-gui/git-gui git-gui/git-gui
>   1c1
>   < #!/usr/bin/sh
>   ---
>   > #!/bin/sh
>   6c6
>   < 	echo 'git-gui version 0.21.GITGUI'; \
>   ---
>   > 	echo 'git-gui version 0.21.0.257.g1a729'; \
>   10c10
>   <  exec '/usr/bin/wish' "$argv0" -- "$@"
>   ---
>   >  exec 'wish' "$argv0" -- "$@"
>   12c12
>   < set appvers {0.21.GITGUI}
>   ---
>   > set appvers {0.21.0.257.g1a729}
>   378c378
>   < set _shellpath {/usr/bin/sh}
>   ---
>   > set _shellpath {/bin/sh}
>   $ 

I guess the /bin/sh thing is something I'll want to address so that we
prefer "/bin/sh" over "/usr/bin/sh". We did the same fix in Git itself
eventually. The wish shell feels sensible though, I don't think we need
to fix that part.

The version thing is actually a bug. The problem is that we have started
to set GIT_CEILING_DIRECTORIES, but we set it to the directory of
git-gui itself. That of course works as long as git-gui is compiled
standalone, but doesn't work anymore in case git-gui is embedded as a
subproject.

So why does it work for our Makefile? That's because we define the
SOURCE_DIR as ".", and as a result we define the ceiling directory as
"./..". And that seems to not restrict our discovery process. I don't
really know why that is, to be honest.

I have created [1] to address these issues. Thanks for testing!

Patrick

[1]: https://github.com/j6t/git-gui/pull/31