1
0
mirror of https://github.com/golang/go synced 2024-11-22 08:24:41 -07:00

build: stop early if commands are missing

If we fail due to a missing command (always bison)
during the build, it is running many things in parallel
and the error message gets lost in the noise.
Also diagnose bison++.

$ ./make.bash
Your system's bison is bison++, a buggy copy of the original bison.
Go needs the original bison instead.
See http://golang.org/doc/install.html#ctools
$ sudo apt-get remove bison++
... ridiculous amount of output ...
$ ./make.bash
Cannot find 'bison' on search path.
See http://golang.org/doc/install.html#ctools
$ sudo apt-get install bison
... ridiculous amount of output ...
$ ./make.bash
... works

Fixes #1938.
Fixes #1946.

R=bradfitz
CC=golang-dev
https://golang.org/cl/4528137
This commit is contained in:
Russ Cox 2011-06-13 15:28:54 -04:00
parent 9968090ddd
commit 8d8ac637ee

View File

@ -39,13 +39,56 @@ if [ ! -d "$GOBIN" -a "$GOBIN" != "$GOROOT/bin" ]; then
fi fi
export OLDPATH=$PATH export OLDPATH=$PATH
export PATH="$GOBIN":/bin:/usr/bin:$PATH export PATH="$GOBIN":$PATH
MAKE=make MAKE=make
if ! make --version 2>/dev/null | grep 'GNU Make' >/dev/null; then if ! make --version 2>/dev/null | grep 'GNU Make' >/dev/null; then
MAKE=gmake MAKE=gmake
fi fi
PROGS="
ar
awk
bash
bison
chmod
cp
cut
echo
ed
egrep
gcc
grep
ls
mkdir
mv
pwd
rm
sed
sort
tee
touch
tr
true
uname
uniq
"
for i in bison ed awk gcc $MAKE; 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
# Tried to use . <($MAKE ...) here, but it cannot set environment # Tried to use . <($MAKE ...) here, but it cannot set environment
# variables in the version of bash that ships with OS X. Amazing. # 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') eval $($MAKE --no-print-directory -f Make.inc go-env | egrep 'GOARCH|GOOS|GOHOSTARCH|GOHOSTOS|GO_ENV')