<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.26.0">
</HEAD>
<BODY>
On Tue, 2010-04-20 at 10:54 +1000, Peter Hutterer wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
On Mon, Apr 19, 2010 at 11:00:08PM +0200, Julien Cristau wrote:
&gt; On Mon, Apr 19, 2010 at 14:52:55 -0400, Gaetan Nadon wrote:
&gt; 
&gt; &gt; Generates the git module version according to the &quot;git describe HEAD&quot;
&gt; &gt; If the git module has pending changes, it appends &quot;-dirty&quot; to the version tag
&gt; &gt; 
&gt; &gt; Signed-off-by: Gaetan Nadon &lt;<A HREF="mailto:memsize@videotron.ca">memsize@videotron.ca</A>&gt;
&gt; &gt; ---
&gt; &gt;  xorg-macros.m4.in |   18 ++++++++++++++++++
&gt; &gt;  1 files changed, 18 insertions(+), 0 deletions(-)
&gt; &gt; 
&gt; &gt; diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
&gt; &gt; index 916b472..efb2e53 100644
&gt; &gt; --- a/xorg-macros.m4.in
&gt; &gt; +++ b/xorg-macros.m4.in
&gt; &gt; @@ -1009,3 +1009,21 @@ mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
&gt; &gt;  echo 'util-macros \&quot;pkgdatadir\&quot; from xorg-macros.pc not found: installing possibly empty INSTALL.' &gt;&amp;2)&quot;
&gt; &gt;  AC_SUBST([INSTALL_CMD])
&gt; &gt;  ]) # XORG_INSTALL
&gt; &gt; +
&gt; &gt; +# XORG_GIT_MODULE_VERSION()
&gt; &gt; +# -------------------------
&gt; &gt; +# Minimum version: 1.8.0
&gt; &gt; +#
&gt; &gt; +# Generates the git module version according to the &quot;git describe HEAD&quot;
&gt; &gt; +# If the git module has pending changes, it appends &quot;-dirty&quot; to the version tag
&gt; &gt; +#
&gt; &gt; +AC_DEFUN([XORG_GIT_MODULE_VERSION], [
&gt; &gt; +GIT_MODULE_VERSION_CMD=&quot;VER=\`GIT_DIR=\$(top_srcdir)/.git git describe HEAD 2&gt;/dev/null\`; \
&gt; &gt; +DVER=\`GIT_DIR=\$(top_srcdir)/.git git diff-index HEAD 2&gt;/dev/null\`; \
&gt; &gt; +OUTSTR=\&quot;\#undef XORG_GIT_VERSION\&quot; ; \
&gt; &gt; +OUTFILE=\&quot;xorg-git-version.h\&quot;; \
&gt; &gt; +test -n \&quot;\$\$VER\&quot; &amp;&amp; OUTSTR=\&quot;\#define XORG_GIT_VERSION \$\$VER\&quot; &amp;&amp; test -n \&quot;\$\$DVER\&quot; &amp;&amp; OUTSTR=\&quot;\#define XORG_GIT_VERSION \$\$VER-dirty\&quot;; \
&gt; &gt; +test -e \&quot;\$\$OUTFILE\&quot; || echo \&quot;\$\$OUTSTR\&quot; &gt; \&quot;\$\$OUTFILE\&quot;; \
&gt; &gt; +CONTENT=\`cat \$\$OUTFILE\` &amp;&amp; test \&quot;\$\$CONTENT\&quot; = \&quot;\$\$OUTSTR\&quot; || echo \$\$OUTSTR &gt; \$\$OUTFILE;&quot;
&gt; &gt; +AC_SUBST([GIT_MODULE_VERSION_CMD])
&gt; &gt; +]) # XORG_GIT_MODULE_VERSION

my eyes!

&gt; As I said in reply to the initial patch by Peter I'd like a way to
&gt; disable this, because packages might be built from a git tree, which
&gt; might be unrelated to the xorg one, or outside of any git tree.  What's
&gt; the output like if not building from git?  Does 'make
&gt; GIT_MODULE_VERSION_CMD=:' work to disable it (I guess not, because
&gt; anything trying to include xorg-git-version.h will be unhappy)?

it simply sets the #undef and nothing will be printed to the log file. Is
there any specific argument against _running_ the macro as long if it
doesn't add anything to the logfile?

Gaetan:
I'm not a big fan of the -dirty either but I guess if others want it we can
leave it in.&nbsp; Two questions though:
</PRE>
</BLOCKQUOTE>
If you remotely help someone debugging a problem, you would like to know if tag/commit is really the code he is running or if there are local changes. With the commit number you can cross-reference the master repo and detect unpsuhed local commits. With the -dirty (now called -with-uncommitted-changes) you now the code is tainted with local changes you know nothing about. It's just additional info.<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>
- If modules start using this macro, do they stillhave to add to
   DISTCLEANFILES and friends? 
- This macro only gets invoked on automake runs, right? So if I pull and
  just rebuild, would it update the git version?
 
</PRE>
</BLOCKQUOTE>
All options are available in the Makefile.am regarding the invocation of the macro (or your original script). I have not paid attention to that, it looks you had it covered. The problem domain is similar to ChangeLog. You need a trigger when a new commit is available, but the best we could do is a dist hook. And you may not be running off git. What use case was this feature designed for?<BR>
<BR>
One suggested a dependency on a git file that changes with the HEAD commit, don't recall what the objections were. I'll think about it some more.<BR>
<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>
Cheers,
  Peter
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>