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

dep revision constraint doesn't appear to work #1231

Closed
davecheney opened this issue Oct 2, 2017 · 8 comments
Closed

dep revision constraint doesn't appear to work #1231

davecheney opened this issue Oct 2, 2017 · 8 comments

Comments

@davecheney
Copy link
Contributor

What version of dep are you using (dep version)?

% cd $GOPATH/src/github.com/golang/dep && git describe --tags
v0.3.1-66-gac1a162

What dep command did you run?

% grep -a2 apimach Gopkg.toml 

[[constraint]]
  name="k8s.io/apimachinery"
  revision="917740426ad66ff818da4809990480bcc0786a77"

dep ensure -v

What did you expect to see?

What did you see instead?

(22)  ? attempt k8s.io/apimachinery with 26 pkgs; 4 versions to try
(23)      try k8s.io/apimachinery@master
(23)  ✓ select k8s.io/apimachinery@master w/42 pkgs

^ dep selected k8s.io/apimachinery@master, it should have selected k8s.io/apimachinery@917740426ad66ff818da4809990480bcc0786a77

@sdboyer
Copy link
Member

sdboyer commented Oct 2, 2017

heeeyooo! most probably, k8s.io/apimachinery is a transitive dependency, so your constraints don't affect it. we've had an issue open forever to warn about ineffectual constraints, #302, as it seemed like a good-ish task for someone new to take on. but this bites too many people for too long - i should maybe just bang out the fix.

#1124 has a bunch of discussion on allowing constraints to operate transitively. (not) coincidentally, k8s is at the center of that one, too.

@davecheney
Copy link
Contributor Author

davecheney commented Oct 2, 2017 via email

@vmogilev
Copy link

vmogilev commented Oct 10, 2017

I think it's a bigger problem than a case of transitive dependency (if I understand it correctly).

Here, I am directly overriding aws-sdk-go to a lower version of 1.10.19 and dep seems to be ignoring it:

mve@mybox test $ egrep -v "^#|^$" Gopkg.toml
[[override]]
  name = "github.com/aws/aws-sdk-go"
  version = "1.10.19"


mve@mybox test $ dep ensure -update github.com/aws/aws-sdk-go
mve@mybox test $ dep status
PROJECT                          CONSTRAINT    VERSION  REVISION  LATEST   PKGS USED
github.com/aws/aws-sdk-go        * (override)  v1.12.7  7607418   7607418  27
github.com/go-ini/ini            *             v1.28.2  20b96f6   20b96f6  1
github.com/jmespath/go-jmespath  *                      0b12d6b            1
mve@mybox test $


mve@mybox test $ dep version
dep:
 version     : devel
 build date  :
 git hash    :
 go version  : go1.9
 go compiler : gc
 platform    : darwin/amd64

mve@mybox test $ type dep
dep is hashed (/usr/local/bin/dep)

mve@mybox test $ ls -l /usr/local/bin/dep
lrwxr-xr-x  1 mve  admin  27 Oct  4 15:33 /usr/local/bin/dep -> ../Cellar/dep/0.3.1/bin/dep
mve@mybox test $

It's a simple main.go test app:

total 143888
-rw-r--r--  1 mve  staff      1220 Oct 10 08:50 Gopkg.lock
-rw-r--r--  1 mve  staff       608 Oct  9 10:04 Gopkg.toml
-rw-r--r--  1 mve  staff      1990 Oct  9 11:19 main.go
-rwxr-xr-x  1 mve  staff  10032724 Oct  9 11:19 tst-aws-s3
drwxr-xr-x  3 mve  staff       102 Oct 10 08:50 vendor
mve@mybox test $ cat main.go
package main

import (
	"fmt"
	"io"
	"os"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awserr"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/s3"
	"github.com/aws/aws-sdk-go/service/s3/s3manager"
)
...
...

@vmogilev
Copy link

Solution (as noted #1207 (comment)) is to switch to revision override:

mve@mybox test $ egrep -v "^#|^$" Gopkg.toml
[[override]]
  name = "github.com/aws/aws-sdk-go"
  revision = "75d583c2afd3807d4d3f24b31b06feebb8849242"


mve@mybox test $ dep ensure -update github.com/aws/aws-sdk-go
Gopkg.lock is out of sync with Gopkg.toml or the project's imports. Run "dep ensure" to resync them first before running "dep ensure -update"
mve@mybox test $ dep ensure
mve@mybox test $ dep status
PROJECT                          CONSTRAINT          VERSION  REVISION  LATEST   PKGS USED
github.com/aws/aws-sdk-go        75d583c (override)           75d583c            27
github.com/go-ini/ini            *                   v1.28.2  20b96f6   20b96f6  1
github.com/jmespath/go-jmespath  *                            0b12d6b            1
mve@mybox test $

@sdboyer
Copy link
Member

sdboyer commented Oct 10, 2017 via email

@vmogilev
Copy link

vmogilev commented Oct 14, 2017

@sdboyer I see, so to get it to pin at a certain version I would have to switch to version = "=1.10.19". Thank you -- that was a classic RTFM case on my part :) OTOH, = could have been a nicer default to alleviate these types of questions.

@sdboyer
Copy link
Member

sdboyer commented Oct 14, 2017 via email

@vmogilev
Copy link

That's true, I forgot about Gopkg.lock. Thank you.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants