cmd/gomobile: install common dev packages
I often forget to do this. I can't be the only one.
Change-Id: Ia5dfaa6811242758f996de614f80cb42badf327b
Reviewed-on: https://go-review.googlesource.com/13742
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
diff --git a/cmd/gomobile/init.go b/cmd/gomobile/init.go
index d2f36b8..8710c6a 100644
--- a/cmd/gomobile/init.go
+++ b/cmd/gomobile/init.go
@@ -128,6 +128,14 @@
return err
}
+ // Install common x/mobile packages for local development.
+ // These are often slow to compile (due to cgo) and easy to forget.
+ for _, pkg := range commonPkgs {
+ if err := installPkg(pkg, nil); err != nil {
+ return err
+ }
+ }
+
// Install standard libraries for cross compilers.
start := time.Now()
if err := installStd(androidArmEnv); err != nil {
@@ -152,6 +160,12 @@
return nil
}
+var commonPkgs = []string{
+ "golang.org/x/mobile/gl",
+ "golang.org/x/mobile/app",
+ "golang.org/x/mobile/exp/app/debug",
+}
+
func installDarwin() error {
if goos != "darwin" {
return nil // Only build iOS compilers on OS X.
@@ -170,15 +184,25 @@
}
func installStd(env []string, args ...string) error {
- tOS := getenv(env, "GOOS")
- tArch := getenv(env, "GOARCH")
- if buildV {
- fmt.Fprintf(os.Stderr, "\n# Building standard library for %s/%s.\n", tOS, tArch)
+ return installPkg("std", env, args...)
+}
+
+func installPkg(pkg string, env []string, args ...string) error {
+ tOS, tArch, pd := getenv(env, "GOOS"), getenv(env, "GOARCH"), pkgdir(env)
+ if tOS != "" && tArch != "" {
+ if buildV {
+ fmt.Fprintf(os.Stderr, "\n# Installing %s for %s/%s.\n", pkg, tOS, tArch)
+ }
+ args = append(args, "-pkgdir="+pd)
+ } else {
+ if buildV {
+ fmt.Fprintf(os.Stderr, "\n# Installing %s.\n", pkg)
+ }
}
// The -p flag is to speed up darwin/arm builds.
// Remove when golang.org/issue/10477 is resolved.
- cmd := exec.Command("go", "install", fmt.Sprintf("-p=%d", runtime.NumCPU()), "-pkgdir="+pkgdir(env))
+ cmd := exec.Command("go", "install", fmt.Sprintf("-p=%d", runtime.NumCPU()))
cmd.Args = append(cmd.Args, args...)
if buildV {
cmd.Args = append(cmd.Args, "-v")
@@ -189,7 +213,7 @@
if buildWork {
cmd.Args = append(cmd.Args, "-work")
}
- cmd.Args = append(cmd.Args, "std")
+ cmd.Args = append(cmd.Args, pkg)
cmd.Env = append([]string{}, env...)
return runCmd(cmd)
}
diff --git a/cmd/gomobile/init_test.go b/cmd/gomobile/init_test.go
index 1be2ff6..e5c7bda 100644
--- a/cmd/gomobile/init_test.go
+++ b/cmd/gomobile/init_test.go
@@ -120,10 +120,13 @@
mv $WORK/openal/include/AL $GOMOBILE/android-{{.NDK}}/arm/sysroot/usr/include/AL
mkdir -p $GOMOBILE/android-{{.NDK}}/openal
mv $WORK/openal/lib $GOMOBILE/android-{{.NDK}}/openal/lib
+go install -p={{.NumCPU}} -x golang.org/x/mobile/gl
+go install -p={{.NumCPU}} -x golang.org/x/mobile/app
+go install -p={{.NumCPU}} -x golang.org/x/mobile/exp/app/debug
GOOS=android GOARCH=arm GOARM=7 CC=$GOMOBILE/android-{{.NDK}}/arm/bin/arm-linux-androideabi-gcc{{.EXE}} CXX=$GOMOBILE/android-{{.NDK}}/arm/bin/arm-linux-androideabi-g++ CGO_ENABLED=1 go install -p={{.NumCPU}} -pkgdir=$GOMOBILE/pkg_android_arm -x std
{{if eq .GOOS "darwin"}}GOOS=darwin GOARCH=arm GOARM=7 CC=clang-iphoneos CXX=clang-iphoneos CGO_CFLAGS=-isysroot=iphoneos -arch armv7 CGO_LDFLAGS=-isysroot=iphoneos -arch armv7 CGO_ENABLED=1 go install -p={{.NumCPU}} -pkgdir=$GOMOBILE/pkg_darwin_arm -x std
GOOS=darwin GOARCH=arm64 CC=clang-iphoneos CXX=clang-iphoneos CGO_CFLAGS=-isysroot=iphoneos -arch arm64 CGO_LDFLAGS=-isysroot=iphoneos -arch arm64 CGO_ENABLED=1 go install -p={{.NumCPU}} -pkgdir=$GOMOBILE/pkg_darwin_arm64 -x std
-GOOS=darwin GOARCH=amd64 CC=clang-iphonesimulator CXX=clang-iphonesimulator CGO_CFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=6.1 -arch x86_64 CGO_LDFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=6.1 -arch x86_64 CGO_ENABLED=1 go install -p={{.NumCPU}} -pkgdir=$GOMOBILE/pkg_darwin_amd64 -tags=ios -x std
+GOOS=darwin GOARCH=amd64 CC=clang-iphonesimulator CXX=clang-iphonesimulator CGO_CFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=6.1 -arch x86_64 CGO_LDFLAGS=-isysroot=iphonesimulator -mios-simulator-version-min=6.1 -arch x86_64 CGO_ENABLED=1 go install -p={{.NumCPU}} -tags=ios -pkgdir=$GOMOBILE/pkg_darwin_amd64 -x std
{{end}}go version > $GOMOBILE/version
rm -r -f "$WORK"
`))