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:

committed by
Junio C Hamano

parent
eb98cb835c
commit
b7835b941b
8
Makefile
8
Makefile
@ -2635,13 +2635,9 @@ endif # NO_PERL
|
|||||||
$(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS
|
$(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS
|
||||||
|
|
||||||
ifndef NO_PYTHON
|
ifndef NO_PYTHON
|
||||||
$(SCRIPT_PYTHON_GEN): GIT-CFLAGS GIT-PREFIX GIT-PYTHON-VARS
|
$(SCRIPT_PYTHON_GEN): generate-python.sh
|
||||||
$(SCRIPT_PYTHON_GEN): % : %.py
|
$(SCRIPT_PYTHON_GEN): % : %.py
|
||||||
$(QUIET_GEN) \
|
$(QUIET_GEN)$(SHELL_PATH) generate-python.sh ./GIT-BUILD-OPTIONS "$<" "$@"
|
||||||
sed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \
|
|
||||||
$< >$@+ && \
|
|
||||||
chmod +x $@+ && \
|
|
||||||
mv $@+ $@
|
|
||||||
else # NO_PYTHON
|
else # NO_PYTHON
|
||||||
$(SCRIPT_PYTHON_GEN): % : unimplemented.sh
|
$(SCRIPT_PYTHON_GEN): % : unimplemented.sh
|
||||||
$(QUIET_GEN) \
|
$(QUIET_GEN) \
|
||||||
|
@ -899,10 +899,17 @@ foreach(script ${git_perl_scripts} ${perl_modules})
|
|||||||
endforeach()
|
endforeach()
|
||||||
add_custom_target(perl-gen ALL DEPENDS ${perl_gen})
|
add_custom_target(perl-gen ALL DEPENDS ${perl_gen})
|
||||||
|
|
||||||
#python script
|
# Python script
|
||||||
file(STRINGS ${CMAKE_SOURCE_DIR}/git-p4.py content NEWLINE_CONSUME)
|
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/git-p4"
|
||||||
string(REPLACE "#!/usr/bin/env python" "#!/usr/bin/python" content "${content}")
|
COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-python.sh"
|
||||||
file(WRITE ${CMAKE_BINARY_DIR}/git-p4 ${content})
|
"${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
|
#templates
|
||||||
file(GLOB templates "${CMAKE_SOURCE_DIR}/templates/*")
|
file(GLOB templates "${CMAKE_SOURCE_DIR}/templates/*")
|
||||||
|
20
generate-python.sh
Executable file
20
generate-python.sh
Executable 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"
|
Reference in New Issue
Block a user