Skip to content

Commit

Permalink
Makefile: new deps strategy fixes deps in branches
Browse files Browse the repository at this point in the history
Currently when running `make updatedeps` from a branch, the dependency
list from master ends up getting used. We tried to work around this in
35490f7, and got part way there, but
here's what was happening:

 - record the current SHA
 - run `go get -f -u -v ./...` which ends up checking out master
 - master is checked out early in the `go get` process, which means all
   subsequent dependencies are resolved from master
 - re-checkout the recorded SHA
 - run tests

This works in most cases, except when the branch being tested actually
changes the list of dependencies in some way.

Here we move away from letting `go get -v` walk through everything in
`./...`, instead building our own list of dependencies with the help of
`deplist`. We can then filter terraform packages out from the list, so
they don't get touched, and safely update the rest.

This should solve problems like those observed in #899 and #900.

__Note__: had to add a feature to deplist to make this work properly;
see phinze/deplist@016ef97
Working on getting it accepted upstream.
  • Loading branch information
phinze committed Jan 30, 2015
1 parent 6947ba2 commit a764adb
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,15 @@ testrace: generate
# updatedeps installs all the dependencies that Terraform needs to run
# and build.
updatedeps:
$(eval REF := $(shell sh -c "\
git symbolic-ref --short HEAD 2>/dev/null \
|| git rev-parse HEAD"))
go get -u github.com/phinze/deplist
go get -u github.com/mitchellh/gox
go get -u golang.org/x/tools/cmd/stringer
go get -u golang.org/x/tools/cmd/vet
go get -f -u -v ./...
git checkout $(REF)
go list github.com/hashicorp/terraform/... \
| xargs -n 1 deplist -s \
| grep -v github.com/hashicorp/terraform \
| sort -u \
| xargs go get -f -u -v

# vet runs the Go source code static analysis tool `vet` to find
# any common errors.
Expand Down

0 comments on commit a764adb

Please sign in to comment.