Package: src:golang-1.6 With the attached patch, and installing gcc-6-<triplet>, we can cross build golang-1.6 with dpkg-buildpackage -a<arch> -d
Thus, we can bootstrap golang for mips64 and mips64el. There are 2 tests fails on mips64el, I will try to fix them. Note: you will need to link <triplet>-gcc-6 to <triplet>-gcc manually. -- YunQiang Su
diff -ur golang-1.6-1.6.2/debian/control xxx/debian/control --- golang-1.6-1.6.2/debian/control 2016-06-24 03:00:54.000000000 +0000 +++ xxx/debian/control 2016-06-29 13:58:30.330252866 +0000 @@ -19,7 +19,7 @@ Homepage: https://golang.org Package: golang-1.6-go -Architecture: amd64 arm64 armel armhf i386 ppc64 ppc64el +Architecture: amd64 arm64 armel armhf i386 ppc64 ppc64el mips64 mips64el Depends: golang-1.6-src (>= ${source:Version}), ${misc:Depends}, ${perl:Depends}, @@ -43,7 +43,7 @@ pre-compile the standard library inside GOROOT for cross-compilation to work. Package: golang-1.6-src -Architecture: amd64 arm64 armel armhf i386 ppc64 ppc64el +Architecture: amd64 arm64 armel armhf i386 ppc64 ppc64el mips64 mips64el Depends: ${misc:Depends}, ${shlibs:Depends} Description: Go programming language - source files The Go programming language is an open source project to make programmers more diff -ur golang-1.6-1.6.2/debian/control.in xxx/debian/control.in --- golang-1.6-1.6.2/debian/control.in 2016-06-24 03:00:54.000000000 +0000 +++ xxx/debian/control.in 2016-06-29 11:59:18.301996282 +0000 @@ -15,7 +15,7 @@ Homepage: https://golang.org Package: golang-X.Y-go -Architecture: amd64 arm64 armel armhf i386 ppc64 ppc64el +Architecture: amd64 arm64 armel armhf i386 ppc64 ppc64el mips64 mips64el Depends: golang-X.Y-src (>= ${source:Version}), ${misc:Depends}, ${perl:Depends}, @@ -39,7 +39,7 @@ pre-compile the standard library inside GOROOT for cross-compilation to work. Package: golang-X.Y-src -Architecture: amd64 arm64 armel armhf i386 ppc64 ppc64el +Architecture: amd64 arm64 armel armhf i386 ppc64 ppc64el mips64 mips64el Depends: ${misc:Depends}, ${shlibs:Depends} Description: Go programming language - source files The Go programming language is an open source project to make programmers more diff -ur golang-1.6-1.6.2/debian/golang-X.Y-go.install xxx/debian/golang-X.Y-go.install --- golang-1.6-1.6.2/debian/golang-X.Y-go.install 2016-06-01 14:07:31.000000000 +0000 +++ xxx/debian/golang-X.Y-go.install 2016-06-29 13:03:52.253257140 +0000 @@ -1,7 +1,7 @@ VERSION /usr/lib/go-X.Y/ -bin/go /usr/lib/go-X.Y/bin/ -bin/gofmt /usr/lib/go-X.Y/bin/ -pkg/*_* /usr/lib/go-X.Y/pkg/ +bin/@OS_ARCH_BIN@/go /usr/lib/go-X.Y/bin/ +bin/@OS_ARCH_BIN@/gofmt /usr/lib/go-X.Y/bin/ +pkg/@OS_ARCH@ /usr/lib/go-X.Y/pkg/ pkg/include /usr/share/go-X.Y/pkg/ pkg/obj /usr/lib/go-X.Y/pkg/ -pkg/tool /usr/lib/go-X.Y/pkg/ +pkg/tool/@OS_ARCH@ /usr/lib/go-X.Y/pkg/tool/ diff -ur golang-1.6-1.6.2/debian/helpers/goenv.sh xxx/debian/helpers/goenv.sh --- golang-1.6-1.6.2/debian/helpers/goenv.sh 2016-02-24 06:06:05.000000000 +0000 +++ xxx/debian/helpers/goenv.sh 2016-06-29 11:59:18.311996406 +0000 @@ -31,6 +31,9 @@ export GOHOSTARCH="$(__goarch__deb_arch_cpu "$(dpkg-architecture -qDEB_BUILD_ARCH_CPU 2>/dev/null)")" export GOARCH="$(__goarch__deb_arch_cpu "$(dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)")" +export CC_FOR_TARGET=$(dpkg-architecture -qDEB_HOST_GNU_TYPE 2>/dev/null)-gcc + + if [ -z "$GOHOSTOS" -o -z "$GOOS" -o -z "$GOHOSTARCH" -o -z "$GOARCH" ]; then exit 1 fi diff -ur golang-1.6-1.6.2/debian/rules xxx/debian/rules --- golang-1.6-1.6.2/debian/rules 2016-06-01 14:07:31.000000000 +0000 +++ xxx/debian/rules 2016-06-29 13:28:20.567148998 +0000 @@ -8,8 +8,10 @@ export GOROOT_FINAL := /usr/lib/go-$(GOVER) DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null) +DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE 2>/dev/null) +DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE 2>/dev/null) RUN_TESTS := true -ifeq (ppc64, $(DEB_HOST_ARCH_CPU)) +ifneq (,$(filter ppc64 mips64 mips64el, $(DEB_HOST_ARCH_CPU))) RUN_TESTS := false endif ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS))) @@ -41,13 +43,22 @@ rm -f -v golang-$(GOVER)-$${x##golang-X.Y-}; \ done + +ifneq ($(DEB_HOST_GNU_TYPE), $(DEB_BUILD_GNU_TYPE)) + OS_ARCH_BIN=$${GOOS}_$${GOARCH} +else + OS_ARCH_BIN= +endif override_dh_prep: dh_prep - @set -e; cd debian; for x in golang-X.Y-*; do \ - sed -e 's/X.Y/$(GOVER)/g' $$x > golang-$(GOVER)-$${x##golang-X.Y-}; \ + set -e; cd debian; for x in golang-X.Y-*; do \ + echo 'sed -e "s/X.Y/$(GOVER)/g" -e "s/@OS_ARCH@/$${GOOS}_$${GOARCH}/g" -e "s/@OS_ARCH_BIN@/$(OS_ARCH_BIN)/g"' $$x > sed-version.sh; \ + chmod +x sed-version.sh; \ + $(CURDIR)/debian/helpers/goenv.sh \ + ./sed-version.sh > golang-$(GOVER)-$${x##golang-X.Y-}; \ + rm -f sed-version.sh; \ done - override_dh_auto_test-arch: ifeq (true, $(RUN_TESTS)) set -ex; \