[RFC/PATCH] Print git describe output into the log file.
Gaetan Nadon
memsize at videotron.ca
Tue Apr 13 12:15:51 PDT 2010
On Tue, 2010-04-13 at 11:25 +1000, Peter Hutterer wrote:
> Run git describe on build and push the output into xorg-git-version.h. Then
> print that out in the logfile.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> Do we want something like this? Suggestions for less dodgy implementations
> are welcome, but the current one passes distcheck.
>
> GIT-GENERATE-VERSION | 24 ++++++++++++++++++++++++
> Makefile.am | 2 +-
> hw/xfree86/common/xf86Init.c | 5 +++++
> include/Makefile.am | 7 +++++++
> 4 files changed, 37 insertions(+), 1 deletions(-)
> create mode 100755 GIT-GENERATE-VERSION
>
> diff --git a/GIT-GENERATE-VERSION b/GIT-GENERATE-VERSION
> new file mode 100755
> index 0000000..6872a76
> --- /dev/null
> +++ b/GIT-GENERATE-VERSION
> @@ -0,0 +1,24 @@
> +#!/bin/sh
> +# Get the git version if possible and store it in $GITFILE if it differs to
> +# the one contained already.
> +
> +GITFILE="xorg-git-version.h"
> +
> +if ! which git > /dev/null; then
> + VER="Git not available."
> +else
> + VER=`git describe HEAD 2>/dev/null`
> +
> + if test $? -ne 0; then
> + VER="Unknown version or not build from git."
> + fi
> +fi
> +
> +if test -e "$GITFILE"; then
> + FILE_VER=$(sed -e "s/^#define XORG_GIT_VERSION //" < $GITFILE)
> + if test "$FILE_VER" == "$VER"; then
> + exit 0
> + fi
> +fi
> +
> +echo "#define XORG_GIT_VERSION \"$VER\"" > $GITFILE
> diff --git a/Makefile.am b/Makefile.am
> index 8b7a2c8..cce5f23 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -49,7 +49,7 @@ pkgconfigdir = $(libdir)/pkgconfig
> pkgconfig_DATA = xorg-server.pc
> endif
>
> -EXTRA_DIST = xorg-server.pc.in xorg-server.m4 autogen.sh
> +EXTRA_DIST = xorg-server.pc.in xorg-server.m4 autogen.sh GIT-GENERATE-VERSION
>
> DISTCHECK_CONFIGURE_FLAGS=\
> --with-xkb-path=$(XKB_BASE_DIRECTORY) \
> diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
> index 71ac9a9..d37a292 100644
> --- a/hw/xfree86/common/xf86Init.c
> +++ b/hw/xfree86/common/xf86Init.c
> @@ -34,6 +34,8 @@
> #include <xorg-config.h>
> #endif
>
> +#include <xorg-git-version.h>
> +
> #include <stdlib.h>
> #include <errno.h>
>
> @@ -242,6 +244,9 @@ xf86PrintBanner(void)
> xf86ErrorFVerb(0, "\tBefore reporting problems, check "
> ""__VENDORDWEBSUPPORT__"\n"
> "\tto make sure that you have the latest version.\n");
> +#ifdef XORG_GIT_VERSION
> + xf86ErrorFVerb(0, "git version: " XORG_GIT_VERSION "\n");
> +#endif
> }
>
> static void
> diff --git a/include/Makefile.am b/include/Makefile.am
> index eddc86c..e052b8b 100644
> --- a/include/Makefile.am
> +++ b/include/Makefile.am
> @@ -62,6 +62,11 @@ sdk_HEADERS = \
> nodist_sdk_HEADERS = xorg-server.h
> endif
>
> +BUILT_SOURCES = xorg-git-version.h
> +
> +xorg-git-version.h:
> + sh $(top_srcdir)/GIT-GENERATE-VERSION
> +
> AM_CFLAGS = $(DIX_CFLAGS)
>
> EXTRA_DIST = \
> @@ -69,3 +74,5 @@ EXTRA_DIST = \
> eventconvert.h eventstr.h \
> protocol-versions.h \
> xsha1.h
> +
> +DISTCLEANFILES = xorg-git-version.h
When I just run the script from the root dir, I get this:
>~/xorg/src/xserver$ ./GIT-GENERATE-VERSION
test: 22: "xorg-server-1.8.0-40-ge35abc1": unexpected operator
The xorg-git-version.h gets created correctly. The script just need to
be a bit more robust, I guess.
The file xorg-git-version.h should be added to include/.gitignore.
Given that the purpose of this scheme is to "log" the most recent
commit, the xorg-git-version.h should be
updated after the repo has been updated. This isn't the case now. I can
do a git pull with new commits,
rebuild, and still get the same -ge35abc1. Perhaps it should be a PHONY
target like ChangeLog. This would make
the information in log unreliable.
A further improvement would be to run git show on the commit id (e.g.
e35abc1) and write it to the log.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100413/7ce8a738/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <http://lists.x.org/archives/xorg-devel/attachments/20100413/7ce8a738/attachment.pgp>
More information about the xorg-devel
mailing list