ceph/src/make_version
Danny Al-Gaaf cca067efde configure.ac: add --disable-gitversion
During development each git commit cause currently a complete
rebuild of the source tree. By passing --disable-gitversion to
configure we set a generic version string for ceph to prevent
getting after each commit a new version set.

remove src/check_version and replace with a extended version
of src/make_version which allows detecting changes in .git_version
and ceph_ver.h to avoid not needed updates.

This change also forces to call make_version each time to make
sure that changes from configure or the NO_VERSION env variable
are processed.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
2015-03-19 09:38:46 +01:00

109 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
GIT_VERSION_FILE=
CEPH_VER_HEADER=
NO_VERSION=0
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
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"
}
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