cmd/gomobile: clean up work directory after environment errors

buildEnvInit creates its work directory before calling envInit. If an error occurs afterward, buildEnvInit returns without giving the caller a cleanup function, leaving the directory behind.

Defer cleanupFn and invoke it whenever buildEnvInit returns an error. This covers future error paths and preserves -work behavior because cleanupFn already retains and prints the work directory when requested.

Add a regression test using an NDK whose compiler is missing.

Fixes golang/go#80901

Change-Id: I8557b11364769e95ac37353018b2123f9fc85e74
Reviewed-on: https://go-review.googlesource.com/c/mobile/+/816100
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Hajime Hoshi <hajimehoshi@gmail.com>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Hajime Hoshi <hajimehoshi@gmail.com>
2 files changed
tree: 4cefd0fd196ddbc09a247a901e9721cec9cc7cea
  1. app/
  2. asset/
  3. bind/
  4. cmd/
  5. doc/
  6. event/
  7. example/
  8. exp/
  9. geom/
  10. gl/
  11. internal/
  12. testdata/
  13. .gitattributes
  14. .gitignore
  15. codereview.cfg
  16. CONTRIBUTING.md
  17. go.mod
  18. go.sum
  19. LICENSE
  20. PATENTS
  21. README.md
README.md

Go support for Mobile devices

Go Reference

The Go mobile repository holds packages and build tools for using Go on mobile platforms.

Package documentation as a starting point:

Caution image

The Go Mobile project is experimental. Use this at your own risk. While we are working hard to improve it, neither Google nor the Go team can provide end-user support.

This is early work and installing the build system requires Go 1.5. Follow the instructions on golang.org/wiki/Mobile to install the gomobile command, build the basic and the bind example apps.


Contributions to Go are appreciated. See https://go.dev/doc/contribute.

The git repository is https://go.googlesource.com/mobile.