Skip to contentSkip to conversation

package/go: bump version to 1.6.2

PATCH New Christian Stewart 5 participants 14 messages May 6, 2016 – May 10, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Golang has significant improvements to support for multiarch in later versions. This bump is required to make many go programs functional under arm64, for example.

---
 package/go/go.hash | 2 +-
 package/go/go.mk   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
package/go/go.hash +1 -1
index e7c72de..6826891 100644
@@ -1,2 +1,2 @@
 # Locally computed:
-sha256  754e06dab1c31ab168fc9db9e32596734015ea9e24bc44cae7f237f417ce4efe  go1.5.3.src.tar.gz
+sha256 787b0b750d037016a30c6ed05a8a70a91b2e9db4bd9b1a2453aa502a63f1bccc   go1.6.2.src.tar.gz
package/go/go.mk +1 -1
index 5454fd5..720c75a 100644
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-GO_VERSION = 1.5.3
+GO_VERSION = 1.6.2
 GO_SITE = https://storage.googleapis.com/golang
 GO_SOURCE = go$(GO_VERSION).src.tar.gz
 
Signature · 1 line
2.7.3
#1 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Quoted 3 lines · Christian Stewart

Golang has significant improvements to support for multiarch in later versions. This bump is required to make many go programs functional under arm64, for example.

MIPS support was added in 1.6.

Otherwise, Acked-by: Geoff Levand <[email protected]>

package/go/Config.in.host +1 -1
@@ -2,5 +2,5 @@ config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
 	bool
 	default y
 	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_powerpc64 || BR2_powerpc64le
+	depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_powerpc64 || BR2_powerpc64le || BR2_mips64 || BR2_mips64el
 	depends on !BR2_ARM_CPU_ARMV4
package/go/go.mk +4 -0
@@ -30,6 +30,10 @@ else ifeq ($(BR2_powerpc64),y)
 GO_GOARCH = ppc64
 else ifeq ($(BR2_powerpc64le),y)
 GO_GOARCH = ppc64le
+else ifeq ($(BR2_mips64),y)
+GO_GOARCH = mips64
+else ifeq ($(BR2_mips64el),y)
+GO_GOARCH = mips64le
 endif
 
 HOST_GO_DEPENDENCIES = host-go-bootstrap
Signature · 1 line
2.5.0
#2 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Hello,

Quoted 13 lines · Geoff Levand
package/go/Config.in.host +1 -1
@@ -2,5 +2,5 @@ config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
 	bool
 	default y
 	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_powerpc64 || BR2_powerpc64le
+	depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_powerpc64 || BR2_powerpc64le || BR2_mips64 || BR2_mips64el
 	depends on !BR2_ARM_CPU_ARMV4

package/go/go.mk else ifeq ($(BR2_powerpc64),y) · line 39

Quoted 10 lines
package/go/go.mk +4 -0
@@ -30,6 +30,10 @@ else ifeq ($(BR2_powerpc64),y)
 GO_GOARCH = ppc64
 else ifeq ($(BR2_powerpc64le),y)
 GO_GOARCH = ppc64le
+else ifeq ($(BR2_mips64),y)
+GO_GOARCH = mips64
+else ifeq ($(BR2_mips64el),y)
+GO_GOARCH = mips64le
 endif
 
 HOST_GO_DEPENDENCIES = host-go-bootstrap

Could you submit this as a proper patch, with a description and your SoB ?

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

It initially looks to me like we should add -fPIC to the cgo compilation flags. Will test and see.

Thanks for the patch.

Best,
Christian

Quoted 33 lines · Thomas Petazzoni

Hello,

package/go/Config.in.host config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS · line 5

Quoted 7 lines · Geoff Levand
package/go/Config.in.host +0 -1
@@ -2,5 +2,5 @@ config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
      bool
      default y
      depends on BR2_TOOLCHAIN_HAS_THREADS
-     depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 ||

BR2_powerpc64 || BR2_powerpc64le

package/go/Config.in.host config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS · line 5

Quoted 1 line
package/go/Config.in.host +1 -0
+     depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 ||

BR2_powerpc64 || BR2_powerpc64le || BR2_mips64 || BR2_mips64el

Quoted 5 lines
package/go/Config.in.host +0 -0
      depends on !BR2_ARM_CPU_ARMV4

package/go/go.mk else ifeq ($(BR2_powerpc64),y) · line 39

Quoted 10 lines
package/go/go.mk +4 -0
@@ -30,6 +30,10 @@ else ifeq ($(BR2_powerpc64),y)
 GO_GOARCH = ppc64
 else ifeq ($(BR2_powerpc64le),y)
 GO_GOARCH = ppc64le
+else ifeq ($(BR2_mips64),y)
+GO_GOARCH = mips64
+else ifeq ($(BR2_mips64el),y)
+GO_GOARCH = mips64le
 endif
 
 HOST_GO_DEPENDENCIES = host-go-bootstrap

Could you submit this as a proper patch, with a description and your SoB ?

Quoted 8 lines

Thanks!

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160507/b51cee72/attachment.html>

#4 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

In reply to Christian Stewart

Hello,

Quoted 9 lines · Christian Stewart

Golang has significant improvements to support for multiarch in later versions. This bump is required to make many go programs functional under arm64, for example.

---
 package/go/go.hash | 2 +-
 package/go/go.mk   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Applied to master, thanks. However, I've noticed that on my machine, host-go-bootstrap doesn't build:

net/rpc/jsonrpc

# cmd/pprof
/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
runtime/cgo(.text): unexpected relocation type 298
runtime/cgo(.text): unexpected relocation type 298
# cmd/go
/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
runtime/cgo(.text): unexpected relocation type 298
runtime/cgo(.text): unexpected relocation type 298
package/pkg-generic.mk:195: recipe for target '/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/.stamp_built' failed
make[1]: *** [/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/.stamp_built] Error 2
Makefile:36: recipe for target '_all' failed
make: *** [_all] Error 2

You should be able to reproduce with the following defconfig:

BR2_arm=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2016.02-3-g762b7c9.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_4_7=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y
BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_INIT_NONE=y
BR2_SYSTEM_BIN_SH_NONE=y
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_FLANNEL=y
# BR2_TARGET_ROOTFS_TAR is not set

Could you look into this?

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#5 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Hi Thomas, Christian,

Quoted 4 lines · Thomas Petazzoni

Applied to master, thanks. However, I've noticed that on my machine, host-go-bootstrap doesn't build:

net/rpc/jsonrpc

Quoted 14 lines
# cmd/pprof
/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
runtime/cgo(.text): unexpected relocation type 298
runtime/cgo(.text): unexpected relocation type 298
# cmd/go
/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
runtime/cgo(.text): unexpected relocation type 298
runtime/cgo(.text): unexpected relocation type 298
package/pkg-generic.mk:195: recipe for target '/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/.stamp_built' failed
make[1]: *** [/home/thomas/projets/buildroot/output/build/host-go-bootstrap-1.4.2/.stamp_built] Error 2
Makefile:36: recipe for target '_all' failed
make: *** [_all] Error 2

Seems to be fixed in 1.5.2. See
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=807136.

Quoted 1 line

You should be able to reproduce with the following defconfig:

You'll most likely also need a relatively recent host binutils to reproduce.

baruch

Quoted 18 lines

BR2_arm=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2016.02-3-g762b7c9.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_4_7=y
BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y
BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
BR2_TOOLCHAIN_EXTERNAL_INET_RPC=y
BR2_TOOLCHAIN_EXTERNAL_CXX=y
BR2_INIT_NONE=y
BR2_SYSTEM_BIN_SH_NONE=y
# BR2_PACKAGE_BUSYBOX is not set
BR2_PACKAGE_FLANNEL=y
# BR2_TARGET_ROOTFS_TAR is not set

Could you look into this?

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#6 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Hello,

Quoted 2 lines · Baruch Siach

Seems to be fixed in 1.5.2. See
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=807136.

As far as I understand, we can't use go 1.5.2 as the bootstrap compiler, because since 1.5.x, Go is written in Go. I guess we will have to backport the patch.

Christian, Geoff, do you know if the Go community intends to maintain Go 1.4.x for the foreseeable future, so that we can still officially rely on it as a bootstrap Go compiler?

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#7 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Quoted 11 lines · Thomas Petazzoni

Hello,

Quoted 2 lines · Baruch Siach

Seems to be fixed in 1.5.2. See
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=807136.

As far as I understand, we can't use go 1.5.2 as the bootstrap compiler, because since 1.5.x, Go is written in Go. I guess we will have to backport the patch.

I think it should be sufficient to build the go-bootstrap compiler with "CGO_ENABLED=0" in its environment. This worked for me when I played with it and looks like the correct solution according to
https://github.com/golang/go/issues/13114

#8 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Hello,

Quoted 8 lines · Cam Hutchison
Quoted 3 lines

As far as I understand, we can't use go 1.5.2 as the bootstrap compiler, because since 1.5.x, Go is written in Go. I guess we will have to backport the patch.

I think it should be sufficient to build the go-bootstrap compiler with "CGO_ENABLED=0" in its environment. This worked for me when I played with it and looks like the correct solution according to
https://github.com/golang/go/issues/13114

When the packaging of Go was added to Buildroot, I was pointed to
https://docs.google.com/document/d/1OaatvGhEAq7VseQ9kkavxKNAfepWy2yhPUBs96FGV28/edit,
which says that using Go 1.4 as the bootstrap compiler to build Go 1.5 was the proper solution.

Now, if it is possible to use a two-stage build of go 1.5, then that's also fine with me, but it somewhat contradicts the above document.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#9 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Quoted 13 lines · Thomas Petazzoni

Hello,

Quoted 8 lines · Cam Hutchison
Quoted 3 lines

As far as I understand, we can't use go 1.5.2 as the bootstrap compiler, because since 1.5.x, Go is written in Go. I guess we will have to backport the patch.

I think it should be sufficient to build the go-bootstrap compiler with "CGO_ENABLED=0" in its environment. This worked for me when I played with it and looks like the correct solution according to
https://github.com/golang/go/issues/13114

Quoted 7 lines

When the packaging of Go was added to Buildroot, I was pointed to
https://docs.google.com/document/d/1OaatvGhEAq7VseQ9kkavxKNAfepWy2yhPUBs96FGV28/edit,
which says that using Go 1.4 as the bootstrap compiler to build Go 1.5 was the proper solution.

Now, if it is possible to use a two-stage build of go 1.5, then that's also fine with me, but it somewhat contradicts the above document.

Sorry, I was unclear.

I don't know anything about bootstraping the compiler with anything other than go 1.4 - as far as my limited understanding goes, that is still necessary.

What I meant was that it should not be necessary to backport the patch as you suggested, but instead compile the bootstrap compiler with CGO_ENABLED=0 in the environment. That worked for me when I saw the same problem building the bootstrap compiler (but the problem was not consistent and no one else seemed to have it, so I just assumed there was an issue in my build environment - so I never posted this fix).

#10 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Hello,

Quoted 10 lines · Cam Hutchison

I don't know anything about bootstraping the compiler with anything other than go 1.4 - as far as my limited understanding goes, that is still necessary.

What I meant was that it should not be necessary to backport the patch as you suggested, but instead compile the bootstrap compiler with CGO_ENABLED=0 in the environment. That worked for me when I saw the same problem building the bootstrap compiler (but the problem was not consistent and no one else seemed to have it, so I just assumed there was an issue in my build environment - so I never posted this fix).

Aah, OK! I can indeed confirm that the following patch fixes the build problem for me.

Geoff, if that's OK for you, could you send a proper patch that does this?

package/go-bootstrap/go-bootstrap.mk +2 -1
index e404cb6..2b46694 100644
@@ -17,7 +17,8 @@ HOST_GO_BOOTSTRAP_MAKE_ENV = \
        GOOS=linux \
        GOROOT_FINAL="$(HOST_GO_BOOTSTRAP_ROOT)" \
        GOROOT="$(@D)" \
-       GOBIN="$(@D)/bin"
+       GOBIN="$(@D)/bin" \
+       CGO_ENABLED=0
 
 define HOST_GO_BOOTSTRAP_BUILD_CMDS
        cd $(@D)/src && $(HOST_GO_BOOTSTRAP_MAKE_ENV) ./make.bash

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#11 lore raw

PATCH 1/1 package/go: bump version to 1.6.2

Quoted 8 lines · Thomas Petazzoni

Geoff, if that's OK for you, could you send a proper patch that does this?

package/go-bootstrap/go-bootstrap.mk +0 -0
index e404cb6..2b46694 100644

package/go-bootstrap/go-bootstrap.mk HOST_GO_BOOTSTRAP_MAKE_ENV = \ · line 21

Quoted 6 lines
package/go-bootstrap/go-bootstrap.mk +2 -1
@@ -17,7 +17,8 @@ HOST_GO_BOOTSTRAP_MAKE_ENV = \
        GOOS=linux \
        GOROOT_FINAL="$(HOST_GO_BOOTSTRAP_ROOT)" \
        GOROOT="$(@D)" \
-       GOBIN="$(@D)/bin"
+       GOBIN="$(@D)/bin" \
+       CGO_ENABLED=0

We do not need cgo support in the bootstrap compiler, so this should be the correct fix. I'll test and send out a patch.

-Geoff

#12 lore raw

PATCH v2 1/1 package/go: bump version to 1.6.2

In reply to Christian Stewart

Golang has significant improvements to support for multiarch in later versions. This bump is required to make many go programs functional under arm64, for example.

[Also enable go language support for mips64 and mips64el (mips64le), which were added in go-1.6.2.]

---
 package/go/Config.in.host | 2 +-
 package/go/go.hash        | 2 +-
 package/go/go.mk          | 6 +++++-
 3 files changed, 7 insertions(+), 3 deletions(-)
package/go/Config.in.host +1 -1
index 5833bd9..3d8fe45 100644
@@ -2,5 +2,5 @@ config BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
 	bool
 	default y
 	depends on BR2_TOOLCHAIN_HAS_THREADS
-	depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_powerpc64 || BR2_powerpc64le
+	depends on BR2_arm || BR2_aarch64 || BR2_i386 || BR2_x86_64 || BR2_powerpc64 || BR2_powerpc64le || BR2_mips64 || BR2_mips64el
 	depends on !BR2_ARM_CPU_ARMV4
package/go/go.hash +1 -1
index e7c72de..b1e5d27 100644
@@ -1,2 +1,2 @@
 # Locally computed:
-sha256  754e06dab1c31ab168fc9db9e32596734015ea9e24bc44cae7f237f417ce4efe  go1.5.3.src.tar.gz
+sha256  787b0b750d037016a30c6ed05a8a70a91b2e9db4bd9b1a2453aa502a63f1bccc  go1.6.2.src.tar.gz
package/go/go.mk +5 -1
index 05236f1..00b1d21 100644
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-GO_VERSION = 1.5.3
+GO_VERSION = 1.6.2
 GO_SITE = https://storage.googleapis.com/golang
 GO_SOURCE = go$(GO_VERSION).src.tar.gz
 
@@ -30,6 +30,10 @@ else ifeq ($(BR2_powerpc64),y)
 GO_GOARCH = ppc64
 else ifeq ($(BR2_powerpc64le),y)
 GO_GOARCH = ppc64le
+else ifeq ($(BR2_mips64),y)
+GO_GOARCH = mips64
+else ifeq ($(BR2_mips64el),y)
+GO_GOARCH = mips64le
 endif
 
 HOST_GO_DEPENDENCIES = host-go-bootstrap
Signature · 1 line
2.5.0
#13 lore raw

PATCH v2 1/1 package/go: bump version to 1.6.2

Quoted 9 lines · Geoff Levand

Golang has significant improvements to support for multiarch in later versions. This bump is required to make many go programs functional under arm64, for example.

[Also enable go language support for mips64 and mips64el (mips64le), which
were added in go-1.6.2.]

Sorry I didn't see that the base patch was merged already.

I'll send out a seperate patch that just enables MIPS.

-Geoff