Skip to content

Commit eb98cb8

Browse files
pks-tgitster
authored andcommitted
Makefile: extract script to massage Shell scripts
Same as in the preceding commits, extract a script that allows us to unify how we massage shell scripts. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent ccfba9e commit eb98cb8

File tree

4 files changed

+68
-35
lines changed

4 files changed

+68
-35
lines changed

GIT-BUILD-OPTIONS.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,7 @@ GIT_INTEROP_MAKE_OPTS=@GIT_INTEROP_MAKE_OPTS@
3636
GIT_TEST_INDEX_VERSION=@GIT_TEST_INDEX_VERSION@
3737
GIT_TEST_PERL_FATAL_WARNINGS=@GIT_TEST_PERL_FATAL_WARNINGS@
3838
RUNTIME_PREFIX=@RUNTIME_PREFIX@
39+
GITWEBDIR=@GITWEBDIR@
40+
USE_GETTEXT_SCHEME=@USE_GETTEXT_SCHEME@
41+
LOCALEDIR=@LOCALEDIR@
42+
BROKEN_PATH_FIX=@BROKEN_PATH_FIX@

Makefile

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1558,10 +1558,10 @@ endif
15581558

15591559
ifdef SANE_TOOL_PATH
15601560
SANE_TOOL_PATH_SQ = $(subst ','\'',$(SANE_TOOL_PATH))
1561-
BROKEN_PATH_FIX = 's|^\# @BROKEN_PATH_FIX@$$|git_broken_path_fix "$(SANE_TOOL_PATH_SQ)"|'
1561+
BROKEN_PATH_FIX = s|^\# @BROKEN_PATH_FIX@$$|git_broken_path_fix "$(SANE_TOOL_PATH_SQ)"|
15621562
PATH := $(SANE_TOOL_PATH):${PATH}
15631563
else
1564-
BROKEN_PATH_FIX = '/^\# @BROKEN_PATH_FIX@$$/d'
1564+
BROKEN_PATH_FIX = /^\# @BROKEN_PATH_FIX@$$/d
15651565
endif
15661566

15671567
ifeq (,$(HOST_CPU))
@@ -2546,26 +2546,8 @@ GIT-SCRIPT-DEFINES: FORCE
25462546
echo "$$FLAGS" >$@; \
25472547
fi
25482548

2549-
define cmd_munge_script
2550-
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
2551-
-e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
2552-
-e 's|@DIFF@|$(DIFF_SQ)|' \
2553-
-e 's|@LOCALEDIR@|$(localedir_SQ)|g' \
2554-
-e 's/@USE_GETTEXT_SCHEME@/$(USE_GETTEXT_SCHEME)/g' \
2555-
-e $(BROKEN_PATH_FIX) \
2556-
-e 's|@GITWEBDIR@|$(gitwebdir_SQ)|g' \
2557-
-e 's|@PERL_PATH@|$(PERL_PATH_SQ)|g' \
2558-
-e 's|@PAGER_ENV@|$(PAGER_ENV_SQ)|g' \
2559-
2560-
endef
2561-
2562-
$(SCRIPT_SH_GEN) : % : %.sh GIT-SCRIPT-DEFINES
2563-
$(QUIET_GEN)$(cmd_munge_script) && \
2564-
chmod +x $@+ && \
2565-
mv $@+ $@
2566-
2567-
$(SCRIPT_LIB) : % : %.sh GIT-SCRIPT-DEFINES
2568-
$(QUIET_GEN)$(cmd_munge_script) && \
2549+
$(SCRIPT_SH_GEN) $(SCRIPT_LIB) : % : %.sh generate-script.sh GIT-BUILD-OPTIONS GIT-SCRIPT-DEFINES
2550+
$(QUIET_GEN)./generate-script.sh "$<" "$@+" ./GIT-BUILD-OPTIONS && \
25692551
mv $@+ $@
25702552

25712553
git.rc: git.rc.in GIT-VERSION-GEN GIT-VERSION-FILE
@@ -2635,8 +2617,8 @@ GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile
26352617
perllibdir:
26362618
@echo '$(perllibdir_SQ)'
26372619

2638-
git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES
2639-
$(QUIET_GEN)$(cmd_munge_script) && \
2620+
git-instaweb: git-instaweb.sh generate-script.sh GIT-BUILD-OPTIONS GIT-SCRIPT-DEFINES
2621+
$(QUIET_GEN)./generate-script.sh "$<" "$@+" ./GIT-BUILD-OPTIONS && \
26402622
chmod +x $@+ && \
26412623
mv $@+ $@
26422624
else # NO_PERL
@@ -3199,6 +3181,10 @@ GIT-BUILD-OPTIONS: FORCE
31993181
-e "s|@GIT_TEST_INDEX_VERSION@|\'$(GIT_TEST_INDEX_VERSION)\'|" \
32003182
-e "s|@GIT_TEST_PERL_FATAL_WARNINGS@|\'$(GIT_TEST_PERL_FATAL_WARNINGS)\'|" \
32013183
-e "s|@RUNTIME_PREFIX@|\'$(RUNTIME_PREFIX_OPTION)\'|" \
3184+
-e "s|@GITWEBDIR@|\'$(gitwebdir_SQ)\'|" \
3185+
-e "s|@USE_GETTEXT_SCHEME@|\'$(USE_GETTEXT_SCHEME)\'|" \
3186+
-e "s|@LOCALEDIR@|\'$(localedir_SQ)\'|" \
3187+
-e "s!@BROKEN_PATH_FIX@!\'$(BROKEN_PATH_FIX)\'!" \
32023188
GIT-BUILD-OPTIONS.in >$@+
32033189
@if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi
32043190
@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi

contrib/buildsystems/CMakeLists.txt

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -838,18 +838,23 @@ set(git_shell_scripts
838838
${git_sh_scripts} ${git_shlib_scripts} git-instaweb)
839839

840840
foreach(script ${git_shell_scripts})
841-
file(STRINGS ${CMAKE_SOURCE_DIR}/${script}.sh content NEWLINE_CONSUME)
842-
string(REPLACE "@SHELL_PATH@" "${SHELL_PATH}" content "${content}")
843-
string(REPLACE "@DIFF@" "diff" content "${content}")
844-
string(REPLACE "@LOCALEDIR@" "${LOCALEDIR}" content "${content}")
845-
string(REPLACE "@GITWEBDIR@" "${GITWEBDIR}" content "${content}")
846-
string(REPLACE "@NO_CURL@" "" content "${content}")
847-
string(REPLACE "@USE_GETTEXT_SCHEME@" "" content "${content}")
848-
string(REPLACE "# @BROKEN_PATH_FIX@" "" content "${content}")
849-
string(REPLACE "@PERL_PATH@" "${PERL_PATH}" content "${content}")
850-
string(REPLACE "@PAGER_ENV@" "LESS=FRX LV=-c" content "${content}")
851-
file(WRITE ${CMAKE_BINARY_DIR}/${script} ${content})
841+
if ("${script}" IN_LIST git_sh_scripts)
842+
string(REPLACE ".sh" "" shell_gen_path "${script}")
843+
else()
844+
set(shell_gen_path "${script}")
845+
endif()
846+
847+
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/${shell_gen_path}"
848+
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-script.sh"
849+
"${CMAKE_SOURCE_DIR}/${script}.sh"
850+
"${CMAKE_BINARY_DIR}/${shell_gen_path}"
851+
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
852+
DEPENDS "${CMAKE_SOURCE_DIR}/generate-script.sh"
853+
"${CMAKE_SOURCE_DIR}/${script}.sh"
854+
VERBATIM)
855+
list(APPEND shell_gen ${CMAKE_BINARY_DIR}/${shell_gen_path})
852856
endforeach()
857+
add_custom_target(shell-gen ALL DEPENDS ${shell_gen})
853858

854859
#perl scripts
855860
parse_makefile_for_scripts(git_perl_scripts "SCRIPT_PERL" "")
@@ -1183,6 +1188,10 @@ string(REPLACE "@GIT_INTEROP_MAKE_OPTS@" "" git_build_options "${git_build_optio
11831188
string(REPLACE "@GIT_TEST_INDEX_VERSION@" "" git_build_options "${git_build_options}")
11841189
string(REPLACE "@GIT_TEST_PERL_FATAL_WARNINGS@" "" git_build_options "${git_build_options}")
11851190
string(REPLACE "@RUNTIME_PREFIX@" "'${RUNTIME_PREFIX}'" git_build_options "${git_build_options}")
1191+
string(REPLACE "@GITWEBDIR@" "'${GITWEBDIR}'" git_build_options "${git_build_options}")
1192+
string(REPLACE "@USE_GETTEXT_SCHEME@" "" git_build_options "${git_build_options}")
1193+
string(REPLACE "@LOCALEDIR@" "'${LOCALEDIR}'" git_build_options "${git_build_options}")
1194+
string(REPLACE "@BROKEN_PATH_FIX@" "" git_build_options "${git_build_options}")
11861195
if(USE_VCPKG)
11871196
string(APPEND git_build_options "PATH=\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\"\n")
11881197
endif()

generate-script.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/sh
2+
3+
set -e
4+
5+
if test $# -ne 3
6+
then
7+
echo >&2 "USAGE: $0 <INPUT> <OUTPUT> <GIT-BUILD-OPTIONS>"
8+
exit 1
9+
fi
10+
11+
INPUT="$1"
12+
OUTPUT="$2"
13+
BUILD_OPTIONS="$3"
14+
15+
. "$BUILD_OPTIONS"
16+
17+
sed -e "1s|#!.*/sh|#!$SHELL_PATH|" \
18+
-e "s|@SHELL_PATH@|$SHELL_PATH|" \
19+
-e "s|@DIFF@|$DIFF|" \
20+
-e "s|@LOCALEDIR@|$LOCALEDIR|g" \
21+
-e "s/@USE_GETTEXT_SCHEME@/$USE_GETTEXT_SCHEME/g" \
22+
-e "$BROKEN_PATH_FIX" \
23+
-e "s|@GITWEBDIR@|$GITWEBDIR|g" \
24+
-e "s|@PERL_PATH@|$PERL_PATH|g" \
25+
-e "s|@PAGER_ENV@|$PAGER_ENV|g" \
26+
"$INPUT" >"$OUTPUT"
27+
28+
case "$(basename "$INPUT")" in
29+
git-mergetool--lib.sh|git-sh-i18n.sh|git-sh-setup.sh)
30+
;;
31+
*)
32+
chmod a+x "$OUTPUT"
33+
;;
34+
esac

0 commit comments

Comments
 (0)