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>
| ... | ... |
@@ -40,10 +40,20 @@ MAINTAINERCLEANFILES = \ |
| 40 | 40 |
$(srcdir)/depcomp $(srcdir)/aclocal.m4 \ |
| 41 | 41 |
$(srcdir)/config.guess $(srcdir)/config.sub |
| 42 | 42 |
|
| 43 |
+CLEANFILES = \ |
|
| 44 |
+ config-version.h |
|
| 45 |
+ |
|
| 43 | 46 |
EXTRA_DIST = \ |
| 44 | 47 |
contrib \ |
| 45 | 48 |
debug |
| 46 | 49 |
|
| 50 |
+.PHONY: config-version.h |
|
| 51 |
+ |
|
| 52 |
+if GIT_CHECKOUT |
|
| 53 |
+BUILT_SOURCES = \ |
|
| 54 |
+ config-version.h |
|
| 55 |
+endif |
|
| 56 |
+ |
|
| 47 | 57 |
SUBDIRS = build distro include src sample doc tests |
| 48 | 58 |
|
| 49 | 59 |
dist_doc_DATA = \ |
| ... | ... |
@@ -56,6 +66,7 @@ dist_doc_DATA = \ |
| 56 | 56 |
dist_noinst_DATA = \ |
| 57 | 57 |
.gitignore \ |
| 58 | 58 |
.gitattributes \ |
| 59 |
+ config-version.h.in \ |
|
| 59 | 60 |
PORTS \ |
| 60 | 61 |
README.IPv6 TODO.IPv6 \ |
| 61 | 62 |
README.polarssl \ |
| ... | ... |
@@ -78,3 +89,13 @@ if WIN32 |
| 78 | 78 |
rootdir=$(prefix) |
| 79 | 79 |
root_DATA = version.sh |
| 80 | 80 |
endif |
| 81 |
+ |
|
| 82 |
+config-version.h: |
|
| 83 |
+ @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`"; \ |
|
| 84 |
+ $(SED) "s#@CONFIGURE_GIT_REVISION[@]#$${CONFIGURE_GIT_REVISION}#g" "$(srcdir)/config-version.h.in" > config-version.h.tmp
|
|
| 85 |
+ @if ! [ -f config-version.h ] || ! cmp -s config-version.h.tmp config-version.h; then \ |
|
| 86 |
+ echo "replacing config-version.h"; \ |
|
| 87 |
+ mv config-version.h.tmp config-version.h; \ |
|
| 88 |
+ else \ |
|
| 89 |
+ rm -f config-version.h.tmp; \ |
|
| 90 |
+ fi |
| ... | ... |
@@ -300,6 +300,7 @@ PKG_PROG_PKG_CONFIG |
| 300 | 300 |
AC_PROG_CPP |
| 301 | 301 |
AC_PROG_INSTALL |
| 302 | 302 |
AC_PROG_LN_S |
| 303 |
+AC_PROG_SED |
|
| 303 | 304 |
AC_PROG_MAKE_SET |
| 304 | 305 |
|
| 305 | 306 |
AC_ARG_VAR([IFCONFIG], [full path to ipconfig utility]) |
| ... | ... |
@@ -307,11 +308,13 @@ AC_ARG_VAR([ROUTE], [full path to route utility]) |
| 307 | 307 |
AC_ARG_VAR([IPROUTE], [full path to ip utility]) |
| 308 | 308 |
AC_ARG_VAR([NETSTAT], [path to netstat utility]) # tests |
| 309 | 309 |
AC_ARG_VAR([MAN2HTML], [path to man2html utility]) |
| 310 |
+AC_ARG_VAR([GIT], [path to git utility]) |
|
| 310 | 311 |
AC_PATH_PROGS([IFCONFIG], [ifconfig],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin]) |
| 311 | 312 |
AC_PATH_PROGS([ROUTE], [route],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin]) |
| 312 | 313 |
AC_PATH_PROGS([IPROUTE], [ip],, [$PATH:/usr/local/sbin:/usr/sbin:/sbin]) |
| 313 | 314 |
AC_CHECK_PROGS([NETSTAT], [netstat], [netstat], [$PATH:/usr/local/sbin:/usr/sbin:/sbin:/etc]) # tests |
| 314 | 315 |
AC_CHECK_PROGS([MAN2HTML], [man2html]) |
| 316 |
+AC_CHECK_PROGS([GIT], [git]) # optional |
|
| 315 | 317 |
AC_DEFINE_UNQUOTED([IFCONFIG_PATH], ["$IFCONFIG"], [Path to ifconfig tool]) |
| 316 | 318 |
AC_DEFINE_UNQUOTED([IPROUTE_PATH], ["$IPROUTE"], [Path to iproute tool]) |
| 317 | 319 |
AC_DEFINE_UNQUOTED([ROUTE_PATH], ["$ROUTE"], [Path to route tool]) |
| ... | ... |
@@ -802,6 +805,14 @@ PKG_CHECK_MODULES( |
| 802 | 802 |
[] |
| 803 | 803 |
) |
| 804 | 804 |
|
| 805 |
+AC_MSG_CHECKING([git checkout]) |
|
| 806 |
+GIT_CHECKOUT="no" |
|
| 807 |
+if test -n "${GIT}" -a -d "${srcdir}/.git"; then
|
|
| 808 |
+ AC_DEFINE([HAVE_CONFIG_VERSION_H], [1], [extra version available in config-version.h]) |
|
| 809 |
+ GIT_CHECKOUT="yes" |
|
| 810 |
+fi |
|
| 811 |
+AC_MSG_RESULT([${GIT_CHECKOUT}])
|
|
| 812 |
+ |
|
| 805 | 813 |
if test -n "${SP_PLATFORM_WINDOWS}"; then
|
| 806 | 814 |
AC_DEFINE_UNQUOTED([PATH_SEPARATOR], ['\\\\'], [Path separator]) #" |
| 807 | 815 |
AC_DEFINE_UNQUOTED([PATH_SEPARATOR_STR], ["\\\\"], [Path separator]) #" |
| ... | ... |
@@ -949,6 +960,7 @@ AC_SUBST([OPTIONAL_PKCS11_HELPER_CFLAGS]) |
| 949 | 949 |
AC_SUBST([OPTIONAL_PKCS11_HELPER_LIBS]) |
| 950 | 950 |
|
| 951 | 951 |
AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"])
|
| 952 |
+AM_CONDITIONAL([GIT_CHECKOUT], [test "${GIT_CHECKOUT}" = "yes"])
|
|
| 952 | 953 |
|
| 953 | 954 |
sampledir="\$(docdir)/sample" |
| 954 | 955 |
AC_SUBST([sampledir]) |
| ... | ... |
@@ -35,6 +35,9 @@ |
| 35 | 35 |
#elif defined(_MSC_VER) |
| 36 | 36 |
#include "config-msvc.h" |
| 37 | 37 |
#endif |
| 38 |
+#ifdef HAVE_CONFIG_VERSION_H |
|
| 39 |
+#include "config-version.h" |
|
| 40 |
+#endif |
|
| 38 | 41 |
|
| 39 | 42 |
#include "syshead.h" |
| 40 | 43 |
|
| ... | ... |
@@ -3481,6 +3484,9 @@ usage_version (void) |
| 3481 | 3481 |
#ifdef CONFIGURE_DEFINES |
| 3482 | 3482 |
msg (M_INFO|M_NOPREFIX, "Compile time defines: %s", CONFIGURE_DEFINES); |
| 3483 | 3483 |
#endif |
| 3484 |
+#ifdef CONFIGURE_GIT_REVISION |
|
| 3485 |
+ msg (M_INFO|M_NOPREFIX, "git revision: %s", CONFIGURE_GIT_REVISION); |
|
| 3486 |
+#endif |
|
| 3484 | 3487 |
#endif |
| 3485 | 3488 |
openvpn_exit (OPENVPN_EXIT_STATUS_USAGE); /* exit point */ |
| 3486 | 3489 |
} |