ceph/src/make_version
Boris Ranto 7db8a6a1d1 Remove git build-time dependency
The git command is currently only needed in the src/make_version script.
However, we can simply avoid it by assuming that if the git command is
not installed then the current dir is not a git repo.

Signed-off-by: Boris Ranto <branto@redhat.com>
2015-07-08 17:16:29 +02:00

113 lines
2.6 KiB
Bash
Executable File

#!/bin/sh
GIT_VERSION_FILE=
CEPH_VER_HEADER=
NO_VERSION=0
is_git() {
type git > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Could not find git command. Assuming this is not a git repository, not updating .git_version"
return 1
fi
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