[x264-devel] Simplify version.sh
Henrik Gramner
git at videolan.org
Wed Aug 19 21:16:14 CEST 2015
x264 | branch: master | Henrik Gramner <henrik at gramner.com> | Sat Aug 8 12:21:54 2015 +0200| [1a3d963441eaad25972763423d60158f597c5f65] | committer: Anton Mitrofanov
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.
> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=1a3d963441eaad25972763423d60158f597c5f65
---
configure | 2 +-
version.sh | 47 +++++++++++++++++++++++------------------------
2 files changed, 24 insertions(+), 25 deletions(-)
diff --git a/configure b/configure
index aa2a368..486b1a9 100755
--- a/configure
+++ b/configure
@@ -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
diff --git a/version.sh b/version.sh
index 682bcba..178fc95 100755
--- a/version.sh
+++ b/version.sh
@@ -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"
- fi
- if git status | grep -q "modified:" ; then
- VER="${VER}M"
+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
- 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\""
More information about the x264-devel
mailing list