-
Notifications
You must be signed in to change notification settings - Fork 17.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmd/compile: should support multiple trimpath arguments and/or splitter in the GOPATH #22382
Comments
Thanks, but you are describing a solution rather than a problem. What is the real goal? What paths do you want to trim and why? |
I have configuration where there are two gopaths. And both of them show local system information (e.g. my username). I want to remove these paths from the project and keep only |
I'm encountering this issue when I'm compiling a program using cgo (with Go 1.10). For example, for this program: package main
// typedef int (*intFunc) ();
//
// int
// bridge_int_func(intFunc f)
// {
// return f();
// }
//
// int fortytwo()
// {
// return 42;
// }
import "C"
import "fmt"
func main() {
f := C.intFunc(C.fortytwo)
fmt.Println(int(C.bridge_int_func(f)))
// Output: 42
} If I compile this program with no trimpath flags (
If I compile with trimpath flags (
Because I supplied the trimpath flags, the built-in |
This issue should be more relevant now with modules, since the project you're building can be outside the $GOPATH while modules that your project depends on are built inside $GOPATH. |
I agree with @jclc that this issue is relevant when using modules, since it is impossible to remove I suppose that there are a few of ways to solve this, and I would be curious to which one is most amenable to the Go community:
I'd be happy myself to write a patch for any of the above three. |
Instead of multiple paths, probably we should have some mode that means “trim all paths that aren't part of the import path”. That would help with cases like #28008 where the caller doesn't actually know the full set of paths in play. |
Instead of multiple paths, probably we should have some mode that
means “trim all paths that aren't part of the import path”.
I think that is a sensible way to go. It's a good sign that this is
better than multiple `-trimpath`'s, because:
1. Invocations like 'go build -gcflags="-trimpath=$PWD:$GOPATH/pkg"'
will get copied around all over the place, and
2. The above doesn't spell a way to exclude things in /tmp, which mean
that builds can't be reproducible under this mechanism. Certainly
an option "exclude any path prefix outside of $PWD" would take care
of that.
What would it be called?
|
Users should not be using -trimpath. The general problem here is #16860. |
What version of Go are you using (
go version
)?go 1.9.1
Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (
go env
)?does not matter (linux, windows)
What did you do?
When I run
go build -gcflags -trimpath somepath
go will executego tool compile -trimpath $WORK -trimpath somepath
during build process. Due to this default-trimpath $WORK
is not effective.Another use case is
go build -gcflags -trimpath $GOPATH
because I want to prevent storing my username (from the homedir) to built binaries and I have more directories in theGOPATH
.What did you expect to see?
all trimpath arguments are used
What did you see instead?
last trimpath argument is used
The text was updated successfully, but these errors were encountered: