• Russ Cox's avatar
    [dev.cc] cmd/go: fix expansion of 'std', add 'cmd' · 096b294f
    Russ Cox authored
    The wildcard 'std' is defined in documentation to be all the packages
    in the Go standard library. It has also historically matched commands
    in the main repo, but as we implement core commands in Go, that
    becomes problematic. We need a wildcard that means just the library,
    and since 'std' is already documented to have that definition, make it so.
    
    Add a new wildcard 'cmd' for the commands in the main repo ($GOROOT).
    Commands that want both can say 'std cmd' (or 'cmd std') to get the
    effect of the old 'std'.
    
    Update make.bash etc to say both std and cmd most of the time.
    
    Exception: in race.bash, do not install race-enabled versions of
    the actual commands. This avoids trying to write binaries while
    using them, but more importantly it avoids enabling the race
    detector and its associated memory overhead for the already
    memory-hungry compilers.
    
    Change-Id: I26bb06cb13b636dfbe71a015ee0babeb270a0275
    Reviewed-on: https://go-review.googlesource.com/5550
    Run-TryBot: Russ Cox <rsc@golang.org>
    Reviewed-by: default avatarRob Pike <r@golang.org>
    096b294f
race.bat 1.41 KB
:: Copyright 2013 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.

:: race.bash tests the standard library under the race detector.
:: http://golang.org/doc/articles/race_detector.html

@echo off

setlocal

if exist make.bat goto ok
echo race.bat must be run from go\src
:: cannot exit: would kill parent command interpreter
goto end
:ok

set GOROOT=%CD%\..
call make.bat --dist-tool >NUL
if errorlevel 1 goto fail
.\cmd\dist\dist env -w -p >env.bat
if errorlevel 1 goto fail
call env.bat
del env.bat

if %GOHOSTARCH% == amd64 goto continue
echo Race detector is only supported on windows/amd64.
goto fail

:continue
call make.bat --no-banner --no-local
if %GOBUILDFAIL%==1 goto end
echo # go install -race std
go install -race std
if errorlevel 1 goto fail

:: we must unset GOROOT_FINAL before tests, because runtime/debug requires
:: correct access to source code, so if we have GOROOT_FINAL in effect,
:: at least runtime/debug test will fail.
set GOROOT_FINAL=

echo # go test -race -short std
go test -race -short std
if errorlevel 1 goto fail
echo # go test -race -run=nothingplease -bench=.* -benchtime=.1s -cpu=4 std
go test -race -run=nothingplease -bench=.* -benchtime=.1s -cpu=4 std
if errorlevel 1 goto fail
goto succ

:fail
set GOBUILDFAIL=1
echo Fail.
goto end

:succ
echo All tests passed.

:end
if x%GOBUILDEXIT%==x1 exit %GOBUILDFAIL%