-
Notifications
You must be signed in to change notification settings - Fork 18k
x/build/version: make it trivial to obtain and test code against new go releases #18136
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
Comments
Hmm, OK. It sounds like the underlying issue you want to solve is to make it easier for people to download and run alternate Go versions? Like This wouldn't need to built into the go command. There could be a separate gotry command that did this, downloading versions as needed. FWIW, I keep all old versions of Go in my home directory and have scripts like:
Could be beta.golang.org/go1.8beta1 or just a unified beta.golang.org/gotry or ... |
I retitled this to the general underlying problem that seemed to be the target of the golang-dev thread. |
Thank you for your comment! I try to clarify again:
It's a fact I could not make myself clear on 1., that's why reconsider my proposal for 1: I suggest to forget about that. Please respond how/if I should open/close/merge/whatever this github issue or just leave it as it is. |
@rsc, I think just symlink $HOME/go1.5/bin/go to your_local_bin/go1.5
suffices. There is no need for a wrapper script because GOROOT is
always embedded into the Go command. Of course, that means you
will need to build various Go releases in their final position.
|
Whipped something up: https://github.com/josharian/goversion. All manner of comments welcome. |
@josharian Nice. I will leave it to you and @bradfitz to figure out what to do next, but I'd love to have instructions like that in the next beta release. @fgergo, thanks for the clarification. I agree (1) is hard. I think lowering the barrier to entry might be enough. For (2), I was with you up until "publish/report the result without any human assistance." Many users are working on closed source systems. Publishing the results in a way that (a) helps us identify the underlying problem and (b) doesn't reveal details of their code that they don't want revealed is also hard. What I think we can do (what @josharian put together seems like the right direction) is "make it easy/trivial to make regressions tests with betas on all locally installed packages under $GOPATH/src for anybody with a go installation". @josharian / @bradfitz, I wonder if goversion should default to downloading binaries from golang.org/dl instead of doing a full rebuild. Should be faster, makes sure we're not debugging misbuilt toolchain problems. |
@rsc on (1): I imagined to automatically publish something like this: If this information is too sensitive for somebody to publish, goversion should not be run. Maybe this warning could be announced in the first few goversions and then later goversion changed to only produce output if some error happened, similar to any other go tool. |
@josharian, I was going to write that tool today. :-) Thanks! Yes, please make binary downloads the default. Actually, I'd make build-from-source require a flag. If you run it on plan9, the error message should be something like "go1.8beta1 binary download not available for plan9/386. Use the --build flag.". And then let's get some testing on golang-nuts / Slack, and then we'll announce it with go1.8beta2. |
Where should it live? I don't care particularly, I just want to know what to do with the next round of code. Looking at golang.org/dl, some questions: (1) How do I get a list of available versions? Note that e.g. 1.7.2 is not available for download, so I can't just use the git tags like I did for build-from-source. Basically, I can haz an API for golang.org/dl? |
CL https://golang.org/cl/34012 mentions this issue. |
@josharian, ignore /dl/?format=json for now. That's too hard to deploy and iterate on. Here's an easier API: https://storage.googleapis.com/go-builder-data/dl-index.txt Future note to self: $ gsutil ls gs://golang/ | sed 's,gs://,https://storage.googleapis.com/,' > index.txt
$ upload -cacheable=false -public -file=index.txt go-builder-data/dl-index.txt |
/cc @broady |
@josharian at the moment goversion won't work on windows without gcc obviously. Though on windows it fails silently currently. I understand that when binary downloads are preferred, this won't be a problem. @ anybody_who_can_answer: Assuming goversion is ready for 1.8beta2, how would the usage instructions look like? Should the new beta tester run go test for src/, then run goversion ..., then manually diff the 2 test runs? What if no difference? What if there is a difference? |
@fgergo thanks for testing on windows. Though I will switch it preferring binary downloads, I plan to still support installing from source, and silently failing is very bad. Any chance you can help debug a bit? We can discuss over at josharian/goversion#1. Thanks! As for how to test using 1.8beta2, there are lots of things that people could usefully do. Here are a few:
|
@josharian sorry about my (deleted) comment about windows' exit command. :end Since GOBUILDEXIT is never set, make.bat finishes without error --> goversion assumes go1.4 is ready. (sidenote: all.bat checks for GOBUILDFAIL, that's why I think nobody noticed until now.) @brad I am not sure how to progress here, change 1.4 make.bat, change tip make.bat? If I understand the situation correctly: still goversion needs some other mechanism to check for failed make.bat. Will respond on josharian/goversion#1 when I have some sensible hack/workaround. (Maybe run make.bat from a shell script and check for GOBUILDFAIL.) |
You could just check if make.bat managed to build Go or not. if bin/go
exists, we're good.
|
details: josharian/goversion#1 |
@josharian, still on track to have this ready for Go 1.8beta2? |
No. Fixed the windows build-from-source issue last night, and got as far as writing a list-relevant-downloads function. The install-from-download isn't very much work, but I foresee very little time to work on this in the next couple of days. My apologies. |
@bradfitz @josharian what's the scope of "ready"? Binary installs for all platforms listed here: https://storage.googleapis.com/go-builder-data/dl-index.txt? If yes, osx10.6 or osx10.8? Anything else? |
CL https://golang.org/cl/34385 mentions this issue. |
This permits a user with any halfway recent version of Go to run: $ go get golang.org/x/build/version/go1.8beta1 $ go1.8beta1 go1.8beta1: not downloaded. Run 'go1.8beta1 download' to install to /home/bradfitz/sdk/go1.8beta1 $ go1.8beta1 download Downloaded 0.0% (15225 / 90818333 bytes) ... Downloaded 50.1% (45514752 / 90818333 bytes) ... Downloaded 100.0% (90818333 / 90818333 bytes). Unpacking /home/bradfitz/sdk/go1.8beta1/go1.8beta1.linux-amd64.tar.gz ... Unpacked /home/bradfitz/sdk/go1.8beta1/go1.8beta1.linux-amd64.tar.gz. Success. You may now run 'go1.8beta1' $ go1.8beta1 version go version go1.8beta1 linux/amd64 $ go1.8beta1 run ~/helloworld.go Hello, world from go1.8beta1! Updates golang/go#18136 Change-Id: I4297df19138facbf90dfab790ab30b942151b096 Reviewed-on: https://go-review.googlesource.com/34385 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
I think golang/build@071a06a is probably sufficient for Go 1.8. We can keep this open to track more. |
This is sufficiently done. We'll keep using golang.org/x/build/version/NNNNN for the betas. |
(was: direct email to adg titled "proposal on getting more people to test beta, -rc releases". Adg suggested to continue on golang-dev, but since this is a proposal, golang-dev shall receive a notification with an issue id on the concrete proposal according to https://github.com/golang/proposal.)
Though the goal is the same (to get better test coverage for beta and rc releases), this is a proposal about a process change, not about the complex tool and process change I sent as an rfc to golang-dev https://groups.google.com/forum/#!topic/golang-dev/kycbtvTIBAA
(Original direct email revised for clarity.)
Proposal
to include immediate value proposition (or expectation or hope...) in beta and rc announcements:
Assumption
(This may be a bit off, but I think the big picture for possible non golang-dev beta or -rc testers is something like this.)
In the morning:
To confirm,
nice change in value proposition since the last beta announcement:
"There are no known problems or regressions." <--- that's a high value statement. Although this possibly high value is immediately lowered after clicking and seeing "Known Issues".
The text was updated successfully, but these errors were encountered: