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: some errors not reported with go list #59186

Open
cherrymui opened this issue Mar 22, 2023 · 5 comments
Open

cmd/go: some errors not reported with go list #59186

cherrymui opened this issue Mar 22, 2023 · 5 comments
Labels
GoCommand cmd/go NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone

Comments

@cherrymui
Copy link
Member

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

tip (go1.21-4d9beb2052)

Does this issue reproduce with the latest release?

Yes

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

darwin/amd64

What did you do?

Having a module with two packages a and b. b is a main package. a imports b (erroneously).

go.mod

module m

go 1.21

a/a.go

package a

import _ "m/b"

b/b.go

package main

func main() {}

Run go list ./a ./b.

What did you expect to see?

Report the error for importing a non-importable package, like

a/a.go:3:8: import "m/b" is a program, not an importable package
m/a
m/b

What did you see instead?

No error, with 0 exit code.

$ go list ./a ./b
m/a
m/b
$ echo $?
0

Interestingly, go list -test ./a ./b reports the error, although the error has nothing to do with test files (there is none). The documentation doesn't seem to mention that the -test flag can cause different behavior for error reporting.

There are also some other errors not being reported with go list, but reported with go list -test. https://cs.opensource.google/go/go/+/master:src/cmd/go/testdata/script/vendor_import.txt is one example. bad.go and invalid.go contains some errors, but the go list command succeeded.

It looks like the different behavior is related to that this code https://cs.opensource.google/go/go/+/master:src/cmd/go/internal/list/list.go;l=736-788 runs when -test is specified.

Found while working on CL https://golang.org/cl/474236.

cc @bcmills

@cherrymui cherrymui added NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. GoCommand cmd/go labels Mar 22, 2023
@gopherbot
Copy link

Change https://go.dev/cl/477838 mentions this issue: cmd/go: permit "go list" error in some tests

gopherbot pushed a commit that referenced this issue Mar 22, 2023
The vendor_import test lists packages that are known bad (e.g.
bad.go, invalid.go). Pass -e to permit error.

The mod_vendor_auto test includes a package that imports a main
package, which should be an error. Pass -e to permit error.

Updates #59186.

Change-Id: I3b63025c3935f55feda1a95151d4c688d0394644
Reviewed-on: https://go-review.googlesource.com/c/go/+/477838
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
@bcmills bcmills added this to the Backlog milestone Mar 22, 2023
@cherrymui
Copy link
Member Author

cherrymui commented Mar 23, 2023

After CL https://golang.org/cl/474236, when listing multiple packages, the default -pgo=auto mode will cause this code https://cs.opensource.google/go/go/+/master:src/cmd/go/internal/list/list.go;l=736-788 to run, which will cause it to report the error. go list -pgo=off ./a ./b will get back to the previous (Go 1.20) unexpected behavior.

@seankhliao
Copy link
Member

I thought blank imports of main packages were allowed as a way to track dependencies, eg when using the tools.go pattern.

@bcmills
Copy link
Member

bcmills commented Apr 3, 2023

@seankhliao, go mod tidy allows them, but in general we expect go list to follow go build in terms of what errors it reports, and go build certainly will not let you import a package main explicitly.

@thockin
Copy link

thockin commented May 27, 2023

I hit this through another vector, but similar. It seems very strange to assert that I can't list, when I am allowed to set up this construct in the first place. This is a breaking change - is it really worth it?

thockin added a commit to thockin/kubernetes that referenced this issue May 28, 2023
Remove vendor'ed symlinks, run updated script.

The edits to a few go.mod files wrt code-generator are unexplained,
except that Go broke something that used to work
(golang/go#59186) which forced me to comment
stuff out.

This depends on gotip (gotip download 495801).

Results:

`go build` and `go test` work:

```
$ export  PATH=/home/thockin/sdk/gotip/bin:$PATH

$ go build ./cmd/kubectl

$ go build k8s.io/kubernetes/cmd/kubectl

$ go test ./cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go test k8s.io/kubernetes/cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go build ./staging/src/k8s.io/api

$ go build k8s.io/api

$ go test ./staging/src/k8s.io/api
ok  	k8s.io/api	3.225s

$ go test k8s.io/api
ok  	k8s.io/api	(cached)
```

`make` and `make test` sometimes work (not surprising):

```
$ export PATH=/home/thockin/sdk/gotip/bin:$PATH
$ export FORCE_HOST_GO=true

$ make kubectl
+++ [0527 09:51:20] Setting GOMAXPROCS: 12
+++ [0527 09:51:20] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make WHAT=./cmd/kubectl/
+++ [0527 09:55:55] Setting GOMAXPROCS: 12
+++ [0527 09:55:55] Building go targets for linux/amd64
    k8s.io/kubernetes/./cmd/kubectl/ (non-static)

$ make WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:05:42] Setting GOMAXPROCS: 12
+++ [0527 10:05:42] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make test WHAT=./cmd/kubectl
+++ [0527 10:07:00] Setting GOMAXPROCS: 12
+++ [0527 10:07:00] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:07:25] Setting GOMAXPROCS: 12
+++ [0527 10:07:25] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make WHAT=./staging/src/k8s.io/api
+++ [0527 10:08:18] Setting GOMAXPROCS: 12
+++ [0527 10:08:18] Building go targets for linux/amd64
    k8s.io/kubernetes/./staging/src/k8s.io/api (non-static)
cannot find module providing package k8s.io/kubernetes/staging/src/k8s.io/api: import lookup disabled by -mod=vendor
	(Go version in go.work is at least 1.14 and vendor directory exists.)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: /home/thockin/src/kubernetes/hack/lib/golang.sh:783 kube::golang::build_some_binaries(...)
!!! [0527 10:08:18]  2: /home/thockin/src/kubernetes/hack/lib/golang.sh:942 kube::golang::build_binaries_for_platform(...)
!!! [0527 10:08:18]  3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
make: *** [Makefile:92: all] Error 1

$ make WHAT=k8s.io/api
+++ [0527 10:08:34] Setting GOMAXPROCS: 12
+++ [0527 10:08:34] Building go targets for linux/amd64
    k8s.io/api (non-static)

$ make test WHAT=./staging/src/k8s.io/api
+++ [0527 10:09:41] Setting GOMAXPROCS: 12
+++ [0527 10:09:41] Running tests without code coverage and with -race
code in directory /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/staging/src/k8s.io/api expects import "k8s.io/api"
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/api
+++ [0527 10:09:50] Setting GOMAXPROCS: 12
!!! [0527 10:09:50] specified test path '${GOPATH}/src/k8s.io/api' does not exist
make: *** [Makefile:184: test] Error 1
```
thockin added a commit to thockin/kubernetes that referenced this issue May 28, 2023
Remove vendor'ed symlinks, run updated script.

The edits to a few go.mod files wrt code-generator are unexplained,
except that Go broke something that used to work
(golang/go#59186) which forced me to comment
stuff out.

This depends on gotip (gotip download 495801).

Results:

`go build` and `go test` work:

```
$ export  PATH=/home/thockin/sdk/gotip/bin:$PATH

$ go build ./cmd/kubectl

$ go build k8s.io/kubernetes/cmd/kubectl

$ go test ./cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go test k8s.io/kubernetes/cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go build ./staging/src/k8s.io/api

$ go build k8s.io/api

$ go test ./staging/src/k8s.io/api
ok  	k8s.io/api	3.225s

$ go test k8s.io/api
ok  	k8s.io/api	(cached)
```

`make` and `make test` sometimes work (not surprising):

```
$ export PATH=/home/thockin/sdk/gotip/bin:$PATH
$ export FORCE_HOST_GO=true

$ make kubectl
+++ [0527 09:51:20] Setting GOMAXPROCS: 12
+++ [0527 09:51:20] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make WHAT=./cmd/kubectl/
+++ [0527 09:55:55] Setting GOMAXPROCS: 12
+++ [0527 09:55:55] Building go targets for linux/amd64
    k8s.io/kubernetes/./cmd/kubectl/ (non-static)

$ make WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:05:42] Setting GOMAXPROCS: 12
+++ [0527 10:05:42] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make test WHAT=./cmd/kubectl
+++ [0527 10:07:00] Setting GOMAXPROCS: 12
+++ [0527 10:07:00] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:07:25] Setting GOMAXPROCS: 12
+++ [0527 10:07:25] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make WHAT=./staging/src/k8s.io/api
+++ [0527 10:08:18] Setting GOMAXPROCS: 12
+++ [0527 10:08:18] Building go targets for linux/amd64
    k8s.io/kubernetes/./staging/src/k8s.io/api (non-static)
cannot find module providing package k8s.io/kubernetes/staging/src/k8s.io/api: import lookup disabled by -mod=vendor
	(Go version in go.work is at least 1.14 and vendor directory exists.)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: /home/thockin/src/kubernetes/hack/lib/golang.sh:783 kube::golang::build_some_binaries(...)
!!! [0527 10:08:18]  2: /home/thockin/src/kubernetes/hack/lib/golang.sh:942 kube::golang::build_binaries_for_platform(...)
!!! [0527 10:08:18]  3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
make: *** [Makefile:92: all] Error 1

$ make WHAT=k8s.io/api
+++ [0527 10:08:34] Setting GOMAXPROCS: 12
+++ [0527 10:08:34] Building go targets for linux/amd64
    k8s.io/api (non-static)

$ make test WHAT=./staging/src/k8s.io/api
+++ [0527 10:09:41] Setting GOMAXPROCS: 12
+++ [0527 10:09:41] Running tests without code coverage and with -race
code in directory /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/staging/src/k8s.io/api expects import "k8s.io/api"
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/api
+++ [0527 10:09:50] Setting GOMAXPROCS: 12
!!! [0527 10:09:50] specified test path '${GOPATH}/src/k8s.io/api' does not exist
make: *** [Makefile:184: test] Error 1
```
thockin added a commit to thockin/kubernetes that referenced this issue May 28, 2023
Remove vendor'ed symlinks, run updated script.

The edits to a few go.mod files wrt code-generator are unexplained,
except that Go broke something that used to work
(golang/go#59186) which forced me to comment
stuff out.

This depends on gotip (gotip download 495801).

Results:

`go build` and `go test` work:

```
$ export  PATH=/home/thockin/sdk/gotip/bin:$PATH

$ go build ./cmd/kubectl

$ go build k8s.io/kubernetes/cmd/kubectl

$ go test ./cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go test k8s.io/kubernetes/cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go build ./staging/src/k8s.io/api

$ go build k8s.io/api

$ go test ./staging/src/k8s.io/api
ok  	k8s.io/api	3.225s

$ go test k8s.io/api
ok  	k8s.io/api	(cached)
```

`make` and `make test` sometimes work (not surprising):

```
$ export PATH=/home/thockin/sdk/gotip/bin:$PATH
$ export FORCE_HOST_GO=true

$ make kubectl
+++ [0527 09:51:20] Setting GOMAXPROCS: 12
+++ [0527 09:51:20] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make WHAT=./cmd/kubectl/
+++ [0527 09:55:55] Setting GOMAXPROCS: 12
+++ [0527 09:55:55] Building go targets for linux/amd64
    k8s.io/kubernetes/./cmd/kubectl/ (non-static)

$ make WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:05:42] Setting GOMAXPROCS: 12
+++ [0527 10:05:42] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make test WHAT=./cmd/kubectl
+++ [0527 10:07:00] Setting GOMAXPROCS: 12
+++ [0527 10:07:00] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:07:25] Setting GOMAXPROCS: 12
+++ [0527 10:07:25] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make WHAT=./staging/src/k8s.io/api
+++ [0527 10:08:18] Setting GOMAXPROCS: 12
+++ [0527 10:08:18] Building go targets for linux/amd64
    k8s.io/kubernetes/./staging/src/k8s.io/api (non-static)
cannot find module providing package k8s.io/kubernetes/staging/src/k8s.io/api: import lookup disabled by -mod=vendor
	(Go version in go.work is at least 1.14 and vendor directory exists.)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: /home/thockin/src/kubernetes/hack/lib/golang.sh:783 kube::golang::build_some_binaries(...)
!!! [0527 10:08:18]  2: /home/thockin/src/kubernetes/hack/lib/golang.sh:942 kube::golang::build_binaries_for_platform(...)
!!! [0527 10:08:18]  3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
make: *** [Makefile:92: all] Error 1

$ make WHAT=k8s.io/api
+++ [0527 10:08:34] Setting GOMAXPROCS: 12
+++ [0527 10:08:34] Building go targets for linux/amd64
    k8s.io/api (non-static)

$ make test WHAT=./staging/src/k8s.io/api
+++ [0527 10:09:41] Setting GOMAXPROCS: 12
+++ [0527 10:09:41] Running tests without code coverage and with -race
code in directory /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/staging/src/k8s.io/api expects import "k8s.io/api"
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/api
+++ [0527 10:09:50] Setting GOMAXPROCS: 12
!!! [0527 10:09:50] specified test path '${GOPATH}/src/k8s.io/api' does not exist
make: *** [Makefile:184: test] Error 1
```
thockin added a commit to thockin/kubernetes that referenced this issue May 28, 2023
Remove vendor'ed symlinks, run updated script.

This depends on gotip (gotip download 495801).

PATH="$(gotip env GOROOT)/bin:$PATH \
FORCE_HOST_GO=true \
./hack/update-vendor.sh

TODO:

The edits to a few go.mod files wrt code-generator are unexplained,
except that Go broke something that used to work
(golang/go#59186) which forced me to comment
stuff out.

This depends on gotip (gotip download 495801).

Results:

`go build` and `go test` work:

```
$ export  PATH=/home/thockin/sdk/gotip/bin:$PATH

$ go build ./cmd/kubectl

$ go build k8s.io/kubernetes/cmd/kubectl

$ go test ./cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go test k8s.io/kubernetes/cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go build ./staging/src/k8s.io/api

$ go build k8s.io/api

$ go test ./staging/src/k8s.io/api
ok  	k8s.io/api	3.225s

$ go test k8s.io/api
ok  	k8s.io/api	(cached)
```

`make` and `make test` sometimes work (not surprising):

```
$ export PATH=/home/thockin/sdk/gotip/bin:$PATH
$ export FORCE_HOST_GO=true

$ make kubectl
+++ [0527 09:51:20] Setting GOMAXPROCS: 12
+++ [0527 09:51:20] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make WHAT=./cmd/kubectl/
+++ [0527 09:55:55] Setting GOMAXPROCS: 12
+++ [0527 09:55:55] Building go targets for linux/amd64
    k8s.io/kubernetes/./cmd/kubectl/ (non-static)

$ make WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:05:42] Setting GOMAXPROCS: 12
+++ [0527 10:05:42] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make test WHAT=./cmd/kubectl
+++ [0527 10:07:00] Setting GOMAXPROCS: 12
+++ [0527 10:07:00] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:07:25] Setting GOMAXPROCS: 12
+++ [0527 10:07:25] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make WHAT=./staging/src/k8s.io/api
+++ [0527 10:08:18] Setting GOMAXPROCS: 12
+++ [0527 10:08:18] Building go targets for linux/amd64
    k8s.io/kubernetes/./staging/src/k8s.io/api (non-static)
cannot find module providing package k8s.io/kubernetes/staging/src/k8s.io/api: import lookup disabled by -mod=vendor
	(Go version in go.work is at least 1.14 and vendor directory exists.)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: /home/thockin/src/kubernetes/hack/lib/golang.sh:783 kube::golang::build_some_binaries(...)
!!! [0527 10:08:18]  2: /home/thockin/src/kubernetes/hack/lib/golang.sh:942 kube::golang::build_binaries_for_platform(...)
!!! [0527 10:08:18]  3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
make: *** [Makefile:92: all] Error 1

$ make WHAT=k8s.io/api
+++ [0527 10:08:34] Setting GOMAXPROCS: 12
+++ [0527 10:08:34] Building go targets for linux/amd64
    k8s.io/api (non-static)

$ make test WHAT=./staging/src/k8s.io/api
+++ [0527 10:09:41] Setting GOMAXPROCS: 12
+++ [0527 10:09:41] Running tests without code coverage and with -race
code in directory /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/staging/src/k8s.io/api expects import "k8s.io/api"
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/api
+++ [0527 10:09:50] Setting GOMAXPROCS: 12
!!! [0527 10:09:50] specified test path '${GOPATH}/src/k8s.io/api' does not exist
make: *** [Makefile:184: test] Error 1
```
thockin added a commit to thockin/kubernetes that referenced this issue May 28, 2023
Remove vendor'ed symlinks, run updated script.

This depends on gotip (gotip download 495801).

PATH="$(gotip env GOROOT)/bin:$PATH \
FORCE_HOST_GO=true \
./hack/update-vendor.sh

TODO:

The edits to a few go.mod files wrt code-generator are unexplained,
except that Go broke something that used to work
(golang/go#59186) which forced me to comment
stuff out.

This depends on gotip (gotip download 495801).

Results:

`go build` and `go test` work:

```
$ export  PATH=/home/thockin/sdk/gotip/bin:$PATH

$ go build ./cmd/kubectl

$ go build k8s.io/kubernetes/cmd/kubectl

$ go test ./cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go test k8s.io/kubernetes/cmd/kubectl
?   	k8s.io/kubernetes/cmd/kubectl	[no test files]

$ go build ./staging/src/k8s.io/api

$ go build k8s.io/api

$ go test ./staging/src/k8s.io/api
ok  	k8s.io/api	3.225s

$ go test k8s.io/api
ok  	k8s.io/api	(cached)
```

`make` and `make test` sometimes work (not surprising):

```
$ export PATH=/home/thockin/sdk/gotip/bin:$PATH
$ export FORCE_HOST_GO=true

$ make kubectl
+++ [0527 09:51:20] Setting GOMAXPROCS: 12
+++ [0527 09:51:20] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make WHAT=./cmd/kubectl/
+++ [0527 09:55:55] Setting GOMAXPROCS: 12
+++ [0527 09:55:55] Building go targets for linux/amd64
    k8s.io/kubernetes/./cmd/kubectl/ (non-static)

$ make WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:05:42] Setting GOMAXPROCS: 12
+++ [0527 10:05:42] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make test WHAT=./cmd/kubectl
+++ [0527 10:07:00] Setting GOMAXPROCS: 12
+++ [0527 10:07:00] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [0527 10:07:25] Setting GOMAXPROCS: 12
+++ [0527 10:07:25] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:184: test] Error 1

$ make WHAT=./staging/src/k8s.io/api
+++ [0527 10:08:18] Setting GOMAXPROCS: 12
+++ [0527 10:08:18] Building go targets for linux/amd64
    k8s.io/kubernetes/./staging/src/k8s.io/api (non-static)
cannot find module providing package k8s.io/kubernetes/staging/src/k8s.io/api: import lookup disabled by -mod=vendor
	(Go version in go.work is at least 1.14 and vendor directory exists.)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: /home/thockin/src/kubernetes/hack/lib/golang.sh:783 kube::golang::build_some_binaries(...)
!!! [0527 10:08:18]  2: /home/thockin/src/kubernetes/hack/lib/golang.sh:942 kube::golang::build_binaries_for_platform(...)
!!! [0527 10:08:18]  3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0527 10:08:18] Call tree:
!!! [0527 10:08:18]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
make: *** [Makefile:92: all] Error 1

$ make WHAT=k8s.io/api
+++ [0527 10:08:34] Setting GOMAXPROCS: 12
+++ [0527 10:08:34] Building go targets for linux/amd64
    k8s.io/api (non-static)

$ make test WHAT=./staging/src/k8s.io/api
+++ [0527 10:09:41] Setting GOMAXPROCS: 12
+++ [0527 10:09:41] Running tests without code coverage and with -race
code in directory /home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/staging/src/k8s.io/api expects import "k8s.io/api"
make: *** [Makefile:184: test] Error 1

$ make test WHAT=k8s.io/api
+++ [0527 10:09:50] Setting GOMAXPROCS: 12
!!! [0527 10:09:50] specified test path '${GOPATH}/src/k8s.io/api' does not exist
make: *** [Makefile:184: test] Error 1
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
GoCommand cmd/go NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Projects
None yet
Development

No branches or pull requests

5 participants