git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
	Kyle Lippincott <spectral@google.com>
Subject: Re: [PATCH 1/2] GIT-VERSION-GEN: fix overriding version via environment
Date: Fri, 20 Dec 2024 10:31:30 +0100	[thread overview]
Message-ID: <Z2U5cslf10hs_-Az@pks.im> (raw)
In-Reply-To: <20241220085626.GB133148@coredump.intra.peff.net>

On Fri, Dec 20, 2024 at 03:56:26AM -0500, Jeff King wrote:
> On Fri, Dec 20, 2024 at 09:45:36AM +0100, Patrick Steinhardt wrote:
> 
> > >   version-def.h: version-def.h.in GIT-VERSION-GEN GIT-VERSION-FILE GIT-USER-AGENT
> > >           $(QUIET_GEN)GIT_USER_AGENT="$(GIT_USER_AGENT)" $(SHELL_PATH) ./GIT-VERSION-GEN "$(shell pwd)" $< $@+
> > >           @if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
> > > 
> > > Should we do the same thing for GIT_VERSION? And GIT_DATE, etc? If we're
> > > going to do many of these, it might also be easier to just add "export
> > > GIT_VERSION", etc, in the Makefile.
> > 
> > I guess. It'll become quite painful to do this at every callsite, so
> > I'll add another commit on top to introduce a call template that does
> > all of this for us.
> 
> Is there any reason not to just do:
> 
>   export GIT_VERSION
>   export GIT_DATE
>   export GIT_BUILT_FROM_COMMIT
>   export GIT_USER_AGENT
> 
> in shared.mak? Then you only have to do it once, and no need for
> templates.

You could do that, yeah, but the user needs to be aware that they can.
I'm happy to not go down that path and live with the above solution.
Alternatively, this would be what the call template would look like.

Patrick

diff --git a/Documentation/Makefile b/Documentation/Makefile
index 3392e1ce7e..a7cb885b67 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -211,12 +211,10 @@ XMLTO_EXTRA += --skip-validation
 XMLTO_EXTRA += -x manpage.xsl
 
 asciidoctor-extensions.rb: asciidoctor-extensions.rb.in FORCE
-	$(QUIET_GEN)GIT_USER_AGENT="$(GIT_USER_AGENT)" $(SHELL_PATH) ../GIT-VERSION-GEN "$(shell pwd)/.." $< $@+
-	@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
+	$(QUIET_GEN)$(call version_gen,$(shell pwd)/..,$<,$@)
 else
 asciidoc.conf: asciidoc.conf.in FORCE
-	$(QUIET_GEN)GIT_USER_AGENT="$(GIT_USER_AGENT)" $(SHELL_PATH) ../GIT-VERSION-GEN "$(shell pwd)/.." $< $@+
-	@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
+	$(QUIET_GEN)$(call version_gen,$(shell pwd)/..,$<,$@)
 endif
 
 ASCIIDOC_DEPS += docinfo.html
diff --git a/Makefile b/Makefile
index 79739a13d2..9cfe3d0aa9 100644
--- a/Makefile
+++ b/Makefile
@@ -593,7 +593,7 @@ include shared.mak
 
 GIT-VERSION-FILE: FORCE
 	@OLD=$$(cat $@ 2>/dev/null || :) && \
-	$(SHELL_PATH) ./GIT-VERSION-GEN "$(shell pwd)" GIT-VERSION-FILE.in $@ && \
+	$(call version_gen,"$(shell pwd)",GIT-VERSION-FILE.in,$@) && \
 	NEW=$$(cat $@ 2>/dev/null || :) && \
 	if test "$$OLD" != "$$NEW"; then echo "$$NEW" >&2; fi
 -include GIT-VERSION-FILE
@@ -2512,8 +2512,7 @@ pager.sp pager.s pager.o: EXTRA_CPPFLAGS = \
 	-DPAGER_ENV='$(PAGER_ENV_CQ_SQ)'
 
 version-def.h: version-def.h.in GIT-VERSION-GEN GIT-VERSION-FILE GIT-USER-AGENT
-	$(QUIET_GEN)GIT_USER_AGENT="$(GIT_USER_AGENT)" $(SHELL_PATH) ./GIT-VERSION-GEN "$(shell pwd)" $< $@+
-	@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
+	$(QUIET_GEN)$(call version_gen,"$(shell pwd)",$<,$@)
 
 version.sp version.s version.o: version-def.h
 
@@ -2554,8 +2553,7 @@ $(SCRIPT_SH_GEN) $(SCRIPT_LIB) : % : %.sh generate-script.sh GIT-BUILD-OPTIONS G
 	mv $@+ $@
 
 git.rc: git.rc.in GIT-VERSION-GEN GIT-VERSION-FILE
-	$(QUIET_GEN)$(SHELL_PATH) ./GIT-VERSION-GEN "$(shell pwd)" $< $@+
-	@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
+	$(QUIET_GEN)$(call version_gen,"$(shell pwd)",$<,$@)
 
 git.res: git.rc GIT-PREFIX
 	$(QUIET_RC)$(RC) -i $< -o $@
diff --git a/shared.mak b/shared.mak
index 29bebd30d8..8e0a19691f 100644
--- a/shared.mak
+++ b/shared.mak
@@ -116,3 +116,14 @@ endef
 define libpath_template
 -L$(1) $(if $(filter-out -L,$(CC_LD_DYNPATH)),$(CC_LD_DYNPATH)$(1))
 endef
+
+# Populate build information into a file via GIT-VERSION-GEN. Requires the
+# absolute path to the root source directory as well as input and output files
+# as arguments, in that order.
+define version_gen
+GIT_BUILT_FROM_COMMIT="$(GIT_BUILT_FROM_COMMIT)" \
+GIT_DATE="$(GIT_DATE)" \
+GIT_USER_AGENT="$(GIT_USER_AGENT)" \
+GIT_VERSION="$(GIT_VERSION)" \
+$(SHELL_PATH) "$(1)/GIT-VERSION-GEN" "$(1)" "$(2)" "$(3)"
+endef

  reply	other threads:[~2024-12-20  9:31 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-19 15:53 [PATCH 0/2] GIT-VERSION-GEN: fix overriding values Patrick Steinhardt
2024-12-19 15:53 ` [PATCH 1/2] GIT-VERSION-GEN: fix overriding version via environment Patrick Steinhardt
2024-12-19 18:49   ` Junio C Hamano
2024-12-20  7:34   ` Jeff King
2024-12-20  8:45     ` Patrick Steinhardt
2024-12-20  8:56       ` Jeff King
2024-12-20  9:31         ` Patrick Steinhardt [this message]
2024-12-20 11:17           ` Jeff King
2024-12-20 12:22             ` Patrick Steinhardt
2024-12-19 15:53 ` [PATCH 2/2] GIT-VERSION-GEN: fix overriding GIT_BUILT_FROM_COMMIT and GIT_DATE Patrick Steinhardt
2024-12-19 21:19   ` Kyle Lippincott
2024-12-19 21:59     ` Junio C Hamano
2024-12-20  7:37   ` Jeff King
2024-12-20 15:04     ` Junio C Hamano
2024-12-20 12:22 ` [PATCH v2 0/5] GIT-VERSION-GEN: fix overriding values Patrick Steinhardt
2024-12-20 12:22   ` [PATCH v2 1/5] GIT-VERSION-GEN: fix overriding version via environment Patrick Steinhardt
2024-12-20 15:52     ` Jeff King
2024-12-20 16:16       ` Patrick Steinhardt
2024-12-20 16:17       ` Junio C Hamano
2024-12-20 16:23         ` Patrick Steinhardt
2024-12-20 12:22   ` [PATCH v2 2/5] GIT-VERSION-GEN: fix overriding GIT_BUILT_FROM_COMMIT and GIT_DATE Patrick Steinhardt
2024-12-20 12:22   ` [PATCH v2 3/5] Makefile: drop unneeded indirection for GIT-VERSION-GEN outputs Patrick Steinhardt
2024-12-20 15:53     ` Jeff King
2024-12-20 12:22   ` [PATCH v2 4/5] Makefile: respect build info declared in "config.mak" Patrick Steinhardt
2024-12-20 15:54     ` Jeff King
2024-12-20 16:47       ` Patrick Steinhardt
2024-12-20 17:51         ` Jeff King
2024-12-20 18:02           ` Patrick Steinhardt
2024-12-20 18:18             ` Patrick Steinhardt
2024-12-20 18:24             ` Jeff King
2024-12-20 18:39               ` Patrick Steinhardt
2024-12-20 19:07                 ` Patrick Steinhardt
2024-12-28 19:43                   ` Jeff King
2024-12-20 12:22   ` [PATCH v2 5/5] meson: add options to override build information Patrick Steinhardt
2024-12-20 15:56   ` [PATCH v2 0/5] GIT-VERSION-GEN: fix overriding values Jeff King
2024-12-20 19:44 ` [PATCH v3 0/6] " Patrick Steinhardt
2024-12-20 19:44   ` [PATCH v3 1/6] Makefile: stop including "GIT-VERSION-FILE" in docs Patrick Steinhardt
2024-12-20 19:44   ` [PATCH v3 2/6] Makefile: drop unneeded indirection for GIT-VERSION-GEN outputs Patrick Steinhardt
2024-12-20 19:44   ` [PATCH v3 3/6] Makefile: introduce template for GIT-VERSION-GEN Patrick Steinhardt
2024-12-20 19:44   ` [PATCH v3 4/6] GIT-VERSION-GEN: fix overriding GIT_VERSION Patrick Steinhardt
2024-12-20 21:50     ` Junio C Hamano
2024-12-21 10:30       ` Patrick Steinhardt
2024-12-20 19:44   ` [PATCH v3 5/6] GIT-VERSION-GEN: fix overriding GIT_BUILT_FROM_COMMIT and GIT_DATE Patrick Steinhardt
2024-12-20 19:44   ` [PATCH v3 6/6] meson: add options to override build information Patrick Steinhardt

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z2U5cslf10hs_-Az@pks.im \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=spectral@google.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.
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 NNTP newsgroup(s).