]> Cypherpunks.ru repositories - gostls13.git/commitdiff
build: use cmd/dist
authorRuss Cox <rsc@golang.org>
Sat, 4 Feb 2012 05:54:08 +0000 (00:54 -0500)
committerRuss Cox <rsc@golang.org>
Sat, 4 Feb 2012 05:54:08 +0000 (00:54 -0500)
R=bradfitz, ality, r, r, iant, mikioh.mikioh
CC=golang-dev
https://golang.org/cl/5615058

src/all.bash
src/clean.bash
src/env.bash [deleted file]
src/make.bash
src/run.bash
src/sudo.bash
test/run

index 00110d2da9bcc9eaaf58e57a38fdf86820cf5b8c..d80a09d11623606445aefc9a9a71a1c705e11127 100755 (executable)
@@ -8,7 +8,6 @@ if [ ! -f make.bash ]; then
        echo 'all.bash must be run from $GOROOT/src' 1>&2
        exit 1
 fi
-. ./make.bash
-bash run.bash --no-env --no-rebuild
-installed  # function defined by make.bash
-
+. ./make.bash --no-banner
+bash run.bash --no-rebuild
+../bin/tool/dist banner  # print build info
index 96fcaf795b31ae21e44e8e59f7d96bf5173234fa..958ff73696ff7ff04a09155f0ceb595972c10c58 100755 (executable)
@@ -5,34 +5,11 @@
 
 set -e
 
-if [ ! -f env.bash ]; then
-       echo 'clean.bash must be run from $GOROOT/src' 1>&2
+if [ ! -x ../bin/tool/dist ]; then
+       echo 'cannot find ../bin/tool/dist; nothing to clean' >&2
        exit 1
 fi
-. ./env.bash
-if [ ! -f Make.inc ] ; then
-    GOROOT_FINAL=${GOROOT_FINAL:-$GOROOT}
-    sed 's!@@GOROOT@@!'"$GOROOT_FINAL"'!' Make.inc.in >Make.inc
-fi
-
-if [ "$1" != "--nopkg" ]; then
-       rm -rf "$GOROOT"/pkg/${GOOS}_$GOARCH
-fi
-rm -f "$GOROOT"/lib/*.a
-for i in lib9 libbio libmach cmd
-do
-       # Do not use gomake here. It may not be available.
-       $MAKE -C "$GOROOT/src/$i" clean
-done
 
-if [ -x "$GOBIN/go" ]; then
-       go clean std || true  # go command might not know about clean
-       
-       # TODO: Make clean work in directories outside $GOPATH
-       true || go clean \
-               ../misc/cgo/gmp ../misc/cgo/stdio \
-               ../misc/cgo/life ../misc/cgo/test \
-               ../misc/dashboard/builder ../misc/goplay\
-               ../doc/codelab/wiki\
-               ../test/bench/shootout ../test/bench/garbage ../test/bench/go1
-fi
+eval $(../bin/tool/dist env)
+"$GOBIN/go" clean -i std
+../bin/tool/dist clean
diff --git a/src/env.bash b/src/env.bash
deleted file mode 100644 (file)
index 3ae4f25..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/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
-       $MAKE
-       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|CGO_ENABLED')
-
-# 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
index 9b4377070464bcd5492d66e8a4cbd00f7cbf4f5e..1c29568fdc41cf49c3cac463f7497bd10e32f436 100755 (executable)
@@ -4,12 +4,12 @@
 # license that can be found in the LICENSE file.
 
 set -e
-if [ ! -f env.bash ]; then
+if [ ! -f run.bash ]; then
        echo 'make.bash must be run from $GOROOT/src' 1>&2
        exit 1
 fi
-. ./env.bash
 
+# Test for bad ld.
 if ld --version 2>&1 | grep 'gold.* 2\.20' >/dev/null; then
        echo 'ERROR: Your system has gold 2.20 installed.'
        echo 'This version is shipped by Ubuntu even though'
@@ -21,48 +21,9 @@ if ld --version 2>&1 | grep 'gold.* 2\.20' >/dev/null; then
        exit 1
 fi
 
-# Create target directories
-mkdir -p "$GOROOT/bin/tool"
-mkdir -p "$GOROOT/pkg"
-
-# Remove old, pre-tool binaries.
-rm -rf "$GOROOT"/bin/go-tool
-rm -f "$GOROOT"/bin/[568][acgl]
-rm -f "$GOROOT"/bin/{6cov,6nm,cgo,ebnflint,goapi,gofix,goinstall,gomake,gopack,gopprof,gotest,gotype,govet,goyacc,quietgcc}
-
-# If GOBIN is set and it has a Go compiler, it must also be cleaned.
-if [ -n "GOBIN" ]; then
-       if [ -x "$GOBIN"/5g -o -x "$GOBIN"/6g -o -x "$GOBIN"/8g ]; then
-               rm -f "$GOBIN"/[568][acgl]
-               rm -f "$GOBIN"/{6cov,6nm,cgo,ebnflint,goapi,gofix,goinstall,gomake,gopack,gopprof,gotest,gotype,govet,goyacc,quietgcc}
-       fi
-fi
-
-GOROOT_FINAL=${GOROOT_FINAL:-$GOROOT}
-
-MAKEFLAGS=${MAKEFLAGS:-"-j4"}
-export MAKEFLAGS
-unset CDPATH   # in case user has it set
-
-rm -f "$GOBIN"/quietgcc
-rm -f "$GOROOT/bin/tool/quietgcc"
-CC=${CC:-gcc}
-export CC
-sed -e "s|@CC@|$CC|" < "$GOROOT"/src/quietgcc.bash > "$GOROOT"/bin/tool/quietgcc
-chmod +x "$GOROOT"/bin/tool/quietgcc
-
-export GOMAKE="$GOROOT"/bin/tool/make
-rm -f "$GOBIN"/gomake
-rm -f "$GOMAKE"
-(
-       echo '#!/bin/sh'
-       echo 'export GOROOT=${GOROOT:-'$GOROOT_FINAL'}'
-       echo 'exec '$MAKE' "$@"'
-) >"$GOMAKE"
-chmod +x "$GOMAKE"
-
-# on Fedora 16 the selinux filesystem is mounted at /sys/fs/selinux,
-# so loop through the possible selinux mount points
+# Test for bad SELinux.
+# On Fedora 16 the selinux filesystem is mounted at /sys/fs/selinux,
+# so loop through the possible selinux mount points.
 for se_mount in /selinux /sys/fs/selinux
 do
        if [ -d $se_mount -a -f $se_mount/booleans/allow_execstack -a -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then
@@ -82,67 +43,23 @@ do
        fi
 done
 
-bash "$GOROOT"/src/clean.bash
-
-# pkg builds runtime/cgo and the Go programs in cmd.
-for i in lib9 libbio libmach cmd
-do
-       echo; echo; echo %%%% making $i %%%%; echo
-       "$GOMAKE" -C $i install
-done
-
-echo; echo; echo %%%% making runtime generated files %%%%; echo
-
-(
-       cd "$GOROOT"/src/pkg/runtime
-       ./autogen.sh
-       "$GOMAKE" install; "$GOMAKE" clean # copy runtime.h to pkg directory
-) || exit 1
+# Finally!  Run the build.
 
+echo '# Building C bootstrap tool.'
+mkdir -p ../bin/tool
+gcc -O2 -Wall -Werror -o ../bin/tool/dist -Icmd/dist cmd/dist/*.c
 echo
-echo '# Building go_bootstrap command from bootstrap script.'
-if ! ./buildscript/${GOOS}_$GOARCH.sh; then
-       echo '# Bootstrap script failed.'
-       if [ ! -x "$GOBIN/go" ]; then
-               exit 1
-       fi
-       echo '# Regenerating bootstrap script using pre-existing go binary.'
-       ./buildscript.sh
-       ./buildscript/${GOOS}_$GOARCH.sh
-fi
-
-# Clean what clean.bash couldn't.
-go_bootstrap clean std
-
-echo '# Building Go code.'
-go_bootstrap install -a -v std
-rm -f "$GOBIN/go_bootstrap"
 
-# Print post-install messages.
-# Implemented as a function so that all.bash can repeat the output
-# after run.bash finishes running all the tests.
-installed() {
-       eval $("$GOMAKE" --no-print-directory -f Make.inc go-env)
-       echo
-       echo ---
-       echo Installed Go for $GOOS/$GOARCH in "$GOROOT".
-       echo Installed commands in "$GOBIN".
-       case "$OLDPATH" in
-       "$GOBIN:"* | *":$GOBIN" | *":$GOBIN:"*)
-               ;;
-       *)
-               echo '***' "You need to add $GOBIN to your "'$PATH.' '***'
-       esac
-       if [ "$(uname)" = "Darwin" ]; then
-               echo
-               echo On OS X the debuggers must be installed setgrp procmod.
-               echo Read and run ./sudo.bash to install the debuggers.
-       fi
-       if [ "$GOROOT_FINAL" != "$GOROOT" ]; then
-               echo
-               echo The binaries expect "$GOROOT" to be copied or moved to "$GOROOT_FINAL".
-       fi
-}
+echo '# Building compilers and Go bootstrap tool.'
+../bin/tool/dist bootstrap -v # builds go_bootstrap
+echo
 
-(installed)  # run in sub-shell to avoid polluting environment
+echo '# Building packages and commands.'
+../bin/tool/go_bootstrap clean std
+../bin/tool/go_bootstrap install -a -v std
+rm -f ../bin/tool/go_bootstrap
+echo
 
+if [ "$1" != "--no-banner" ]; then
+       ../bin/tool/dist banner
+fi
index 08c1feb18718f2b54bb0823c421a74feee655ca6..8f282249fb832265c36db454843ad31d4ea277b5 100755 (executable)
@@ -4,53 +4,40 @@
 # license that can be found in the LICENSE file.
 
 set -e
-if [ "$1" = "--no-env" ]; then
-       # caller has already run env.bash
-       shift
-else
-       . ./env.bash
-fi
 
-unset MAKEFLAGS  # single-threaded make
+eval $(../bin/tool/dist env -p)
+
 unset CDPATH   # in case user has it set
 
 # no core files, please
 ulimit -c 0
 
-# allow make.bash to avoid double-build of everything
+# allow all.bash to avoid double-build of everything
 rebuild=true
 if [ "$1" = "--no-rebuild" ]; then
-       rebuild=false
        shift
-fi
-               
-xcd() {
-       echo
-       echo --- cd $1
-       builtin cd "$GOROOT"/src/$1
-}
-
-if $rebuild; then
-       echo
-       echo '# Package builds'
+else
+       echo '# Building packages and commands.'
        time go install -a -v std
+       echo
 fi
 
-echo
-echo '# Package tests'
+echo '# Testing packages.'
 time go test std -short -timeout=120s
-
 echo
+
 echo '# runtime -cpu=1,2,4'
 go test runtime -short -timeout=120s -cpu=1,2,4
-
 echo
+
 echo '# sync -cpu=10'
 go test sync -short -timeout=120s -cpu=10
 
-echo
-echo '# Build bootstrap scripts'
-./buildscript.sh
+xcd() {
+       echo
+       echo --- cd $1
+       builtin cd "$GOROOT"/src/$1
+}
 
 BROKEN=true
 
index 3e4843dc28f0594e8bb2b193141bd5c035280f71..369505d2f644e6566aa74f7fd8e135f304fa9acb 100755 (executable)
@@ -23,7 +23,7 @@ do
        # Remove old binaries if present
        sudo rm -f /usr/local/bin/6$i
        # Install new binaries
-       sudo cp "$GOROOT"/src/cmd/$i/$i /usr/local/bin/go$i
+       sudo cp "$GOROOT"/bin/tool/$i /usr/local/bin/go$i
        sudo chgrp procmod /usr/local/bin/go$i
        sudo chmod g+s /usr/local/bin/go$i
 done
index afc75c19d06c3edb52c74b13f162e71c6561017d..714520aee379246534b883c000ff6378dcbaa8da 100755 (executable)
--- a/test/run
+++ b/test/run
@@ -3,8 +3,8 @@
 # Use of this source code is governed by a BSD-style
 # license that can be found in the LICENSE file.
 
-eval $(../bin/tool/make --no-print-directory -f ../src/Make.inc go-env)
-
+eval $(../bin/tool/dist env)
+export GOARCH GOOS GOROOT
 export E=
 
 case X"$GOARCH" in