git-gui: extract script to generate "git-gui"

Extract script to generate "git-gui". This change allows us to reuse the build logic with the Meson build system. Signed-off-by: Patrick Steinhardt <ps@pks.im>

Patrick Steinhardt committed Mar 11, 2025 at 11:07 UTC 854e88335a3e68af46f62ce72037293920bd06f2
2 files changed +30 -11
Makefile
+1 -11
@@ -127,7 +127,6 @@ gitexecdir_SQ = $(subst ','\'',$(gitexecdir))
127 SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
128 TCL_PATH_SQ = $(subst ','\'',$(TCL_PATH))
129 TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
130 -TCLTK_PATH_SED = $(subst ','\'',$(subst \,\\,$(TCLTK_PATH)))
130
131 gg_libdir ?= $(sharedir)/git-gui/lib
132 libdir_SQ = $(subst ','\'',$(gg_libdir))
@@ -202,16 +201,7 @@ git-gui: windows/git-gui.sh
201 endif
202
203 $(GITGUI_MAIN): git-gui.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
205 - $(QUIET_GEN)rm -f $@ $@+ && \
206 - sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
207 - -e 's|@@SHELL_PATH@@|$(SHELL_PATH_SQ)|' \
208 - -e '1,30s|^ exec wish | exec '\''$(TCLTK_PATH_SED)'\'' |' \
209 - -e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
210 - -e 's|@@GITGUI_RELATIVE@@|$(GITGUI_RELATIVE)|' \
211 - -e '$(GITGUI_RELATIVE)s|@@GITGUI_LIBDIR@@|$(libdir_SED)|' \
212 - git-gui.sh >$@+ && \
213 - chmod +x $@+ && \
214 - mv $@+ $@
204 + $(QUIET_GEN)$(SHELL_PATH) generate-git-gui.sh "$<" "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
205
206 XGETTEXT ?= xgettext
207 ifdef NO_MSGFMT
generate-git-gui.sh new
+29
@@ -0,0 +1,29 @@
1 +#!/bin/sh
2 +
3 +set -e
4 +
5 +if test "$#" -ne 4
6 +then
7 + echo >&2 "usage: $0 <INPUT> <OUTPUT> <BUILD_OPTIONS> <VERSION_FILE>"
8 + exit 1
9 +fi
10 +
11 +INPUT="$1"
12 +OUTPUT="$2"
13 +BUILD_OPTIONS="$3"
14 +VERSION_FILE="$4"
15 +
16 +. "${BUILD_OPTIONS}"
17 +. "${VERSION_FILE}"
18 +
19 +rm -f "$OUTPUT" "$OUTPUT+"
20 +sed \
21 + -e "1s|#!.*/sh|#!$SHELL_PATH|" \
22 + -e "s|@@SHELL_PATH@@|$SHELL_PATH|" \
23 + -e "1,30s|^ exec wish | exec '$TCLTK_PATH' |" \
24 + -e "s|@@GITGUI_VERSION@@|$GITGUI_VERSION|g" \
25 + -e "s|@@GITGUI_RELATIVE@@|$GITGUI_RELATIVE|" \
26 + -e "${GITGUI_RELATIVE}s|@@GITGUI_LIBDIR@@|$GITGUI_LIBDIR|" \
27 + "$INPUT" >"$OUTPUT"+
28 +chmod +x "$OUTPUT"+
29 +mv "$OUTPUT"+ "$OUTPUT"