1
0
mirror of https://github.com/golang/go synced 2024-11-21 22:14:41 -07:00

build: support versioning without hg

CL 4873048 introduced the ability to build without hg and
getting an "unknown" version.  While this approach works
to avoid the hg dependency, it also means that every
exported tree that is built without hg or .hg will have not
only missing information, but will also be compatible to
one another.  Considering that it is a common practice to
remove the VCS data in distributions, I suggest we don't
take this approach to avoid its consequences.

This CL fixes the same problem in a different way: if a
VERSION file at the top of the tree exists, use it at
all times.  If it doesn't, fall back to using information
from hg necessarily, and fail if that's not possible.  The
error message when VERSION and hg are not available
instructs users to handle it properly.

The VERSION file can be generated with
"src/version.bash -save" while hg is still around.

R=golang-dev, rsc, gustavo
CC=golang-dev
https://golang.org/cl/4897043
This commit is contained in:
Gustavo Niemeyer 2011-08-15 14:19:30 -03:00
parent a2bb0159d6
commit 220c74984a

View File

@ -3,13 +3,21 @@
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
# Check that we can use 'hg'
if ! hg version > /dev/null 2>&1; then
echo 'unable to report version: hg not installed' 1>&2
echo 'unknown'
GOROOT=$(cd `dirname $0`/..; pwd)
# If a version file created by -save is available, use it
if [ -f "$GOROOT/VERSION" ]; then
cat $GOROOT/VERSION
exit 0
fi
# Otherwise, if hg doesn't work for whatever reason, fail
if [ ! -d "$GOROOT/.hg" ] || ! hg version > /dev/null 2>&1; then
echo 'Unable to report version: hg and VERSION file missing' 1>&2
echo 'Generate VERSION with `src/version.bash -save` while hg is usable' 1>&2
exit 2
fi
# Get numerical revision
VERSION=$(hg identify -n 2>/dev/null)
if [ $? != 0 ]; then
@ -35,5 +43,9 @@ if [ "$TAG" != "" ]; then
VERSION="$TAG $VERSION"
fi
echo $VERSION
if [ "$1" = "-save" ]; then
echo $VERSION > $GOROOT/VERSION
echo "Saved '$VERSION' to $GOROOT/VERSION" 1>&2
else
echo $VERSION
fi