<!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 Wed, 2010-04-21 at 06:03 -0700, Dan Nicholson wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
On Tue, Apr 20, 2010 at 11:10 AM, Gaetan Nadon &lt;<A HREF="mailto:memsize@videotron.ca">memsize@videotron.ca</A>&gt; wrote:
&gt; On Mon, 2010-04-19 at 21:34 -0700, Dan Nicholson wrote:
&gt;
&gt; On Mon, Apr 19, 2010 at 5:54 PM, Peter Hutterer
&gt; &lt;<A HREF="mailto:peter.hutterer@who-t.net">peter.hutterer@who-t.net</A>&gt; wrote:
&gt;&gt; On Mon, Apr 19, 2010 at 11:00:08PM +0200, Julien Cristau wrote:
&gt;&gt;&gt; On Mon, Apr 19, 2010 at 14:52:55 -0400, Gaetan Nadon wrote:
&gt;&gt;&gt;
&gt;&gt;&gt; &gt; Generates the git module version according to the &quot;git describe HEAD&quot;
&gt;&gt;&gt; &gt; If the git module has pending changes, it appends &quot;-dirty&quot; to the
&gt;&gt;&gt; &gt; version tag
&gt;&gt;&gt; &gt;
&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; ---
&gt;&gt;&gt; &gt; &nbsp;xorg-macros.m4.in | &nbsp; 18 ++++++++++++++++++
&gt;&gt;&gt; &gt; &nbsp;1 files changed, 18 insertions(+), 0 deletions(-)
&gt;&gt;&gt; &gt;
&gt;&gt;&gt; &gt; diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
&gt;&gt;&gt; &gt; index 916b472..efb2e53 100644
&gt;&gt;&gt; &gt; --- a/xorg-macros.m4.in
&gt;&gt;&gt; &gt; +++ b/xorg-macros.m4.in
&gt;&gt;&gt; &gt; @@ -1009,3 +1009,21 @@ mv \$(top_srcdir)/.INSTALL.tmp
&gt;&gt;&gt; &gt; \$(top_srcdir)/INSTALL) \
&gt;&gt;&gt; &gt; &nbsp;echo 'util-macros \&quot;pkgdatadir\&quot; from xorg-macros.pc not found:
&gt;&gt;&gt; &gt; installing possibly empty INSTALL.' &gt;&amp;2)&quot;
&gt;&gt;&gt; &gt; &nbsp;AC_SUBST([INSTALL_CMD])
&gt;&gt;&gt; &gt; &nbsp;]) # XORG_INSTALL
&gt;&gt;&gt; &gt; +
&gt;&gt;&gt; &gt; +# XORG_GIT_MODULE_VERSION()
&gt;&gt;&gt; &gt; +# -------------------------
&gt;&gt;&gt; &gt; +# Minimum version: 1.8.0
&gt;&gt;&gt; &gt; +#
&gt;&gt;&gt; &gt; +# Generates the git module version according to the &quot;git describe
&gt;&gt;&gt; &gt; HEAD&quot;
&gt;&gt;&gt; &gt; +# If the git module has pending changes, it appends &quot;-dirty&quot; to the
&gt;&gt;&gt; &gt; version tag
&gt;&gt;&gt; &gt; +#
&gt;&gt;&gt; &gt; +AC_DEFUN([XORG_GIT_MODULE_VERSION], [
&gt;&gt;&gt; &gt; +GIT_MODULE_VERSION_CMD=&quot;VER=\`GIT_DIR=\$(top_srcdir)/.git git describe
&gt;&gt;&gt; &gt; HEAD 2&gt;/dev/null\`; \
&gt;&gt;&gt; &gt; +DVER=\`GIT_DIR=\$(top_srcdir)/.git git diff-index HEAD 2&gt;/dev/null\`;
&gt;&gt;&gt; &gt; \
&gt;&gt;&gt; &gt; +OUTSTR=\&quot;\#undef XORG_GIT_VERSION\&quot; ; \
&gt;&gt;&gt; &gt; +OUTFILE=\&quot;xorg-git-version.h\&quot;; \
&gt;&gt;&gt; &gt; +test -n \&quot;\$\$VER\&quot; &amp;&amp; OUTSTR=\&quot;\#define XORG_GIT_VERSION \$\$VER\&quot; &amp;&amp;
&gt;&gt;&gt; &gt; test -n \&quot;\$\$DVER\&quot; &amp;&amp; OUTSTR=\&quot;\#define XORG_GIT_VERSION \$\$VER-dirty\&quot;;
&gt;&gt;&gt; &gt; \
&gt;&gt;&gt; &gt; +test -e \&quot;\$\$OUTFILE\&quot; || echo \&quot;\$\$OUTSTR\&quot; &gt; \&quot;\$\$OUTFILE\&quot;; \
&gt;&gt;&gt; &gt; +CONTENT=\`cat \$\$OUTFILE\` &amp;&amp; test \&quot;\$\$CONTENT\&quot; = \&quot;\$\$OUTSTR\&quot;
&gt;&gt;&gt; &gt; || echo \$\$OUTSTR &gt; \$\$OUTFILE;&quot;
&gt;&gt;&gt; &gt; +AC_SUBST([GIT_MODULE_VERSION_CMD])
&gt;&gt;&gt; &gt; +]) # XORG_GIT_MODULE_VERSION
&gt;&gt;
&gt;&gt; my eyes!
&gt;&gt;
&gt;&gt;&gt; As I said in reply to the initial patch by Peter I'd like a way to
&gt;&gt;&gt; disable this, because packages might be built from a git tree, which
&gt;&gt;&gt; might be unrelated to the xorg one, or outside of any git tree. &nbsp;What's
&gt;&gt;&gt; the output like if not building from git? &nbsp;Does 'make
&gt;&gt;&gt; GIT_MODULE_VERSION_CMD=:' work to disable it (I guess not, because
&gt;&gt;&gt; anything trying to include xorg-git-version.h will be unhappy)?
&gt;&gt;
&gt;&gt; it simply sets the #undef and nothing will be printed to the log file. Is
&gt;&gt; there any specific argument against _running_ the macro as long if it
&gt;&gt; doesn't add anything to the logfile?
&gt;&gt;
&gt;&gt; Gaetan:
&gt;&gt; I'm not a big fan of the -dirty either but I guess if others want it we
&gt;&gt; can
&gt;&gt; leave it in. &nbsp;Two questions though:
&gt;&gt; - If modules start using this macro, do they stillhave to add to
&gt;&gt; &nbsp; DISTCLEANFILES and friends?
&gt;
&gt; I think it would be run all the time depending on .git/HEAD (or
&gt; .git/`git symbolic-ref HEAD` like krh suggested), but it entirely
&gt; depends what you do in the Makefile.am.
&gt;
&gt;&gt; - This macro only gets invoked on automake runs, right? So if I pull and
&gt;&gt; &nbsp;just rebuild, would it update the git version?
&gt;
&gt; It depends how fancy you want to be with the Makefile.am. To me, the
&gt; following is &quot;the right way to do it&quot;, but it requires touching more
&gt; files.
&gt;
&gt; configure.ac:
&gt; AM_CONDITIONAL([USING_GIT], [test -f &quot;$srcdir/.git/HEAD&quot;])
&gt;
&gt; Makefile.am:
&gt; if USING_GIT
&gt; GIT_HEAD = $(top_srcdir)/.git/HEAD
&gt; endif
&gt; noinst_HEADERS = git-xorg-version.h
&gt; git-xorg-version.h: $(GIT_HEAD)
&gt;     $(AM_V_GEN)$(GIT_MODULE_VERSION_CMD) $@
&gt;
&gt; If you have a checkout, the header depends on .git/HEAD, so it will
&gt; get rebuilt any time HEAD gets updated. Actually, that doesn't seem
&gt; like it would work that well since HEAD seems to take the modification
&gt; time of the ref it's following, so the header wouldn't get updated if
&gt; you checked out an older branch. Probably best would be:
&gt;
&gt; noinst_HEADERS = git-xorg-version.h
&gt; git-xorg-version.h:
&gt;     $(AM_V_GEN)$(GIT_MODULE_VERSION_CMD) $@
&gt; .PHONY: git-xorg-version.h
&gt;
&gt; Sounds the best to me. I would put the generated file in DISTCLEANFILES.
&gt; It will cause less rebuilds than if it is in CLEANFILES, in the case the
&gt; generated
&gt; .h file is included by millions of other .h files and you just clean one
&gt; subtree.

Yeah, I think you'll need to, anyway, to pass distcheck.

&gt; And then you'd just have to depend on GIT_MODULE_VERSION_CMD not
&gt; updating the file unnecessarily to prevent spurious rebuilds. Gaeton's
&gt; version seems to do that.
&gt;
&gt; It does.
&gt;
&gt;
&gt; I posted the patch v2 yesterday. Is the usage of $@ is correct?
&gt;
&gt;
&gt; VER=`GIT_DIR=$(top_srcdir)/.git git describe HEAD 2&gt;/dev/null`;
&gt; DVER=`GIT_DIR=$(top_srcdir)/.
&gt; git git diff-index HEAD 2&gt;/dev/null`;
&gt; OUTSTR=&quot;\#undef XORG_GIT_VERSION&quot; ;
&gt; OUTFILE=$(@);
&gt; test -n &quot;$$VER&quot; &amp;&amp; OUTSTR=&quot;\#define XORG_GIT_VERSION $$VER&quot;;
&gt; test -n &quot;$$DVER&quot; &amp;&amp; OUTSTR=&quot;$$OUTSTR-with-uncommitted-changes&quot;;
&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;
&gt; $$OUTFILE;

I would personally replace all occurrences of $$OUTFILE with $@. I
don't think the () are necessary, either.
</PRE>
</BLOCKQUOTE>
I got there by trial and error. It looks like if I want to access a variable defined outside the script,<BR>
I need $(VAR) whereby if I define a variable inside the script I need $$VAR toa cess it.<BR>
 It does work, but I hope it's not by accident.
<BLOCKQUOTE TYPE=CITE>
<PRE>

&gt; It's no so bad when you look at it in the Makefile, with a different hair
&gt; do. Just a couple of backslashes.
&gt;
&gt; Last call if reviewers want to remove with-uncommitted-changes.

I'd rather not have it since it doesn't tell me anything useful, but
if other people do want it, that's OK.

</PRE>
</BLOCKQUOTE>
Peter is not too much in favor of it either. I'll remove it and it'll be the &quot;short&quot; solution. If we want more functions and robustness then we should copy the radeonhd one.<BR>
<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>
--
Dan
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>