1
0
mirror of https://github.com/golang/go synced 2024-11-25 05:57:57 -07:00
go/src/env.bash
Russ Cox 71ba47ac9e build: fix noclobber
I got it backwards last time, and somehow
that was leaking into the parent shell?

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/4826054
2011-07-28 19:38:14 -04:00

107 lines
2.4 KiB
Bash

#!/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