Skip to content
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

x/tools/gopls: gopls drops stderr output from GOPACKAGESDRIVER #34649

Closed
jmhodges opened this issue Oct 1, 2019 · 9 comments
Closed

x/tools/gopls: gopls drops stderr output from GOPACKAGESDRIVER #34649

jmhodges opened this issue Oct 1, 2019 · 9 comments

Comments

@jmhodges
Copy link
Contributor

@jmhodges jmhodges commented Oct 1, 2019

What version of Go are you using (go version)?

go version go1.13 darwin/amd64

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

darwin/amd64

go env Output
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/jeffhodges/Library/Caches/go-build"
GOENV="/Users/jeffhodges/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/jeffhodges"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.13/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.13/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/vg/32jn4gdd1x3f_r9dwcryw4y00000gn/T/go-build262498199=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?

What did you expect to see?

A way to access the stderr output emitted from the $GOPACKAGESDRIVER binary. gopls drops any stderr output the driver binary prints and doesn't seem to have a way to log it to another file.

What did you see instead?

No stderr output from the driver binary.

@gopherbot gopherbot added this to the Unreleased milestone Oct 1, 2019
@golang golang deleted a comment from gopherbot Oct 3, 2019
@stamblerre
Copy link
Contributor

@stamblerre stamblerre commented Oct 22, 2019

I think that if you want read the stderr from your go/packages driver, you will have to handle or log it through the driver. As an example, the built-in go list driver explicitly drops stderr here.

@jmhodges
Copy link
Contributor Author

@jmhodges jmhodges commented Oct 22, 2019

Yeah, I saw that and I was hoping we could, on -v or some such, get stderr copied over (perhaps with a prefix on each line, but not required). The file.Open to log.SetOutput chain is long and means I have to maintain a tail -f somewhere.

It’s also something I have to warn contributors who make changes to the driver code after me, too.

@jmhodges
Copy link
Contributor Author

@jmhodges jmhodges commented Oct 22, 2019

I'd be up for writing that patch if y'all are interested!

@stamblerre
Copy link
Contributor

@stamblerre stamblerre commented Oct 22, 2019

@matloob is probably the right person to loop in here, as I think these changes would need to be made in go/packages, not gopls.

@matloob
Copy link
Contributor

@matloob matloob commented Oct 28, 2019

I think what we'd want to do here is to maybe log the STDERR if the user specifies a debug environment variable, similar to what we do here: https://github.com/golang/tools/blob/7178990c25039b756510e51a36380458e3a96487/go/packages/golist.go#L1105

@stamblerre
Copy link
Contributor

@stamblerre stamblerre commented Oct 28, 2019

Would it be sufficient to move that check to the beginning of the function?

@matloob
Copy link
Contributor

@matloob matloob commented Oct 28, 2019

@gopherbot
Copy link

@gopherbot gopherbot commented Oct 30, 2019

Change https://golang.org/cl/204201 mentions this issue: go/packages: print gopackagesdriver errors when GOPACKAGESPRINTDRIVERERRORS is set

@jmhodges
Copy link
Contributor Author

@jmhodges jmhodges commented Oct 31, 2019

Thank you! This will make my work much easier

@golang golang locked and limited conversation to collaborators Oct 30, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
4 participants
You can’t perform that action at this time.