aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Niemeyer <gustavo@niemeyer.net>2011-08-15 14:19:30 -0300
committerGustavo Niemeyer <gustavo@niemeyer.net>2011-08-15 14:19:30 -0300
commit220c74984a47a48ff1d4a8047655cf823b31538e (patch)
treefde6d5f935da7a9908974d8ceaf7327ae8eb662b
parenta2bb0159d6442ce03f5a1f2bbc636a2f526e004a (diff)
downloadgo-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-xsrc/version.bash24
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