cmd/gomobile: detect missing golang.org/x/mobile dep before invoking gobind
gobind's generated code depends on packages under golang.org/x/mobile/bind,
and gobind resolves them through the calling module via packages.Load. When
the dependency is missing from the user's module — most commonly after
go mod tidy removes it because no non-generated code imports it — gobind
fails with an opaque message repeated once per sub-target:
unable to import bind: no Go package in golang.org/x/mobile/bind
unable to import bind: no Go package in golang.org/x/mobile/bind
unable to import bind/objc: no Go package in golang.org/x/mobile/bind/objc
Detect the missing module dependency in cmd/gomobile before invoking gobind
and emit a single actionable message that suggests adding a tool directive
to go.mod via 'go get -tool golang.org/x/mobile/cmd/gobind'.
Fixes golang/go#77183.
Change-Id: I365c99a1f37bec1f42b6cb858babd33d41317a8a
Reviewed-on: https://go-review.googlesource.com/c/mobile/+/779840
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Michael Pratt <mpratt@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>
Auto-Submit: Hajime Hoshi <hajimehoshi@gmail.com>
The Go mobile repository holds packages and build tools for using Go on mobile platforms.
Package documentation as a starting point:
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.