]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
build: add git revision to --version output if build from git repository
authorAlon Bar-Lev <alon.barlev@gmail.com>
Sat, 5 May 2012 06:39:42 +0000 (09:39 +0300)
committerDavid Sommerseth <davids@redhat.com>
Fri, 1 Jun 2012 13:34:49 +0000 (15:34 +0200)
If source is located at git repository, acquire branch and revision
of head to be printed at --version output.

Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
Acked-by: David Sommerseth <davids@redhat.com>
Message-Id: 1336199983-9916-1-git-send-email-alon.barlev@gmail.com
URL: http://article.gmane.org/gmane.network.openvpn.devel/6431
Signed-off-by: David Sommerseth <davids@redhat.com>
.gitignore
Makefile.am
compat.m4
config-version.h.in [new file with mode: 0644]
configure.ac
src/openvpn/options.c

index f068d587e30661610eb6be543a75b20835785947..f762089d945012480b5671122427072fcc38e90d 100644 (file)
@@ -51,3 +51,4 @@ doc/openvpn.8.html
 distro/rpm/openvpn.spec
 tests/t_client.sh
 src/openvpn/openvpn
+config-version.h
index 7579f7281a3ffc17df4512e097cfe61eed9b541d..c5805797e7165ef88d4a4d82e8eafe1c2b9a9b08 100644 (file)
@@ -40,10 +40,20 @@ MAINTAINERCLEANFILES = \
        $(srcdir)/depcomp $(srcdir)/aclocal.m4 \
        $(srcdir)/config.guess $(srcdir)/config.sub
 
+CLEANFILES = \
+       config-version.h
+
 EXTRA_DIST = \
        contrib \
        debug
 
+.PHONY: config-version.h
+
+if GIT_CHECKOUT
+BUILT_SOURCES = \
+       config-version.h
+endif
+
 SUBDIRS = build distro include src sample doc tests
 
 dist_doc_DATA = \
@@ -56,6 +66,7 @@ dist_doc_DATA = \
 dist_noinst_DATA = \
        .gitignore \
        .gitattributes \
+       config-version.h.in \
        PORTS \
        README.IPv6 TODO.IPv6 \
        README.polarssl \
@@ -78,3 +89,13 @@ if WIN32
 rootdir=$(prefix)
 root_DATA = version.sh
 endif
+
+config-version.h:
+       @CONFIGURE_GIT_REVISION="`GIT_DIR=\"$(top_srcdir)/.git\" $(GIT) rev-parse --symbolic-full-name HEAD`/`GIT_DIR=\"$(top_srcdir)/.git\" $(GIT) rev-parse --short=16 HEAD`"; \
+               $(SED) "s#@CONFIGURE_GIT_REVISION[@]#$${CONFIGURE_GIT_REVISION}#g" "$(srcdir)/config-version.h.in" > config-version.h.tmp
+       @if ! [ -f config-version.h ] || ! cmp -s config-version.h.tmp config-version.h; then \
+               echo "replacing config-version.h"; \
+               mv config-version.h.tmp config-version.h; \
+       else \
+               rm -f config-version.h.tmp; \
+       fi
index d5c01f76615f5a222fc962d08c30b6db179ca49d..4c132544c37381ebaa8846c41a8fdb5cffbe39b2 100644 (file)
--- a/compat.m4
+++ b/compat.m4
@@ -42,6 +42,11 @@ ifdef(
        ,
        [AC_DEFUN([AC_USE_SYSTEM_EXTENSIONS], [GNU_SOURCE])]
 )
+ifdef(
+       [AC_PROG_SED],
+       ,
+       [AC_DEFUN([AC_PROG_SED], [AC_CHECK_PROGS([SED], [sed])])]
+)
 ifdef(
        [AC_TYPE_INT8_T],
        ,
diff --git a/config-version.h.in b/config-version.h.in
new file mode 100644 (file)
index 0000000..27ee36a
--- /dev/null
@@ -0,0 +1 @@
+#define CONFIGURE_GIT_REVISION "@CONFIGURE_GIT_REVISION@"
index cf282a8709681b298fc5308707977413dfc24604..3c1757bd6bd0ab2c7bcfcca71c2bd953b98c0716 100644 (file)
@@ -300,6 +300,7 @@ PKG_PROG_PKG_CONFIG
 AC_PROG_CPP
 AC_PROG_INSTALL
 AC_PROG_LN_S
+AC_PROG_SED
 AC_PROG_MAKE_SET
 
 AC_ARG_VAR([IFCONFIG], [full path to ipconfig utility])
@@ -307,11 +308,13 @@ AC_ARG_VAR([ROUTE], [full path to route utility])
 AC_ARG_VAR([IPROUTE], [full path to ip utility])
 AC_ARG_VAR([NETSTAT], [path to netstat utility]) # tests
 AC_ARG_VAR([MAN2HTML], [path to man2html utility])
+AC_ARG_VAR([GIT], [path to git utility])
 AC_PATH_PROGS([IFCONFIG], [ifconfig],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin])
 AC_PATH_PROGS([ROUTE], [route],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin])
 AC_PATH_PROGS([IPROUTE], [ip],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin])
 AC_CHECK_PROGS([NETSTAT], [netstat], [netstat], [$PATH:/usr/local/sbin:/usr/sbin:/sbin:/etc]) # tests
 AC_CHECK_PROGS([MAN2HTML], [man2html])
+AC_CHECK_PROGS([GIT], [git]) # optional
 AC_DEFINE_UNQUOTED([IFCONFIG_PATH], ["$IFCONFIG"], [Path to ifconfig tool])
 AC_DEFINE_UNQUOTED([IPROUTE_PATH], ["$IPROUTE"], [Path to iproute tool])
 AC_DEFINE_UNQUOTED([ROUTE_PATH], ["$ROUTE"], [Path to route tool])
@@ -802,6 +805,14 @@ PKG_CHECK_MODULES(
        []
 )
 
+AC_MSG_CHECKING([git checkout])
+GIT_CHECKOUT="no"
+if test -n "${GIT}" -a -d "${srcdir}/.git"; then
+       AC_DEFINE([HAVE_CONFIG_VERSION_H], [1], [extra version available in config-version.h])
+       GIT_CHECKOUT="yes"
+fi
+AC_MSG_RESULT([${GIT_CHECKOUT}])
+
 if test -n "${SP_PLATFORM_WINDOWS}"; then
        AC_DEFINE_UNQUOTED([PATH_SEPARATOR], ['\\\\'], [Path separator]) #"
        AC_DEFINE_UNQUOTED([PATH_SEPARATOR_STR], ["\\\\"], [Path separator]) #"
@@ -949,6 +960,7 @@ AC_SUBST([OPTIONAL_PKCS11_HELPER_CFLAGS])
 AC_SUBST([OPTIONAL_PKCS11_HELPER_LIBS])
 
 AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"])
+AM_CONDITIONAL([GIT_CHECKOUT], [test "${GIT_CHECKOUT}" = "yes"])
 
 sampledir="\$(docdir)/sample"
 AC_SUBST([sampledir])
index 7769625a16bf0c6cb8314158b90b2a128cde75ea..4ee2f31852f4159a8c4323a802936c497fc81764 100644 (file)
@@ -35,6 +35,9 @@
 #elif defined(_MSC_VER)
 #include "config-msvc.h"
 #endif
+#ifdef HAVE_CONFIG_VERSION_H
+#include "config-version.h"
+#endif
 
 #include "syshead.h"
 
@@ -3481,6 +3484,9 @@ usage_version (void)
 #ifdef CONFIGURE_DEFINES
   msg (M_INFO|M_NOPREFIX, "Compile time defines: %s", CONFIGURE_DEFINES);
 #endif
+#ifdef CONFIGURE_GIT_REVISION
+  msg (M_INFO|M_NOPREFIX, "git revision: %s", CONFIGURE_GIT_REVISION);
+#endif
 #endif
   openvpn_exit (OPENVPN_EXIT_STATUS_USAGE); /* exit point */
 }