AC_MSG_FAILURE([no suitable crypto library found])
fi
+AC_ARG_ENABLE(gitversion,
+ [AC_HELP_STRING([--enable-gitversion], [build Ceph with git version string])],
+ [], [enable_gitversion=yes])
+
+AM_CONDITIONAL(NO_GIT_VERSION, [test "x$enable_gitversion" = "xno"])
+
AC_ARG_ENABLE([root-make-check],
[AS_HELP_STRING([--enable-root-make-check], [enable make check tests that require root privileges])],
[],
SUBDIRS += ocf java tracing
DIST_SUBDIRS += gmock ocf libs3 java tracing
-
+if NO_GIT_VERSION
+export NO_VERSION="yes"
+endif
# subdirs
$(srcdir)/init-rbdmap \
$(srcdir)/ceph-clsinfo \
$(srcdir)/make_version \
- $(srcdir)/check_version \
$(srcdir)/.git_version \
$(srcdir)/ceph-rbdnamer \
$(srcdir)/test/encoding/readable.sh \
FORCE:
.git_version: FORCE
- $(srcdir)/check_version $(srcdir)/.git_version
+ $(srcdir)/make_version -g $(srcdir)/.git_version
# if NO_VERSION is set, only generate a new ceph_ver.h if there currently
# is none, and call "make_version -n" to fill it with a fixed string.
# Otherwise, set it from the contents of .git_version.
-ceph_ver.h: .git_version
+ceph_ver.h: .git_version FORCE
if [ -n "$$NO_VERSION" ] ; then \
- if [ ! -f ./ceph_ver.h ] ; then \
- $(srcdir)/make_version -n ./ceph_ver.h ; \
- fi; \
- else \
- $(srcdir)/make_version $(srcdir)/.git_version ./ceph_ver.h ; \
+ $(srcdir)/make_version -g $(srcdir)/.git_version -c $(srcdir)/ceph_ver.h -n ; \
+ else \
+ $(srcdir)/make_version -g $(srcdir)/.git_version -c $(srcdir)/ceph_ver.h ; \
fi
ceph_ver.c: ./ceph_ver.h
cp -f $(srcdir)/fetch_config ./sample.fetch_config
dist-hook:
- $(srcdir)/check_version $(srcdir)/.git_version
+ $(srcdir)/make_version -g $(srcdir)/.git_version
CLEANFILES += ceph_ver.h sample.fetch_config
+++ /dev/null
-#!/bin/sh
-
-dname=`dirname $0`
-
-if [ ! -d $dname/../.git ]; then
- echo "not updating .git_version (no $dname/../.git)"
- exit 0
-fi
-
-cur=`cd $dname && git rev-parse HEAD 2>/dev/null; git describe 2>/dev/null`
-[ -e $1 ] && old=`cat $1`
-
-if [ "$cur" != "$old" ]; then
- echo regenerating $1 with $cur
- echo "$cur" > $1
-else
- echo $1 is up to date.
-fi
-
#!/bin/sh
-echo '$1: '$1
+GIT_VERSION_FILE=
+CEPH_VER_HEADER=
+NO_VERSION=0
-if [ "$1" = "-n" ] ; then
- cur="no_version"
- v="Development"
-else
- cur=`head -1 $1`
- v=`tail -1 $1 | cut -c 2-`
-fi
+is_git() {
+ type git > /dev/null 2>&1 || { echo "Could not find git command. Please install. Aborting."; exit 1; }
+ git status > /dev/zero 2>&1;
+ if [ $? -ne 0 ]; then
+ echo "This is no git repository, not updating .git_version"
+ return 1
+ else
+ return 0
+ fi
+}
+
+check_gitversion() {
+ if is_git; then
+ current=`git rev-parse HEAD 2> /dev/null; git describe 2> /dev/null`
+ if [ -f $GIT_VERSION_FILE ] ; then
+ old=`cat $GIT_VERSION_FILE`
+
+ if [ "$current" != "$old" ]; then
+ echo "$current" > $GIT_VERSION_FILE
+ fi
+ else
+ echo "$current" > $GIT_VERSION_FILE
+ fi
+ fi
+}
+
+print_ceph_ver() {
+ # print the content of the ceph_ver.h file
+ if [ $NO_VERSION -eq 1 ]; then
+ ver="no_version"
+ ver_nice="Development"
+ else
+ ver=`head -1 $GIT_VERSION_FILE`
+ ver_nice=`tail -1 $GIT_VERSION_FILE | cut -c 2-`
+ fi
-print_all() {
- echo "#ifndef CEPH_VERSION_H"
- echo "#define CEPH_VERSION_H"
- echo
- echo "#define CEPH_GIT_VER $cur"
- echo "#define CEPH_GIT_NICE_VER \"$v\""
- echo
- echo "#endif"
+ echo "#ifndef CEPH_VERSION_H"
+ echo "#define CEPH_VERSION_H"
+ echo
+ echo "#define CEPH_GIT_VER $ver"
+ echo "#define CEPH_GIT_NICE_VER \"$ver_nice\""
+ echo
+ echo "#endif"
}
-print_all > $2
+set_ceph_ver() {
+ # compare new and old CEPH_VER_HEADER
+ if [ -f $CEPH_VER_HEADER ]; then
+ tmpfile=$(mktemp -t "ceph_ver_h.XXXXXXXXXXXXX")
+ print_ceph_ver > $tmpfile
+ cur_ver=`cat $CEPH_VER_HEADER`
+ new_ver=`cat $tmpfile`
+ if [ "$cur_ver" != "$new_ver" ]; then
+ mv $tmpfile $CEPH_VER_HEADER
+ else
+ rm $tmpfile
+ fi
+ else
+ print_ceph_ver > $CEPH_VER_HEADER
+ fi
+}
+
+usage() {
+ printf "usage: $0 -g FILEPATH [options]\n"
+ printf "\t-g|--git-version-file\tFILEPATH for git version file (e.g. ./src/.git_version)\n"
+ printf "\t-c|--ceph-ver-header\tFILEPATH for ceph version header (e.g. ./src/ceph_ver.h)\n"
+ printf "\t-n|--no-version\t\tdon't generate version from git\n"
+ printf "\t-h|--help\t\tprint this usage instructions\n"
+}
+
+until [ -z "$1" ]; do
+case $1 in
+ -n|--no-version)
+ NO_VERSION=1;
+ ;;
+ -g|--git-version-file)
+ GIT_VERSION_FILE=$2
+ shift;
+ ;;
+ -c|--ceph-ver-header)
+ CEPH_VER_HEADER=$2
+ shift;
+ ;;
+ -h|--help)
+ usage;
+ ;;
+ *)
+ ;;
+esac
+shift
+done;
+
+if [ -n "$GIT_VERSION_FILE" ] ; then
+ if [ -z "$CEPH_VER_HEADER" ] ; then
+ check_gitversion
+ else
+ check_gitversion
+ set_ceph_ver
+ fi
+else
+ usage
+fi