From 0d4fe3047f98eaab927964d84ec114bfd504ab0f Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Wed, 19 Feb 2025 13:34:30 +0100 Subject: [PATCH 1/2] gitk: extract script to build executable Extract the scrip that "builds" Gitk from our Makefile so that we can reuse it in Meson. Signed-off-by: Patrick Steinhardt --- Makefile | 5 ++--- generate-tcl.sh | 11 +++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100755 generate-tcl.sh diff --git a/Makefile b/Makefile index e1f0aff4a1..3a3c56c318 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ gitk_libdir ?= $(sharedir)/gitk/lib msgsdir ?= $(gitk_libdir)/msgs msgsdir_SQ = $(subst ','\'',$(msgsdir)) +SHELL_PATH ?= /bin/sh TCL_PATH ?= tclsh TCLTK_PATH ?= wish INSTALL ?= install @@ -64,9 +65,7 @@ clean:: gitk-wish: gitk GIT-TCLTK-VARS $(QUIET_GEN)$(RM) $@ $@+ && \ - sed -e '1,3s|^exec .* "$$0"|exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' $@+ && \ - chmod +x $@+ && \ - mv -f $@+ $@ + $(SHELL_PATH) ./generate-tcl.sh "$(TCLTK_PATH_SQ)" "$<" "$@" $(PO_TEMPLATE): gitk $(XGETTEXT) -kmc -LTcl -o $@ gitk diff --git a/generate-tcl.sh b/generate-tcl.sh new file mode 100755 index 0000000000..46bba6d246 --- /dev/null +++ b/generate-tcl.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +WISH=$(echo "$1" | sed 's/|/\\|/g') +INPUT="$2" +OUTPUT="$3" + +sed -e "1,3s|^exec .* \"\$0\"|exec $WISH \"\$0\"|" "$INPUT" >"$OUTPUT"+ +chmod a+x "$OUTPUT"+ +mv "$OUTPUT"+ "$OUTPUT" From b4c06f7c4d6c87091f138877b702489755fd59ef Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Wed, 19 Feb 2025 13:42:50 +0100 Subject: [PATCH 2/2] gitk: introduce support for the Meson build system Upstream Git has introduced support for the Meson build system. Introduce support for Meson into gitk, as well, so that Git can easily build its vendored copy of Gitk via a `subproject()` directive. The instructions can be set up as follows: $ meson setup build $ meson compile -C build $ meson install -C build Specific options, like for example where Gitk shall be installed to, can be specified at setup time via `-D`. Available options can be discovered by running `meson configure` either in the source or build directory. Signed-off-by: Patrick Steinhardt --- meson.build | 30 ++++++++++++++++++++++++++++++ po/meson.build | 19 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 meson.build create mode 100644 po/meson.build diff --git a/meson.build b/meson.build new file mode 100644 index 0000000000..ca3c0cec58 --- /dev/null +++ b/meson.build @@ -0,0 +1,30 @@ +project('gitk') + +shell = find_program('sh') +wish = find_program('wish') + +# Verify that dependencies of "generate-tcl.sh" are satisfied. +foreach dependency : [ 'chmod', 'mv', 'sed' ] + find_program(dependency) +endforeach + +custom_target( + command: [ + shell, + meson.current_source_dir() / 'generate-tcl.sh', + wish.full_path(), + '@INPUT@', + '@OUTPUT@', + ], + input: 'gitk', + output: 'gitk', + depend_files: [ + 'generate-tcl.sh', + ], + install: true, + install_dir: get_option('bindir'), +) + +if find_program('msgfmt').found() + subdir('po') +endif diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 0000000000..b1ed019828 --- /dev/null +++ b/po/meson.build @@ -0,0 +1,19 @@ +import('i18n').gettext('gitk', + languages: [ + 'bg', + 'ca', + 'de', + 'es', + 'fr', + 'hu', + 'it', + 'ja', + 'pt_br', + 'pt_pt', + 'ru', + 'sv', + 'vi', + 'zh_cn', + ], + install: true, +)