Skip to content

Commit e4a08af

Browse files
committed
cmd/gomobile: create go.sum at the temporary directory
As of Go1.16, `go build` fails if go.sum does not exist. This change fixes this issue by forcing to create go.sum by calling `go mod tidy`. Closes golang/go#44162 Change-Id: Ibba738503d1a58c6533b2427dd4efa6954b8eaa3 Reviewed-on: https://go-review.googlesource.com/c/mobile/+/290409 Run-TryBot: Hajime Hoshi <[email protected]> Trust: Than McIntosh <[email protected]> Trust: Hyang-Ah Hana Kim <[email protected]> TryBot-Result: Go Bot <[email protected]> Reviewed-by: Hyang-Ah Hana Kim <[email protected]>
1 parent e6ae53a commit e4a08af

File tree

5 files changed

+41
-6
lines changed

5 files changed

+41
-6
lines changed

cmd/gomobile/bind_androidapp.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ func goAndroidBind(gobind string, pkgs []*packages.Package, androidArchs []strin
5252

5353
androidDir := filepath.Join(tmpdir, "android")
5454

55+
modulesUsed, err := areGoModulesUsed()
56+
if err != nil {
57+
return err
58+
}
59+
5560
// Generate binding code and java source code only when processing the first package.
5661
for _, arch := range androidArchs {
5762
if err := writeGoMod("android", arch); err != nil {
@@ -62,8 +67,16 @@ func goAndroidBind(gobind string, pkgs []*packages.Package, androidArchs []strin
6267
// Add the generated packages to GOPATH for reverse bindings.
6368
gopath := fmt.Sprintf("GOPATH=%s%c%s", tmpdir, filepath.ListSeparator, goEnv("GOPATH"))
6469
env = append(env, gopath)
65-
toolchain := ndk.Toolchain(arch)
6670

71+
// Run `go mod tidy` to force to create go.sum.
72+
// Without go.sum, `go build` fails as of Go 1.16.
73+
if modulesUsed {
74+
if err := goModTidyAt(filepath.Join(tmpdir, "src"), env); err != nil {
75+
return err
76+
}
77+
}
78+
79+
toolchain := ndk.Toolchain(arch)
6780
err := goBuildAt(
6881
filepath.Join(tmpdir, "src"),
6982
"./gobind",

cmd/gomobile/bind_iosapp.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ func goIOSBind(gobind string, pkgs []*packages.Package, archs []string) error {
6161

6262
cmd = exec.Command("xcrun", "lipo", "-create")
6363

64+
modulesUsed, err := areGoModulesUsed()
65+
if err != nil {
66+
return err
67+
}
68+
6469
for _, arch := range archs {
6570
if err := writeGoMod("darwin", arch); err != nil {
6671
return err
@@ -70,6 +75,15 @@ func goIOSBind(gobind string, pkgs []*packages.Package, archs []string) error {
7075
// Add the generated packages to GOPATH for reverse bindings.
7176
gopath := fmt.Sprintf("GOPATH=%s%c%s", tmpdir, filepath.ListSeparator, goEnv("GOPATH"))
7277
env = append(env, gopath)
78+
79+
// Run `go mod tidy` to force to create go.sum.
80+
// Without go.sum, `go build` fails as of Go 1.16.
81+
if modulesUsed {
82+
if err := goModTidyAt(filepath.Join(tmpdir, "src"), env); err != nil {
83+
return err
84+
}
85+
}
86+
7387
path, err := goIOSBindArchive(name, env, filepath.Join(tmpdir, "src"))
7488
if err != nil {
7589
return fmt.Errorf("darwin-%s: %v", arch, err)
@@ -145,11 +159,10 @@ func goIOSBind(gobind string, pkgs []*packages.Package, archs []string) error {
145159
if err := symlink("Versions/Current/Resources", buildO+"/Resources"); err != nil {
146160
return err
147161
}
148-
err := writeFile(buildO+"/Resources/Info.plist", func(w io.Writer) error {
162+
if err := writeFile(buildO+"/Resources/Info.plist", func(w io.Writer) error {
149163
_, err := w.Write([]byte(iosBindInfoPlist))
150164
return err
151-
})
152-
if err != nil {
165+
}); err != nil {
153166
return err
154167
}
155168

cmd/gomobile/bind_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ var bindAndroidTmpl = template.Must(template.New("output").Parse(`GOMOBILE={{.GO
186186
WORK=$WORK
187187
GOOS=android CGO_ENABLED=1 gobind -lang=go,java -outdir=$WORK{{if .JavaPkg}} -javapkg={{.JavaPkg}}{{end}} golang.org/x/mobile/asset
188188
mkdir -p $WORK/src
189+
PWD=$WORK/src GOOS=android GOARCH=arm CC=$NDK_PATH/toolchains/llvm/prebuilt/{{.NDKARCH}}/bin/armv7a-linux-androideabi16-clang CXX=$NDK_PATH/toolchains/llvm/prebuilt/{{.NDKARCH}}/bin/armv7a-linux-androideabi16-clang++ CGO_ENABLED=1 GOARM=7 GOPATH=$WORK:$GOPATH go mod tidy
189190
PWD=$WORK/src GOOS=android GOARCH=arm CC=$NDK_PATH/toolchains/llvm/prebuilt/{{.NDKARCH}}/bin/armv7a-linux-androideabi16-clang CXX=$NDK_PATH/toolchains/llvm/prebuilt/{{.NDKARCH}}/bin/armv7a-linux-androideabi16-clang++ CGO_ENABLED=1 GOARM=7 GOPATH=$WORK:$GOPATH go build -x -buildmode=c-shared -o=$WORK/android/src/main/jniLibs/armeabi-v7a/libgojni.so ./gobind
190191
PWD=$WORK/java javac -d $WORK/javac-output -source 1.7 -target 1.7 -bootclasspath {{.AndroidPlatform}}/android.jar *.java
191192
jar c -C $WORK/javac-output .

cmd/gomobile/build.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,16 @@ func goCmdAt(at string, subcmd string, srcs []string, env []string, args ...stri
329329
return runCmd(cmd)
330330
}
331331

332+
func goModTidyAt(at string, env []string) error {
333+
cmd := exec.Command("go", "mod", "tidy")
334+
if buildV {
335+
cmd.Args = append(cmd.Args, "-v")
336+
}
337+
cmd.Env = append([]string{}, env...)
338+
cmd.Dir = at
339+
return runCmd(cmd)
340+
}
341+
332342
func parseBuildTarget(buildTarget string) (os string, archs []string, _ error) {
333343
if buildTarget == "" {
334344
return "", nil, fmt.Errorf(`invalid target ""`)

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMx
88
golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4=
99
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
1010
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
11-
golang.org/x/mod v0.1.0 h1:sfUMP1Gu8qASkorDVjnMuvgJzwFbTZSeXFiGBYAVdl4=
1211
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
1312
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
1413
golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd h1:ePuNC7PZ6O5BzgPn9bZayERXBdfZjUYoXEf5BTfDfh8=
@@ -22,7 +21,6 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5
2221
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2322
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
2423
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
25-
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e h1:aZzprAO9/8oim3qStq3wc1Xuxx4QmAGriC4VU4ojemQ=
2624
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
2725
golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69 h1:yBHHx+XZqXJBm6Exke3N7V9gnlsyXxoCPEb1yVenjfk=
2826
golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=

0 commit comments

Comments
 (0)