]> Cypherpunks repositories - gostls13.git/commit
cmd/go: use GOPATH order for compile -I and link -L options
authorRuss Cox <rsc@golang.org>
Tue, 9 Feb 2016 04:46:27 +0000 (23:46 -0500)
committerRuss Cox <rsc@golang.org>
Tue, 9 Feb 2016 20:36:10 +0000 (20:36 +0000)
commitee451770a76e138e05d2cf499b0eb25e69122432
treedcdb8807a129fe524c6b5b02f0323442feebcbed
parent558a213d55beb23846e45a4500f3388f91dadb75
cmd/go: use GOPATH order for compile -I and link -L options

Given GOPATH=p1:p2 and source code of just the right form,
the go command could previously end up invoking the compiler
with -I p2 -I p1 or the linker with -L p2 -L p1, so that
compiled packages in p2 incorrectly shadowed packages in p1.
If foo were in both p1 and p2 and the compilation of bar
were such that the -I and -L options were inverted in this way,
then

GOPATH=p2 go install foo
GOPATH=p1:p2 go install bar

would get the p2 copy of foo instead of the (expected) p1 copy of foo.

This manifested in real usage in a few different ways, but in all
the root cause was that the -I or -L option sequence did not
match GOPATH.

Make it match GOPATH.

Fixes #14176 (second report).
Fixes #14192.
Related but less common issue #14271 not fixed.

Change-Id: I9c0f69042bb2bf92c9fc370535da2c60a1187d30
Reviewed-on: https://go-review.googlesource.com/19385
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
src/cmd/go/build.go
src/cmd/go/go_test.go