Git fork

Makefile: use "generate-perl.sh" to massage Perl library

Extend "generate-perl.sh" such that it knows to also massage the Perl
library files. There are two major differences:

- We do not read in the Perl header. This is handled by matching on
whether or not we have a Perl shebang.

- We substitute some more variables, which we read in via our
GIT-BUILD-OPTIONS.

Adapt both our Makefile and the CMake build instructions to use this.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

authored by

Patrick Steinhardt and committed by
Junio C Hamano
ccfba9e0 e4b48804

+27 -22
+2
GIT-BUILD-OPTIONS.in
··· 1 1 SHELL_PATH=@SHELL_PATH@ 2 2 TEST_SHELL_PATH=@TEST_SHELL_PATH@ 3 3 PERL_PATH=@PERL_PATH@ 4 + PERL_LOCALEDIR=@PERL_LOCALEDIR@ 5 + NO_PERL_CPAN_FALLBACKS=@NO_PERL_CPAN_FALLBACKS@ 4 6 DIFF=@DIFF@ 5 7 PYTHON_PATH=@PYTHON_PATH@ 6 8 TAR=@TAR@
+4 -6
Makefile
··· 3095 3095 NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\'',$(NO_PERL_CPAN_FALLBACKS)) 3096 3096 endif 3097 3097 3098 - perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES 3098 + perl/build/lib/%.pm: perl/%.pm generate-perl.sh GIT-BUILD-OPTIONS GIT-VERSION-FILE GIT-PERL-DEFINES 3099 3099 $(call mkdir_p_parent_template) 3100 - $(QUIET_GEN) \ 3101 - sed -e 's|@LOCALEDIR@|$(perl_localedir_SQ)|g' \ 3102 - -e 's|@NO_GETTEXT@|$(NO_GETTEXT_SQ)|g' \ 3103 - -e 's|@NO_PERL_CPAN_FALLBACKS@|$(NO_PERL_CPAN_FALLBACKS_SQ)|g' \ 3104 - < $< > $@ 3100 + $(QUIET_GEN)$(SHELL_PATH) generate-perl.sh ./GIT-BUILD-OPTIONS ./GIT-VERSION-FILE GIT-PERL-HEADER "$<" "$@" 3105 3101 3106 3102 perl/build/man/man3/Git.3pm: perl/Git.pm 3107 3103 $(call mkdir_p_parent_template) ··· 3168 3164 -e "s|@SHELL_PATH@|\'$(SHELL_PATH_SQ)\'|" \ 3169 3165 -e "s|@TEST_SHELL_PATH@|\'$(TEST_SHELL_PATH_SQ)\'|" \ 3170 3166 -e "s|@PERL_PATH@|\'$(PERL_PATH_SQ)\'|" \ 3167 + -e "s|@PERL_LOCALEDIR@|\'$(perl_localedir_SQ)\'|" \ 3168 + -e "s|@NO_PERL_CPAN_FALLBACKS@|\'$(NO_PERL_CPAN_FALLBACKS_SQ)\'|" \ 3171 3169 -e "s|@DIFF@|\'$(DIFF)\'|" \ 3172 3170 -e "s|@PYTHON_PATH@|\'$(PYTHON_PATH_SQ)\'|" \ 3173 3171 -e "s|@TAR@|\'$(TAR)\'|" \
+9 -14
contrib/buildsystems/CMakeLists.txt
··· 853 853 854 854 #perl scripts 855 855 parse_makefile_for_scripts(git_perl_scripts "SCRIPT_PERL" "") 856 + #perl modules 857 + file(GLOB_RECURSE perl_modules "${CMAKE_SOURCE_DIR}/perl/*.pm") 858 + list(TRANSFORM perl_modules REPLACE "${CMAKE_SOURCE_DIR}/" "") 856 859 857 860 #create perl header 858 861 file(STRINGS ${CMAKE_SOURCE_DIR}/perl/header_templates/fixed_prefix.template.pl perl_header ) ··· 869 872 "${CMAKE_SOURCE_DIR}/GIT-VERSION-FILE.in" 870 873 VERBATIM) 871 874 872 - foreach(script ${git_perl_scripts}) 875 + foreach(script ${git_perl_scripts} ${perl_modules}) 873 876 string(REPLACE ".perl" "" perl_gen_path "${script}") 874 877 878 + get_filename_component(perl_gen_dir "${perl_gen_path}" DIRECTORY) 879 + file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${perl_gen_dir}") 880 + 875 881 add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/${perl_gen_path}" 876 882 COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-perl.sh" 877 883 "${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS" ··· 892 898 file(STRINGS ${CMAKE_SOURCE_DIR}/git-p4.py content NEWLINE_CONSUME) 893 899 string(REPLACE "#!/usr/bin/env python" "#!/usr/bin/python" content "${content}") 894 900 file(WRITE ${CMAKE_BINARY_DIR}/git-p4 ${content}) 895 - 896 - #perl modules 897 - file(GLOB_RECURSE perl_modules "${CMAKE_SOURCE_DIR}/perl/*.pm") 898 - 899 - foreach(pm ${perl_modules}) 900 - string(REPLACE "${CMAKE_SOURCE_DIR}/perl/" "" file_path ${pm}) 901 - file(STRINGS ${pm} content NEWLINE_CONSUME) 902 - string(REPLACE "@LOCALEDIR@" "${LOCALEDIR}" content "${content}") 903 - string(REPLACE "@NO_PERL_CPAN_FALLBACKS@" "" content "${content}") 904 - file(WRITE ${CMAKE_BINARY_DIR}/perl/build/lib/${file_path} ${content}) 905 - #test-lib.sh requires perl/build/lib to be the build directory of perl modules 906 - endforeach() 907 - 908 901 909 902 #templates 910 903 file(GLOB templates "${CMAKE_SOURCE_DIR}/templates/*") ··· 1155 1148 string(REPLACE "@SHELL_PATH@" "'${SHELL_PATH}'" git_build_options "${git_build_options}") 1156 1149 string(REPLACE "@TEST_SHELL_PATH@" "'${TEST_SHELL_PATH}'" git_build_options "${git_build_options}") 1157 1150 string(REPLACE "@PERL_PATH@" "'${PERL_PATH}'" git_build_options "${git_build_options}") 1151 + string(REPLACE "@PERL_LOCALEDIR@" "'${LOCALEDIR}'" git_build_options "${git_build_options}") 1152 + string(REPLACE "@NO_PERL_CPAN_FALLBACKS@" "" git_build_options "${git_build_options}") 1158 1153 string(REPLACE "@DIFF@" "'${DIFF}'" git_build_options "${git_build_options}") 1159 1154 string(REPLACE "@PYTHON_PATH@" "'${PYTHON_PATH}'" git_build_options "${git_build_options}") 1160 1155 string(REPLACE "@TAR@" "'${TAR}'" git_build_options "${git_build_options}")
+12 -2
generate-perl.sh
··· 18 18 . "$GIT_VERSION_FILE" 19 19 20 20 sed -e '1{' \ 21 + -e " /^#!.*perl/!b" \ 21 22 -e " s|#!.*perl|#!$PERL_PATH|" \ 22 23 -e " r $PERL_HEADER" \ 23 24 -e ' G' \ 24 25 -e '}' \ 25 - -e "s/@GIT_VERSION@/$GIT_VERSION/g" \ 26 + -e "s|@GIT_VERSION@|$GIT_VERSION|g" \ 27 + -e "s|@LOCALEDIR@|$PERL_LOCALEDIR|g" \ 28 + -e "s|@NO_GETTEXT@|$NO_GETTEXT|g" \ 29 + -e "s|@NO_PERL_CPAN_FALLBACKS@|$NO_PERL_CPAN_FALLBACKS|g" \ 26 30 "$INPUT" >"$OUTPUT" 27 - chmod a+x "$OUTPUT" 31 + 32 + case "$INPUT" in 33 + *.perl) 34 + chmod a+x "$OUTPUT";; 35 + *) 36 + ;; 37 + esac