aboutsummaryrefslogtreecommitdiffstats
path: root/community/go
diff options
context:
space:
mode:
authorEivind Uggedal <eivind@uggedal.com>2015-09-30 08:31:02 +0000
committerEivind Uggedal <eivind@uggedal.com>2015-09-30 08:31:02 +0000
commit394aeb733e12eef9fc309fb8753c28d6095f4551 (patch)
tree22c62a0dd2190ad346496169e797ea21d5379de0 /community/go
parent675a55b3a13ee4daef9e7a10f9ff9ae3c640e4d0 (diff)
downloadaports-394aeb733e12eef9fc309fb8753c28d6095f4551.tar.bz2
aports-394aeb733e12eef9fc309fb8753c28d6095f4551.tar.xz
community/go: moved from main
Diffstat (limited to 'community/go')
-rw-r--r--community/go/APKBUILD144
-rw-r--r--community/go/default-sc-getpw-r-size-max.patch57
-rw-r--r--community/go/no-pic.patch16
3 files changed, 217 insertions, 0 deletions
diff --git a/community/go/APKBUILD b/community/go/APKBUILD
new file mode 100644
index 0000000000..ca7451fac9
--- /dev/null
+++ b/community/go/APKBUILD
@@ -0,0 +1,144 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer: Eivind Uggedal <eivind@uggedal.com>
+pkgname=go
+pkgver=1.5.1
+# This should be the latest commit on the corresponding release branch
+_toolsver="d02228d1857b9f49cd0252788516ff5584266eb6"
+pkgrel=2
+pkgdesc="Go programming language compiler"
+url="http://www.golang.org/"
+arch="all"
+license="BSD"
+depends=""
+depends_dev=""
+makedepends="bash go-bootstrap"
+options="!strip"
+install=""
+subpackages="$pkgname-doc $pkgname-tools $pkgname-cross"
+source="http://golang.org/dl/go${pkgver}.src.tar.gz
+ golang-tools-$pkgver.tar.gz::https://github.com/golang/tools/archive/${_toolsver}.tar.gz
+ no-pic.patch
+ default-sc-getpw-r-size-max.patch"
+
+# NOTE: building go for x86 with grsec kernel requires:
+# sysctl -w kernel.modify_ldt=1
+
+_gotools="cover vet godoc"
+_gocross="darwin freebsd openbsd windows"
+
+_builddir="$srcdir"/$pkgname
+_tooldir="$srcdir"/tools-${_toolsver}
+
+prepare() {
+ local i
+ cd "$_builddir"
+ for i in $source; do
+ case $i in
+ *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+ esac
+ done
+}
+
+build() {
+ cd "$_builddir/src"
+
+ export GOPATH="$srcdir"
+ export GOROOT="$_builddir"
+ export GOBIN="$GOROOT"/bin
+ export GOROOT_FINAL=/usr/lib/go
+ export GOROOT_BOOTSTRAP=/usr/lib/go-bootstrap
+
+ case "$CARCH" in
+ x86) export GOARCH="386" ;;
+ x86_64) export GOARCH="amd64" ;;
+ arm*) export GOARCH="arm" ;;
+ *) return 1 ;;
+ esac
+
+ ./make.bash --no-clean || return 1
+ for os in $_gocross; do
+ for arch in "386" "amd64"; do
+ GOARCH=$arch GOOS=$os ./make.bash --no-clean || return 1
+ done
+ done
+
+ # FIXME some tests fail:
+ # PATH="$GOROOT/bin:$PATH" ./run.bash -no-rebuild || return 1
+
+ mkdir -p "$GOPATH"/src/golang.org/x/tools
+ cp -r "$_tooldir"/* "$GOPATH"/src/golang.org/x/tools
+
+ for tool in $_gotools; do
+ "$GOROOT"/bin/go install \
+ golang.org/x/tools/cmd/$tool || return 1
+ done
+}
+
+package() {
+ cd "$_builddir"
+ mkdir -p "$pkgdir"/usr/bin "$pkgdir"/usr/lib/go "$pkgdir"/usr/share/doc/go
+
+ for binary in go gofmt; do
+ install -Dm755 bin/$binary "$pkgdir"/usr/lib/go/bin/$binary || return 1
+ ln -s /usr/lib/go/bin/$binary "$pkgdir"/usr/bin/$binary || return 1
+ done
+
+ # The source needs to be installed due to an upstream
+ # bug (https://github.com/golang/go/issues/2775).
+ # When this is resolved we can split out the source to a
+ # go-doc sub package.
+ cp -a pkg src "$pkgdir"/usr/lib/go || return 1
+ cp -r doc misc "$pkgdir"/usr/share/doc/go || return 1
+
+ # Remove tests from /usr/lib/go/src.
+ # Those shouldn't be affacted by the upstream bug (see above).
+ find "$pkgdir"/usr/lib/go/src \( -type f -a -name "*_test.go" \) \
+ -exec rm -rf \{\} \+ || return 1
+ find "$pkgdir"/usr/lib/go/src \( -type d -a -name "testdata" \) \
+ -exec rm -rf \{\} \+ || return 1
+ find "$pkgdir"/usr/lib/go/src \( -type f -a -name "*.bash" \) \
+ -exec rm -rf \{\} \+ || return 1
+
+ # Remove bootstrap files.
+ rm -rf "$pkgdir"/usr/lib/go/pkg/bootstrap
+}
+
+tools() {
+ pkgdesc="Go programming language tools"
+ depends="$pkgname"
+
+ install -dm755 "$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH
+ install -Dm755 "$_builddir"/bin/godoc \
+ "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool
+
+ for tool in $_gotools; do
+ mv "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool \
+ "$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool || return 1
+ done
+}
+
+cross() {
+ pkgdesk="Go cross compilers"
+ depends="$pkgname"
+
+ mkdir -p "$subpkgdir"/usr/lib/go/pkg/tool
+ for os in $_gocross; do
+ mv "$pkgdir"/usr/lib/go/pkg/tool/${os}_* \
+ "$subpkgdir"/usr/lib/go/pkg/tool || return 1
+ mv "$pkgdir"/usr/lib/go/pkg/${os}_* \
+ "$subpkgdir"/usr/lib/go/pkg || return 1
+ done
+}
+
+md5sums="4adfbdfca523cc1c229be8a321f3602f go1.5.1.src.tar.gz
+c64b28ba5df8499bcc19adc995da991a golang-tools-1.5.1.tar.gz
+b303cb36017c5f1303b1567b31b48de3 no-pic.patch
+12a36502180b9801f8d9e60824563c92 default-sc-getpw-r-size-max.patch"
+sha256sums="a889873e98d9a72ae396a9b7dd597c29dcd709cafa9097d9c4ba04cff0ec436b go1.5.1.src.tar.gz
+80db6fc563df50eb924dbf4f96cef287fc6b89cc8b98595c1dac3c80a118f290 golang-tools-1.5.1.tar.gz
+973144c68d10cdc740501ad814841912bae7c3936480fabb3f7fe092ba82ba7f no-pic.patch
+70f8f9b3ad6b8639db2b401ae14747a6e8d762443ca054c358a5aa4815df7d1f default-sc-getpw-r-size-max.patch"
+sha512sums="a3e92058c79502cfcb7d67143db67fef97393a416322b6f8b6c52b70879e7ab56e3cec94a9ca8046cc13b134845cc1e4b53c70d7208850092bf4edf04bf439ff go1.5.1.src.tar.gz
+80813c2da74c7b25fa2cfd15b2505757e7f466469ac701cb22d190dc83a607f091c4dea207a2e371e53d7a1f5459e7b53e5eea53c95565e958a6eb7fcb212359 golang-tools-1.5.1.tar.gz
+e21084dc07a74c7b6437ae22034b62e3a255692d32dba767c15efdb123d3159c03a02437a41350e512eaa2478a7afbd8b409317a779c56ee4939512d060d57fa no-pic.patch
+d59c977341b9ab15664b4b0c4f3df9e74ce48ffbd59594a7abb5a0907469f9d362c4e558606dd4b7cd102c165dd53027bae6aa1c48623c2105461dcad4cee14d default-sc-getpw-r-size-max.patch"
diff --git a/community/go/default-sc-getpw-r-size-max.patch b/community/go/default-sc-getpw-r-size-max.patch
new file mode 100644
index 0000000000..77be27d13d
--- /dev/null
+++ b/community/go/default-sc-getpw-r-size-max.patch
@@ -0,0 +1,57 @@
+From cb867d2fd64adc851f82be3c6eb6e38ec008930b Mon Sep 17 00:00:00 2001
+From: Dominik Honnef <dominik@honnef.co>
+Date: Sun, 21 Jun 2015 20:07:29 +0200
+Subject: [PATCH] os/user: don't depend on _SC_GETPW_R_SIZE_MAX on Linux
+
+Even Linux systems may not have _SC_GETPW_R_SIZE_MAX if using a
+different libc than glibc (e.g. musl). Instead of having special-cases
+for the BSDs, handle -1 correctly by always using a default buffer size.
+
+Fixes #11319.
+
+Change-Id: I8b1b260eb9830e6dbe7667f3f33d115ae4de4ce8
+Reviewed-on: https://go-review.googlesource.com/13772
+Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
+Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
+---
+ src/os/user/lookup_unix.go | 19 ++++++++-----------
+ 1 file changed, 8 insertions(+), 11 deletions(-)
+
+diff --git a/src/os/user/lookup_unix.go b/src/os/user/lookup_unix.go
+index f4f603e..e8a1eb1 100644
+--- a/src/os/user/lookup_unix.go
++++ b/src/os/user/lookup_unix.go
+@@ -9,7 +9,6 @@ package user
+
+ import (
+ "fmt"
+- "runtime"
+ "strconv"
+ "strings"
+ "syscall"
+@@ -55,17 +54,15 @@ func lookupUnix(uid int, username string, lookupByName bool) (*User, error) {
+ var pwd C.struct_passwd
+ var result *C.struct_passwd
+
+- var bufSize C.long
+- if runtime.GOOS == "dragonfly" || runtime.GOOS == "freebsd" {
+- // DragonFly and FreeBSD do not have _SC_GETPW_R_SIZE_MAX
+- // and just return -1. So just use the same
+- // size that Linux returns.
++ bufSize := C.sysconf(C._SC_GETPW_R_SIZE_MAX)
++ if bufSize == -1 {
++ // DragonFly and FreeBSD do not have _SC_GETPW_R_SIZE_MAX.
++ // Additionally, not all Linux systems have it, either. For
++ // example, the musl libc returns -1.
+ bufSize = 1024
+- } else {
+- bufSize = C.sysconf(C._SC_GETPW_R_SIZE_MAX)
+- if bufSize <= 0 || bufSize > 1<<20 {
+- return nil, fmt.Errorf("user: unreasonable _SC_GETPW_R_SIZE_MAX of %d", bufSize)
+- }
++ }
++ if bufSize <= 0 || bufSize > 1<<20 {
++ return nil, fmt.Errorf("user: unreasonable _SC_GETPW_R_SIZE_MAX of %d", bufSize)
+ }
+ buf := C.malloc(C.size_t(bufSize))
+ defer C.free(buf)
diff --git a/community/go/no-pic.patch b/community/go/no-pic.patch
new file mode 100644
index 0000000000..5a4e3966d6
--- /dev/null
+++ b/community/go/no-pic.patch
@@ -0,0 +1,16 @@
+diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
+index 8ccbec9dd634..4e96bfadc260 100644
+--- a/src/cmd/link/internal/ld/lib.go
++++ b/src/cmd/link/internal/ld/lib.go
+@@ -1071,6 +1071,11 @@ func hostlink() {
+ argv = append(argv, peimporteddlls()...)
+ }
+
++ // The Go linker does not currently support building PIE
++ // executables when using the external linker. See:
++ // https://github.com/golang/go/issues/6940
++ argv = append(argv, "-fno-PIC")
++
+ if Debug['v'] != 0 {
+ fmt.Fprintf(&Bso, "host link:")
+ for _, v := range argv {