summaryrefslogtreecommitdiff
path: root/src/env.bash
diff options
context:
space:
mode:
Diffstat (limited to 'src/env.bash')
-rw-r--r--src/env.bash106
1 files changed, 106 insertions, 0 deletions
diff --git a/src/env.bash b/src/env.bash
new file mode 100644
index 000000000..de446bf47
--- /dev/null
+++ b/src/env.bash
@@ -0,0 +1,106 @@
+#!/usr/bin/env bash
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# If set to a Windows-style path convert to an MSYS-Unix
+# one using the built-in shell commands.
+if [[ "$GOROOT" == *:* ]]; then
+ GOROOT=$(cd "$GOROOT"; pwd)
+fi
+
+if [[ "$GOBIN" == *:* ]]; then
+ GOBIN=$(cd "$GOBIN"; pwd)
+fi
+
+export GOROOT=${GOROOT:-$(cd ..; pwd)}
+
+if ! test -f "$GOROOT"/include/u.h
+then
+ echo '$GOROOT is not set correctly or not exported: '$GOROOT 1>&2
+ exit 1
+fi
+
+# Double-check that we're in $GOROOT, for people with multiple Go trees.
+# Various aspects of the build cd into $GOROOT-rooted paths,
+# making it easy to jump to a different tree and get confused.
+DIR1=$(cd ..; pwd)
+DIR2=$(cd "$GOROOT"; pwd)
+if [ "$DIR1" != "$DIR2" ]; then
+ echo 'Suspicious $GOROOT '"$GOROOT"': does not match current directory.' 1>&2
+ exit 1
+fi
+
+export GOBIN=${GOBIN:-"$GOROOT/bin"}
+if [ ! -d "$GOBIN" -a "$GOBIN" != "$GOROOT/bin" ]; then
+ echo '$GOBIN is not a directory or does not exist' 1>&2
+ echo 'create it or set $GOBIN differently' 1>&2
+ exit 1
+fi
+
+export OLDPATH=$PATH
+export PATH="$GOBIN":$PATH
+
+MAKE=make
+if ! make --version 2>/dev/null | grep 'GNU Make' >/dev/null; then
+ MAKE=gmake
+fi
+
+PROGS="
+ ar
+ awk
+ bash
+ bison
+ chmod
+ cp
+ cut
+ echo
+ egrep
+ gcc
+ grep
+ ls
+ mkdir
+ mv
+ pwd
+ rm
+ sed
+ sort
+ tee
+ touch
+ tr
+ true
+ uname
+ uniq
+"
+
+for i in $PROGS; do
+ if ! which $i >/dev/null 2>&1; then
+ echo "Cannot find '$i' on search path." 1>&2
+ echo "See http://golang.org/doc/install.html#ctools" 1>&2
+ exit 1
+ fi
+done
+
+if bison --version 2>&1 | grep 'bison++' >/dev/null 2>&1; then
+ echo "Your system's 'bison' is bison++."
+ echo "Go needs the original bison instead." 1>&2
+ echo "See http://golang.org/doc/install.html#ctools" 1>&2
+ exit 1
+fi
+
+# Issue 2020: some users configure bash to default to
+# set -o noclobber
+# which makes >x fail if x already exists. Restore sanity.
+set +o noclobber
+
+# Tried to use . <($MAKE ...) here, but it cannot set environment
+# variables in the version of bash that ships with OS X. Amazing.
+eval $($MAKE --no-print-directory -f Make.inc go-env | egrep 'GOARCH|GOOS|GOHOSTARCH|GOHOSTOS|GO_ENV')
+
+# Shell doesn't tell us whether make succeeded,
+# so Make.inc generates a fake variable name.
+if [ "$MAKE_GO_ENV_WORKED" != 1 ]; then
+ echo 'Did not find Go environment variables.' 1>&2
+ exit 1
+fi
+unset MAKE_GO_ENV_WORKED