[PATCH util-macros] XORG_GIT_MODULE_VERSION: writes module version in xorg-git-version.h

Peter Hutterer peter.hutterer at who-t.net
Tue Apr 20 23:06:47 PDT 2010


On Mon, Apr 19, 2010 at 10:01:06PM -0400, Gaetan Nadon wrote:
> On Tue, 2010-04-20 at 10:54 +1000, Peter Hutterer wrote:
> 
> > On Mon, Apr 19, 2010 at 11:00:08PM +0200, Julien Cristau wrote:
> > > On Mon, Apr 19, 2010 at 14:52:55 -0400, Gaetan Nadon wrote:
> > > 
> > > > Generates the git module version according to the "git describe HEAD"
> > > > If the git module has pending changes, it appends "-dirty" to the version tag
> > > > 
> > > > Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
> > > > ---
> > > >  xorg-macros.m4.in |   18 ++++++++++++++++++
> > > >  1 files changed, 18 insertions(+), 0 deletions(-)
> > > > 
> > > > diff --git a/xorg-macros.m4.in b/xorg-macros.m4.in
> > > > index 916b472..efb2e53 100644
> > > > --- a/xorg-macros.m4.in
> > > > +++ b/xorg-macros.m4.in
> > > > @@ -1009,3 +1009,21 @@ mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
> > > >  echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
> > > >  AC_SUBST([INSTALL_CMD])
> > > >  ]) # XORG_INSTALL
> > > > +
> > > > +# XORG_GIT_MODULE_VERSION()
> > > > +# -------------------------
> > > > +# Minimum version: 1.8.0
> > > > +#
> > > > +# Generates the git module version according to the "git describe HEAD"
> > > > +# If the git module has pending changes, it appends "-dirty" to the version tag
> > > > +#
> > > > +AC_DEFUN([XORG_GIT_MODULE_VERSION], [
> > > > +GIT_MODULE_VERSION_CMD="VER=\`GIT_DIR=\$(top_srcdir)/.git git describe HEAD 2>/dev/null\`; \
> > > > +DVER=\`GIT_DIR=\$(top_srcdir)/.git git diff-index HEAD 2>/dev/null\`; \
> > > > +OUTSTR=\"\#undef XORG_GIT_VERSION\" ; \
> > > > +OUTFILE=\"xorg-git-version.h\"; \
> > > > +test -n \"\$\$VER\" && OUTSTR=\"\#define XORG_GIT_VERSION \$\$VER\" && test -n \"\$\$DVER\" && OUTSTR=\"\#define XORG_GIT_VERSION \$\$VER-dirty\"; \
> > > > +test -e \"\$\$OUTFILE\" || echo \"\$\$OUTSTR\" > \"\$\$OUTFILE\"; \
> > > > +CONTENT=\`cat \$\$OUTFILE\` && test \"\$\$CONTENT\" = \"\$\$OUTSTR\" || echo \$\$OUTSTR > \$\$OUTFILE;"
> > > > +AC_SUBST([GIT_MODULE_VERSION_CMD])
> > > > +]) # XORG_GIT_MODULE_VERSION
> > 
> > my eyes!
> > 
> > > As I said in reply to the initial patch by Peter I'd like a way to
> > > disable this, because packages might be built from a git tree, which
> > > might be unrelated to the xorg one, or outside of any git tree.  What's
> > > the output like if not building from git?  Does 'make
> > > GIT_MODULE_VERSION_CMD=:' work to disable it (I guess not, because
> > > 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.  Two questions though:
> 
> 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.

I really hope that when I help someone debugging they'd tell me beforehand
if they have local changes. in which case the dirty doesn't help much anyway
because you still don't know what the changes do.
but yeah, doesn't matter either way, I'm fine with it.

> > - 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?
> >  
> 
> 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?

If someone follows git and files a bug (or sends the log) it'll be easy to
see which commit they have locally. So questions like "do you have commit
1234deadbeef in your local repo" aren't needed, reducing the turnaround
time.

> 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.

Acked-by: Peter Hutterer <peter.hutterer at who-t.net> for version 2 but please
make sure that someone else acks it too, automake stuff gives me the creeps.

would also be good checking through Matthias' script from radeonhd for any
obvious use-cases that this patch doesn't cover. It certainly seems more
complex.

Cheers,
  Peter


More information about the xorg-devel mailing list