From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Phillip Wood" <phillip.wood123@gmail.com>,
"Jeff King" <peff@peff.net>, "Dan Jacques" <dnj@google.com>,
"Eric Wong" <e@80x24.org>, "Jonathan Nieder" <jrnieder@gmail.com>,
"Mike Hommey" <mh@glandium.org>,
"Đoàn Trần Công Danh" <congdanhqx@gmail.com>,
"Victoria Dye" <vdye@github.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH 08/11] Makefile: correct "GIT-PERL-{DEFINES,HEADER}" dependency graph
Date: Fri, 17 Dec 2021 01:26:24 +0100 [thread overview]
Message-ID: <patch-08.11-8aa35537b08-20211217T002023Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-00.11-00000000000-20211217T002023Z-avarab@gmail.com>
Fix several small issues with the dependency graph of the generated
"GIT-PERL-DEFINES" and "GIT-PERL-HEADER" files:
1. Don't have "GIT-PERL-HEADER" depend on the "Makefile". That was a
lazy way to over-declare the dependencies added in
f6a0ad4be71 (Makefile: generate Perl header from template file,
2018-04-10). Let's correct our dependency graph instead.
2. Don't have $(SCRIPT_PERL_GEN) (such as "git-send-email") depend on
GIT-BUILD-OPTIONS. Let's instead use GIT-PERL-DEFINES.
The reason for depending on "GIT-BUILD-OPTIONS" was to trigger a
re-build if NO_PERL=Y was defined. We can instead add that variable
to "PERL_DEFINES", and have "GIT-PERL-DEFINES" created and updated
if "NO_PERL=Y" is defined.
3. Due to #2 we'll need to have GIT-PERL-DEFINES be generated even
under NO_PERL, since that variable will be used by the
"unimplemented.sh" script.
4. Don't depend on $(gitexecdir), $(perllibdir) and $(localedir),
instead depend on the $(*_relative_SQ) versions of those.
The latter is what we'll actually use, while it's unlikely to
matter in practice (we'd just skip re-building these under
RUNTIME_PREFIX if the relative path was the same) it makes the code
easier to read.
That's because this brings us to a 1=1 mapping of these variables
and what's subsequently used in the "GIT-PERL-DEFINES",
"GIT-PERL-HEADER" and "perl/build/lib/%.pm" rules below.
5. We don't need the substitution of " " for ":" added in
07d90eadb50 (Makefile: add Perl runtime prefix support,
2018-04-10), let's drop it. This doesn't matter for the correctness
of these files, because unlike GIT-BUILD-OPTIONS nothing is
consuming them except the Makefile itself.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
Makefile | 42 +++++++++++++++++++++++++-----------------
1 file changed, 25 insertions(+), 17 deletions(-)
diff --git a/Makefile b/Makefile
index d488a723b79..356c98dff45 100644
--- a/Makefile
+++ b/Makefile
@@ -2298,10 +2298,14 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX
$(shell echo $(GIT_VERSION) 0 0 0 0 | tr '.a-zA-Z-' ' '))) \
-DGIT_VERSION="\\\"$(GIT_VERSION)\\\"" -i $< -o $@
-# This makes sure we depend on the NO_PERL setting itself.
-$(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS
+# Under NO_PERL=Y we'll still make GIT-PERL-DEFINES. We need to depend
+# on NO_PERL=Y itself for creating "unimplemented.sh" scripts.
+PERL_DEFINES =
+$(SCRIPT_PERL_GEN): GIT-PERL-DEFINES
ifdef NO_PERL
+PERL_DEFINES += $(NO_PERL)
+
$(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh
$(QUIET_GEN) \
sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
@@ -2310,22 +2314,26 @@ $(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh
chmod +x $@+ && \
mv $@+ $@
else # NO_PERL
-# Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX
-# since the locale directory is injected.
+# The localedir is only used in Perl modules if !NO_GETTEXT
+ifndef NO_GETTEXT
perl_localedir_SQ = $(localedir_SQ)
+endif
PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl
-PERL_DEFINES =
+
PERL_DEFINES += $(PERL_PATH_SQ)
PERL_DEFINES += $(PERLLIB_EXTRA_SQ)
PERL_DEFINES += $(perllibdir_SQ)
PERL_DEFINES += $(RUNTIME_PREFIX)
PERL_DEFINES += $(NO_PERL_CPAN_FALLBACKS)
PERL_DEFINES += $(NO_GETTEXT)
-PERL_DEFINES += $(gitexecdir)
-PERL_DEFINES += $(perllibdir)
-PERL_DEFINES += $(localedir)
-PERL_DEFINES := $(subst $(space),:,$(PERL_DEFINES))
+ifdef RUNTIME_PREFIX
+PERL_DEFINES += $(gitexecdir_relative_SQ)
+PERL_DEFINES += $(perllibdir_relative_SQ)
+PERL_DEFINES += $(localedir_relative_SQ)
+else
+PERL_DEFINES += $(perllocaledir_SQ)
+endif
ifdef RUNTIME_PREFIX
PERL_HEADER_TEMPLATE = perl/header_templates/runtime_prefix.template.pl
@@ -2347,14 +2355,7 @@ $(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE
chmod +x $@+ && \
mv $@+ $@
-GIT-PERL-DEFINES: FORCE
- @FLAGS='$(PERL_DEFINES)'; \
- if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \
- echo >&2 " * new perl-specific parameters"; \
- echo "$$FLAGS" >$@; \
- fi
-
-GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES Makefile
+GIT-PERL-HEADER: $(PERL_HEADER_TEMPLATE) GIT-PERL-DEFINES
$(QUIET_GEN) \
INSTLIBDIR='$(perllibdir_SQ)' && \
INSTLIBDIR_EXTRA='$(PERLLIB_EXTRA_SQ)' && \
@@ -2380,6 +2381,13 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES
mv $@+ $@
endif # NO_PERL
+GIT-PERL-DEFINES: FORCE
+ @FLAGS='$(PERL_DEFINES)'; \
+ if test x"$$FLAGS" != x"`cat $@ 2>/dev/null`" ; then \
+ echo >&2 " * new perl-specific parameters"; \
+ echo "$$FLAGS" >$@; \
+ fi
+
# This makes sure we depend on the NO_PYTHON setting itself.
$(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS
--
2.34.1.1119.g7a3fc8778ee
next prev parent reply other threads:[~2021-12-17 0:26 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-17 0:26 [PATCH 00/11] Makefile: fix "Perl" and "Python" rules, speed up re-builds Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 01/11] Makefile: clean perl/build/ even with NO_PERL=Y Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 02/11] Makefile: don't set up "perl/build" rules under NO_PERL=Y Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 03/11] Makefile: use "=" not ":=" for po/* and perl/* Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 04/11] Makefile: remove "mv $@ $@+" dance redundant to .DELETE_ON_ERROR Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 05/11] Makefile: guard Perl-only variable assignments Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 06/11] Makefile: change "ifndef NO_PERL" to "ifdef NO_PERL" Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 07/11] Makefile: adjust Perl-related comments & whitespace Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` Ævar Arnfjörð Bjarmason [this message]
2021-12-17 0:26 ` [PATCH 09/11] Makefile: sort PERL_DEFINES list Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 10/11] Makefile: create a GIT-PYTHON-DEFINES, like "PERL" Ævar Arnfjörð Bjarmason
2021-12-17 0:26 ` [PATCH 11/11] Makefile: stop needing @@GIT_VERSION@@ in *.perl scripts Ævar Arnfjörð Bjarmason
2022-02-21 20:14 ` [PATCH 00/11] Makefile: fix "Perl" and "Python" rules, speed up re-builds Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=patch-08.11-8aa35537b08-20211217T002023Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=congdanhqx@gmail.com \
--cc=dnj@google.com \
--cc=e@80x24.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=mh@glandium.org \
--cc=peff@peff.net \
--cc=phillip.wood123@gmail.com \
--cc=vdye@github.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).