Ask questionscmd/go: "found, but does not contain package" error refers to replaced version instead of its replacement
<!-- Please answer these questions before submitting your issue. Thanks! -->
go version)?<pre> $ go version go version go1.13 darwin/amd64 </pre>
Yes
go env)?<details><summary><code>go env</code> Output</summary><br><pre> $ go env GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/Users/rajagast/Library/Caches/go-build" GOENV="/Users/rajagast/Library/Application Support/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GONOPROXY="none" GONOSUMDB="git.company.com" GOOS="darwin" GOPATH="/Users/rajagast/go" GOPRIVATE="git.company.com" GOPROXY="https://athens.company.com" GOROOT="/usr/local/Cellar/go/1.13/libexec" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/usr/local/Cellar/go/1.13/libexec/pkg/tool/darwin_amd64" GCCGO="gccgo" AR="ar" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="/Users/rajagast/go/src/git.company.com/CPSG/ccp-operator/go.mod" 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/d0/18x8fk8571v3t2p12n8r340h0000gn/T/go-build223406614=/tmp/go-build -gno-record-gcc-switches -fno-common" </pre></details>
I have k8s.io/code-generator as a tools dependency i.e. I have a top-level tools.go file with these contents:
// +build tools
package tools
import (
_ "k8s.io/code-generator/cmd/client-gen"
_ "k8s.io/code-generator/cmd/conversion-gen"
_ "k8s.io/code-generator/cmd/deepcopy-gen"
_ "k8s.io/code-generator/cmd/defaulter-gen"
_ "k8s.io/code-generator/cmd/informer-gen"
_ "k8s.io/code-generator/cmd/lister-gen"
_ "k8s.io/code-generator/cmd/openapi-gen"
)
I also have one private dependency, so according to go1.13 I'm setting appropriate env variables.
$ go env -w GOPRIVATE=git.company.com GOPROXY=https://athens.company.com GONOPROXY=none
When I do go mod tidy, I get the following failure which is very vague:
go: finding k8s.io/code-generator latest
git.company.com/CPSG/ccp-operator imports
k8s.io/code-generator/cmd/openapi-gen: module k8s.io/code-generator/cmd/openapi-gen: reading https://athens.company.com/k8s.io/code-generator/cmd/openapi-gen/@v/list: 500 Internal Server Error
git.company.com/CPSG/ccp-operator/pkg/controller/cluster/worker imports
github.com/openshift/kubernetes-drain tested by
github.com/openshift/kubernetes-drain.test imports
github.com/go-log/log/capture: module github.com/go-log/log/capture: reading https://athens.company.com/github.com/go-log/log/capture/@v/list: 500 Internal Server Error
The interesting thing is when I turn off GOPROXY with go env -w "GOPROXY=", it shows a different error:
go: finding k8s.io/code-generator latest
git.company.com/CPSG/ccp-operator imports
k8s.io/code-generator/cmd/openapi-gen: module k8s.io/code-generator@latest (v0.0.0-20190831074504-732c9ca86353) found, but does not contain package k8s.io/code-generator/cmd/openapi-gen
git.company.com/CPSG/ccp-operator/pkg/controller/cluster/worker imports
github.com/openshift/kubernetes-drain tested by
github.com/openshift/kubernetes-drain.test imports
github.com/go-log/log/capture: module github.com/go-log/log@latest (v0.1.0) found, but does not contain package github.com/go-log/log/capture
The error k8s.io/code-generator/cmd/openapi-gen: module k8s.io/code-generator@latest (v0.0.0-20190831074504-732c9ca86353) found, but does not contain package k8s.io/code-generator/cmd/openapi-gen is strange because latest code in that repo does contain that package.
Fwiw, this used to work perfectly fine with go1.12.9 yesterday.
This is my go.mod:
module git.company.com/CPSG/ccp-operator
go 1.12
require (
github.com/docker/distribution v2.7.1+incompatible // indirect
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c // indirect
github.com/elazarl/goproxy v0.0.0-20181111060418-2ce16c963a8a // indirect
github.com/evanphx/json-patch v4.2.0+incompatible // indirect
github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-log/log v0.1.0 // indirect
github.com/go-logr/logr v0.1.0
github.com/go-logr/zapr v0.1.0
github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d // indirect
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
github.com/golang/groupcache v0.0.0-20180924190550-6f2cf27854a4 // indirect
github.com/google/btree v1.0.0 // indirect
github.com/google/uuid v1.1.1
github.com/googleapis/gnostic v0.2.0 // indirect
github.com/gorilla/mux v1.7.1
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect
github.com/hashicorp/golang-lru v0.5.1 // indirect
github.com/imdario/mergo v0.3.6 // indirect
github.com/json-iterator/go v1.1.7 // indirect
github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/onsi/ginkgo v1.8.0
github.com/onsi/gomega v1.5.0
github.com/opencontainers/go-digest v1.0.0-rc1 // indirect
github.com/openshift/cluster-network-operator v0.0.0-20190613202004-28fc1e342cde // indirect
github.com/openshift/kubernetes-drain v0.0.0-20180831174519-c2e51be1758e
github.com/operator-framework/operator-sdk v0.4.1
github.com/pborman/uuid v1.2.0
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pkg/errors v0.8.1
github.com/prometheus/client_golang v0.9.2 // indirect
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 // indirect
github.com/prometheus/common v0.2.0 // indirect
github.com/prometheus/procfs v0.0.0-20190403104016-ea9eea638872 // indirect
github.com/renstrom/dedent v0.0.0-00010101000000-000000000000 // indirect
github.com/rogpeppe/go-internal v1.3.0 // indirect
github.com/spf13/pflag v1.0.3 // indirect
github.com/vmware/govmomi v0.19.0
go.uber.org/atomic v1.3.2 // indirect
go.uber.org/multierr v1.1.0 // indirect
go.uber.org/zap v1.9.1
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 // indirect
golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc
golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a // indirect
golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f // indirect
golang.org/x/text v0.3.2 // indirect
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 // indirect
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac // indirect
google.golang.org/appengine v1.5.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.2.2 // indirect
k8s.io/api v0.0.0-20190704094930-781da4e7b28a
k8s.io/apiextensions-apiserver v0.0.0-20190704104408-4c62af35d786
k8s.io/apimachinery v0.0.0-20190704094625-facf06a8f4b8
k8s.io/apiserver v0.0.0-20190704101201-5341ddeccec6 // indirect
k8s.io/client-go v10.0.0+incompatible
k8s.io/cluster-bootstrap v0.0.0-20190704110328-86aca54c9e62
k8s.io/code-generator v0.0.0-20190704094322-1ed9df051d9b
k8s.io/gengo v0.0.0-20190826232639-a874a240740c // indirect
k8s.io/klog v0.4.0 // indirect
k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf // indirect
k8s.io/kube-proxy v0.0.0-20190704105642-5b7f4f839816 // indirect
k8s.io/kubelet v0.0.0-20190704105832-d6717358a5ca // indirect
k8s.io/kubernetes v1.13.5
k8s.io/utils v0.0.0-20190607212802-c55fbcfc754a // indirect
sigs.k8s.io/controller-runtime v0.1.9
sigs.k8s.io/testing_frameworks v0.1.1 // indirect
git.company.com/CPSG/ccp-net-tinker v0.0.2-0.20190614085909-34571ec5f0c5
)
replace (
github.com/renstrom/dedent => github.com/lithammer/dedent v1.1.0
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20190704094322-1ed9df051d9b
)
go mod tidy resolve dependencies correctly without error, as it did with go1.12.9.
Two issues:
go mod tidy says packages do not exist when they are indeed present.GOPROXY is set, it errors out without any meaningful message.
Answer
questions
heschi
It's clearly true that kubernetes-drain depends on a package in log that doesn't exist at the latest tagged version, v0.1.0. So it seems reasonable that 1.13 is unhappy; perhaps it was a bug in 1.12 that it didn't notice. Generally speaking, if go mod tidy notices that there is a package missing, it will try to upgrade to the latest version of the module to see if it exists, but in this case there is no tagged version that contains the capture package. I'd suggest forcing an upgrade by replacing v0.1.0 with master in your go.mod to tell the Go command to use the latest commit rather than the latest tagged version.
@bcmills to confirm that this is all WAI.
Related questions