Merge pull request #4025 from ceph/wip-fix-configure-noversion

configure.ac: add --disable-gitversion

Reviewed-by: Kefu Chai <kchai@redhat.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Loic Dachary <ldachary@redhat.com>
This commit is contained in:
Loic Dachary 2015-03-19 11:16:43 +01:00
commit fe25118b73
4 changed files with 118 additions and 47 deletions

View File

@ -279,6 +279,12 @@ else
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])],
[],

View File

@ -3,7 +3,9 @@ include Makefile-env.am
SUBDIRS += ocf java tracing
DIST_SUBDIRS += gmock ocf libs3 java tracing
if NO_GIT_VERSION
export NO_VERSION="yes"
endif
# subdirs
@ -164,7 +166,6 @@ EXTRA_DIST += \
$(srcdir)/init-rbdmap \
$(srcdir)/ceph-clsinfo \
$(srcdir)/make_version \
$(srcdir)/check_version \
$(srcdir)/.git_version \
$(srcdir)/ceph-rbdnamer \
$(srcdir)/test/encoding/readable.sh \
@ -670,19 +671,17 @@ base: core-daemons admin-tools \
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; \
$(srcdir)/make_version -g $(srcdir)/.git_version -c $(srcdir)/ceph_ver.h -n ; \
else \
$(srcdir)/make_version $(srcdir)/.git_version ./ceph_ver.h ; \
$(srcdir)/make_version -g $(srcdir)/.git_version -c $(srcdir)/ceph_ver.h ; \
fi
ceph_ver.c: ./ceph_ver.h
@ -693,7 +692,7 @@ sample.fetch_config: fetch_config
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

View File

@ -1,19 +0,0 @@
#!/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

View File

@ -1,23 +1,108 @@
#!/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 "#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