1
0
mirror of https://github.com/git/git.git synced 2025-02-06 09:26:16 +00:00

Makefile: extract script to massage Python scripts

Extract a script that massages Python scripts. This provides a couple of
benefits:

  - The build logic is deduplicated across Make, CMake and Meson.

  - CMake learns to rewrite scripts as-needed at build time instead of
    only writing them at configure time.

Furthermore, we will use this script when introducing Meson to
deduplicate the logic across build systems.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt 2024-12-06 14:24:46 +01:00 committed by Junio C Hamano
parent eb98cb835c
commit b7835b941b
3 changed files with 33 additions and 10 deletions

View File

@ -2635,13 +2635,9 @@ endif # NO_PERL
$(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS
ifndef NO_PYTHON
$(SCRIPT_PYTHON_GEN): GIT-CFLAGS GIT-PREFIX GIT-PYTHON-VARS
$(SCRIPT_PYTHON_GEN): generate-python.sh
$(SCRIPT_PYTHON_GEN): % : %.py
$(QUIET_GEN) \
sed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \
$< >$@+ && \
chmod +x $@+ && \
mv $@+ $@
$(QUIET_GEN)$(SHELL_PATH) generate-python.sh ./GIT-BUILD-OPTIONS "$<" "$@"
else # NO_PYTHON
$(SCRIPT_PYTHON_GEN): % : unimplemented.sh
$(QUIET_GEN) \

View File

@ -899,10 +899,17 @@ foreach(script ${git_perl_scripts} ${perl_modules})
endforeach()
add_custom_target(perl-gen ALL DEPENDS ${perl_gen})
#python script
file(STRINGS ${CMAKE_SOURCE_DIR}/git-p4.py content NEWLINE_CONSUME)
string(REPLACE "#!/usr/bin/env python" "#!/usr/bin/python" content "${content}")
file(WRITE ${CMAKE_BINARY_DIR}/git-p4 ${content})
# Python script
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/git-p4"
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-python.sh"
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
"${CMAKE_SOURCE_DIR}/git-p4.py"
"${CMAKE_BINARY_DIR}/git-p4"
DEPENDS "${CMAKE_SOURCE_DIR}/generate-python.sh"
"${CMAKE_SOURCE_DIR}/git-p4.py"
"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
VERBATIM)
add_custom_target(python-gen ALL DEPENDS "${CMAKE_BINARY_DIR}/git-p4")
#templates
file(GLOB templates "${CMAKE_SOURCE_DIR}/templates/*")

20
generate-python.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/sh
set -e
if test $# -ne 3
then
echo >&2 "USAGE: $0 <GIT_BUILD_OPTIONS> <INPUT> <OUTPUT>"
exit 1
fi
GIT_BUILD_OPTIONS="$1"
INPUT="$2"
OUTPUT="$3"
. "$GIT_BUILD_OPTIONS"
sed -e "1s|#!.*python|#!$PYTHON_PATH|" \
"$INPUT" >"$OUTPUT+"
chmod a+x "$OUTPUT+"
mv "$OUTPUT+" "$OUTPUT"