Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/go: go list complains about "missing dot" with unknown imports #33807

Closed
hajimehoshi opened this issue Aug 23, 2019 · 12 comments
Closed

cmd/go: go list complains about "missing dot" with unknown imports #33807

hajimehoshi opened this issue Aug 23, 2019 · 12 comments
Labels
FrozenDueToAge mobile Android, iOS, and x/mobile
Milestone

Comments

@hajimehoshi
Copy link
Member

hajimehoshi commented Aug 23, 2019

What version of Go are you using (go version)?

$ go1.13rc1 version
go version go1.13rc1 darwin/amd64

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/hajimehoshi/Library/Caches/go-build"
GOENV="/Users/hajimehoshi/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/hajimehoshi/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/hajimehoshi/sdk/go1.13rc1"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/hajimehoshi/sdk/go1.13rc1/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/go-build377164815=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

go1.13rc1 test -v -run=TestClasses -count=1 golang.org/x/mobile/bind/java/

In order to reproduce the problem, the change https://go-review.googlesource.com/c/mobile/+/190479 is required on my local machine to force to use the patched gomobile/gobind. This CL changes $PATH order to use the guilt gomobile/gobind.

What did you expect to see?

The test passes

What did you see instead?

$ go1.13rc1 test -v -run=TestClasses -count=1 ./bind/java/
=== RUN   TestClasses
--- FAIL: TestClasses (5.07s)
    seq_test.go:124: tmpdir = /var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/bind-java-seq-test-724090206
    seq_test.go:145: /var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/bind-java-test-401428283/gomobile: /var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/bind-java-test-401428283/gobind -lang=go,java -outdir=/var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/gomobile-work-069256369 -tags=aaa,bbb golang.org/x/mobile/bind/testdata/testpkg/javapkg failed: exit status 1                                                                                                             
        type-checking package "golang.org/x/mobile/bind/testdata/testpkg/javapkg" failed (/Users/hajimehoshi/go/src/golang.org/x/mobile/bind/testdata/testpkg/javapkg/classes.go:8:2: could not import Java/java/beans (go/build: importGo Java/java/beans: exit status 1
        can't load package: package Java/java/beans: malformed module path "Java/java/beans": missing dot in first path element                                                                                                              

        ))


    seq_test.go:146: failed to run gomobile bind: exit status 1
FAIL
FAIL    golang.org/x/mobile/bind/java   6.361s
FAIL

This is actually what the try bots are complaining. (Apparently the try bots use Go 1.13 or later).

CC @hyangah

@hajimehoshi hajimehoshi changed the title mobile: test fails with Go 1.13 x/mobile: test fails with Go 1.13 Aug 23, 2019
@gopherbot gopherbot added this to the Unreleased milestone Aug 23, 2019
@gopherbot gopherbot added the mobile Android, iOS, and x/mobile label Aug 23, 2019
@gopherbot
Copy link
Contributor

Change https://golang.org/cl/191657 mentions this issue: all: use GOROOT/bin/go instead of go

@hajimehoshi
Copy link
Member Author

Inserted a panic at the Go compiler like:

--- a/src/cmd/go/internal/module/module.go
+++ b/src/cmd/go/internal/module/module.go
@@ -184,6 +184,7 @@ func CheckPath(path string) error {
                return fmt.Errorf("malformed module path %q: leading slash", path)
        }
        if !strings.Contains(path[:i], ".") {
+               panic("!?")
                return fmt.Errorf("malformed module path %q: missing dot in first path element", path)
        }
        if path[0] == '-' {

then get the result:

=== RUN   TestClasses
--- FAIL: TestClasses (9.05s)
    seq_test.go:124: tmpdir = /var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/bind-java-seq-test-129829619
    seq_test.go:145: /var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/bind-java-test-554361572/gomobile: /var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/bind-java-test-554361572/gobind -lang=go,java -outdir=/var/folders/ht/ky_bwgzs4bd5z1hh02k34x_h0000gn/T/gomobile-work-831800625 -tags=aaa,bbb golang.org/x/mobile/bind/testdata/testpkg/javapkg failed: exit status 1                                                                                                             
        2019/08/24 04:27:30 go [list -e -json -compiled=true -test=false -export=false -deps=true -find=false -tags aaa bbb -- golang.org/x/mobile/bind/testdata/testpkg/javapkg]: exit status 2: go: finding golang.org/x/mobile latest     
        panic: !?

        goroutine 251 [running]:
        cmd/go/internal/module.CheckPath(0xc000686521, 0x17, 0x24ceff1eea4b52ca, 0x164987f)
                /Users/hajimehoshi/go-code/src/cmd/go/internal/module/module.go:187 +0x567
        cmd/go/internal/module.EncodePath(0xc000686521, 0x17, 0xc000234180, 0x0, 0x0, 0xc000432700)
                /Users/hajimehoshi/go-code/src/cmd/go/internal/module/module.go:528 +0x39
        cmd/go/internal/modfetch.newProxyRepo(0x164987f, 0x18, 0xc000686521, 0x17, 0xc0001e4300, 0xc0004328b0, 0x1077040, 0x1ab1b20)                                                                                                         
                /Users/hajimehoshi/go-code/src/cmd/go/internal/modfetch/proxy.go:185 +0x1f2
        cmd/go/internal/modfetch.lookup(0x164987f, 0x18, 0xc000686521, 0x17, 0x15589a0, 0xc0000d0060, 0x3201b28, 0xc0005981c0)                                                                                                               
                /Users/hajimehoshi/go-code/src/cmd/go/internal/modfetch/repo.go:237 +0x1c5
        cmd/go/internal/modfetch.Lookup.func1(0x1ab1b20, 0x15c0fa0)
                /Users/hajimehoshi/go-code/src/cmd/go/internal/modfetch/repo.go:201 +0x57
        cmd/go/internal/par.(*Cache).Do(0x1ab1b20, 0x15c0fa0, 0xc0005981a0, 0xc000432970, 0x4db0ddc2f17fd781, 0x5c6e9f7c6e2ac3fe)                                                                                                            
                /Users/hajimehoshi/go-code/src/cmd/go/internal/par/work.go:128 +0xec
        cmd/go/internal/modfetch.Lookup(0x164987f, 0x18, 0xc000686521, 0x17, 0x4080401000f0000, 0x8d5738e79f2c0001, 0x66f997546da3a0cd, 0x909b8221453f3f14)                                                                                  
                /Users/hajimehoshi/go-code/src/cmd/go/internal/modfetch/repo.go:200 +0xea
        cmd/go/internal/modload.queryProxy(0x164987f, 0x18, 0xc000686521, 0x17, 0x163a23a, 0x6, 0x0, 0x0, 0x1681610, 0xc00019a360, ...)                                                                                                      
                /Users/hajimehoshi/go-code/src/cmd/go/internal/modload/query.go:196 +0x148
        cmd/go/internal/modload.QueryPattern.func3.1(0xc000686521, 0x17, 0xc000686521, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)                                                                                                              
                /Users/hajimehoshi/go-code/src/cmd/go/internal/modload/query.go:372 +0xda
        cmd/go/internal/modload.queryPrefixModules.func1(0xc000246190, 0xc000644140, 0xc000686521, 0x17, 0xc000594dc0)
                /Users/hajimehoshi/go-code/src/cmd/go/internal/modload/query.go:442 +0x55
        created by cmd/go/internal/modload.queryPrefixModules
                /Users/hajimehoshi/go-code/src/cmd/go/internal/modload/query.go:441 +0x12b

    seq_test.go:146: failed to run gomobile bind: exit status 1

@hajimehoshi
Copy link
Member Author

hajimehoshi commented Aug 23, 2019

go1.13rc1 list -e -json -compiled=true -test=false -export=false -deps=true -find=false -tags "aaa bbb" -- golang.org/x/mobile/bind/testdata/testpkg/javapkg

outputs a JSON with Err columns:

{
        "ImportPath": "Java/java/beans",
        "DepOnly": true,
        "Incomplete": true,
        "Stale": true,
        "StaleReason": "build ID mismatch",
        "Error": {
                "ImportStack": [
                        "golang.org/x/mobile/bind/testdata/testpkg/javapkg",
                        "Java/java/beans"
                ],
                "Pos": "bind/testdata/testpkg/javapkg/classes.go:8:2",
                "Err": "malformed module path \"Java/java/beans\": missing dot in first path element"
        }
}
{
        "ImportPath": "Java/java/io",
        "DepOnly": true,
        "Incomplete": true,
        "Stale": true,
        "StaleReason": "build ID mismatch",
        "Error": {
                "ImportStack": [
                        "golang.org/x/mobile/bind/testdata/testpkg/javapkg",
                        "Java/java/io"
                ],
                "Pos": "bind/testdata/testpkg/javapkg/classes.go:9:2",
                "Err": "malformed module path \"Java/java/io\": missing dot in first path element"
        }
}
...

@hajimehoshi
Copy link
Member Author

go list with javapkg

go1.13rc1 list -json -deps=true -- golang.org/x/mobile/bind/testdata/testpkg/javapkg

results in

{
        "ImportPath": "Java/java/beans",
        "DepOnly": true,
        "Incomplete": true,
        "Stale": true,
        "StaleReason": "build ID mismatch",
        "Error": {
                "ImportStack": [
                        "golang.org/x/mobile/bind/testdata/testpkg/javapkg",
                        "Java/java/beans"
                ],
                "Pos": "bind/testdata/testpkg/javapkg/classes.go:8:2",
                "Err": "malformed module path \"Java/java/beans\": missing dot in first path element"
        }
}
{
        "ImportPath": "Java/java/io",
        "DepOnly": true,
        "Incomplete": true,
        "Stale": true,
        "StaleReason": "build ID mismatch",
        "Error": {
                "ImportStack": [
                        "golang.org/x/mobile/bind/testdata/testpkg/javapkg",
                        "Java/java/io"
                ],
                "Pos": "bind/testdata/testpkg/javapkg/classes.go:9:2",
                "Err": "malformed module path \"Java/java/io\": missing dot in first path element"
        }
}

go list with a Go file with unknown imports

package main

import "foo"

func main() {}

and

go1.13rc1 list -json -deps=true -- ./foo.go

results in

build command-line-arguments: cannot load foo: malformed module path "foo": missing dot in first path element

@hajimehoshi hajimehoshi changed the title x/mobile: test fails with Go 1.13 cmd/go: go list complains about "missing dot" with unknown imports Aug 24, 2019
@bcmills
Copy link
Contributor

bcmills commented Aug 26, 2019

It looks like the underlying problem here is that you're trying to use gomobile in module mode. That doesn't work yet in general (see #27234).

@bcmills
Copy link
Contributor

bcmills commented Aug 26, 2019

The error message here is correct: go get in module mode does not know how to resolve a missing import path that does not contain a dot, since that is not a valid FQDN.

@bcmills
Copy link
Contributor

bcmills commented Aug 26, 2019

Duplicate of #27234

@bcmills bcmills marked this as a duplicate of #27234 Aug 26, 2019
@bcmills bcmills closed this as completed Aug 26, 2019
@hajimehoshi
Copy link
Member Author

OK, so we might need to fix Go itself for reverse binding. @hyangah , what do you think?

@hajimehoshi
Copy link
Member Author

Let's continue discussion at #27234 (comment)

@hyangah
Copy link
Contributor

hyangah commented Aug 26, 2019

I think in the module mode, we should generate this fake packages inside the main module so go list knows they don't need to be resolved.

@lexusX
Copy link

lexusX commented Oct 22, 2019

so, is this bug fixed?

@hajimehoshi
Copy link
Member Author

Yes. This issue happens when Go module is enabled and reverse binding is used at the same time. In the current plan, we don't enable reverse binding when Go module is enabled.

@golang golang locked and limited conversation to collaborators Oct 21, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
FrozenDueToAge mobile Android, iOS, and x/mobile
Projects
None yet
Development

No branches or pull requests

5 participants