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:
parent
9968090ddd
commit
8d8ac637ee
45
src/env.bash
45
src/env.bash
@ -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')
|
||||||
|
Loading…
Reference in New Issue
Block a user