mirror of
https://github.com/golang/go
synced 2024-11-25 06:07:58 -07:00
cmd/go: add env command, use to fix misc/cgo/testso
Fixes 386 build on 64-bit machines. R=golang-dev, bradfitz, minux.ma CC=golang-dev https://golang.org/cl/5785053
This commit is contained in:
parent
36aa7d4d14
commit
2c46569f57
@ -4,7 +4,7 @@
|
|||||||
# license that can be found in the LICENSE file.
|
# license that can be found in the LICENSE file.
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
gcc -fPIC -g -shared -o libcgosotest.so cgoso_c.c
|
gcc $(go env GOGCCFLAGS) -shared -o libcgosotest.so cgoso_c.c
|
||||||
go build main.go
|
go build main.go
|
||||||
LD_LIBRARY_PATH=. ./main
|
LD_LIBRARY_PATH=. ./main
|
||||||
rm -f libcgosotest.so main
|
rm -f libcgosotest.so main
|
||||||
|
@ -14,6 +14,7 @@ The commands are:
|
|||||||
build compile packages and dependencies
|
build compile packages and dependencies
|
||||||
clean remove object files
|
clean remove object files
|
||||||
doc run godoc on package sources
|
doc run godoc on package sources
|
||||||
|
env print Go environment information
|
||||||
fix run go tool fix on packages
|
fix run go tool fix on packages
|
||||||
fmt run gofmt on package sources
|
fmt run gofmt on package sources
|
||||||
get download and install packages and dependencies
|
get download and install packages and dependencies
|
||||||
@ -76,6 +77,8 @@ The build flags are shared by the build, install, run, and test commands:
|
|||||||
-x
|
-x
|
||||||
print the commands.
|
print the commands.
|
||||||
|
|
||||||
|
-compiler name
|
||||||
|
name of compiler to use, as in runtime.Compiler (gccgo or gc)
|
||||||
-gccgoflags 'arg list'
|
-gccgoflags 'arg list'
|
||||||
arguments to pass on each gccgo compiler/linker invocation
|
arguments to pass on each gccgo compiler/linker invocation
|
||||||
-gcflags 'arg list'
|
-gcflags 'arg list'
|
||||||
@ -153,6 +156,20 @@ To run godoc with specific options, run godoc itself.
|
|||||||
See also: go fix, go fmt, go vet.
|
See also: go fix, go fmt, go vet.
|
||||||
|
|
||||||
|
|
||||||
|
Print Go environment information
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
|
||||||
|
go env [var ...]
|
||||||
|
|
||||||
|
Env prints Go environment information.
|
||||||
|
|
||||||
|
By default env prints information as a shell script
|
||||||
|
(on Windows, a batch file). If one or more variable
|
||||||
|
names is given as arguments, env prints the value of
|
||||||
|
each named variable on its own line.
|
||||||
|
|
||||||
|
|
||||||
Run go tool fix on packages
|
Run go tool fix on packages
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
@ -253,21 +270,28 @@ is equivalent to -f '{{.ImportPath}}'. The struct
|
|||||||
being passed to the template is:
|
being passed to the template is:
|
||||||
|
|
||||||
type Package struct {
|
type Package struct {
|
||||||
|
Dir string // directory containing package sources
|
||||||
|
ImportPath string // import path of package in dir
|
||||||
Name string // package name
|
Name string // package name
|
||||||
Doc string // package documentation string
|
Doc string // package documentation string
|
||||||
ImportPath string // import path of package in dir
|
Target string // install path
|
||||||
Dir string // directory containing package sources
|
Goroot bool // is this package in the Go root?
|
||||||
Version string // version of installed package (TODO)
|
Standard bool // is this package part of the standard Go library?
|
||||||
Stale bool // would 'go install' do anything for this package?
|
Stale bool // would 'go install' do anything for this package?
|
||||||
|
Root string // Go root or Go path dir containing this package
|
||||||
|
|
||||||
// Source files
|
// Source files
|
||||||
GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, and XTestGoFiles)
|
GoFiles []string // .go source files (excluding CgoFiles, TestGoFiles, XTestGoFiles)
|
||||||
TestGoFiles []string // _test.go source files internal to the package they are testing
|
CgoFiles []string // .go sources files that import "C"
|
||||||
XTestGoFiles []string // _test.go source files external to the package they are testing
|
CFiles []string // .c source files
|
||||||
CFiles []string // .c source files
|
HFiles []string // .h source files
|
||||||
HFiles []string // .h source files
|
SFiles []string // .s source files
|
||||||
SFiles []string // .s source files
|
SysoFiles []string // .syso object files to add to archive
|
||||||
CgoFiles []string // .go sources files that import "C"
|
|
||||||
|
// Cgo directives
|
||||||
|
CgoCFLAGS []string // cgo: flags for C compiler
|
||||||
|
CgoLDFLAGS []string // cgo: flags for linker
|
||||||
|
CgoPkgConfig []string // cgo: pkg-config names
|
||||||
|
|
||||||
// Dependency information
|
// Dependency information
|
||||||
Imports []string // import paths used by this package
|
Imports []string // import paths used by this package
|
||||||
@ -275,8 +299,13 @@ being passed to the template is:
|
|||||||
|
|
||||||
// Error information
|
// Error information
|
||||||
Incomplete bool // this package or a dependency has an error
|
Incomplete bool // this package or a dependency has an error
|
||||||
Error *PackageError // error loading package
|
Error *PackageError // error loading package
|
||||||
DepsErrors []*PackageError // errors loading dependencies
|
DepsErrors []*PackageError // errors loading dependencies
|
||||||
|
|
||||||
|
TestGoFiles []string // _test.go files in package
|
||||||
|
TestImports []string // imports from TestGoFiles
|
||||||
|
XTestGoFiles []string // _test.go files outside package
|
||||||
|
XTestImports []string // imports from XTestGoFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
The -json flag causes the package data to be printed in JSON format
|
The -json flag causes the package data to be printed in JSON format
|
||||||
|
83
src/cmd/go/env.go
Normal file
83
src/cmd/go/env.go
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
// Copyright 2012 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"
|
||||||
|
"runtime"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
var cmdEnv = &Command{
|
||||||
|
Run: runEnv,
|
||||||
|
UsageLine: "env [var ...]",
|
||||||
|
Short: "print Go environment information",
|
||||||
|
Long: `
|
||||||
|
Env prints Go environment information.
|
||||||
|
|
||||||
|
By default env prints information as a shell script
|
||||||
|
(on Windows, a batch file). If one or more variable
|
||||||
|
names is given as arguments, env prints the value of
|
||||||
|
each named variable on its own line.
|
||||||
|
`,
|
||||||
|
}
|
||||||
|
|
||||||
|
type envVar struct {
|
||||||
|
name, value string
|
||||||
|
}
|
||||||
|
|
||||||
|
func mkEnv() []envVar {
|
||||||
|
var b builder
|
||||||
|
b.init()
|
||||||
|
|
||||||
|
env := []envVar{
|
||||||
|
{"GOROOT", goroot},
|
||||||
|
{"GOBIN", gobin},
|
||||||
|
{"GOARCH", goarch},
|
||||||
|
{"GOCHAR", archChar},
|
||||||
|
{"GOOS", goos},
|
||||||
|
{"GOEXE", exeSuffix},
|
||||||
|
{"GOHOSTARCH", runtime.GOARCH},
|
||||||
|
{"GOHOSTOS", runtime.GOOS},
|
||||||
|
{"GOTOOLDIR", toolDir},
|
||||||
|
{"GOGCCFLAGS", strings.Join(b.gccCmd(".")[3:], " ")},
|
||||||
|
}
|
||||||
|
|
||||||
|
return env
|
||||||
|
}
|
||||||
|
|
||||||
|
func findEnv(env []envVar, name string) string {
|
||||||
|
for _, e := range env {
|
||||||
|
if e.name == name {
|
||||||
|
return e.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func runEnv(cmd *Command, args []string) {
|
||||||
|
env := mkEnv()
|
||||||
|
if len(args) > 0 {
|
||||||
|
for _, name := range args {
|
||||||
|
fmt.Printf("%s\n", findEnv(env, name))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
switch runtime.GOOS {
|
||||||
|
default:
|
||||||
|
for _, e := range env {
|
||||||
|
fmt.Printf("%s=\"%s\"\n", e.name, e.value)
|
||||||
|
}
|
||||||
|
case "plan9":
|
||||||
|
for _, e := range env {
|
||||||
|
fmt.Printf("%s='%s'\n", e.name, strings.Replace(e.value, "'", "''", -1))
|
||||||
|
}
|
||||||
|
case "windows":
|
||||||
|
for _, e := range env {
|
||||||
|
fmt.Printf("set %s=%s\n", e.name, e.value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -76,6 +76,7 @@ var commands = []*Command{
|
|||||||
cmdBuild,
|
cmdBuild,
|
||||||
cmdClean,
|
cmdClean,
|
||||||
cmdDoc,
|
cmdDoc,
|
||||||
|
cmdEnv,
|
||||||
cmdFix,
|
cmdFix,
|
||||||
cmdFmt,
|
cmdFmt,
|
||||||
cmdGet,
|
cmdGet,
|
||||||
|
Loading…
Reference in New Issue
Block a user