<!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 Mon, 2010-04-19 at 12:14 -0700, Dan Nicholson wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
On Mon, Apr 19, 2010 at 11:52 AM, Gaetan Nadon &lt;<A HREF="mailto:memsize@videotron.ca">memsize@videotron.ca</A>&gt; wrote:
&gt; Generates the git module version according to the &quot;git describe HEAD&quot;
&gt; If the git module has pending changes, it appends &quot;-dirty&quot; to the version tag
&gt;
&gt; Signed-off-by: Gaetan Nadon &lt;<A HREF="mailto:memsize@videotron.ca">memsize@videotron.ca</A>&gt;
&gt; ---
&gt; &nbsp;xorg-macros.m4.in | &nbsp; 18 ++++++++++++++++++
&gt; &nbsp;1 files changed, 18 insertions(+), 0 deletions(-)
&gt;
&gt; diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
&gt; index 916b472..efb2e53 100644
&gt; --- a/xorg-macros.m4.in
&gt; +++ b/xorg-macros.m4.in
&gt; @@ -1009,3 +1009,21 @@ mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
&gt; &nbsp;echo 'util-macros \&quot;pkgdatadir\&quot; from xorg-macros.pc not found: installing possibly empty INSTALL.' &gt;&amp;2)&quot;
&gt; &nbsp;AC_SUBST([INSTALL_CMD])
&gt; &nbsp;]) # XORG_INSTALL
&gt; +
&gt; +# XORG_GIT_MODULE_VERSION()
&gt; +# -------------------------
&gt; +# Minimum version: 1.8.0
&gt; +#
&gt; +# Generates the git module version according to the &quot;git describe HEAD&quot;
&gt; +# If the git module has pending changes, it appends &quot;-dirty&quot; to the version tag
&gt; +#
&gt; +AC_DEFUN([XORG_GIT_MODULE_VERSION], [
&gt; +GIT_MODULE_VERSION_CMD=&quot;VER=\`GIT_DIR=\$(top_srcdir)/.git git describe HEAD 2&gt;/dev/null\`; \
&gt; +DVER=\`GIT_DIR=\$(top_srcdir)/.git git diff-index HEAD 2&gt;/dev/null\`; \
&gt; +OUTSTR=\&quot;\#undef XORG_GIT_VERSION\&quot; ; \
&gt; +OUTFILE=\&quot;xorg-git-version.h\&quot;; \

IMO, OUTFILE should just be $@. Then the module has flexibility over
what the header is called.
</PRE>
</BLOCKQUOTE>
Done
<BLOCKQUOTE TYPE=CITE>
<PRE>

&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;; \

I don't I like &quot;dirty&quot; going in the version since it doesn't really
provide any further information. That could be one string change or it
could be a revamp of a subsystem.
</PRE>
</BLOCKQUOTE>
It does warn the person trying to debug that the tag and commit info may not be representative due to local changes. It's not enough, but better than nothing. Otherwise it is misleading. There is a hole, however. There may be local commits. To make it better until new ideas come forward, I change the -dirty for -with-uncommitted-changes&quot;.
<BLOCKQUOTE TYPE=CITE>
<PRE>

However, if it is kept, can we split this in two lines?
</PRE>
</BLOCKQUOTE>
Done.
<BLOCKQUOTE TYPE=CITE>
<PRE>

test -n \&quot;\$\$VER\&quot; &amp;&amp; OUTSTR=\&quot;\#define XORG_GIT_VERSION \$\$VER\&quot;; \
test -n \&quot;\$\$DVER\&quot; &amp;&amp; OUTSTR=\&quot;\$\$OUTSTR-dirty\&quot;; \

If VER isn't set, DVER won't be either.

&gt; +test -e \&quot;\$\$OUTFILE\&quot; || echo \&quot;\$\$OUTSTR\&quot; &gt; \&quot;\$\$OUTFILE\&quot;; \
&gt; +CONTENT=\`cat \$\$OUTFILE\` &amp;&amp; test \&quot;\$\$CONTENT\&quot; = \&quot;\$\$OUTSTR\&quot; || echo \$\$OUTSTR &gt; \$\$OUTFILE;&quot;
&gt; +AC_SUBST([GIT_MODULE_VERSION_CMD])
&gt; +]) # XORG_GIT_MODULE_VERSION
&gt; --
&gt; 1.6.0.4

I wish it didn't have to be done this way. This is absolutely nasty.
</PRE>
</BLOCKQUOTE>
It does not have to be that way. We have reviewed the spec for the function and we have two different implementation with pros and cons. I thought it was worth a try, I think it was. It is indeed nastier than expected, but no worse than the rest of the generated makefile. It gives a sense of where the limits are.<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>
That said, it seems like it would work.

--
Dan
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>