{"thread":{"id":"57100","subject":"[PATCH 00/11] Makefile: fix \"Perl\" and \"Python\" rules, speed up re-builds","startedAt":"2021-12-17T00:26:34Z","lastAt":"2022-02-21T20:15:41Z","messageCount":13,"participants":["Ævar Arnfjörð Bjarmason"],"isPatch":true,"patchVersion":1,"patchTotal":11},"messages":[{"id":"444292","messageId":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":null,"subject":"[PATCH 00/11] Makefile: fix \"Perl\" and \"Python\" rules, speed up re-builds","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:16Z","receivedAt":"2021-12-17T00:26:34Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"This topic is split-up from v4 of ab/make-dependency[1]. Range-diff to\nit below. As noted in [2] I opted to split up that series rather than\nhaving it grow too large.\n\nThis is miscellanious cleanups related to the \"Perl\" rules, and some\nfixes for bad dependency rules in 08/11. Then in 10/11 we make the\n\"Python\" rules use the new template we created for \"Perl\",\n\nWe are then able to speed up \"make\" re-builds a bit in 11/11, as we\ndon't need to inject @@GIT_VERSION@@ into the Perl scripts anymore.\n\nThe 09/11 is new. It's a trivial sorting of the PERL_DEFINES list,\nwhich'll help to maintain it in the future.\n\n1. https://lore.kernel.org/git/cover-v4-00.23-00000000000-20211117T101807Z-avarab@gmail.com/\n2. https://lore.kernel.org/git/211217.86a6h09km9.gmgdl@evledraar.gmail.com/\n\n\nÆvar Arnfjörð Bjarmason (11):\n  Makefile: clean perl/build/ even with NO_PERL=Y\n  Makefile: don't set up \"perl/build\" rules under NO_PERL=Y\n  Makefile: use \"=\" not \":=\" for po/* and perl/*\n  Makefile: remove \"mv $@ $@+\" dance redundant to .DELETE_ON_ERROR\n  Makefile: guard Perl-only variable assignments\n  Makefile: change \"ifndef NO_PERL\" to \"ifdef NO_PERL\"\n  Makefile: adjust Perl-related comments & whitespace\n  Makefile: correct \"GIT-PERL-{DEFINES,HEADER}\" dependency graph\n  Makefile: sort PERL_DEFINES list\n  Makefile: create a GIT-PYTHON-DEFINES, like \"PERL\"\n  Makefile: stop needing @@GIT_VERSION@@ in *.perl scripts\n\n .gitignore          |   2 +-\n Makefile            | 160 +++++++++++++++++++++++---------------------\n git-cvsserver.perl  |   6 +-\n git-send-email.perl |   7 +-\n git-svn.perl        |   2 +-\n 5 files changed, 90 insertions(+), 87 deletions(-)\n\nRange-diff:\n 1:  1621ca72c1d <  -:  ----------- Makefile: don't invoke msgfmt with --statistics\n 4:  daead5ec293 =  1:  185f5a9a9cf Makefile: clean perl/build/ even with NO_PERL=Y\n 2:  b7c36c9fea0 =  2:  37eeccc5646 Makefile: don't set up \"perl/build\" rules under NO_PERL=Y\n 3:  29b000eb0f1 =  3:  572a82c71a1 Makefile: use \"=\" not \":=\" for po/* and perl/*\n 5:  3c987590740 =  4:  5baff22f5af Makefile: remove \"mv $@ $@+\" dance redundant to .DELETE_ON_ERROR\n 6:  b57f582ccd3 =  5:  992e325491d Makefile: guard Perl-only variable assignments\n 7:  fcdee92f64c =  6:  5e94ef729fe Makefile: change \"ifndef NO_PERL\" to \"ifdef NO_PERL\"\n 8:  1e25b532ca2 =  7:  4eeef8571aa Makefile: adjust Perl-related comments & whitespace\n 9:  77d9855bfcf =  8:  8aa35537b08 Makefile: correct \"GIT-PERL-{DEFINES,HEADER}\" dependency graph\n -:  ----------- >  9:  5ff768a5cec Makefile: sort PERL_DEFINES list\n10:  6004cdcd8d9 = 10:  fe79797f45e Makefile: create a GIT-PYTHON-DEFINES, like \"PERL\"\n11:  17b30e96057 = 11:  defbd9b6db2 Makefile: stop needing @@GIT_VERSION@@ in *.perl scripts\n12:  30ddf7da2c8 <  -:  ----------- Makefiles: add \"shared.mak\", move \".DELETE_ON_ERROR\" to it\n13:  f378a7dc35e <  -:  ----------- Makefile: move $(comma), $(empty) and $(space) to shared.mak\n14:  13cbb851d32 <  -:  ----------- Makefile: re-add and use the \"shellquote\" macros\n15:  337953e4994 <  -:  ----------- Makefile: add a \"TRACK_template\" for GIT-*{FLAGS,DEFINES,...}\n16:  5bb597c1993 <  -:  ----------- Makefile: add \"$(QUIET)\" boilerplate to shared.mak\n17:  3c4d0589667 <  -:  ----------- Makefile: use $(wspfx) for $(QUIET...) in shared.mak\n18:  be5882b2c99 <  -:  ----------- Makefiles: add and use wildcard \"mkdir -p\" template\n19:  2710f8af6cd <  -:  ----------- Makefile: correct the dependency graph of hook-list.h\n20:  59f22a0269a <  -:  ----------- Makefile: use $(file) I/O instead of \"FORCE\" when possible\n21:  dd569a59c74 <  -:  ----------- Makefile: disable GNU make built-in wildcard rules\n22:  4168a7e3b30 <  -:  ----------- Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)\n23:  48a3927d972 <  -:  ----------- Makefile: move \".SUFFIXES\" rule to shared.mak\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444293","messageId":"patch-01.11-185f5a9a9cf-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 01/11] Makefile: clean perl/build/ even with NO_PERL=Y","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:17Z","receivedAt":"2021-12-17T00:26:35Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Fix a regression in 499c29394ce (Makefile: allow building without\nperl, 2009-04-03) where we'd stop cleaning the perl/* directory\nbecause NO_PERL was defined, thus leaving behind litter if the flag at\n\"clean\" time didn't match that of build time.\n\nIn 499c29394ce this was done to avoid relying on the perl/Makefile.PL,\nbut since my 20d2a30f8ff (Makefile: replace perl/Makefile.PL with\nsimple make rules, 2017-12-10) we can clean things in that directory\nunconditionally.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex 9c00a793e47..b21ffe25c2a 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -3280,6 +3280,7 @@ clean: profile-clean coverage-clean cocciclean\n \t$(RM) $(HCC)\n \t$(RM) -r bin-wrappers $(dep_dirs) $(compdb_dir) compile_commands.json\n \t$(RM) -r po/build/\n+\t$(RM) -r perl/build/\n \t$(RM) *.pyc *.pyo */*.pyc */*.pyo $(GENERATED_H) $(ETAGS_TARGET) tags cscope*\n \t$(RM) -r .dist-tmp-dir .doc-tmp-dir\n \t$(RM) $(GIT_TARNAME).tar.gz\n@@ -3288,7 +3289,6 @@ clean: profile-clean coverage-clean cocciclean\n \t$(RM) Documentation/GIT-EXCLUDED-PROGRAMS\n ifndef NO_PERL\n \t$(MAKE) -C gitweb clean\n-\t$(RM) -r perl/build/\n endif\n \t$(MAKE) -C templates/ clean\n \t$(MAKE) -C t/ clean\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444294","messageId":"patch-02.11-37eeccc5646-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 02/11] Makefile: don't set up \"perl/build\" rules under NO_PERL=Y","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:18Z","receivedAt":"2021-12-17T00:26:36Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Do not define LIB_{PERL,CPAN}{,_GEN} if NO_PERL is defined. This\nchanges no functionality, but makes it clear which of these rules are\nneeded under NO_PERL=Y. See 20d2a30f8ff (Makefile: replace\nperl/Makefile.PL with simple make rules, 2017-12-10) for the initial\nimplementation.\n\nWe do for better or worse rely on \"install-doc\" calling\n\"install-man-perl\" regardless of whether NO_PERL=Y is defined or not,\ni.e. we'll always end up with that manual page, even if we don't have\nany of the Perl code installed. Let's add a comment about that\nadjacent to the rules that build perl/build.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 17 +++++++++--------\n 1 file changed, 9 insertions(+), 8 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex b21ffe25c2a..d4c31a2718f 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2731,19 +2731,12 @@ endif\n po/build/locale/%/LC_MESSAGES/git.mo: po/%.po\n \t$(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $<\n \n+ifndef NO_PERL\n LIB_PERL := $(wildcard perl/Git.pm perl/Git/*.pm perl/Git/*/*.pm perl/Git/*/*/*.pm)\n LIB_PERL_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_PERL))\n LIB_CPAN := $(wildcard perl/FromCPAN/*.pm perl/FromCPAN/*/*.pm)\n LIB_CPAN_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_CPAN))\n \n-ifndef NO_PERL\n-all:: $(LIB_PERL_GEN)\n-ifndef NO_PERL_CPAN_FALLBACKS\n-all:: $(LIB_CPAN_GEN)\n-endif\n-NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\\'',$(NO_PERL_CPAN_FALLBACKS))\n-endif\n-\n perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES\n \t$(QUIET_GEN)mkdir -p $(dir $@) && \\\n \tsed -e 's|@@LOCALEDIR@@|$(perl_localedir_SQ)|g' \\\n@@ -2751,6 +2744,14 @@ perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES\n \t    -e 's|@@NO_PERL_CPAN_FALLBACKS@@|$(NO_PERL_CPAN_FALLBACKS_SQ)|g' \\\n \t< $< > $@\n \n+all:: $(LIB_PERL_GEN)\n+ifndef NO_PERL_CPAN_FALLBACKS\n+all:: $(LIB_CPAN_GEN)\n+endif\n+NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\\'',$(NO_PERL_CPAN_FALLBACKS))\n+endif\n+\n+# install-man depends on Git.3pm even with NO_PERL=Y\n perl/build/man/man3/Git.3pm: perl/Git.pm\n \t$(QUIET_GEN)mkdir -p $(dir $@) && \\\n \tpod2man $< $@\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444295","messageId":"patch-03.11-572a82c71a1-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 03/11] Makefile: use \"=\" not \":=\" for po/* and perl/*","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:19Z","receivedAt":"2021-12-17T00:26:38Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Change these variable definitions from being simply-expanded to be\nrecursively expanded instead. I.e. they'll be lazily expanded when\nused.\n\nI added these in 5e9637c6297 (i18n: add infrastructure for translating\nGit with gettext, 2011-11-18) and 20d2a30f8ff (Makefile: replace\nperl/Makefile.PL with simple make rules, 2017-12-10), the reason for\nusing \":=\" over \"=\" was that I didn't know the difference in 2011 (I\nthink I copied some POC code), and in 2017 I used the 2011 commit for\nreference.\n\nThis doesn't make much if any of a practical difference, doing this is\ncheap either way, but as simply-expanded variables in our Makefile\ngenerally indicate special behavior (e.g. making a copy now, and\nmodifying the RHS later) let's change these to show that nothing odd\nis going on here).\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 16 ++++++++--------\n 1 file changed, 8 insertions(+), 8 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex d4c31a2718f..cad9795ec0a 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2719,11 +2719,11 @@ po/git.pot: $(GENERATED_H) FORCE\n pot: po/git.pot\n \n ifdef NO_GETTEXT\n-POFILES :=\n-MOFILES :=\n+POFILES =\n+MOFILES =\n else\n-POFILES := $(wildcard po/*.po)\n-MOFILES := $(patsubst po/%.po,po/build/locale/%/LC_MESSAGES/git.mo,$(POFILES))\n+POFILES = $(wildcard po/*.po)\n+MOFILES = $(patsubst po/%.po,po/build/locale/%/LC_MESSAGES/git.mo,$(POFILES))\n \n all:: $(MOFILES)\n endif\n@@ -2732,10 +2732,10 @@ po/build/locale/%/LC_MESSAGES/git.mo: po/%.po\n \t$(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $<\n \n ifndef NO_PERL\n-LIB_PERL := $(wildcard perl/Git.pm perl/Git/*.pm perl/Git/*/*.pm perl/Git/*/*/*.pm)\n-LIB_PERL_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_PERL))\n-LIB_CPAN := $(wildcard perl/FromCPAN/*.pm perl/FromCPAN/*/*.pm)\n-LIB_CPAN_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_CPAN))\n+LIB_PERL = $(wildcard perl/Git.pm perl/Git/*.pm perl/Git/*/*.pm perl/Git/*/*/*.pm)\n+LIB_PERL_GEN = $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_PERL))\n+LIB_CPAN = $(wildcard perl/FromCPAN/*.pm perl/FromCPAN/*/*.pm)\n+LIB_CPAN_GEN = $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_CPAN))\n \n perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES\n \t$(QUIET_GEN)mkdir -p $(dir $@) && \\\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444296","messageId":"patch-04.11-5baff22f5af-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 04/11] Makefile: remove \"mv $@ $@+\" dance redundant to .DELETE_ON_ERROR","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:20Z","receivedAt":"2021-12-17T00:26:39Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Since 7b76d6bf221 (Makefile: add and use the \".DELETE_ON_ERROR\" flag,\n2021-06-29) we don't need to guard the clobbering of $@ with this sort\nof \"mv $@+ $@\" pattern in these cases where we're merely generating a\nfile that'll be used as a dependency for other files, as in this case\nfor GIT-PERL-HEADER.\n\nWe have had a hard dependency on .DELETE_ON_ERROR since\n7b76d6bf221 (Makefile: add and use the \".DELETE_ON_ERROR\" flag,\n2021-06-29), so this is a pure cleanup as a follow-up to that\ncommit. Support for the \".DELETE_ON_ERROR\" target itself is much older\nthan any GNU make version we support, it was added to GNU make in\n1994.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex cad9795ec0a..bd8cb7c463d 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2359,8 +2359,7 @@ GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile\n \t    -e 's=@@PERLLIBDIR_REL@@=$(perllibdir_relative_SQ)=g' \\\n \t    -e 's=@@GITEXECDIR_REL@@=$(gitexecdir_relative_SQ)=g' \\\n \t    -e 's=@@LOCALEDIR_REL@@=$(localedir_relative_SQ)=g' \\\n-\t    $< >$@+ && \\\n-\tmv $@+ $@\n+\t    $< >$@\n \n .PHONY: perllibdir\n perllibdir:\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444297","messageId":"patch-05.11-992e325491d-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 05/11] Makefile: guard Perl-only variable assignments","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:21Z","receivedAt":"2021-12-17T00:26:40Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Move the \"ifndef NO_PERL\" a few lines earlier to encompass the\n\"perl_localedir_SQ\" variable. We'll only use it under !NO_PERL.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/Makefile b/Makefile\nindex bd8cb7c463d..780f222face 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2301,11 +2301,11 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX\n # This makes sure we depend on the NO_PERL setting itself.\n $(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS\n \n+ifndef NO_PERL\n # Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX\n # since the locale directory is injected.\n perl_localedir_SQ = $(localedir_SQ)\n \n-ifndef NO_PERL\n PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl\n PERL_DEFINES =\n PERL_DEFINES += $(PERL_PATH_SQ)\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444298","messageId":"patch-06.11-5e94ef729fe-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 06/11] Makefile: change \"ifndef NO_PERL\" to \"ifdef NO_PERL\"","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:22Z","receivedAt":"2021-12-17T00:26:52Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Change the NO_PERL variable assignments so that they declare the much\nsmaller fallback condition first.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 18 +++++++++---------\n 1 file changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 780f222face..4bb2da36e4e 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2301,7 +2301,15 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX\n # This makes sure we depend on the NO_PERL setting itself.\n $(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS\n \n-ifndef NO_PERL\n+ifdef NO_PERL\n+$(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh\n+\t$(QUIET_GEN) \\\n+\tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n+\t    -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \\\n+\t    unimplemented.sh >$@+ && \\\n+\tchmod +x $@+ && \\\n+\tmv $@+ $@\n+else # NO_PERL\n # Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX\n # since the locale directory is injected.\n perl_localedir_SQ = $(localedir_SQ)\n@@ -2373,14 +2381,6 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES\n \t$(QUIET_GEN)$(cmd_munge_script) && \\\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n-else # NO_PERL\n-$(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh\n-\t$(QUIET_GEN) \\\n-\tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n-\t    -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \\\n-\t    unimplemented.sh >$@+ && \\\n-\tchmod +x $@+ && \\\n-\tmv $@+ $@\n endif # NO_PERL\n \n # This makes sure we depend on the NO_PYTHON setting itself.\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444299","messageId":"patch-07.11-4eeef8571aa-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 07/11] Makefile: adjust Perl-related comments & whitespace","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:23Z","receivedAt":"2021-12-17T00:26:52Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Folllow-up my 4070c9e09fc (Makefile: don't re-define PERL_DEFINES,\n2021-05-05) and move the rest of the assignments to PERL_DEFINES to\none place.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 15 ++++++---------\n 1 file changed, 6 insertions(+), 9 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 4bb2da36e4e..d488a723b79 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2322,21 +2322,19 @@ PERL_DEFINES += $(perllibdir_SQ)\n PERL_DEFINES += $(RUNTIME_PREFIX)\n PERL_DEFINES += $(NO_PERL_CPAN_FALLBACKS)\n PERL_DEFINES += $(NO_GETTEXT)\n+PERL_DEFINES += $(gitexecdir)\n+PERL_DEFINES += $(perllibdir)\n+PERL_DEFINES += $(localedir)\n+PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES))\n \n-# Support Perl runtime prefix. In this mode, a different header is installed\n-# into Perl scripts.\n ifdef RUNTIME_PREFIX\n-\n PERL_HEADER_TEMPLATE = perl/header_templates/runtime_prefix.template.pl\n \n-# Don't export a fixed $(localedir) path; it will be resolved by the Perl header\n-# at runtime.\n+# The RUNTIME_PREFIX header defines $Git::I18N::TEXTDOMAINDIR, so\n+# $(perl_localedir_SQ) won't be needed\n perl_localedir_SQ =\n-\n endif\n \n-PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir)\n-\n $(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE\n \t$(QUIET_GEN) \\\n \tsed -e '1{' \\\n@@ -2349,7 +2347,6 @@ $(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n \n-PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES))\n GIT-PERL-DEFINES: FORCE\n \t@FLAGS='$(PERL_DEFINES)'; \\\n \t    if test x\"$$FLAGS\" != x\"`cat $@ 2>/dev/null`\" ; then \\\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444301","messageId":"patch-08.11-8aa35537b08-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 08/11] Makefile: correct \"GIT-PERL-{DEFINES,HEADER}\" dependency graph","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:24Z","receivedAt":"2021-12-17T00:26:53Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Fix several small issues with the dependency graph of the generated\n\"GIT-PERL-DEFINES\" and \"GIT-PERL-HEADER\" files:\n\n1. Don't have \"GIT-PERL-HEADER\" depend on the \"Makefile\". That was a\n   lazy way to over-declare the dependencies added in\n   f6a0ad4be71 (Makefile: generate Perl header from template file,\n   2018-04-10). Let's correct our dependency graph instead.\n\n2. Don't have $(SCRIPT_PERL_GEN) (such as \"git-send-email\") depend on\n   GIT-BUILD-OPTIONS. Let's instead use GIT-PERL-DEFINES.\n\n   The reason for depending on \"GIT-BUILD-OPTIONS\" was to trigger a\n   re-build if NO_PERL=Y was defined. We can instead add that variable\n   to \"PERL_DEFINES\", and have \"GIT-PERL-DEFINES\" created and updated\n   if \"NO_PERL=Y\" is defined.\n\n3. Due to #2 we'll need to have GIT-PERL-DEFINES be generated even\n   under NO_PERL, since that variable will be used by the\n   \"unimplemented.sh\" script.\n\n4. Don't depend on $(gitexecdir), $(perllibdir) and $(localedir),\n   instead depend on the $(*_relative_SQ) versions of those.\n\n   The latter is what we'll actually use, while it's unlikely to\n   matter in practice (we'd just skip re-building these under\n   RUNTIME_PREFIX if the relative path was the same) it makes the code\n   easier to read.\n\n   That's because this brings us to a 1=1 mapping of these variables\n   and what's subsequently used in the \"GIT-PERL-DEFINES\",\n   \"GIT-PERL-HEADER\" and \"perl/build/lib/%.pm\" rules below.\n\n5. We don't need the substitution of \" \" for \":\" added in\n   07d90eadb50 (Makefile: add Perl runtime prefix support,\n   2018-04-10), let's drop it. This doesn't matter for the correctness\n   of these files, because unlike GIT-BUILD-OPTIONS nothing is\n   consuming them except the Makefile itself.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 42 +++++++++++++++++++++++++-----------------\n 1 file changed, 25 insertions(+), 17 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex d488a723b79..356c98dff45 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2298,10 +2298,14 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX\n \t    $(shell echo $(GIT_VERSION) 0 0 0 0 | tr '.a-zA-Z-' ' '))) \\\n \t  -DGIT_VERSION=\"\\\\\\\"$(GIT_VERSION)\\\\\\\"\" -i $< -o $@\n \n-# This makes sure we depend on the NO_PERL setting itself.\n-$(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS\n+# Under NO_PERL=Y we'll still make GIT-PERL-DEFINES. We need to depend\n+# on NO_PERL=Y itself for creating \"unimplemented.sh\" scripts.\n+PERL_DEFINES =\n+$(SCRIPT_PERL_GEN): GIT-PERL-DEFINES\n \n ifdef NO_PERL\n+PERL_DEFINES += $(NO_PERL)\n+\n $(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh\n \t$(QUIET_GEN) \\\n \tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n@@ -2310,22 +2314,26 @@ $(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n else # NO_PERL\n-# Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX\n-# since the locale directory is injected.\n+# The localedir is only used in Perl modules if !NO_GETTEXT\n+ifndef NO_GETTEXT\n perl_localedir_SQ = $(localedir_SQ)\n+endif\n \n PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl\n-PERL_DEFINES =\n+\n PERL_DEFINES += $(PERL_PATH_SQ)\n PERL_DEFINES += $(PERLLIB_EXTRA_SQ)\n PERL_DEFINES += $(perllibdir_SQ)\n PERL_DEFINES += $(RUNTIME_PREFIX)\n PERL_DEFINES += $(NO_PERL_CPAN_FALLBACKS)\n PERL_DEFINES += $(NO_GETTEXT)\n-PERL_DEFINES += $(gitexecdir)\n-PERL_DEFINES += $(perllibdir)\n-PERL_DEFINES += $(localedir)\n-PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES))\n+ifdef RUNTIME_PREFIX\n+PERL_DEFINES += $(gitexecdir_relative_SQ)\n+PERL_DEFINES += $(perllibdir_relative_SQ)\n+PERL_DEFINES += $(localedir_relative_SQ)\n+else\n+PERL_DEFINES += $(perllocaledir_SQ)\n+endif\n \n ifdef RUNTIME_PREFIX\n PERL_HEADER_TEMPLATE = perl/header_templates/runtime_prefix.template.pl\n@@ -2347,14 +2355,7 @@ $(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n \n-GIT-PERL-DEFINES: FORCE\n-\t@FLAGS='$(PERL_DEFINES)'; \\\n-\t    if test x\"$$FLAGS\" != x\"`cat $@ 2>/dev/null`\" ; then \\\n-\t\techo >&2 \"    * new perl-specific parameters\"; \\\n-\t\techo \"$$FLAGS\" >$@; \\\n-\t    fi\n-\n-GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile\n+GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES\n \t$(QUIET_GEN) \\\n \tINSTLIBDIR='$(perllibdir_SQ)' && \\\n \tINSTLIBDIR_EXTRA='$(PERLLIB_EXTRA_SQ)' && \\\n@@ -2380,6 +2381,13 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES\n \tmv $@+ $@\n endif # NO_PERL\n \n+GIT-PERL-DEFINES: FORCE\n+\t@FLAGS='$(PERL_DEFINES)'; \\\n+\t    if test x\"$$FLAGS\" != x\"`cat $@ 2>/dev/null`\" ; then \\\n+\t\techo >&2 \"    * new perl-specific parameters\"; \\\n+\t\techo \"$$FLAGS\" >$@; \\\n+\t    fi\n+\n # This makes sure we depend on the NO_PYTHON setting itself.\n $(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS\n \n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444300","messageId":"patch-09.11-5ff768a5cec-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 09/11] Makefile: sort PERL_DEFINES list","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:25Z","receivedAt":"2021-12-17T00:26:56Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Sort the PERL_DEFINES list, this will make it easier to maintain it in\nthe future.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex 356c98dff45..3be3dc9621d 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2321,16 +2321,16 @@ endif\n \n PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl\n \n-PERL_DEFINES += $(PERL_PATH_SQ)\n+PERL_DEFINES += $(NO_GETTEXT)\n+PERL_DEFINES += $(NO_PERL_CPAN_FALLBACKS)\n PERL_DEFINES += $(PERLLIB_EXTRA_SQ)\n-PERL_DEFINES += $(perllibdir_SQ)\n+PERL_DEFINES += $(PERL_PATH_SQ)\n PERL_DEFINES += $(RUNTIME_PREFIX)\n-PERL_DEFINES += $(NO_PERL_CPAN_FALLBACKS)\n-PERL_DEFINES += $(NO_GETTEXT)\n+PERL_DEFINES += $(perllibdir_SQ)\n ifdef RUNTIME_PREFIX\n PERL_DEFINES += $(gitexecdir_relative_SQ)\n-PERL_DEFINES += $(perllibdir_relative_SQ)\n PERL_DEFINES += $(localedir_relative_SQ)\n+PERL_DEFINES += $(perllibdir_relative_SQ)\n else\n PERL_DEFINES += $(perllocaledir_SQ)\n endif\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444302","messageId":"patch-10.11-fe79797f45e-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 10/11] Makefile: create a GIT-PYTHON-DEFINES, like \"PERL\"","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:26Z","receivedAt":"2021-12-17T00:27:24Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Create a new \"GIT-PYTHON-DEFINES\" file, and untangle the dependency\nissues of the Python by copying over the patterns established for\nbuilding the adjacent Perl code in preceding commits.\n\nAs with Perl, there's no real reason to depend on GIT-BUILD-OPTIONS or\nGIT-CFLAGS when building the Python code, nor did we need\nGIT-PREFIX. Let's instead add those variables we care about to a\n\"GIT-PYTHON-DEFINES\" and depend on that.\n\nThis changes code originally added in ca3bcabf118 (auto-detect changed\nprefix and/or changed build flags, 2006-06-15), and adjusted in\n96a4647fca5 (Makefile: detect when PYTHON_PATH changes, 2012-12-18).\n\nThe relevant code for the \"Perl\" targets was then added in\n07981dce81e (Makefile: rebuild perl scripts when perl paths change,\n2013-11-18), and has been adjusted in preceding commits.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n .gitignore |  2 +-\n Makefile   | 49 +++++++++++++++++++++++++------------------------\n 2 files changed, 26 insertions(+), 25 deletions(-)\n\ndiff --git a/.gitignore b/.gitignore\nindex 054249b20a8..845e5d0c355 100644\n--- a/.gitignore\n+++ b/.gitignore\n@@ -8,7 +8,7 @@\n /GIT-PREFIX\n /GIT-PERL-DEFINES\n /GIT-PERL-HEADER\n-/GIT-PYTHON-VARS\n+/GIT-PYTHON-DEFINES\n /GIT-SCRIPT-DEFINES\n /GIT-USER-AGENT\n /GIT-VERSION-FILE\ndiff --git a/Makefile b/Makefile\nindex 3be3dc9621d..f2cee13ea5d 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2388,18 +2388,15 @@ GIT-PERL-DEFINES: FORCE\n \t\techo \"$$FLAGS\" >$@; \\\n \t    fi\n \n-# This makes sure we depend on the NO_PYTHON setting itself.\n-$(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS\n+# As with NO_PERL=Y we'll still make GIT-PYTHON-DEFINES if \"NO_PYTHON\"\n+# is defined, for creating the \"unimplemented.sh\" scripts.\n+PYTHON_DEFINES =\n+$(SCRIPT_PYTHON_GEN): GIT-PYTHON-DEFINES\n+\n+ifdef NO_PYTHON\n+PYTHON_DEFINES += $(SHELL_PATH_SQ)\n+PYTHON_DEFINES += $(NO_PYTHON)\n \n-ifndef NO_PYTHON\n-$(SCRIPT_PYTHON_GEN): GIT-CFLAGS GIT-PREFIX GIT-PYTHON-VARS\n-$(SCRIPT_PYTHON_GEN): % : %.py\n-\t$(QUIET_GEN) \\\n-\tsed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \\\n-\t    $< >$@+ && \\\n-\tchmod +x $@+ && \\\n-\tmv $@+ $@\n-else # NO_PYTHON\n $(SCRIPT_PYTHON_GEN): % : unimplemented.sh\n \t$(QUIET_GEN) \\\n \tsed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \\\n@@ -2407,8 +2404,24 @@ $(SCRIPT_PYTHON_GEN): % : unimplemented.sh\n \t    unimplemented.sh >$@+ && \\\n \tchmod +x $@+ && \\\n \tmv $@+ $@\n+else # NO_PYTHON\n+PYTHON_DEFINES += $(PYTHON_PATH_SQ)\n+\n+$(SCRIPT_PYTHON_GEN): % : %.py GIT-PYTHON-DEFINES\n+\t$(QUIET_GEN) \\\n+\tsed -e '1s|#!.*python|#!$(PYTHON_PATH_SQ)|' \\\n+\t    $< >$@+ && \\\n+\tchmod +x $@+ && \\\n+\tmv $@+ $@\n endif # NO_PYTHON\n \n+GIT-PYTHON-DEFINES: FORCE\n+\t@FLAGS='$(PYTHON_DEFINES)'; \\\n+\t    if test x\"$$FLAGS\" != x\"`cat $@ 2>/dev/null`\" ; then \\\n+\t\techo >&2 \"    * new python-specific parameters\"; \\\n+\t\techo \"$$FLAGS\" >$@; \\\n+\t    fi\n+\n CONFIGURE_RECIPE = sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \\\n \t\t\tconfigure.ac >configure.ac+ && \\\n \t\t   autoconf -o configure configure.ac+ && \\\n@@ -2895,18 +2908,6 @@ else\n endif\n \t@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi\n \n-### Detect Python interpreter path changes\n-ifndef NO_PYTHON\n-TRACK_PYTHON = $(subst ','\\'',-DPYTHON_PATH='$(PYTHON_PATH_SQ)')\n-\n-GIT-PYTHON-VARS: FORCE\n-\t@VARS='$(TRACK_PYTHON)'; \\\n-\t    if test x\"$$VARS\" != x\"`cat $@ 2>/dev/null`\" ; then \\\n-\t\techo >&2 \"    * new Python interpreter location\"; \\\n-\t\techo \"$$VARS\" >$@; \\\n-            fi\n-endif\n-\n test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $(BINDIR_PROGRAMS_NO_X) $(TEST_PROGRAMS_NEED_X))\n \n all:: $(TEST_PROGRAMS) $(test_bindir_programs)\n@@ -3303,7 +3304,7 @@ ifndef NO_TCLTK\n endif\n \t$(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-BUILD-OPTIONS\n \t$(RM) GIT-USER-AGENT GIT-PREFIX\n-\t$(RM) GIT-SCRIPT-DEFINES GIT-PERL-DEFINES GIT-PERL-HEADER GIT-PYTHON-VARS\n+\t$(RM) GIT-SCRIPT-DEFINES GIT-PERL-DEFINES GIT-PERL-HEADER GIT-PYTHON-DEFINES\n ifdef MSVC\n \t$(RM) $(patsubst %.o,%.o.pdb,$(OBJECTS))\n \t$(RM) $(patsubst %.exe,%.pdb,$(OTHER_PROGRAMS))\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"444303","messageId":"patch-11.11-defbd9b6db2-20211217T002023Z-avarab@gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"[PATCH 11/11] Makefile: stop needing @@GIT_VERSION@@ in *.perl scripts","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-12-17T00:26:27Z","receivedAt":"2021-12-17T00:27:24Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"Change the hardcoding of @@GIT_VERSION@@ in generated *.perl scripts\nto instead shell out to \"git version\". This means that we can stop\nre-building during development every time the HEAD changes.\n\nThese codepaths are not \"hot\", so shelling out to get the version\nshouldn't matter to users, in the one case where it potentially would\nin send-email (the loop for each E-Mail we send) we now cache the\nvalue, so we'll only retrieve it once.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n Makefile            | 2 +-\n git-cvsserver.perl  | 6 +++---\n git-send-email.perl | 7 ++-----\n git-svn.perl        | 2 +-\n 4 files changed, 7 insertions(+), 10 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex f2cee13ea5d..9ccfb1109f5 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -2343,7 +2343,7 @@ PERL_HEADER_TEMPLATE = perl/header_templates/runtime_prefix.template.pl\n perl_localedir_SQ =\n endif\n \n-$(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE\n+$(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER\n \t$(QUIET_GEN) \\\n \tsed -e '1{' \\\n \t    -e '\ts|#!.*perl|#!$(PERL_PATH_SQ)|' \\\ndiff --git a/git-cvsserver.perl b/git-cvsserver.perl\nindex 4c8118010a8..4ec0cc1cc3c 100755\n--- a/git-cvsserver.perl\n+++ b/git-cvsserver.perl\n@@ -26,8 +26,6 @@\n use File::Basename;\n use Getopt::Long qw(:config require_order no_ignore_case);\n \n-my $VERSION = '@@GIT_VERSION@@';\n-\n my $log = GITCVS::log->new();\n my $cfg;\n \n@@ -126,7 +124,9 @@\n     or die $usage;\n \n if ($state->{version}) {\n-    print \"git-cvsserver version $VERSION\\n\";\n+    my $version = qx[git version];\n+    $version =~ s/^(git)\\b/$1-cvsserver/;\n+    print $version;\n     exit;\n }\n if ($state->{help}) {\ndiff --git a/git-send-email.perl b/git-send-email.perl\nindex 04087221aa7..390e8512627 100755\n--- a/git-send-email.perl\n+++ b/git-send-email.perl\n@@ -1504,6 +1504,7 @@ sub file_name_is_absolute {\n #\n # If an error occurs sending the email, this just dies.\n \n+my $gitversion;\n sub send_message {\n \tmy @recipients = unique_email_list(@to);\n \t@cc = (grep { my $cc = extract_valid_address_or_die($_);\n@@ -1514,11 +1515,6 @@ sub send_message {\n \t@recipients = unique_email_list(@recipients,@cc,@initial_bcc);\n \t@recipients = (map { extract_valid_address_or_die($_) } @recipients);\n \tmy $date = format_2822_time($time++);\n-\tmy $gitversion = '@@GIT_VERSION@@';\n-\tif ($gitversion =~ m/..GIT_VERSION../) {\n-\t    $gitversion = Git::version();\n-\t}\n-\n \tmy $cc = join(\",\\n\\t\", unique_email_list(@cc));\n \tmy $ccline = \"\";\n \tif ($cc ne '') {\n@@ -1533,6 +1529,7 @@ sub send_message {\n Message-Id: $message_id\n \";\n \tif ($use_xmailer) {\n+\t\t$gitversion ||= Git::version();\n \t\t$header .= \"X-Mailer: git-send-email $gitversion\\n\";\n \t}\n \tif ($in_reply_to) {\ndiff --git a/git-svn.perl b/git-svn.perl\nindex be987e316f9..727431412be 100755\n--- a/git-svn.perl\n+++ b/git-svn.perl\n@@ -9,7 +9,6 @@\n \t\t$_revision $_repository\n \t\t$_q $_authors $_authors_prog %users/;\n $AUTHOR = 'Eric Wong <normalperson@yhbt.net>';\n-$VERSION = '@@GIT_VERSION@@';\n \n use Carp qw/croak/;\n use File::Basename qw/dirname basename/;\n@@ -47,6 +46,7 @@\n \tcommand_close_bidi_pipe\n \tget_record\n );\n+$VERSION = Git::version();\n \n BEGIN {\n \tMemoize::memoize 'Git::config';\n-- \n2.34.1.1119.g7a3fc8778ee\n\n"},{"id":"449055","messageId":"220221.86r17w9dsq.gmgdl@evledraar.gmail.com","threadId":"57100","inReplyTo":"cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com","subject":"Re: [PATCH 00/11] Makefile: fix \"Perl\" and \"Python\" rules, speed up re-builds","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2022-02-21T20:14:00Z","receivedAt":"2022-02-21T20:15:41Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Fri, Dec 17 2021, Ævar Arnfjörð Bjarmason wrote:\n\nA gentle reminder about considering picking up this topic that got lost\naround the holidays.\n\nThis thread doesn't have any reviews, but as the linked-to range-diff\nshows it's all had reviews already as part of the larger topic I split\nit up from (except for the trivial addition noted below).\n\n> This topic is split-up from v4 of ab/make-dependency[1]. Range-diff to\n> it below. As noted in [2] I opted to split up that series rather than\n> having it grow too large.\n>\n> This is miscellanious cleanups related to the \"Perl\" rules, and some\n> fixes for bad dependency rules in 08/11. Then in 10/11 we make the\n> \"Python\" rules use the new template we created for \"Perl\",\n>\n> We are then able to speed up \"make\" re-builds a bit in 11/11, as we\n> don't need to inject @@GIT_VERSION@@ into the Perl scripts anymore.\n>\n> The 09/11 is new. It's a trivial sorting of the PERL_DEFINES list,\n> which'll help to maintain it in the future.\n>\n> 1. https://lore.kernel.org/git/cover-v4-00.23-00000000000-20211117T101807Z-avarab@gmail.com/\n> 2. https://lore.kernel.org/git/211217.86a6h09km9.gmgdl@evledraar.gmail.com/\n>\n>\n> Ævar Arnfjörð Bjarmason (11):\n>   Makefile: clean perl/build/ even with NO_PERL=Y\n>   Makefile: don't set up \"perl/build\" rules under NO_PERL=Y\n>   Makefile: use \"=\" not \":=\" for po/* and perl/*\n>   Makefile: remove \"mv $@ $@+\" dance redundant to .DELETE_ON_ERROR\n>   Makefile: guard Perl-only variable assignments\n>   Makefile: change \"ifndef NO_PERL\" to \"ifdef NO_PERL\"\n>   Makefile: adjust Perl-related comments & whitespace\n>   Makefile: correct \"GIT-PERL-{DEFINES,HEADER}\" dependency graph\n>   Makefile: sort PERL_DEFINES list\n>   Makefile: create a GIT-PYTHON-DEFINES, like \"PERL\"\n>   Makefile: stop needing @@GIT_VERSION@@ in *.perl scripts\n>\n>  .gitignore          |   2 +-\n>  Makefile            | 160 +++++++++++++++++++++++---------------------\n>  git-cvsserver.perl  |   6 +-\n>  git-send-email.perl |   7 +-\n>  git-svn.perl        |   2 +-\n>  5 files changed, 90 insertions(+), 87 deletions(-)\n>\n> Range-diff:\n>  1:  1621ca72c1d <  -:  ----------- Makefile: don't invoke msgfmt with --statistics\n>  4:  daead5ec293 =  1:  185f5a9a9cf Makefile: clean perl/build/ even with NO_PERL=Y\n>  2:  b7c36c9fea0 =  2:  37eeccc5646 Makefile: don't set up \"perl/build\" rules under NO_PERL=Y\n>  3:  29b000eb0f1 =  3:  572a82c71a1 Makefile: use \"=\" not \":=\" for po/* and perl/*\n>  5:  3c987590740 =  4:  5baff22f5af Makefile: remove \"mv $@ $@+\" dance redundant to .DELETE_ON_ERROR\n>  6:  b57f582ccd3 =  5:  992e325491d Makefile: guard Perl-only variable assignments\n>  7:  fcdee92f64c =  6:  5e94ef729fe Makefile: change \"ifndef NO_PERL\" to \"ifdef NO_PERL\"\n>  8:  1e25b532ca2 =  7:  4eeef8571aa Makefile: adjust Perl-related comments & whitespace\n>  9:  77d9855bfcf =  8:  8aa35537b08 Makefile: correct \"GIT-PERL-{DEFINES,HEADER}\" dependency graph\n>  -:  ----------- >  9:  5ff768a5cec Makefile: sort PERL_DEFINES list\n> 10:  6004cdcd8d9 = 10:  fe79797f45e Makefile: create a GIT-PYTHON-DEFINES, like \"PERL\"\n> 11:  17b30e96057 = 11:  defbd9b6db2 Makefile: stop needing @@GIT_VERSION@@ in *.perl scripts\n> 12:  30ddf7da2c8 <  -:  ----------- Makefiles: add \"shared.mak\", move \".DELETE_ON_ERROR\" to it\n> 13:  f378a7dc35e <  -:  ----------- Makefile: move $(comma), $(empty) and $(space) to shared.mak\n> 14:  13cbb851d32 <  -:  ----------- Makefile: re-add and use the \"shellquote\" macros\n> 15:  337953e4994 <  -:  ----------- Makefile: add a \"TRACK_template\" for GIT-*{FLAGS,DEFINES,...}\n> 16:  5bb597c1993 <  -:  ----------- Makefile: add \"$(QUIET)\" boilerplate to shared.mak\n> 17:  3c4d0589667 <  -:  ----------- Makefile: use $(wspfx) for $(QUIET...) in shared.mak\n> 18:  be5882b2c99 <  -:  ----------- Makefiles: add and use wildcard \"mkdir -p\" template\n> 19:  2710f8af6cd <  -:  ----------- Makefile: correct the dependency graph of hook-list.h\n> 20:  59f22a0269a <  -:  ----------- Makefile: use $(file) I/O instead of \"FORCE\" when possible\n> 21:  dd569a59c74 <  -:  ----------- Makefile: disable GNU make built-in wildcard rules\n> 22:  4168a7e3b30 <  -:  ----------- Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)\n> 23:  48a3927d972 <  -:  ----------- Makefile: move \".SUFFIXES\" rule to shared.mak\n\n"}]}