[PATCH v2] meson: wire up gitk and git-gui
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Feb 4, 2026, 08:38 UTC
- Message-ID
- <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>
- In-Reply-To
- <20250819-b4-pks-meson-tcl-tk-v1-0-6bcaff0bc0a0@pks.im>
Wire up both gitk and git-gui in Meson as subprojects. These two programs should be the last missing pieces for feature compatibility with our Makefile for distributors.
Note that Meson expects subprojects to live in the "subprojects/" directory. Create symlinks to fulfill this requirement.
Signed-off-by: Patrick Steinhardt <ps@pks.im> --- Hi,
I have upstreamed support for Meson into both gitk [1] and git-gui [2]. This small patch series wires up support in Git.
Changes in v2:
- Use symlinks instead of moving both gitk and git-gui into the
"subprojects/" directory.
- Rebased on v2.53.0, as it's been a while since v1 :)
- Link to v1: https://lore.kernel.org/r/20250819-b4-pks-meson-tcl-tk-v1-0-6bcaff0bc0a0@pks.imThanks!
Patrick
[1]: https://github.com/j6t/gitk/pull/8 [2]: https://github.com/j6t/git-gui/pull/9 --- meson.build | 14 ++++++++++++++ meson_options.txt | 4 ++++ subprojects/git-gui | 1 + subprojects/gitk | 1 + 4 files changed, 20 insertions(+)
diff --git a/meson.build b/meson.build index dd52efd1c8..e96953afec 100644 --- a/meson.build +++ b/meson.build @@ -239,7 +239,9 @@ git = find_program('git', dirs: program_path, native: true, required: false) sed = find_program('sed', dirs: program_path, native: true) shell = find_program('sh', dirs: program_path, native: true) tar = find_program('tar', dirs: program_path, native: true) +tclsh = find_program('tclsh', required: get_option('git_gui'), native: false) time = find_program('time', dirs: program_path, required: get_option('benchmarks')) +wish = find_program('wish', required: get_option('git_gui').enabled() or get_option('gitk').enabled(), native: false) # Detect the target shell that is used by Git at runtime. Note that we prefer # "/bin/sh" over a PATH-based lookup, which provides a working shell on most @@ -2250,6 +2252,16 @@ configure_file( configuration: build_options_config, ) +gitk_option = get_option('gitk').disable_auto_if(not wish.found()) +if gitk_option.allowed() + subproject('gitk') +endif + +git_gui_option = get_option('git_gui').disable_auto_if(not tclsh.found() or not wish.found()) +if git_gui_option.allowed() + subproject('git-gui') +endif + # Development environments can be used via `meson devenv -C <builddir>`. This # allows you to execute test scripts directly with the built Git version and # puts the built version of Git in your PATH. @@ -2276,6 +2288,8 @@ summary({ 'curl': curl, 'expat': expat, 'gettext': intl, + 'gitk': gitk_option.allowed(), + 'git-gui': git_gui_option.allowed(), 'gitweb': gitweb_option.allowed(), 'iconv': iconv, 'pcre2': pcre2, diff --git a/meson_options.txt b/meson_options.txt index e0be260ae1..659cbb218f 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -43,6 +43,10 @@ option('expat', type: 'feature', value: 'enabled', description: 'Build helpers used to push to remotes with the HTTP transport.') option('gettext', type: 'feature', value: 'auto', description: 'Build translation files.') +option('gitk', type: 'feature', value: 'auto', + description: 'Build the Gitk graphical repository browser. Requires Tcl/Tk.') +option('git_gui', type: 'feature', value: 'auto', + description: 'Build the git-gui graphical user interface for Git. Requires Tcl/Tk.') option('gitweb', type: 'feature', value: 'auto', description: 'Build Git web interface. Requires Perl.') option('iconv', type: 'feature', value: 'auto', diff --git a/subprojects/git-gui b/subprojects/git-gui new file mode 120000 index 0000000000..c6d917088b --- /dev/null +++ b/subprojects/git-gui @@ -0,0 +1 @@ +../git-gui \ No newline at end of file diff --git a/subprojects/gitk b/subprojects/gitk new file mode 120000 index 0000000000..b66ad18ae5 --- /dev/null +++ b/subprojects/gitk @@ -0,0 +1 @@ +../gitk-git \ No newline at end of file --- base-commit: 67ad42147a7acc2af6074753ebd03d904476118f change-id: 20250703-b4-pks-meson-tcl-tk-bb75616c8048