diff options
author | Gustavo Niemeyer <gustavo@niemeyer.net> | 2011-08-15 14:19:30 -0300 |
---|---|---|
committer | Gustavo Niemeyer <gustavo@niemeyer.net> | 2011-08-15 14:19:30 -0300 |
commit | 220c74984a47a48ff1d4a8047655cf823b31538e (patch) | |
tree | fde6d5f935da7a9908974d8ceaf7327ae8eb662b | |
parent | a2bb0159d6442ce03f5a1f2bbc636a2f526e004a (diff) | |
download | go-220c74984a47a48ff1d4a8047655cf823b31538e.tar.gz go-220c74984a47a48ff1d4a8047655cf823b31538e.zip |
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
-rwxr-xr-x | src/version.bash | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/version.bash b/src/version.bash index e3677a7368..21cfb82095 100755 --- a/src/version.bash +++ b/src/version.bash @@ -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 |