Skip to content
This repository has been archived by the owner on Sep 9, 2020. It is now read-only.
This repository has been archived by the owner on Sep 9, 2020. It is now read-only.

Dep does not try other versions of nested dependencies. #346

Closed
AndreasBackx opened this issue Mar 22, 2017 · 5 comments
Closed

Dep does not try other versions of nested dependencies. #346

AndreasBackx opened this issue Mar 22, 2017 · 5 comments
Labels

Comments

@AndreasBackx
Copy link

AndreasBackx commented Mar 22, 2017

What version of Go are you using (go version)?
go version go1.8 darwin/amd64

What operating system and processor architecture are you using?
macOS Sierra

What did you do?
dep init on a project that depends on the master branch of Kubernetes' Go Client.
(Latest commit as of writing this issue)

What did you expect to see?
For it to install the Kubernetes Go Client and its dependencies.

What did you see instead?

solve error: No versions of k8s.io/client-go met constraints:
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version master that package is missing.
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    master: Could not introduce k8s.io/client-go@master, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project bitbucket.org/be-mobile/status-discovery-kubernetes.

Specifically the second line:

master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version master that package is missing.

It is indeed true that go-restful has removed the package swagger, but I expect for it to try the other versions too or at least the latest tagged release/version.

Retrying dep init makes it say it cached the library and so it succeeds for some reason.

@sdboyer
Copy link
Member

sdboyer commented Mar 22, 2017

Thanks for the detailed issue report 🎉 ! There are a few things going on here.

Specifically the second line:

master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version master that package is missing.

It is indeed true that go-restful has removed the package swagger, but I expect for it to try the other versions too or at least the latest tagged release/version.

Ordinarily, it would; failure at that point should trigger guided backjumping, causing the solver to go back and (eventually) start trying different versions of go-restful, then make it back to k8s.io/client-go, at which point it would work. However...

Retrying dep init makes it say it cached the library and so it succeeds for some reason.

This is the key here. There are still occasionally some issues when the solver triggers a bunch of initial clones (which happens on a lot when you first run the tool); some seem to fail, time out, or something in a way that we don't correctly catch. On a subsequent run, once those heavy clones are already done, things are generally much smoother.

That's not saying it's OK, of course - and we're working on it 😄 . I'm in the process right now (sdboyer/gps#196) of refactoring a lot of how the source management is handled in a way that could eliminate problems like this. Even if it doesn't directly, though, we'll have much tighter control and more ability to figure out what actually IS going on.

In the meantime, though, it would be helpful to get more output for this problem. Could you rm -rf $GOPATH/pkg/dep, then run dep init -v? I suspect that what's happening is non-deterministic (due to dependencies on goroutine scheduling and network interaction), so it's unlikely that exactly this same issue would recur. But a) if it does, it's likely a different problem, and b) even if it doesn't, the fuller trace would be helpful for understanding the context of what you've already reported.

@AndreasBackx
Copy link
Author

AndreasBackx commented Mar 23, 2017

Following what you said and resetting the vendoring, lock, and manifest before running dep init -v does reproduce the problem. Here are the logs with some of the package somewhat censored, those are indicated by surrounding *s.

Rerunning it doesn't seem to solve the issue like I thought it did. But when I resetted my repo to the state where I had my manifest and lock, the first dep ensure -update would fail and the second one succeeds. However if I then resetted my vendoring and $GOPATH/pkg/dep again, it would keep failing the second time too. However a third time seemed to be the charm then. This is odd. Below are the logs. It perhaps has to do with some goroutines because the resolution seems random.

$ dep init -v
dep: Finding dependencies for "**my/project/package**"...
dep: Found 2 dependencies.
dep: Building dependency graph...
dep: Found import of "**other/data/package/subpackage1**", analyzing...
dep: Found import of "github.com/Sirupsen/logrus", analyzing...
dep: Could not determine version for "github.com/Sirupsen/logrus", omitting from generated manifest
dep: Found import of "github.com/satori/go.uuid", analyzing...
dep: Found import of "k8s.io/apimachinery/pkg/apis/meta/v1", analyzing...
Cached github.com/satori/go.uuid
dep: Found import of "k8s.io/client-go/informers", analyzing...
dep: Analyzing transitive imports...
dep: Analyzing "k8s.io/client-go/pkg/api/v1"...
dep: Analyzing "github.com/davecgh/go-spew/spew"...
dep: Analyzing "github.com/docker/distribution/reference"...
dep: Analyzing "github.com/gogo/protobuf/proto"...
dep: Analyzing "github.com/gogo/protobuf/sortkeys"...
dep: Analyzing "github.com/ugorji/go/codec"...
dep: Analyzing "k8s.io/apimachinery/pkg/api/meta"...
dep: Analyzing "github.com/emicklei/go-restful"...
dep: Analyzing "github.com/go-openapi/spec"...
dep: Analyzing "github.com/golang/glog"...
dep: Analyzing "github.com/google/gofuzz"...
dep: Analyzing "github.com/spf13/pflag"...
dep: Analyzing "golang.org/x/net/http2"...
dep: Analyzing "gopkg.in/inf.v0"...
dep: Analyzing "k8s.io/apimachinery/pkg/api/resource"...
dep: Analyzing "k8s.io/apimachinery/pkg/apimachinery/announced"...
dep: Analyzing "k8s.io/apimachinery/pkg/apimachinery/registered"...
dep: Analyzing "k8s.io/apimachinery/pkg/apis/meta/v1"...
dep: Analyzing "k8s.io/apimachinery/pkg/conversion"...
dep: Analyzing "k8s.io/apimachinery/pkg/fields"...
dep: Analyzing "k8s.io/apimachinery/pkg/labels"...
dep: Analyzing "k8s.io/apimachinery/pkg/runtime"...
dep: Analyzing "k8s.io/apimachinery/pkg/runtime/schema"...
dep: Analyzing "k8s.io/apimachinery/pkg/runtime/serializer"...
dep: Analyzing "github.com/ghodss/yaml"...
dep: Analyzing "k8s.io/apimachinery/pkg/selection"...
dep: Analyzing "k8s.io/apimachinery/pkg/types"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/intstr"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/rand"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/sets"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/validation/field"...
dep: Analyzing "k8s.io/client-go/pkg/apis/extensions/v1beta1"...
dep: Analyzing "**other/data/package/subpackage1**"...
dep: Analyzing "github.com/Sirupsen/logrus"...
dep: Analyzing "github.com/gorilla/websocket"...
dep: Analyzing "github.com/satori/go.uuid"...
dep: Analyzing "**other/data/package/config**"...
dep: Analyzing "github.com/koding/multiconfig"...
dep: Analyzing "github.com/BurntSushi/toml"...
dep: Analyzing "github.com/fatih/camelcase"...
dep: Analyzing "github.com/fatih/structs"...
Cached github.com/Sirupsen/logrus
dep: Analyzing "**other/data/package**"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/wait"...
dep: Analyzing "k8s.io/client-go/informers"...
dep: Analyzing "github.com/emicklei/go-restful/swagger"...
dep: Analyzing "github.com/juju/ratelimit"...
dep: Analyzing "k8s.io/apimachinery/pkg/api/errors"...
dep: Analyzing "k8s.io/apimachinery/pkg/runtime/serializer/streaming"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/diff"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/net"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/runtime"...
dep: Analyzing "k8s.io/apimachinery/pkg/version"...
dep: Analyzing "k8s.io/apimachinery/pkg/watch"...
dep: Analyzing "k8s.io/client-go/kubernetes"...
dep: Analyzing "k8s.io/client-go/tools/cache"...
dep: Analyzing "k8s.io/client-go/tools/clientcmd"...
dep: Analyzing "github.com/howeyc/gopass"...
dep: Analyzing "github.com/imdario/mergo"...
dep: Analyzing "k8s.io/apimachinery/pkg/runtime/serializer/json"...
dep: Analyzing "k8s.io/apimachinery/pkg/runtime/serializer/versioning"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/errors"...
dep: Analyzing "k8s.io/apimachinery/pkg/util/validation"...
dep: Solving...
Root project is "**my/project/package**"
 2 transitively valid internal packages
 14 external packages imported from 5 projects
(0)   ✓ select (root)
(1) ? attempt **other/data/package** with 3 pkgs; at least 1 versions to try
(1)     try **other/data/package**@master
Cached github.com/fatih/camelcase
Cached github.com/koding/multiconfig
Cached github.com/fatih/structs
Cached golang.org/x/net
Cached github.com/gorilla/websocket
Cached github.com/BurntSushi/toml
Cached k8s.io/apimachinery
Cached github.com/emicklei/go-restful
Cached **other/data/package**
(1) ✓ select **other/data/package**@master w/3 pkgs
(2) ? attempt github.com/gorilla/websocket with 1 pkgs; at least 1 versions to try
(2)     try github.com/gorilla/websocket@master
(2) ✓ select github.com/gorilla/websocket@master w/1 pkgs
(3) ? attempt k8s.io/apimachinery with 3 pkgs; at least 1 versions to try
(3)     try k8s.io/apimachinery@master
(3) ✓ select k8s.io/apimachinery@master w/20 pkgs
(4) ? attempt github.com/emicklei/go-restful with 1 pkgs; at least 1 versions to try
(4)     try github.com/emicklei/go-restful@master
(4) ✓ select github.com/emicklei/go-restful@master w/2 pkgs
(5) ? attempt github.com/koding/multiconfig with 1 pkgs; at least 1 versions to try
(5)     try github.com/koding/multiconfig@master
(5) ✓ select github.com/koding/multiconfig@master w/1 pkgs
(6) ? attempt github.com/BurntSushi/toml with 1 pkgs; at least 1 versions to try
(6)     try github.com/BurntSushi/toml@master
(6) ✓ select github.com/BurntSushi/toml@master w/1 pkgs
(7) ? attempt github.com/satori/go.uuid with 1 pkgs; at least 1 versions to try
(7)     try github.com/satori/go.uuid@master
(7) ✓ select github.com/satori/go.uuid@master w/1 pkgs
(8) ? attempt github.com/fatih/camelcase with 1 pkgs; at least 1 versions to try
(8)     try github.com/fatih/camelcase@master
(8) ✓ select github.com/fatih/camelcase@master w/1 pkgs
(9) ? attempt gopkg.in/inf.v0 with 1 pkgs; 1 versions to try
(9)     try gopkg.in/inf.v0@v0.9.0
(9) ✓ select gopkg.in/inf.v0@v0.9.0 w/1 pkgs
(10)  ? attempt github.com/golang/glog with 1 pkgs; 1 versions to try
(10)      try github.com/golang/glog@master
(10)  ✓ select github.com/golang/glog@master w/1 pkgs
(11)  ? attempt github.com/fatih/structs with 1 pkgs; at least 1 versions to try
(11)      try github.com/fatih/structs@master
(11)  ✓ select github.com/fatih/structs@master w/1 pkgs
(12)  ? attempt github.com/google/gofuzz with 1 pkgs; 1 versions to try
(12)      try github.com/google/gofuzz@master
(12)  ✓ select github.com/google/gofuzz@master w/1 pkgs
(13)  ? attempt github.com/spf13/pflag with 1 pkgs; 2 versions to try
(13)      try github.com/spf13/pflag@master
(13)  ✓ select github.com/spf13/pflag@master w/1 pkgs
(14)  ? attempt k8s.io/client-go with 6 pkgs; at least 1 versions to try
(14)      try k8s.io/client-go@master
Cached k8s.io/client-go
(15)  ✗   k8s.io/client-go@master depping on github.com/emicklei/go-restful at master has problem subpkg(s):    github.com/emicklei/go-restful/swagger is missing
(14)      try k8s.io/client-go@v2.0.0
(15)  ✗   k8s.io/client-go@v2.0.0 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@v1.5.1
(15)  ✗   k8s.io/client-go@v1.5.1 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@v1.5.0
(15)  ✗   k8s.io/client-go@v1.5.0 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@v1.4.0
(15)  ✗   k8s.io/client-go@v1.4.0 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@v2.0.0-alpha.1
(15)  ✗   k8s.io/client-go@v2.0.0-alpha.1 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@v2.0.0-alpha.0
(15)  ✗   k8s.io/client-go@v2.0.0-alpha.0 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@master
(15)  ✗   k8s.io/client-go@master not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@release-1.4
(15)  ✗   k8s.io/client-go@release-1.4 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@release-1.5
(15)  ✗   k8s.io/client-go@release-1.5 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@release-2.0
(15)  ✗   k8s.io/client-go@release-2.0 not allowed by constraint master:
(15)      master from (root)
(14)      try k8s.io/client-go@revert-14-1.5
(15)  ✗   k8s.io/client-go@revert-14-1.5 not allowed by constraint master:
(15)      master from (root)
(14)    ← no more versions of k8s.io/client-go to try; begin backtrack
(13)  ← backtrack: no more versions of github.com/spf13/pflag to try
(12)  ← backtrack: no more versions of github.com/google/gofuzz to try
(11)  ← backtrack: no more versions of github.com/fatih/structs to try
(10)  ← backtrack: no more versions of github.com/golang/glog to try
(9) ← backtrack: no more versions of gopkg.in/inf.v0 to try
(8) ← backtrack: no more versions of github.com/fatih/camelcase to try
(7) ← backtrack: no more versions of github.com/satori/go.uuid to try
(6) ← backtrack: no more versions of github.com/BurntSushi/toml to try
(5) ← backtrack: no more versions of github.com/koding/multiconfig to try
(4) ← backtrack: no more versions of github.com/emicklei/go-restful to try
(3) ← backtrack: no more versions of k8s.io/apimachinery to try
(2) ← backtrack: no more versions of github.com/gorilla/websocket to try
(1) ← backtrack: no more versions of **other/data/package** to try
  ✗ solving failed

Solver wall times by segment:
         b-list-pkgs: 23.001835386s
              b-gmal:  325.090586ms
             satisfy:   25.640609ms
            unselect:    2.914136ms
         select-atom:    2.725545ms
            new-atom:     843.053µs
         select-root:     259.549µs
           backtrack:     137.699µs
          b-pair-rev:     117.813µs
     b-list-versions:     117.712µs
  b-deduce-proj-root:      77.873µs
     b-source-exists:      24.718µs
               other:      19.917µs
           b-matches:      15.957µs

  TOTAL: 23.359820553s

solve error: No versions of k8s.io/client-go met constraints:
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version master that package is missing.
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project **my/project/package**.
    master: Could not introduce k8s.io/client-go@master, as it is not allowed by constraint master from project **my/project/package**.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project **my/project/package**.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project **my/project/package**.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project **my/project/package**.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project **my/project/package**.
No versions of k8s.io/client-go met constraints:
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version master that package is missing.
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project **my/project/package**.
    master: Could not introduce k8s.io/client-go@master, as it is not allowed by constraint master from project **my/project/package**.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project **my/project/package**.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project **my/project/package**.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project **my/project/package**.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project **my/project/package**.

$ dep init -v
# Same logs but with some stuff cached.
$ git reset --hard
# manifest.json and lock.json are back.
$ dep ensure -update
solve error: No versions of k8s.io/client-go met constraints:
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project **my/project/package**.
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version 2.2.0 that package is missing.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project **my/project/package**.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project **my/project/package**.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project **my/project/package**.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project **my/project/package**.
ensure Solve(): No versions of k8s.io/client-go met constraints:
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project **my/project/package**.
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version 2.2.0 that package is missing.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project **my/project/package**.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project **my/project/package**.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project **my/project/package**.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project **my/project/package**.

$ dep ensure -update
# This worked... odd.
# Decided to run it with verbose output and with the vendoring and dep folder removed.
$ rm -rf vendor
$ rm -rf $GOPATH/pkg/dep
$ dep ensure -update -v
Root project is "**my/project/package**"
 2 transitively valid internal packages
 14 external packages imported from 5 projects
(0)   ✓ select (root)
(1) ? attempt **other/data/package** with 3 pkgs; 1 versions to try
(1)     try **other/data/package**@master
(1) ✓ select **other/data/package**@master w/3 pkgs
(2) ? attempt github.com/Sirupsen/logrus with 1 pkgs; 41 versions to try
(2)     try github.com/Sirupsen/logrus@v0.11.5
(2) ✓ select github.com/Sirupsen/logrus@v0.11.5 w/1 pkgs
(3) ? attempt github.com/gorilla/websocket with 1 pkgs; 3 versions to try
(3)     try github.com/gorilla/websocket@v1.1.0
(4) ✗   github.com/gorilla/websocket@v1.1.0 not allowed by constraint master:
(4)     master from **other/data/package**@master
(3)     try github.com/gorilla/websocket@v1.0.0
(4) ✗   github.com/gorilla/websocket@v1.0.0 not allowed by constraint master:
(4)     master from **other/data/package**@master
(3)     try github.com/gorilla/websocket@master
(3) ✓ select github.com/gorilla/websocket@master w/1 pkgs
(4) ? attempt github.com/koding/multiconfig with 1 pkgs; 4 versions to try
(4)     try github.com/koding/multiconfig@master
(4) ✓ select github.com/koding/multiconfig@master w/1 pkgs
(5) ? attempt github.com/BurntSushi/toml with 1 pkgs; 6 versions to try
(5)     try github.com/BurntSushi/toml@v0.2.0
(5) ✓ select github.com/BurntSushi/toml@v0.2.0 w/1 pkgs
(6) ? attempt github.com/satori/go.uuid with 1 pkgs; 3 versions to try
(6)     try github.com/satori/go.uuid@v1.1.0
(7) ✗   github.com/satori/go.uuid@v1.1.0 not allowed by constraint master:
(7)     master from (root)
(7)     master from **other/data/package**@master
(6)     try github.com/satori/go.uuid@v1.0.0
(7) ✗   github.com/satori/go.uuid@v1.0.0 not allowed by constraint master:
(7)     master from (root)
(7)     master from **other/data/package**@master
(6)     try github.com/satori/go.uuid@master
(6) ✓ select github.com/satori/go.uuid@master w/1 pkgs
(7) ? attempt github.com/fatih/camelcase with 1 pkgs; 1 versions to try
(7)     try github.com/fatih/camelcase@master
(7) ✓ select github.com/fatih/camelcase@master w/1 pkgs
(8) ? attempt golang.org/x/sys with 1 pkgs; 1 versions to try
(8)     try golang.org/x/sys@master
(8) ✓ select golang.org/x/sys@master w/1 pkgs
(9) ? attempt k8s.io/apimachinery with 3 pkgs; 1 versions to try
(9)     try k8s.io/apimachinery@master
(9) ✓ select k8s.io/apimachinery@master w/20 pkgs
(10)  ? attempt github.com/emicklei/go-restful with 1 pkgs; 15 versions to try
(10)      try github.com/emicklei/go-restful@2.2.0
(10)  ✓ select github.com/emicklei/go-restful@2.2.0 w/2 pkgs
(11)  ? attempt github.com/fatih/structs with 1 pkgs; 3 versions to try
(11)      try github.com/fatih/structs@v1.0
(11)  ✓ select github.com/fatih/structs@v1.0 w/1 pkgs
(12)  ? attempt github.com/golang/glog with 1 pkgs; 1 versions to try
(12)      try github.com/golang/glog@master
(12)  ✓ select github.com/golang/glog@master w/1 pkgs
(13)  ? attempt github.com/go-openapi/spec with 1 pkgs; 2 versions to try
(13)      try github.com/go-openapi/spec@master
(13)  ✓ select github.com/go-openapi/spec@master w/1 pkgs
(14)  ? attempt github.com/go-openapi/jsonpointer with 1 pkgs; 1 versions to try
(14)      try github.com/go-openapi/jsonpointer@master
(14)  ✓ select github.com/go-openapi/jsonpointer@master w/1 pkgs
(15)  ? attempt github.com/go-openapi/jsonreference with 1 pkgs; 1 versions to try
(15)      try github.com/go-openapi/jsonreference@master
(15)  ✓ select github.com/go-openapi/jsonreference@master w/1 pkgs
(16)  ? attempt github.com/PuerkitoBio/purell with 1 pkgs; 8 versions to try
(16)      try github.com/PuerkitoBio/purell@v1.1.0
(16)  ✓ select github.com/PuerkitoBio/purell@v1.1.0 w/1 pkgs
(17)  ? attempt github.com/PuerkitoBio/urlesc with 1 pkgs; 1 versions to try
(17)      try github.com/PuerkitoBio/urlesc@master
(17)  ✓ select github.com/PuerkitoBio/urlesc@master w/1 pkgs
(18)  ? attempt github.com/gogo/protobuf with 2 pkgs; 13 versions to try
(18)      try github.com/gogo/protobuf@v0.4
(18)  ✓ select github.com/gogo/protobuf@v0.4 w/2 pkgs
(19)  ? attempt github.com/go-openapi/swag with 1 pkgs; 1 versions to try
(19)      try github.com/go-openapi/swag@master
(19)  ✓ select github.com/go-openapi/swag@master w/1 pkgs
(20)  ? attempt github.com/mailru/easyjson with 2 pkgs; 1 versions to try
(20)      try github.com/mailru/easyjson@master
(20)  ✓ select github.com/mailru/easyjson@master w/3 pkgs
(21)  ? attempt golang.org/x/net with 1 pkgs; 4 versions to try
(21)      try golang.org/x/net@master
(21)  ✓ select golang.org/x/net@master w/4 pkgs
(22)  ? attempt k8s.io/client-go with 6 pkgs; 11 versions to try
(22)      try k8s.io/client-go@v2.0.0
(23)  ✗   k8s.io/client-go@v2.0.0 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@v1.5.1
(23)  ✗   k8s.io/client-go@v1.5.1 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@v1.5.0
(23)  ✗   k8s.io/client-go@v1.5.0 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@v1.4.0
(23)  ✗   k8s.io/client-go@v1.4.0 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@v2.0.0-alpha.1
(23)  ✗   k8s.io/client-go@v2.0.0-alpha.1 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@v2.0.0-alpha.0
(23)  ✗   k8s.io/client-go@v2.0.0-alpha.0 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@master
(23)  ✗   k8s.io/client-go@master depping on github.com/emicklei/go-restful at 2.2.0 has problem subpkg(s): github.com/emicklei/go-restful/swagger is missing
(22)      try k8s.io/client-go@release-1.4
(23)  ✗   k8s.io/client-go@release-1.4 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@release-1.5
(23)  ✗   k8s.io/client-go@release-1.5 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@release-2.0
(23)  ✗   k8s.io/client-go@release-2.0 not allowed by constraint master:
(23)      master from (root)
(22)      try k8s.io/client-go@revert-14-1.5
(23)  ✗   k8s.io/client-go@revert-14-1.5 not allowed by constraint master:
(23)      master from (root)
(22)    ← no more versions of k8s.io/client-go to try; begin backtrack
(21)  ← backtrack: no more versions of golang.org/x/net to try
(20)  ← backtrack: no more versions of github.com/mailru/easyjson to try
(19)  ← backtrack: no more versions of github.com/go-openapi/swag to try
(18)  ← backtrack: no more versions of github.com/gogo/protobuf to try
(17)  ← backtrack: no more versions of github.com/PuerkitoBio/urlesc to try
(16)  ← backtrack: no more versions of github.com/PuerkitoBio/purell to try
(15)  ← backtrack: no more versions of github.com/go-openapi/jsonreference to try
(14)  ← backtrack: no more versions of github.com/go-openapi/jsonpointer to try
(13)  ← backtrack: no more versions of github.com/go-openapi/spec to try
(12)  ← backtrack: no more versions of github.com/golang/glog to try
(11)  ← backtrack: no more versions of github.com/fatih/structs to try
(10)  ← backtrack: no more versions of github.com/emicklei/go-restful to try
(9) ← backtrack: no more versions of k8s.io/apimachinery to try
(8) ← backtrack: no more versions of golang.org/x/sys to try
(7) ← backtrack: no more versions of github.com/fatih/camelcase to try
(6) ← backtrack: no more versions of github.com/satori/go.uuid to try
(5) ← backtrack: no more versions of github.com/BurntSushi/toml to try
(4) ← backtrack: no more versions of github.com/koding/multiconfig to try
(3) ← backtrack: no more versions of github.com/gorilla/websocket to try
(2) ← backtrack: no more versions of github.com/Sirupsen/logrus to try
(1) ← backtrack: no more versions of **other/data/package** to try
  ✗ solving failed

Solver wall times by segment:
         b-list-pkgs: 34.749845476s
     b-source-exists:  3.693036492s
              b-gmal:   1.20191801s
             satisfy:   31.173302ms
         select-atom:    7.383929ms
            unselect:    6.921873ms
            new-atom:    4.421252ms
     b-list-versions:     551.796µs
         select-root:     321.681µs
  b-deduce-proj-root:     232.434µs
           backtrack:     179.818µs
          b-pair-rev:     109.935µs
           b-matches:      41.457µs
               other:      24.602µs
      b-pair-version:      13.623µs

  TOTAL: 39.69617568s

solve error: No versions of k8s.io/client-go met constraints:
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project **my/project/package**.
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version 2.2.0 that package is missing.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project **my/project/package**.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project **my/project/package**.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project **my/project/package**.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project **my/project/package**.
ensure Solve(): No versions of k8s.io/client-go met constraints:
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project **my/project/package**.
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version 2.2.0 that package is missing.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project **my/project/package**.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project **my/project/package**.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project **my/project/package**.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project **my/project/package**.

$ dep ensure -update -v
Root project is "**my/project/package**"
 2 transitively valid internal packages
 14 external packages imported from 5 projects
(0)   ✓ select (root)
(1) ? attempt **other/data/package** with 3 pkgs; 1 versions to try
(1)     try **other/data/package**@master
(1) ✓ select **other/data/package**@master w/3 pkgs
(2) ? attempt github.com/Sirupsen/logrus with 1 pkgs; 41 versions to try
(2)     try github.com/Sirupsen/logrus@v0.11.5
(2) ✓ select github.com/Sirupsen/logrus@v0.11.5 w/1 pkgs
(3) ? attempt github.com/gorilla/websocket with 1 pkgs; 3 versions to try
(3)     try github.com/gorilla/websocket@v1.1.0
(4) ✗   github.com/gorilla/websocket@v1.1.0 not allowed by constraint master:
(4)     master from **other/data/package**@master
(3)     try github.com/gorilla/websocket@v1.0.0
(4) ✗   github.com/gorilla/websocket@v1.0.0 not allowed by constraint master:
(4)     master from **other/data/package**@master
(3)     try github.com/gorilla/websocket@master
(3) ✓ select github.com/gorilla/websocket@master w/1 pkgs
(4) ? attempt github.com/koding/multiconfig with 1 pkgs; 4 versions to try
(4)     try github.com/koding/multiconfig@master
(4) ✓ select github.com/koding/multiconfig@master w/1 pkgs
(5) ? attempt github.com/BurntSushi/toml with 1 pkgs; 6 versions to try
(5)     try github.com/BurntSushi/toml@v0.2.0
(5) ✓ select github.com/BurntSushi/toml@v0.2.0 w/1 pkgs
(6) ? attempt github.com/satori/go.uuid with 1 pkgs; 3 versions to try
(6)     try github.com/satori/go.uuid@v1.1.0
(7) ✗   github.com/satori/go.uuid@v1.1.0 not allowed by constraint master:
(7)     master from (root)
(7)     master from **other/data/package**@master
(6)     try github.com/satori/go.uuid@v1.0.0
(7) ✗   github.com/satori/go.uuid@v1.0.0 not allowed by constraint master:
(7)     master from (root)
(7)     master from **other/data/package**@master
(6)     try github.com/satori/go.uuid@master
(6) ✓ select github.com/satori/go.uuid@master w/1 pkgs
(7) ? attempt github.com/fatih/camelcase with 1 pkgs; 1 versions to try
(7)     try github.com/fatih/camelcase@master
(7) ✓ select github.com/fatih/camelcase@master w/1 pkgs
(8) ? attempt golang.org/x/sys with 1 pkgs; 1 versions to try
(8)     try golang.org/x/sys@master
(8) ✓ select golang.org/x/sys@master w/1 pkgs
(9) ? attempt k8s.io/apimachinery with 3 pkgs; 1 versions to try
(9)     try k8s.io/apimachinery@master
(9) ✓ select k8s.io/apimachinery@master w/20 pkgs
(10)  ? attempt github.com/emicklei/go-restful with 1 pkgs; 15 versions to try
(10)      try github.com/emicklei/go-restful@2.2.0
(10)  ✓ select github.com/emicklei/go-restful@2.2.0 w/2 pkgs
(11)  ? attempt github.com/golang/glog with 1 pkgs; 1 versions to try
(11)      try github.com/golang/glog@master
(11)  ✓ select github.com/golang/glog@master w/1 pkgs
(12)  ? attempt github.com/go-openapi/spec with 1 pkgs; 2 versions to try
(12)      try github.com/go-openapi/spec@master
(12)  ✓ select github.com/go-openapi/spec@master w/1 pkgs
(13)  ? attempt github.com/google/gofuzz with 1 pkgs; 1 versions to try
(13)      try github.com/google/gofuzz@master
(13)  ✓ select github.com/google/gofuzz@master w/1 pkgs
(14)  ? attempt github.com/fatih/structs with 1 pkgs; 3 versions to try
(14)      try github.com/fatih/structs@v1.0
(14)  ✓ select github.com/fatih/structs@v1.0 w/1 pkgs
(15)  ? attempt k8s.io/client-go with 6 pkgs; 11 versions to try
(15)      try k8s.io/client-go@v2.0.0
(16)  ✗   k8s.io/client-go@v2.0.0 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@v1.5.1
(16)  ✗   k8s.io/client-go@v1.5.1 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@v1.5.0
(16)  ✗   k8s.io/client-go@v1.5.0 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@v1.4.0
(16)  ✗   k8s.io/client-go@v1.4.0 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@v2.0.0-alpha.1
(16)  ✗   k8s.io/client-go@v2.0.0-alpha.1 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@v2.0.0-alpha.0
(16)  ✗   k8s.io/client-go@v2.0.0-alpha.0 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@master
(16)  ✗   k8s.io/client-go@master depping on github.com/emicklei/go-restful at 2.2.0 has problem subpkg(s): github.com/emicklei/go-restful/swagger is missing
(15)      try k8s.io/client-go@release-1.4
(16)  ✗   k8s.io/client-go@release-1.4 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@release-1.5
(16)  ✗   k8s.io/client-go@release-1.5 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@release-2.0
(16)  ✗   k8s.io/client-go@release-2.0 not allowed by constraint master:
(16)      master from (root)
(15)      try k8s.io/client-go@revert-14-1.5
(16)  ✗   k8s.io/client-go@revert-14-1.5 not allowed by constraint master:
(16)      master from (root)
(15)    ← no more versions of k8s.io/client-go to try; begin backtrack
(14)  ← backtrack: no more versions of github.com/fatih/structs to try
(13)  ← backtrack: no more versions of github.com/google/gofuzz to try
(12)  ← backtrack: no more versions of github.com/go-openapi/spec to try
(11)  ← backtrack: no more versions of github.com/golang/glog to try
(10)  ← backtrack: no more versions of github.com/emicklei/go-restful to try
(9) ← backtrack: no more versions of k8s.io/apimachinery to try
(8) ← backtrack: no more versions of golang.org/x/sys to try
(7) ← backtrack: no more versions of github.com/fatih/camelcase to try
(6) ← backtrack: no more versions of github.com/satori/go.uuid to try
(5) ← backtrack: no more versions of github.com/BurntSushi/toml to try
(4) ← backtrack: no more versions of github.com/koding/multiconfig to try
(3) ← backtrack: no more versions of github.com/gorilla/websocket to try
(2) ← backtrack: no more versions of github.com/Sirupsen/logrus to try
(1) ← backtrack: no more versions of **other/data/package** to try
  ✗ solving failed

Solver wall times by segment:
     b-list-versions: 2.407875036s
         b-list-pkgs: 1.770984172s
     b-source-exists: 759.764471ms
              b-gmal: 215.354052ms
             satisfy:  23.272128ms
         select-atom:    3.80204ms
            unselect:    1.92002ms
            new-atom:    963.494µs
         select-root:    313.636µs
  b-deduce-proj-root:    205.792µs
          b-pair-rev:     145.67µs
           backtrack:     82.561µs
           b-matches:     42.424µs
               other:     29.853µs
      b-pair-version:     12.385µs

  TOTAL: 5.184767734s

solve error: No versions of k8s.io/client-go met constraints:
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project **my/project/package**.
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version 2.2.0 that package is missing.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project **my/project/package**.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project **my/project/package**.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project **my/project/package**.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project **my/project/package**.
ensure Solve(): No versions of k8s.io/client-go met constraints:
    v2.0.0: Could not introduce k8s.io/client-go@v2.0.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.1: Could not introduce k8s.io/client-go@v1.5.1, as it is not allowed by constraint master from project **my/project/package**.
    v1.5.0: Could not introduce k8s.io/client-go@v1.5.0, as it is not allowed by constraint master from project **my/project/package**.
    v1.4.0: Could not introduce k8s.io/client-go@v1.4.0, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.1: Could not introduce k8s.io/client-go@v2.0.0-alpha.1, as it is not allowed by constraint master from project **my/project/package**.
    v2.0.0-alpha.0: Could not introduce k8s.io/client-go@v2.0.0-alpha.0, as it is not allowed by constraint master from project **my/project/package**.
    master: Could not introduce k8s.io/client-go@master, as it requires package github.com/emicklei/go-restful/swagger from github.com/emicklei/go-restful, but in version 2.2.0 that package is missing.
    release-1.4: Could not introduce k8s.io/client-go@release-1.4, as it is not allowed by constraint master from project **my/project/package**.
    release-1.5: Could not introduce k8s.io/client-go@release-1.5, as it is not allowed by constraint master from project **my/project/package**.
    release-2.0: Could not introduce k8s.io/client-go@release-2.0, as it is not allowed by constraint master from project **my/project/package**.
    revert-14-1.5: Could not introduce k8s.io/client-go@revert-14-1.5, as it is not allowed by constraint master from project **my/project/package**.

# Well that somehow didn't work this time...

$ dep ensure -update -v
Root project is "**my/project/package**"
 2 transitively valid internal packages
 14 external packages imported from 5 projects
(0)   ✓ select (root)
(1) ? attempt **other/data/package** with 3 pkgs; 1 versions to try
(1)     try **other/data/package**@master
(1) ✓ select **other/data/package**@master w/3 pkgs
(2) ? attempt github.com/Sirupsen/logrus with 1 pkgs; 41 versions to try
(2)     try github.com/Sirupsen/logrus@v0.11.5
(2) ✓ select github.com/Sirupsen/logrus@v0.11.5 w/1 pkgs
(3) ? attempt github.com/gorilla/websocket with 1 pkgs; 3 versions to try
(3)     try github.com/gorilla/websocket@v1.1.0
(4) ✗   github.com/gorilla/websocket@v1.1.0 not allowed by constraint master:
(4)     master from **other/data/package**@master
(3)     try github.com/gorilla/websocket@v1.0.0
(4) ✗   github.com/gorilla/websocket@v1.0.0 not allowed by constraint master:
(4)     master from **other/data/package**@master
(3)     try github.com/gorilla/websocket@master
(3) ✓ select github.com/gorilla/websocket@master w/1 pkgs
(4) ? attempt github.com/koding/multiconfig with 1 pkgs; 4 versions to try
(4)     try github.com/koding/multiconfig@master
(4) ✓ select github.com/koding/multiconfig@master w/1 pkgs
(5) ? attempt github.com/BurntSushi/toml with 1 pkgs; 6 versions to try
(5)     try github.com/BurntSushi/toml@v0.2.0
(5) ✓ select github.com/BurntSushi/toml@v0.2.0 w/1 pkgs
(6) ? attempt golang.org/x/sys with 1 pkgs; 1 versions to try
(6)     try golang.org/x/sys@master
(6) ✓ select golang.org/x/sys@master w/1 pkgs
(7) ? attempt github.com/fatih/camelcase with 1 pkgs; 1 versions to try
(7)     try github.com/fatih/camelcase@master
(7) ✓ select github.com/fatih/camelcase@master w/1 pkgs
(8) ? attempt k8s.io/client-go with 6 pkgs; 11 versions to try
(8)     try k8s.io/client-go@v2.0.0
(9) ✗   k8s.io/client-go@v2.0.0 not allowed by constraint master:
(9)     master from (root)
(8)     try k8s.io/client-go@v1.5.1
(9) ✗   k8s.io/client-go@v1.5.1 not allowed by constraint master:
(9)     master from (root)
(8)     try k8s.io/client-go@v1.5.0
(9) ✗   k8s.io/client-go@v1.5.0 not allowed by constraint master:
(9)     master from (root)
(8)     try k8s.io/client-go@v1.4.0
(9) ✗   k8s.io/client-go@v1.4.0 not allowed by constraint master:
(9)     master from (root)
(8)     try k8s.io/client-go@v2.0.0-alpha.1
(9) ✗   k8s.io/client-go@v2.0.0-alpha.1 not allowed by constraint master:
(9)     master from (root)
(8)     try k8s.io/client-go@v2.0.0-alpha.0
(9) ✗   k8s.io/client-go@v2.0.0-alpha.0 not allowed by constraint master:
(9)     master from (root)
(8)     try k8s.io/client-go@master
(8) ✓ select k8s.io/client-go@master w/121 pkgs
(9) ? attempt github.com/davecgh/go-spew with 1 pkgs; 3 versions to try
(9)     try github.com/davecgh/go-spew@v1.1.0
(9) ✓ select github.com/davecgh/go-spew@v1.1.0 w/1 pkgs
(10)  ? attempt github.com/docker/distribution with 1 pkgs; 60 versions to try
(10)      try github.com/docker/distribution@v2.6.0
(10)  ✓ select github.com/docker/distribution@v2.6.0 w/2 pkgs
(11)  ? attempt github.com/emicklei/go-restful with 1 pkgs; 15 versions to try
(11)      try github.com/emicklei/go-restful@2.2.0
(12)  ✗   github.com/emicklei/go-restful at 2.2.0 has problem subpkg(s):
(12)        github.com/emicklei/go-restful/swagger is missing; required by k8s.io/client-go@master.
(11)      try github.com/emicklei/go-restful@2.1.0
(12)  ✗   github.com/emicklei/go-restful at 2.1.0 has problem subpkg(s):
(12)        github.com/emicklei/go-restful/swagger is missing; required by k8s.io/client-go@master.
(11)      try github.com/emicklei/go-restful@2.0.0
(12)  ✗   github.com/emicklei/go-restful at 2.0.0 has problem subpkg(s):
(12)        github.com/emicklei/go-restful/swagger is missing; required by k8s.io/client-go@master.
(11)      try github.com/emicklei/go-restful@v1.2
(11)  ✓ select github.com/emicklei/go-restful@v1.2 w/3 pkgs
(12)  ? attempt github.com/howeyc/gopass with 1 pkgs; 1 versions to try
(12)      try github.com/howeyc/gopass@master
(12)  ✓ select github.com/howeyc/gopass@master w/1 pkgs
(13)  ? attempt github.com/gogo/protobuf with 2 pkgs; 13 versions to try
(13)      try github.com/gogo/protobuf@v0.4
(13)  ✓ select github.com/gogo/protobuf@v0.4 w/2 pkgs
(14)  ? attempt github.com/imdario/mergo with 1 pkgs; 9 versions to try
(14)      try github.com/imdario/mergo@0.2.2
(14)  ✓ select github.com/imdario/mergo@0.2.2 w/1 pkgs
(15)  ? attempt github.com/fatih/structs with 1 pkgs; 3 versions to try
(15)      try github.com/fatih/structs@v1.0
(15)  ✓ select github.com/fatih/structs@v1.0 w/1 pkgs
(16)  ? attempt k8s.io/apimachinery with 26 pkgs; 1 versions to try
(16)      try k8s.io/apimachinery@master
(16)  ✓ select k8s.io/apimachinery@master w/39 pkgs
(17)  ? revisit github.com/emicklei/go-restful to add 1 pkgs
(17)    ✓ include 2 more pkgs from github.com/emicklei/go-restful@v1.2
(17)  ? attempt github.com/ghodss/yaml with 1 pkgs; 1 versions to try
(18)      try github.com/ghodss/yaml@master
(18)  ✓ select github.com/ghodss/yaml@master w/1 pkgs
(18)  ? attempt github.com/go-openapi/spec with 1 pkgs; 2 versions to try
(19)      try github.com/go-openapi/spec@master
(19)  ✓ select github.com/go-openapi/spec@master w/1 pkgs
(19)  ? attempt github.com/go-openapi/jsonpointer with 1 pkgs; 1 versions to try
(20)      try github.com/go-openapi/jsonpointer@master
(20)  ✓ select github.com/go-openapi/jsonpointer@master w/1 pkgs
(20)  ? attempt github.com/google/gofuzz with 1 pkgs; 1 versions to try
(21)      try github.com/google/gofuzz@master
(21)  ✓ select github.com/google/gofuzz@master w/1 pkgs
(21)  ? attempt github.com/go-openapi/jsonreference with 1 pkgs; 1 versions to try
(22)      try github.com/go-openapi/jsonreference@master
(22)  ✓ select github.com/go-openapi/jsonreference@master w/1 pkgs
(22)  ? revisit k8s.io/apimachinery to add 3 pkgs
(23)    ✓ include 20 more pkgs from k8s.io/apimachinery@master
(22)  ? attempt golang.org/x/net with 1 pkgs; 4 versions to try
(24)      try golang.org/x/net@master
(24)  ✓ select golang.org/x/net@master w/4 pkgs
(23)  ? attempt github.com/PuerkitoBio/purell with 1 pkgs; 8 versions to try
(25)      try github.com/PuerkitoBio/purell@v1.1.0
(25)  ✓ select github.com/PuerkitoBio/purell@v1.1.0 w/1 pkgs
(24)  ? revisit golang.org/x/net to add 1 pkgs
(26)    ✓ include 1 more pkgs from golang.org/x/net@master
(24)  ? attempt github.com/PuerkitoBio/urlesc with 1 pkgs; 1 versions to try
(27)      try github.com/PuerkitoBio/urlesc@master
(27)  ✓ select github.com/PuerkitoBio/urlesc@master w/1 pkgs
(25)  ? attempt github.com/satori/go.uuid with 1 pkgs; 3 versions to try
(28)      try github.com/satori/go.uuid@v1.1.0
(29)  ✗   github.com/satori/go.uuid@v1.1.0 not allowed by constraint master:
(29)      master from (root)
(29)      master from **other/data/package**@master
(28)      try github.com/satori/go.uuid@v1.0.0
(29)  ✗   github.com/satori/go.uuid@v1.0.0 not allowed by constraint master:
(29)      master from (root)
(29)      master from **other/data/package**@master
(28)      try github.com/satori/go.uuid@master
(28)  ✓ select github.com/satori/go.uuid@master w/1 pkgs
(26)  ? attempt github.com/ugorji/go with 1 pkgs; 1 versions to try
(29)      try github.com/ugorji/go@master
(29)  ✓ select github.com/ugorji/go@master w/1 pkgs
(27)  ? attempt github.com/go-openapi/swag with 1 pkgs; 1 versions to try
(30)      try github.com/go-openapi/swag@master
(30)  ✓ select github.com/go-openapi/swag@master w/1 pkgs
(28)  ? attempt github.com/juju/ratelimit with 1 pkgs; 1 versions to try
(31)      try github.com/juju/ratelimit@master
(31)  ✓ select github.com/juju/ratelimit@master w/1 pkgs
(29)  ? attempt github.com/golang/glog with 1 pkgs; 1 versions to try
(32)      try github.com/golang/glog@master
(32)  ✓ select github.com/golang/glog@master w/1 pkgs
(30)  ? attempt github.com/spf13/pflag with 1 pkgs; 2 versions to try
(33)      try github.com/spf13/pflag@master
(33)  ✓ select github.com/spf13/pflag@master w/1 pkgs
(31)  ? attempt github.com/mailru/easyjson with 2 pkgs; 1 versions to try
(34)      try github.com/mailru/easyjson@master
(34)  ✓ select github.com/mailru/easyjson@master w/3 pkgs
(32)  ? attempt gopkg.in/yaml.v2 with 1 pkgs; 1 versions to try
(35)      try gopkg.in/yaml.v2@v2
(35)  ✓ select gopkg.in/yaml.v2@v2 w/1 pkgs
(33)  ? attempt golang.org/x/crypto with 1 pkgs; 1 versions to try
(36)      try golang.org/x/crypto@master
(36)  ✓ select golang.org/x/crypto@master w/1 pkgs
(34)  ? attempt golang.org/x/text with 2 pkgs; 1 versions to try
(37)      try golang.org/x/text@master
(37)  ✓ select golang.org/x/text@master w/7 pkgs
(35)  ? attempt gopkg.in/inf.v0 with 1 pkgs; 1 versions to try
(38)      try gopkg.in/inf.v0@v0.9.0
(38)  ✓ select gopkg.in/inf.v0@v0.9.0 w/1 pkgs
  ✓ found solution with 210 packages from 35 projects

Solver wall times by segment:
     b-list-versions: 9.437644982s
         b-list-pkgs:  1.68663913s
     b-source-exists: 747.242992ms
              b-gmal:  459.72821ms
             satisfy:  46.153026ms
         select-atom:  35.544921ms
            new-atom:   1.617123ms
         select-root:   1.369258ms
  b-deduce-proj-root:    657.139µs
               other:    274.031µs
            add-atom:    101.409µs
          b-pair-rev:     94.076µs
           b-matches:     35.614µs
      b-pair-version:     11.558µs

  TOTAL: 12.417113469s

# That worked.

@sdboyer sdboyer added the bug label Mar 25, 2017
@sdboyer
Copy link
Member

sdboyer commented Mar 25, 2017

Ahhhh, I think I know why this is happening!

I'm pretty sure that there are errors happening on the calls made to retrieve the lists of available versions for a given dependency (SourceManager.ListVersions()). That's why we see this:

(10)  ← backtrack: no more versions of github.com/emicklei/go-restful to try

Even though there are obviously more versions of that dependency that could be tried. The problem is, while errors resulting from calls to ListVersions() do cause the solver to abort appropriately, they're stored in such a way that they don't actually get reported properly in results. Thus, we see these misleading errors that tell us there are no more versions to try, when the actual problem is that we failed to retrieve the rest of the list.

Fixing the reporting problem shouldn't be too hard. I suspect that the underlying problem will end up being solved by the aforementioned sdboyer/gps#196.

@AndreasBackx
Copy link
Author

Sweet, it isn't that big of a deal as it resolves itself after a while. The tool already is miles better than the other existing ones in terms of consistency.

@sdboyer
Copy link
Member

sdboyer commented Aug 8, 2017

oh, this one should be closed out, the underlying issues here should now be mostly addressed.

@sdboyer sdboyer closed this as completed Aug 8, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants