X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=generate-version.sh;h=7bff065c870dd98a58d739e5b87ded02d2c9df96;hb=4d0b87793a047baecf2403455ddca1a82f44a41b;hp=bfd7f1cd1ddb86194e05926157580e34e4709f17;hpb=bf5163e4f07f0666b53b32b6232a4bd81d0d548e;p=sbcl.git diff --git a/generate-version.sh b/generate-version.sh index bfd7f1c..7bff065 100755 --- a/generate-version.sh +++ b/generate-version.sh @@ -2,15 +2,30 @@ # Not a shell script, but something intended to be sourced from shell scripts git_available_p() { # Check that (1) we have git (2) this is a git tree. - (which git >/dev/null 2>/dev/null && git describe >/dev/null 2>/dev/null) + if ( which git >/dev/null 2>/dev/null && git describe >/dev/null 2>/dev/null ) + then + # Check that some of the newer git versions we use are supported. + if [ "0" != `git rev-list HEAD --not HEAD --count 2> /dev/null` ] + then + echo "Too old a git installation." + echo + echo "Your git doesn't support --count option with git rev-list," + echo "which SBCL build requires. Git 1.7.2 or later should work." + exit 1 + else + true + fi + else + false + fi } generate_version() { - if ([ -f version.lisp-expr ] && ! git_available_p) + if [ -f version.lisp-expr -a ! git_available_p ] then # Relase tarball, leave version.lisp-expr alone. return - elif ! git_available_p + elif [ ! git_available_p ] then echo "Can't run 'git describe' and version.lisp-expr is missing." >&2 echo "To fix this, either install git or create a fake version.lisp-expr file." >&2 @@ -19,14 +34,14 @@ generate_version() { exit 1 fi # Build it. - version_head=$(git rev-parse HEAD) + version_head=`git rev-parse HEAD` if [ -z "$SBCL_BUILDING_RELEASE_FROM" ] then version_root="origin/master" else version_root="$SBCL_BUILDING_RELEASE_FROM" fi - version_base=$(git rev-parse "$version_root") + version_base=`git rev-parse "$version_root"` version_tag=`git describe --tags --match="sbcl*" --abbrev=0 $version_base` version_release=`echo $version_tag | sed -e 's/sbcl[_-]//' | sed -e 's/_/\./g'` version_n_root=`git rev-list $version_base --not $version_tag --count`