diff options
| author | Patrick Steinhardt <ps@pks.im> | 2024-12-06 14:24:46 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-12-07 07:52:10 +0900 |
| commit | b7835b941bd437aa770ab91d7323ce74d2bd81b7 (patch) | |
| tree | 3137ddf8fd050846bf8427ee5b6e9f5a95f9c5de | |
| parent | eb98cb835c9faf4d675411b3314b7fc9820ab179 (diff) | |
| download | git-b7835b941bd437aa770ab91d7323ce74d2bd81b7.tar.gz | |
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>
| -rw-r--r-- | Makefile | 8 | ||||
| -rw-r--r-- | contrib/buildsystems/CMakeLists.txt | 15 | ||||
| -rwxr-xr-x | generate-python.sh | 20 |
3 files changed, 33 insertions, 10 deletions
@@ -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) \ diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt index defdd958bb..93c865ee2b 100644 --- a/contrib/buildsystems/CMakeLists.txt +++ b/contrib/buildsystems/CMakeLists.txt @@ -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/*") diff --git a/generate-python.sh b/generate-python.sh new file mode 100755 index 0000000000..31ac115689 --- /dev/null +++ b/generate-python.sh @@ -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" |
