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
Vendored
+1 -1
View File
@@ -1224,7 +1224,7 @@ cat > x264_config.h << EOF
#define X264_CHROMA_FORMAT $config_chroma_format #define X264_CHROMA_FORMAT $config_chroma_format
EOF EOF
${SRCPATH}/version.sh "${SRCPATH}" >> x264_config.h ${SRCPATH}/version.sh >> x264_config.h
if [ "$cli_libx264" = "system" ] ; then if [ "$cli_libx264" = "system" ] ; then
if [ "$shared" = "yes" ]; then if [ "$shared" = "yes" ]; then
+23 -24
View File
@@ -1,29 +1,28 @@
#!/bin/sh #!/bin/sh
[ -n "$1" ] && cd $1
git_version() { cd "$(dirname "$0")" >/dev/null && [ -f x264.h ] || exit 1
trap 'rm -f config.git-hash' EXIT
git rev-list HEAD | sort > config.git-hash api="$(grep '#define X264_BUILD' < x264.h | sed 's/^.* \([1-9][0-9]*\).*$/\1/')"
LOCALVER=`wc -l config.git-hash | awk '{print $1}'` ver="x"
if [ $LOCALVER \> 1 ] ; then version=""
VER=`git rev-list origin/master | sort | join config.git-hash - | wc -l | awk '{print $1}'`
VER_DIFF=$(($LOCALVER-$VER)) if [ -d .git ] && command -v git >/dev/null 2>&1 ; then
echo "#define X264_REV $VER" localver="$(($(git rev-list HEAD | wc -l)))"
echo "#define X264_REV_DIFF $VER_DIFF" if [ "$localver" -gt 1 ] ; then
if [ $VER_DIFF != 0 ] ; then ver_diff="$(($(git rev-list origin/master..HEAD | wc -l)))"
VER="$VER+$VER_DIFF" 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 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 fi
}
VER="x" echo "#define X264_VERSION \"$version\""
VERSION="" echo "#define X264_POINTVER \"0.$api.$ver\""
[ -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\""