Hi everyone,

I never bothered too much with the details of "go get" until the issue 
recently came up in a conversation with another developer who was also 
annoyed by the clumsiness of the go tool in practice. I often work with 
programs that are not in a GOPATH, but import some non-local packages. I 
find the behavior a bit strange. Before opening a bug I wanted to ask here 
if someone can shed some light on why things are the way they are.

In the following I'll assume that the directory $X contains the source of a 
package ("main" in my case) which resides outside the GOPATH, but imports 
some go get-able packages (like "golang.org/x/net/websocket"). If the $X is 
the current directory it may be omitted when using go get. I may be 
mistaken, but the options at the moment are pretty much this:

go get $X:
-Downloads missing dependencies
-Does not update sources of dependencies
-Executes go install $X
This is what I used to use ("go get; go build -i -o out && ./out"). This 
actually works fine. But it will return 1 (error), due to "go install $X" 
failing.

go get -d &X:
-Downloads missing dependencies
-Does not update source of dependency
I guess this is what I should have used instead of "go get". Instal

go get -u $X:
-Downloads missing dependencies
-Updates sources of existing dependencies
-Executes go install $X
This works great inside a GOPATH, but outside it is utterly useless when 
used on a package outside the GOPATH, since it fails immediately with 
"unrecognized import path ...". "go get -u -d" has the same problem.

So that leaves me wondering. How do I update the dependencies of a program 
whose code resides outside of a GOPATH? "go get -u ..." runs way to long if 
you have a lot of stuff in GOPATH.

Did I misunderstand something? Does anyone have a solution for this? If 
not, here are three proposals in order of preference (not mutually 
exclusive):
1. Change go get $X: Skip the "go install $X" if $X is outside the GOPATH 
and just install the dependencies.
2. Change go get -u $X: Just skip the "unrecognized import path" issue and 
continue updating the dependencies (I feel like this should make "go get -u 
-d $X" work for me).
3. Don't change "go get" at all, but add the -u flag to "go build". Then 
"go get -d && go build -u -i" would work great.

I know that none of these exactly fit the original idea of the "get" or 
"build" command perfectly, but this is a real world problem in need of a 
solution.

tldr: Please let me update dependencies of packages that are in arbitrary 
directories.

Best regards,
Florian

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to