cmd/go: first piece of tool rearrangement
1) create go-tool dir in make.bash
2) clean up stale binaries in make.bash
3) add 'tool' command to go
4) convert goyacc->yacc as a first test tool
Since goyacc stands alone, it's a safe trial.
R=rsc
CC=golang-dev
https://golang.org/cl/5576061
diff --git a/src/Make.tool b/src/Make.tool
new file mode 100644
index 0000000..fdbb4dd
--- /dev/null
+++ b/src/Make.tool
@@ -0,0 +1,49 @@
+# 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.
+
+ifeq ($(GOOS),windows)
+TARG:=$(TARG).exe
+endif
+
+# Tools always go into $GOROOT/bin/go-tool
+TOOLDIR=$(QUOTED_GOROOT)/bin/go-tool
+
+all: $(TARG)
+
+include $(QUOTED_GOROOT)/src/Make.common
+
+PREREQ+=$(patsubst %,%.make,$(DEPS))
+
+$(TARG): _go_.$O
+ $(LD) $(LDIMPORTS) -o $@ _go_.$O
+
+_go_.$O: $(GOFILES) $(PREREQ)
+ $(GC) $(GCFLAGS) $(GCIMPORTS) -o $@ $(GOFILES)
+
+install: $(TOOLDIR)/$(TARG)
+
+$(TOOLDIR)/$(TARG): $(TARG)
+ mkdir -p $(TOOLDIR) && cp -f $(TARG) $(TOOLDIR)
+
+CLEANFILES+=$(TARG) _test _testmain.go test.out build.out
+
+nuke: clean
+ rm -f $(TOOLDIR)/$(TARG)
+
+# for gotest
+testpackage: _test/main.a
+
+testpackage-clean:
+ rm -f _test/main.a _gotest_.$O
+
+_test/main.a: _gotest_.$O
+ @mkdir -p _test
+ rm -f $@
+ gopack grc $@ _gotest_.$O
+
+_gotest_.$O: $(GOFILES) $(GOTESTFILES)
+ $(GC) $(GCFLAGS) $(GCIMPORTS) -o $@ $(GOFILES) $(GOTESTFILES)
+
+importpath:
+ echo main
diff --git a/src/buildscript/darwin_386.sh b/src/buildscript/darwin_386.sh
index 73897ba4..38feafd 100755
--- a/src/buildscript/darwin_386.sh
+++ b/src/buildscript/darwin_386.sh
@@ -491,7 +491,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.8
8l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/darwin_amd64.sh b/src/buildscript/darwin_amd64.sh
index b0cab57..200279d 100755
--- a/src/buildscript/darwin_amd64.sh
+++ b/src/buildscript/darwin_amd64.sh
@@ -490,7 +490,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.6
6l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/freebsd_386.sh b/src/buildscript/freebsd_386.sh
index 0c24e12..85e2af8 100755
--- a/src/buildscript/freebsd_386.sh
+++ b/src/buildscript/freebsd_386.sh
@@ -491,7 +491,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.8
8l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/freebsd_amd64.sh b/src/buildscript/freebsd_amd64.sh
index 0a645cc..50c44b8 100755
--- a/src/buildscript/freebsd_amd64.sh
+++ b/src/buildscript/freebsd_amd64.sh
@@ -490,7 +490,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.6
6l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/linux_386.sh b/src/buildscript/linux_386.sh
index 246f17b..7cdc5eb 100755
--- a/src/buildscript/linux_386.sh
+++ b/src/buildscript/linux_386.sh
@@ -491,7 +491,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.8
8l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/linux_amd64.sh b/src/buildscript/linux_amd64.sh
index 1c1ff21..9b05918 100755
--- a/src/buildscript/linux_amd64.sh
+++ b/src/buildscript/linux_amd64.sh
@@ -490,7 +490,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.6
6l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/linux_arm.sh b/src/buildscript/linux_arm.sh
index d2e1a7a..7113ef3 100755
--- a/src/buildscript/linux_arm.sh
+++ b/src/buildscript/linux_arm.sh
@@ -494,7 +494,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-5g -o "$WORK"/cmd/go/_obj/_go_.5 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+5g -o "$WORK"/cmd/go/_obj/_go_.5 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.5
5l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/netbsd_386.sh b/src/buildscript/netbsd_386.sh
index fcf8475..6fbe215 100755
--- a/src/buildscript/netbsd_386.sh
+++ b/src/buildscript/netbsd_386.sh
@@ -491,7 +491,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.8
8l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/netbsd_amd64.sh b/src/buildscript/netbsd_amd64.sh
index 8ad1a15..9b0db555 100755
--- a/src/buildscript/netbsd_amd64.sh
+++ b/src/buildscript/netbsd_amd64.sh
@@ -490,7 +490,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.6
6l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/openbsd_386.sh b/src/buildscript/openbsd_386.sh
index f80e1e0..192c436 100755
--- a/src/buildscript/openbsd_386.sh
+++ b/src/buildscript/openbsd_386.sh
@@ -491,7 +491,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.8
8l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/openbsd_amd64.sh b/src/buildscript/openbsd_amd64.sh
index 257eecc..77979c3 100755
--- a/src/buildscript/openbsd_amd64.sh
+++ b/src/buildscript/openbsd_amd64.sh
@@ -490,7 +490,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.6
6l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/plan9_386.sh b/src/buildscript/plan9_386.sh
index 9e3303e..bf454e4 100755
--- a/src/buildscript/plan9_386.sh
+++ b/src/buildscript/plan9_386.sh
@@ -491,7 +491,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.8
8l -o "$WORK"/cmd/go/_obj/a.out -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/windows_386.sh b/src/buildscript/windows_386.sh
index 789d5b6..dc1f305 100755
--- a/src/buildscript/windows_386.sh
+++ b/src/buildscript/windows_386.sh
@@ -493,7 +493,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+8g -o "$WORK"/cmd/go/_obj/_go_.8 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.8
8l -o "$WORK"/cmd/go/_obj/a.out.exe -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/buildscript/windows_amd64.sh b/src/buildscript/windows_amd64.sh
index 0026c1e..1148778 100755
--- a/src/buildscript/windows_amd64.sh
+++ b/src/buildscript/windows_amd64.sh
@@ -492,7 +492,7 @@
mkdir -p "$WORK"/cmd/go/_obj/
cd "$GOROOT"/src/cmd/go
-6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./vcs.go ./version.go ./vet.go
+6g -o "$WORK"/cmd/go/_obj/_go_.6 -p cmd/go -I "$WORK" ./bootstrap.go ./build.go ./fix.go ./fmt.go ./get.go ./help.go ./list.go ./main.go ./pkg.go ./run.go ./test.go ./testflag.go ./tool.go ./vcs.go ./version.go ./vet.go
gopack grc "$WORK"/cmd/go.a "$WORK"/cmd/go/_obj/_go_.6
6l -o "$WORK"/cmd/go/_obj/a.out.exe -L "$WORK" "$WORK"/cmd/go.a
mkdir -p "$GOBIN"/
diff --git a/src/cmd/Makefile b/src/cmd/Makefile
index ee82b83..089739d 100644
--- a/src/cmd/Makefile
+++ b/src/cmd/Makefile
@@ -42,7 +42,7 @@
gofmt\
goinstall\
gotest\
- goyacc\
+ yacc\
install: $(patsubst %,%.install,$(DIRS))
clean: $(patsubst %,%.clean,$(CLEANDIRS))
diff --git a/src/cmd/go/Makefile b/src/cmd/go/Makefile
index 295a144..3e19d2e 100644
--- a/src/cmd/go/Makefile
+++ b/src/cmd/go/Makefile
@@ -18,6 +18,7 @@
run.go\
test.go\
testflag.go\
+ tool.go\
version.go\
vet.go\
vcs.go\
diff --git a/src/cmd/go/main.go b/src/cmd/go/main.go
index ca3b118..b69c66d 100644
--- a/src/cmd/go/main.go
+++ b/src/cmd/go/main.go
@@ -75,6 +75,7 @@
cmdList,
cmdRun,
cmdTest,
+ cmdTool,
cmdVersion,
cmdVet,
diff --git a/src/cmd/go/tool.go b/src/cmd/go/tool.go
new file mode 100644
index 0000000..24ed78b
--- /dev/null
+++ b/src/cmd/go/tool.go
@@ -0,0 +1,100 @@
+// Copyright 2011 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.
+
+package main
+
+import (
+ "fmt"
+ "go/build"
+ "os"
+ "os/exec"
+ "sort"
+ "strings"
+)
+
+var cmdTool = &Command{
+ Run: runTool,
+ UsageLine: "tool command [args...]",
+ Short: "run specified go tool",
+ Long: `
+Tool runs the go tool command identified by the arguments.
+With no arguments it prints the list of known tools.
+
+For more about each tool command, see 'go tool command -h'.
+`,
+}
+
+var (
+ toolGoos = build.DefaultContext.GOOS
+ toolIsWindows = toolGoos == "windows"
+ toolBinToolDir = build.Path[0].BinDir() + "/go-tool"
+)
+
+const toolWindowsExtension = ".exe"
+
+func runTool(cmd *Command, args []string) {
+ if len(args) == 0 {
+ listTools()
+ return
+ }
+ tool := args[0]
+ // The tool name must be lower-case letters and numbers.
+ for _, c := range tool {
+ switch {
+ case 'a' <= c && c <= 'z', '0' <= c && c <= '9':
+ default:
+ fmt.Fprintf(os.Stderr, "go tool: bad tool name %q\n", tool)
+ exitStatus = 2
+ return
+ }
+ }
+ toolPath := toolBinToolDir + "/" + tool
+ if toolIsWindows {
+ toolPath += toolWindowsExtension
+ }
+ // Give a nice message if there is no tool with that name.
+ if _, err := os.Stat(toolPath); err != nil {
+ fmt.Fprintf(os.Stderr, "go tool: no such tool %q\n", tool)
+ exitStatus = 3
+ return
+ }
+ toolCmd := &exec.Cmd{
+ Path: toolPath,
+ Args: args,
+ Stdout: os.Stdout,
+ Stderr: os.Stderr,
+ }
+ err := toolCmd.Run()
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "go tool %s failed: %s\n", tool, err)
+ exitStatus = 1
+ return
+ }
+}
+
+// listTools prints a list of the available tools in the go-tools directory.
+func listTools() {
+ toolDir, err := os.Open(toolBinToolDir)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "go tool: no tool directory: %s\n", err)
+ exitStatus = 2
+ return
+ }
+ names, err := toolDir.Readdirnames(-1)
+ if err != nil {
+ fmt.Fprintf(os.Stderr, "go tool: can't read directory: %s\n", err)
+ exitStatus = 2
+ return
+ }
+ sort.StringSlice(names).Sort()
+ for _, name := range names {
+ // Unify presentation by going to lower case.
+ name = strings.ToLower(name)
+ // If it's windows, don't show the .exe suffix.
+ if toolIsWindows && strings.HasSuffix(name, toolWindowsExtension) {
+ name = name[:len(name)-len(toolWindowsExtension)]
+ }
+ fmt.Println(name)
+ }
+}
diff --git a/src/cmd/goyacc/Makefile b/src/cmd/yacc/Makefile
similarity index 74%
rename from src/cmd/goyacc/Makefile
rename to src/cmd/yacc/Makefile
index a616e85..6ce9d54 100644
--- a/src/cmd/goyacc/Makefile
+++ b/src/cmd/yacc/Makefile
@@ -4,14 +4,14 @@
include ../../Make.inc
-TARG=goyacc
+TARG=yacc
GOFILES=\
- goyacc.go\
+ yacc.go\
-include ../../Make.cmd
+include ../../Make.tool
-units: goyacc units.y
- ./goyacc -p units_ units.y
+units: yacc units.y
+ ./yacc -p units_ units.y
$(GC) $(GCFLAGS) $(GCIMPORTS) y.go
$(LD) -o units y.$O
diff --git a/src/cmd/goyacc/doc.go b/src/cmd/yacc/doc.go
similarity index 82%
rename from src/cmd/goyacc/doc.go
rename to src/cmd/yacc/doc.go
index 5dd6abe..9874a2a 100644
--- a/src/cmd/goyacc/doc.go
+++ b/src/cmd/yacc/doc.go
@@ -4,7 +4,8 @@
/*
-Goyacc is a version of yacc for Go.
+Yacc is a version of yacc for Go. It is run with the command
+ go tool yacc args...
It is written in Go and generates parsers written in Go.
It is largely transliterated from the Inferno version written in Limbo
@@ -13,7 +14,8 @@
http://plan9.bell-labs.com/magic/man2html/1/yacc
-Yacc adepts will have no trouble adapting to this form of the tool.
+Adepts of the original yacc will have no trouble adapting to this
+form of the tool.
The file units.y in this directory is a yacc grammar for a version of
the Unix tool units, also written in Go and largely transliterated
@@ -37,9 +39,9 @@
Multiple grammars compiled into a single program should be placed in
distinct packages. If that is impossible, the "-p prefix" flag to
-goyacc sets the prefix, by default yy, that begins the names of
+yacc sets the prefix, by default yy, that begins the names of
symbols, including types, the parser, and the lexer, generated and
-referenced by goyacc's generated code. Setting it to distinct values
+referenced by yacc's generated code. Setting it to distinct values
allows multiple grammars to be placed in a single package.
*/
diff --git a/src/cmd/goyacc/units.txt b/src/cmd/yacc/units.txt
similarity index 100%
rename from src/cmd/goyacc/units.txt
rename to src/cmd/yacc/units.txt
diff --git a/src/cmd/goyacc/units.y b/src/cmd/yacc/units.y
similarity index 97%
rename from src/cmd/goyacc/units.y
rename to src/cmd/yacc/units.y
index 3833486..f10cb7c 100644
--- a/src/cmd/goyacc/units.y
+++ b/src/cmd/yacc/units.y
@@ -7,17 +7,17 @@
// See http://plan9.bell-labs.com/plan9/license.html
// Generate parser with prefix "units_":
-// goyacc -p "units_"
+// go tool yacc -p "units_"
%{
// units.y
-// example of a goyacc program
+// example of a Go yacc program
// usage is
-// goyacc -p "units_" units.y (produces y.go)
+// go tool yacc -p "units_" units.y (produces y.go)
// 6g y.go
// 6l y.6
-// ./6.out $GOROOT/src/cmd/goyacc/units
+// ./6.out $GOROOT/src/cmd/yacc/units
// you have: c
// you want: furlongs/fortnight
// * 1.8026178e+12
@@ -288,7 +288,7 @@
flag.Parse()
- file = os.Getenv("GOROOT") + "/src/cmd/goyacc/units.txt"
+ file = os.Getenv("GOROOT") + "/src/cmd/yacc/units.txt"
if flag.NArg() > 0 {
file = flag.Arg(0)
}
diff --git a/src/cmd/goyacc/goyacc.go b/src/cmd/yacc/yacc.go
similarity index 99%
rename from src/cmd/goyacc/goyacc.go
rename to src/cmd/yacc/yacc.go
index e1b99be..c91a721 100644
--- a/src/cmd/goyacc/goyacc.go
+++ b/src/cmd/yacc/yacc.go
@@ -2933,7 +2933,7 @@
}
func usage() {
- fmt.Fprintf(stderr, "usage: goyacc [-o output] [-v parsetable] input\n")
+ fmt.Fprintf(stderr, "usage: yacc [-o output] [-v parsetable] input\n")
exit(1)
}
diff --git a/src/make.bash b/src/make.bash
index 34708b5..aeaa181 100755
--- a/src/make.bash
+++ b/src/make.bash
@@ -22,11 +22,21 @@
fi
# Create target directories
-if [ "$GOBIN" = "$GOROOT/bin" ]; then
- mkdir -p "$GOROOT/bin"
-fi
+mkdir -p "$GOROOT/bin/go-tool"
mkdir -p "$GOROOT/pkg"
+# Remove old, pre-go-tool binaries.
+rm -f "$GOROOT"/bin/[568][acgl]
+rm -f "$GOROOT"/bin/{6cov,6nm,cgo,ebnflint,goapi,gofix,goinstall,gomake,gopack,gopprof,gotest,gotype,govet,goyacc,hgpatch,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,hgpatch,quietgcc}
+ fi
+fi
+
GOROOT_FINAL=${GOROOT_FINAL:-$GOROOT}
MAKEFLAGS=${MAKEFLAGS:-"-j4"}
diff --git a/src/pkg/Makefile b/src/pkg/Makefile
index 4638558..6ffa527 100644
--- a/src/pkg/Makefile
+++ b/src/pkg/Makefile
@@ -161,7 +161,7 @@
../cmd/goinstall\
../cmd/gotest\
../cmd/govet\
- ../cmd/goyacc\
+ ../cmd/yacc\
ifeq ($(GOOS),linux)
DIRS+=\
@@ -194,7 +194,7 @@
../cmd/cgo\
../cmd/godoc\
../cmd/gotest\
- ../cmd/goyacc\
+ ../cmd/yacc\
NOBENCH+=\