diff options
Diffstat (limited to 'src/env.bash')
-rw-r--r-- | src/env.bash | 106 |
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 |