Simplify version.sh

Also remove some non-POSIX syntax and improve robustness.

As a bonus the script now runs about 2-3 times faster.

`git rev-list --count` could be used to simplify things even further,
but that functionality was added in git 1.7.2 so keep `wc -l` for now
to maintain compatibility with older git versions.
This commit is contained in:
Henrik Gramner 2015-08-08 12:21:54 +02:00 committed by Anton Mitrofanov
parent f7f6af76ef
commit 1a3d963441
2 changed files with 24 additions and 25 deletions

2
configure vendored
View File

@ -1224,7 +1224,7 @@ cat > x264_config.h << EOF
#define X264_CHROMA_FORMAT $config_chroma_format
EOF
${SRCPATH}/version.sh "${SRCPATH}" >> x264_config.h
${SRCPATH}/version.sh >> x264_config.h
if [ "$cli_libx264" = "system" ] ; then
if [ "$shared" = "yes" ]; then

View File

@ -1,29 +1,28 @@
#!/bin/sh
[ -n "$1" ] && cd $1
git_version() {
trap 'rm -f config.git-hash' EXIT
git rev-list HEAD | sort > config.git-hash
LOCALVER=`wc -l config.git-hash | awk '{print $1}'`
if [ $LOCALVER \> 1 ] ; then
VER=`git rev-list origin/master | sort | join config.git-hash - | wc -l | awk '{print $1}'`
VER_DIFF=$(($LOCALVER-$VER))
echo "#define X264_REV $VER"
echo "#define X264_REV_DIFF $VER_DIFF"
if [ $VER_DIFF != 0 ] ; then
VER="$VER+$VER_DIFF"
cd "$(dirname "$0")" >/dev/null && [ -f x264.h ] || exit 1
api="$(grep '#define X264_BUILD' < x264.h | sed 's/^.* \([1-9][0-9]*\).*$/\1/')"
ver="x"
version=""
if [ -d .git ] && command -v git >/dev/null 2>&1 ; then
localver="$(($(git rev-list HEAD | wc -l)))"
if [ "$localver" -gt 1 ] ; then
ver_diff="$(($(git rev-list origin/master..HEAD | wc -l)))"
ver="$((localver-ver_diff))"
echo "#define X264_REV $ver"
echo "#define X264_REV_DIFF $ver_diff"
if [ "$ver_diff" -ne 0 ] ; then
ver="$ver+$ver_diff"
fi
if git status | grep -q "modified:" ; then
ver="${ver}M"
fi
ver="$ver $(git rev-list -n 1 HEAD | cut -c 1-7)"
version=" r$ver"
fi
if git status | grep -q "modified:" ; then
VER="${VER}M"
fi
VER="$VER $(git rev-list HEAD -n 1 | cut -c 1-7)"
VERSION=" r$VER"
fi
}
VER="x"
VERSION=""
[ -d .git ] && (type git >/dev/null 2>&1) && git_version
echo "#define X264_VERSION \"$VERSION\""
API=`grep '#define X264_BUILD' < x264.h | sed -e 's/.* \([1-9][0-9]*\).*/\1/'`
echo "#define X264_POINTVER \"0.$API.$VER\""
echo "#define X264_VERSION \"$version\""
echo "#define X264_POINTVER \"0.$api.$ver\""