Go version in Gitian descriptors

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hello, I noticed that it looks like Tor Project is using Go 1.4.2 to build the pluggable transports in Gitian. I'm curious why a newer version of Go isn't used. My understanding is that Go 1.4.2 (or earlier) is needed to build Go 1.5 because 1.5's source code is itself in Go. Would using Go 1.5 be as simple as building 1.4.2 in Gitian (as is done now), and then using 1.4.2 to build 1.5, and then placing 1.5 in PATH instead of 1.4.2 as is done now? Have obstacles been identified in such a configuration, or is it just that no one tried it? Cheers, - -Jeremy Rand -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJWifxjAAoJEAHN/EbZ1y0686cP/3kdRz3va8dZ056j4x9k+sd7 XJsfsj9eWJ/tPxdpppPsBIoseTVNrPSCOB/cJ/bc0Xl75KGQkHFsmGusnUp6kg9L bwJK8wcNoO+s5EjjiY/Rk39UQTNJ3YKOaanvUnGXolYy4LtgUTTI7jdSWcpyZmd7 zxQVzvIXQEawgbu9SjTzXFkBQVHkZzkCDmTPcQNEPtIZambj7fFU0EMBWSmrYkVa /Lzz0bq2wMcZBpdMR07JT0WcrXNgkun48gJlBCV2SuScgs+FycmQi1dVCapwptrQ H0WeCv61XnhXTlens60gfhjrXMcUf4Xud2p71pG0N3OYrF8eOJGpSzTdnBnOFNGw IA2B+CB8u6l8PoZAqeJg0qhFjwm/BoG9o8b8WI9WJOvqDsSfo9Mjmr2lfuoxEGI7 /Uu7aZgRboFI899/xfKJUjzZpQs3hVrtpgukjNEShDBBhsZDOQUkbfzw097NttxB Nst6RW8WmRpbvFMGMrLiYrUKxGKJkzOUVaexU2C9y6y5asq3i2qotTmXpzEHkcP0 XL4KR9/JC6MeuBqSszEb2gpcQsHVsPxk7Wo1cJwLDSeS2YniZnxlpre5DjF2Exez H54PqwtXTezThc8TZuTzfJZrkOA/X5ggL7/wnpUaDrF8T9r4fn1rosP6m8PdUeOL RhVNDX3NeTjV6KywVJX4 =ELuw -----END PGP SIGNATURE-----

On Sun, Jan 03, 2016 at 11:01:25PM -0600, Jeremy Rand wrote:
I noticed that it looks like Tor Project is using Go 1.4.2 to build the pluggable transports in Gitian. I'm curious why a newer version of Go isn't used. My understanding is that Go 1.4.2 (or earlier) is needed to build Go 1.5 because 1.5's source code is itself in Go. Would using Go 1.5 be as simple as building 1.4.2 in Gitian (as is done now), and then using 1.4.2 to build 1.5, and then placing 1.5 in PATH instead of 1.4.2 as is done now? Have obstacles been identified in such a configuration, or is it just that no one tried it?
It's just that nobody has tried it. Here's the ticket for the most recent update (to 1.4.2) if you want to make a new patch and file a new ticket: https://bugs.torproject.org/15448

On 4 Jan 2016, at 16:14, David Fifield <david@bamsoftware.com> wrote:
On Sun, Jan 03, 2016 at 11:01:25PM -0600, Jeremy Rand wrote:
I noticed that it looks like Tor Project is using Go 1.4.2 to build the pluggable transports in Gitian. I'm curious why a newer version of Go isn't used. My understanding is that Go 1.4.2 (or earlier) is needed to build Go 1.5 because 1.5's source code is itself in Go. Would using Go 1.5 be as simple as building 1.4.2 in Gitian (as is done now), and then using 1.4.2 to build 1.5, and then placing 1.5 in PATH instead of 1.4.2 as is done now? Have obstacles been identified in such a configuration, or is it just that no one tried it?
It's just that nobody has tried it. Here's the ticket for the most recent update (to 1.4.2) if you want to make a new patch and file a new ticket: https://bugs.torproject.org/15448 <https://bugs.torproject.org/15448>
Note the go bootstrap process has changed now that go is entirely written in go: The new build process for Go 1.x (x ≥ 5) will be: • Build cmd/dist with Go 1.4. • Using dist, build Go 1.x compiler toolchain with Go 1.4. • Using dist, rebuild Go 1.x compiler toolchain with itself. • Using dist, build Go 1.x cmd/go (as go_bootstrap) with Go 1.x compiler toolchain. • Using go_bootstrap, build the remaining Go 1.x standard library and commands. https://docs.google.com/document/d/1OaatvGhEAq7VseQ9kkavxKNAfepWy2yhPUBs96FG... Tim Wilson-Brown (teor) teor2345 at gmail dot com PGP 968F094B teor at blah dot im OTR CAD08081 9755866D 89E2A06F E3558B7F B5A9D14F

Tim Wilson-Brown - teor transcribed 12K bytes:
On 4 Jan 2016, at 16:14, David Fifield <david@bamsoftware.com> wrote:
On Sun, Jan 03, 2016 at 11:01:25PM -0600, Jeremy Rand wrote:
I noticed that it looks like Tor Project is using Go 1.4.2 to build the pluggable transports in Gitian. I'm curious why a newer version of Go isn't used. My understanding is that Go 1.4.2 (or earlier) is needed to build Go 1.5 because 1.5's source code is itself in Go. Would using Go 1.5 be as simple as building 1.4.2 in Gitian (as is done now), and then using 1.4.2 to build 1.5, and then placing 1.5 in PATH instead of 1.4.2 as is done now? Have obstacles been identified in such a configuration, or is it just that no one tried it?
It's just that nobody has tried it. Here's the ticket for the most recent update (to 1.4.2) if you want to make a new patch and file a new ticket: https://bugs.torproject.org/15448 <https://bugs.torproject.org/15448>
Note the go bootstrap process has changed now that go is entirely written in go:
The new build process for Go 1.x (x ≥ 5) will be:
• Build cmd/dist with Go 1.4. • Using dist, build Go 1.x compiler toolchain with Go 1.4. • Using dist, rebuild Go 1.x compiler toolchain with itself. • Using dist, build Go 1.x cmd/go (as go_bootstrap) with Go 1.x compiler toolchain. • Using go_bootstrap, build the remaining Go 1.x standard library and commands.
https://docs.google.com/document/d/1OaatvGhEAq7VseQ9kkavxKNAfepWy2yhPUBs96FG...
Tim Wilson-Brown (teor)
I've not tried it yet, but it's my understanding that gccgo can still be used to compile go-1.5: https://github.com/golang/go/issues/10092 So another route might be to modify our build of GCC to include gccgo, then use that to bootstrap the official Go compiler. -- ♥Ⓐ isis agora lovecruft _________________________________________________________ OpenPGP: 4096R/0A6A58A14B5946ABDE18E207A3ADB67A2CDB8B35 Current Keys: https://blog.patternsinthevoid.net/isis.txt

isis:
Tim Wilson-Brown - teor transcribed 12K bytes:
Note the go bootstrap process has changed now that go is entirely written in go:
The new build process for Go 1.x (x ≥ 5) will be:
• Build cmd/dist with Go 1.4. • Using dist, build Go 1.x compiler toolchain with Go 1.4. • Using dist, rebuild Go 1.x compiler toolchain with itself. • Using dist, build Go 1.x cmd/go (as go_bootstrap) with Go 1.x compiler toolchain. • Using go_bootstrap, build the remaining Go 1.x standard library and commands.
https://docs.google.com/document/d/1OaatvGhEAq7VseQ9kkavxKNAfepWy2yhPUBs96FG...
Tim Wilson-Brown (teor)
I've not tried it yet, but it's my understanding that gccgo can still be used to compile go-1.5:
https://github.com/golang/go/issues/10092
So another route might be to modify our build of GCC to include gccgo, then use that to bootstrap the official Go compiler.
I never tried using gccgo to bootstrap as using go_1.4 is rather easy in practice using the official tooling: # 1. Build a go1.4 using GCC. git clone https://github.com/golang/go.git cp -r go go_bootstrap ( cd go_bootstrap; git checkout origin/release-branch.go1.4 ) ( cd go_bootstrap/src/ && ./all.bash ) # 2. Now build a go1.5 using the go1,4 export GOROOT_BOOTSTRAP=$PWD/go_bootstrap ( cd go && git checkout origin/release-branch.go1.5 ) ( cd go/src/ && ./all.bash ) # 3. And now do echo "PATH=$PATH:$PWD/go/bin" >> .profile Cheers!
participants (5)
-
David Fifield
-
isis
-
Jeremy Rand
-
sycamoreone
-
Tim Wilson-Brown - teor