From a8e5e803e68c11fe812fa5d2d1ecefc0ffa73ef7 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 21 Jan 2015 12:09:20 -0500 Subject: [PATCH] [dev.cc] cmd/dist: write cmd/internal/obj/zbootstrap.go cmd/internal/obj needs information about the default values of GOROOT, GOARM, GOEXPERIMENT, Version, and so on. It cannot ask package runtime, because during bootstrap package runtime comes from Go 1.4. So it must have its own copy. Change-Id: I73d3e75a3d47210b3184a51a810ebb44826b81e5 Reviewed-on: https://go-review.googlesource.com/3140 Reviewed-by: Ian Lance Taylor Reviewed-by: Rob Pike --- .gitignore | 1 + src/cmd/dist/buildruntime.go | 28 ++++++++++++++++++++++++++++ src/cmd/dist/buildtool.go | 2 ++ 3 files changed, 31 insertions(+) diff --git a/.gitignore b/.gitignore index 7b63aaf3d4d..f1c72632372 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ src/cmd/gc/mkbuiltin1 src/cmd/gc/opnames.h src/cmd/gc/y.output src/cmd/go/zdefaultcc.go +src/cmd/internal/obj/zbootstrap.go src/go/doc/headscan src/runtime/mkversion src/runtime/zaexperiment.h diff --git a/src/cmd/dist/buildruntime.go b/src/cmd/dist/buildruntime.go index 1e6ae823972..5e2605966b8 100644 --- a/src/cmd/dist/buildruntime.go +++ b/src/cmd/dist/buildruntime.go @@ -45,3 +45,31 @@ func mkzexperiment(dir, file string) { writefile(out, file, 0) } + +// mkzbootstrap writes cmd/internal/obj/zbootstrap.go: +// +// package obj +// +// const defaultGOROOT = +// const defaultGOARM = +// const defaultGOOS = +// const defaultGOARCH = +// const version = +// const goexperiment = +// +func mkzbootstrap(file string) { + out := fmt.Sprintf( + "// auto generated by go tool dist\n"+ + "\n"+ + "package obj\n"+ + "\n"+ + "const defaultGOROOT = `%s`\n"+ + "const defaultGOARM = `%s`\n"+ + "const defaultGOOS = `%s`\n"+ + "const defaultGOARCH = `%s`\n"+ + "const version = `%s`\n"+ + "const goexperiment = `%s`\n", + goroot_final, goarm, gohostos, gohostarch, goversion, os.Getenv("GOEXPERIMENT")) + + writefile(out, file, 0) +} diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go index c493dd1e51f..10371526d33 100644 --- a/src/cmd/dist/buildtool.go +++ b/src/cmd/dist/buildtool.go @@ -38,6 +38,8 @@ func bootstrapBuildTools() { } xprintf("##### Building Go toolchain using %s.\n", goroot_bootstrap) + mkzbootstrap(pathf("%s/src/cmd/internal/obj/zbootstrap.go", goroot)) + // Use $GOROOT/pkg/bootstrap as the bootstrap workspace root. // We use a subdirectory of $GOROOT/pkg because that's the // space within $GOROOT where we store all generated objects.