cmd/gomobile: add -work flag.
In order to make the artifacts of go build command preserved under WORK directory, this change modifies TMPDIR (TEMP/TMP for windows) environment variables to point to gomobile's tmpdir if -work flag is set. > gomobile init -work WORK=/gopath/pkg/gomobile/work-276689736 > ls /gopath/pkg/gomobile/work-276689736 README go-build823903592 openal android-ndk-r10e go-build858075903 go-build365743399 go-build921886344 > gomobile build -work golang.org/x/mobile/example/basic WORK=/tmp/gomobile-work-863381843 > ls /tmp/gomobile-work-863381843 go-build102034516 libbasic.so > gomobile bind -work github.com/hyangah/ivy WORK=/tmp/gomobile-work-355100962 > ls /tmp/gomobile-work-355100962 android go-build284034365 javac-output androidlib go_ivy Change-Id: I2f467e0063bc1c8b8c636a8cd6d100e86a99a91a Reviewed-on: https://go-review.googlesource.com/12720 Reviewed-by: David Crawshaw <crawshaw@golang.org>
This commit is contained in:
parent
405d6233b3
commit
af3e09ede0
|
@ -56,8 +56,8 @@ installed. Support is not complete.
|
||||||
|
|
||||||
The -v flag provides verbose output, including the list of packages built.
|
The -v flag provides verbose output, including the list of packages built.
|
||||||
|
|
||||||
The build flags -a, -i, -n, -x, -gcflags, -ldflags, and -tags are shared
|
The build flags -a, -i, -n, -x, -gcflags, -ldflags, -tags, and -work
|
||||||
with the build command. For documentation, see 'go help build'.
|
are shared with the build command. For documentation, see 'go help build'.
|
||||||
`,
|
`,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -265,7 +265,6 @@ func buildJar(w io.Writer, srcDir string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
defer removeAll(dst)
|
|
||||||
|
|
||||||
apiPath, err := androidAPIPath()
|
apiPath, err := androidAPIPath()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -51,8 +51,8 @@ output file name depends on the package built.
|
||||||
|
|
||||||
The -v flag provides verbose output, including the list of packages built.
|
The -v flag provides verbose output, including the list of packages built.
|
||||||
|
|
||||||
The build flags -a, -i, -n, -x, -gcflags, -ldflags, and -tags are shared
|
The build flags -a, -i, -n, -x, -gcflags, -ldflags, -tags, and -work are
|
||||||
with the build command. For documentation, see 'go help build'.
|
shared with the build command. For documentation, see 'go help build'.
|
||||||
`,
|
`,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,6 +208,7 @@ var (
|
||||||
buildGcflags string // -gcflags
|
buildGcflags string // -gcflags
|
||||||
buildLdflags string // -ldflags
|
buildLdflags string // -ldflags
|
||||||
buildTarget string // -target
|
buildTarget string // -target
|
||||||
|
buildWork bool // -work
|
||||||
)
|
)
|
||||||
|
|
||||||
func addBuildFlags(cmd *command) {
|
func addBuildFlags(cmd *command) {
|
||||||
|
@ -221,10 +222,11 @@ func addBuildFlags(cmd *command) {
|
||||||
cmd.flag.Var((*stringsFlag)(&ctx.BuildTags), "tags", "")
|
cmd.flag.Var((*stringsFlag)(&ctx.BuildTags), "tags", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func addBuildFlagsNVX(cmd *command) {
|
func addBuildFlagsNVXWork(cmd *command) {
|
||||||
cmd.flag.BoolVar(&buildN, "n", false, "")
|
cmd.flag.BoolVar(&buildN, "n", false, "")
|
||||||
cmd.flag.BoolVar(&buildV, "v", false, "")
|
cmd.flag.BoolVar(&buildV, "v", false, "")
|
||||||
cmd.flag.BoolVar(&buildX, "x", false, "")
|
cmd.flag.BoolVar(&buildX, "x", false, "")
|
||||||
|
cmd.flag.BoolVar(&buildWork, "work", false, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
type binInfo struct {
|
type binInfo struct {
|
||||||
|
@ -234,15 +236,15 @@ type binInfo struct {
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
addBuildFlags(cmdBuild)
|
addBuildFlags(cmdBuild)
|
||||||
addBuildFlagsNVX(cmdBuild)
|
addBuildFlagsNVXWork(cmdBuild)
|
||||||
|
|
||||||
addBuildFlags(cmdInstall)
|
addBuildFlags(cmdInstall)
|
||||||
addBuildFlagsNVX(cmdInstall)
|
addBuildFlagsNVXWork(cmdInstall)
|
||||||
|
|
||||||
addBuildFlagsNVX(cmdInit)
|
addBuildFlagsNVXWork(cmdInit)
|
||||||
|
|
||||||
addBuildFlags(cmdBind)
|
addBuildFlags(cmdBind)
|
||||||
addBuildFlagsNVX(cmdBind)
|
addBuildFlagsNVXWork(cmdBind)
|
||||||
}
|
}
|
||||||
|
|
||||||
func goBuild(src string, env []string, args ...string) error {
|
func goBuild(src string, env []string, args ...string) error {
|
||||||
|
@ -270,6 +272,9 @@ func goBuild(src string, env []string, args ...string) error {
|
||||||
if buildLdflags != "" {
|
if buildLdflags != "" {
|
||||||
cmd.Args = append(cmd.Args, "-ldflags", buildLdflags)
|
cmd.Args = append(cmd.Args, "-ldflags", buildLdflags)
|
||||||
}
|
}
|
||||||
|
if buildWork {
|
||||||
|
cmd.Args = append(cmd.Args, "-work")
|
||||||
|
}
|
||||||
cmd.Args = append(cmd.Args, args...)
|
cmd.Args = append(cmd.Args, args...)
|
||||||
cmd.Args = append(cmd.Args, src)
|
cmd.Args = append(cmd.Args, src)
|
||||||
cmd.Env = append([]string{}, env...)
|
cmd.Env = append([]string{}, env...)
|
||||||
|
|
|
@ -56,7 +56,13 @@ func buildEnvInit() (cleanup func(), err error) {
|
||||||
return nil, errors.New("toolchain not installed, run `gomobile init`")
|
return nil, errors.New("toolchain not installed, run `gomobile init`")
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanupFn := func() { removeAll(tmpdir) }
|
cleanupFn := func() {
|
||||||
|
if buildWork {
|
||||||
|
fmt.Printf("WORK=%s\n", tmpdir)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
removeAll(tmpdir)
|
||||||
|
}
|
||||||
if buildN {
|
if buildN {
|
||||||
tmpdir = "$WORK"
|
tmpdir = "$WORK"
|
||||||
cleanupFn = func() {}
|
cleanupFn = func() {}
|
||||||
|
|
|
@ -107,7 +107,13 @@ func runInit(cmd *command) error {
|
||||||
if buildX || buildN {
|
if buildX || buildN {
|
||||||
fmt.Fprintln(xout, "WORK="+tmpdir)
|
fmt.Fprintln(xout, "WORK="+tmpdir)
|
||||||
}
|
}
|
||||||
defer removeAll(tmpdir)
|
defer func() {
|
||||||
|
if buildWork {
|
||||||
|
fmt.Printf("WORK=%s\n", tmpdir)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
removeAll(tmpdir)
|
||||||
|
}()
|
||||||
|
|
||||||
if err := fetchNDK(); err != nil {
|
if err := fetchNDK(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -178,6 +184,9 @@ func installStd(env []string, args ...string) error {
|
||||||
if buildX {
|
if buildX {
|
||||||
cmd.Args = append(cmd.Args, "-x")
|
cmd.Args = append(cmd.Args, "-x")
|
||||||
}
|
}
|
||||||
|
if buildWork {
|
||||||
|
cmd.Args = append(cmd.Args, "-work")
|
||||||
|
}
|
||||||
cmd.Args = append(cmd.Args, "std")
|
cmd.Args = append(cmd.Args, "std")
|
||||||
cmd.Env = append([]string{}, env...)
|
cmd.Env = append([]string{}, env...)
|
||||||
return runCmd(cmd)
|
return runCmd(cmd)
|
||||||
|
@ -536,6 +545,7 @@ func removeAll(path string) error {
|
||||||
if buildN {
|
if buildN {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// os.RemoveAll behaves differently in windows.
|
// os.RemoveAll behaves differently in windows.
|
||||||
// http://golang.org/issues/9606
|
// http://golang.org/issues/9606
|
||||||
if goos == "windows" {
|
if goos == "windows" {
|
||||||
|
@ -600,6 +610,15 @@ func runCmd(cmd *exec.Cmd) error {
|
||||||
cmd.Stderr = buf
|
cmd.Stderr = buf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if buildWork {
|
||||||
|
if goos == "windows" {
|
||||||
|
cmd.Env = append(cmd.Env, `TEMP=`+tmpdir)
|
||||||
|
cmd.Env = append(cmd.Env, `TMP=`+tmpdir)
|
||||||
|
} else {
|
||||||
|
cmd.Env = append(cmd.Env, `TMPDIR=`+tmpdir)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !buildN {
|
if !buildN {
|
||||||
cmd.Env = environ(cmd.Env)
|
cmd.Env = environ(cmd.Env)
|
||||||
if err := cmd.Run(); err != nil {
|
if err := cmd.Run(); err != nil {
|
||||||
|
|
|
@ -21,7 +21,8 @@ attached mobile device.
|
||||||
|
|
||||||
Only -target android is supported. The 'adb' tool must be on the PATH.
|
Only -target android is supported. The 'adb' tool must be on the PATH.
|
||||||
|
|
||||||
The build flags -a, -i, -n, -x, and -tags are shared with the build command.
|
The build flags -a, -i, -n, -x, -gcflags, -ldflags, -tags, and -work are
|
||||||
|
shared with the build command.
|
||||||
For documentation, see 'go help build'.
|
For documentation, see 'go help build'.
|
||||||
`,
|
`,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue