aboutsummaryrefslogtreecommitdiffstats
path: root/community
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2018-03-29 12:52:24 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2018-03-29 12:52:24 +0200
commit4808cbda3343458e8acff5e01013315385c28c92 (patch)
treeb0ba61ccdfc1befead1530c56c28b5542d4a7cbe /community
parentcab3014a2b6c574cd57060a63743fe1c671e71f0 (diff)
downloadaports-4808cbda3343458e8acff5e01013315385c28c92.tar.bz2
aports-4808cbda3343458e8acff5e01013315385c28c92.tar.xz
community/go1.10: add backport
Diffstat (limited to 'community')
-rw-r--r--community/go1.10/APKBUILD161
-rw-r--r--community/go1.10/default-buildmode-pie.patch14
-rw-r--r--community/go1.10/set-external-linker.patch104
3 files changed, 279 insertions, 0 deletions
diff --git a/community/go1.10/APKBUILD b/community/go1.10/APKBUILD
new file mode 100644
index 0000000000..110f8a4f04
--- /dev/null
+++ b/community/go1.10/APKBUILD
@@ -0,0 +1,161 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=go1.10
+pkgver=1.10
+# https://github.com/golang/tools/commits/release-branch.go1.10
+_toolsver="25101aadb97aa42907eee6a238d6d26a6cb3c756"
+pkgrel=0
+pkgdesc="Go programming language compiler"
+url="http://www.golang.org/"
+arch="all"
+license="BSD"
+depends="binutils gcc"
+depends_dev=""
+makedepends="bash go-bootstrap"
+options="!strip"
+provides="go-bootstrap=$pkgver-r$pkgrel"
+install=""
+subpackages="$pkgname-doc"
+source="http://golang.org/dl/go${pkgver/_/}.src.tar.gz
+ go-tools-${pkgver/_/}-$_toolsver.tar.gz::https://github.com/golang/tools/archive/${_toolsver}.tar.gz
+ default-buildmode-pie.patch
+ set-external-linker.patch
+ "
+
+# secfixes:
+# 1.9.4-r0:
+# - CVE-2018-6574
+
+# NOTE: building go for x86 with grsec kernel requires:
+# sysctl -w kernel.modify_ldt=1
+
+if [ "$CBUILD" = "$CTARGET" ]; then
+ makedepends="go-bootstrap $makedepends"
+ provides="go-bootstrap=$pkgver-r$pkgrel"
+ subpackages="$subpackages $pkgname-tools"
+ _gotools="cover godoc stringer"
+else
+ pkgname="go-bootstrap"
+ makedepends="go $makedepends"
+ # Go expect host linker instead of the cross-compiler
+ export CC_FOR_TARGET="$CC"
+ export CC="${HOSTLD:-gcc}"
+ export CXX="${HOSTLD:-g++}"
+ export LD="${HOSTLD:-ld}"
+fi
+
+_tooldir="$srcdir"/tools-${_toolsver}
+
+case "$CTARGET_ARCH" in
+aarch64)export GOARCH="arm64" ;;
+armhf) export GOARCH="arm" GOARM=6 ;;
+armv7) export GOARCH="arm" GOARM=7 ;;
+s390x) export GOARCH="s390x" ;;
+x86) export GOARCH="386" GO386=387 ;;
+x86_64) export GOARCH="amd64" ;;
+ppc64le) export GOARCH="ppc64le" ;;
+mips) export GOARCH="mips" ;;
+mips64) export GOARCH="mips64" ;;
+mips64el) export GOARCH="mips64le" ;;
+mipsel) export GOARCH="mipsle" ;;
+*) die "Unsupported arch" ;;
+esac
+
+builddir="$srcdir"/go
+build() {
+ cd "$builddir/src"
+
+ export GOOS="linux"
+ export GOPATH="$srcdir"
+ export GOROOT="$builddir"
+ export GOBIN="$GOROOT"/bin
+ export GOROOT_FINAL=/usr/lib/go
+ local p; for p in /usr/lib/go-bootstrap /usr/lib/go-linux-$GOARCH-bootstrap /usr/lib/go; do
+ if [ -d "$p" ]; then
+ export GOROOT_BOOTSTRAP="$p"
+ break
+ fi
+ done
+
+ ./make.bash
+
+ # copied from bootstrap.bash to fixup cross-built bootstrap go
+ if [ "$CBUILD" != "$CTARGET" ]; then
+ local gohostos="$(../bin/go env GOHOSTOS)"
+ local gohostarch="$(../bin/go env GOHOSTARCH)"
+ mv ../bin/*_*/* ../bin
+ rmdir ../bin/*_*
+ rm -rf "../pkg/${gohostos}_${gohostarch}"* "../pkg/tool/${gohostos}_${gohostarch}"*
+ rm -rf ../pkg/bootstrap ../pkg/obj
+ fi
+
+ # FIXME some tests fail:
+ # PATH="$GOROOT/bin:$PATH" ./run.bash -no-rebuild
+
+ 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
+ done
+}
+
+check() {
+ cd "$builddir"
+ ./bin/go run doc/play/hello.go
+}
+
+package() {
+ cd "$builddir"
+ mkdir -p "$pkgdir"/usr/bin "$pkgdir"/usr/lib/go/bin "$pkgdir"/usr/share/doc/go
+
+ for binary in go gofmt; do
+ install -Dm755 bin/"$binary" "$pkgdir"/usr/lib/go/bin/"$binary"
+ ln -s /usr/lib/go/bin/"$binary" "$pkgdir"/usr/bin/
+ done
+
+ cp -a pkg lib "$pkgdir"/usr/lib/go
+ cp -r doc misc "$pkgdir"/usr/share/doc/go
+ rm -rf "$pkgdir"/usr/lib/go/pkg/bootstrap
+ rm -f "$pkgdir"/usr/lib/go/pkg/tool/*/api
+
+ # 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-src sub package.
+ mkdir -p "$pkgdir"/usr/lib/go/
+ cp -a "$builddir"/src "$pkgdir"/usr/lib/go
+
+ # 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 \{\} \+
+ find "$pkgdir"/usr/lib/go/src \( -type d -a -name "testdata" \) \
+ -exec rm -rf \{\} \+
+ find "$pkgdir"/usr/lib/go/src -type f -a \( -name "*.bash" -o -name "*.rc" -o -name "*.bat" \) \
+ -exec rm -rf \{\} \+
+}
+
+tools() {
+ pkgdesc="Go programming language tools"
+ depends="$pkgname"
+
+ mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib/go/bin \
+ "$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH
+
+ for tool in $_gotools; do
+ if [ -f "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool ]; then
+ mv "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool \
+ "$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool
+ fi
+ if [ -f "$builddir/bin/$tool" ]; then
+ install -Dm755 "$builddir/bin/$tool" "$subpkgdir"/usr/lib/go/bin/"$tool"
+ ln -s /usr/lib/go/bin/"$tool" "$subpkgdir"/usr/bin/
+ fi
+ done
+}
+
+sha512sums="59f089e1ffb2d3aba5ada329d4f0d1181c3c4f01fa64f19d0b753f8a989cb59cf290ad88d215cadc18ef99aba8518e44c9bc258c07eaffc834c55e4a37bd4651 go1.10.src.tar.gz
+bb44f4941cc49f8271c1fd46d94c6c165796d919f156a4fd608158247f3f31c4d170e0d5ae67766ee22cb0eb844a106c7fe101fb7d20a2b6414e43e68ffbd6b1 go-tools-1.10-25101aadb97aa42907eee6a238d6d26a6cb3c756.tar.gz
+a8f3afd97992f03ccf2680cde214eefccac47daeb9eeb689b5e0b206ea3c19cfb23d448a4eb532894d830d4b91cd97b249e88f04c17feba02d9e243b40243bd0 default-buildmode-pie.patch
+6abfdd8521b61ce1e823465f9b950a75dc235d7d58cc4c641c4e7830f7da28b8c57be53aef85641ff79bc95d7bd47bb0796659309d9d8e7907e29df520b150b0 set-external-linker.patch"
diff --git a/community/go1.10/default-buildmode-pie.patch b/community/go1.10/default-buildmode-pie.patch
new file mode 100644
index 0000000000..3cf4865a78
--- /dev/null
+++ b/community/go1.10/default-buildmode-pie.patch
@@ -0,0 +1,14 @@
+diff --git a/src/cmd/go/internal/work/init.go b/src/cmd/go/internal/work/init.go
+index 7f894f5..a37cbf3 100644
+--- a/src/cmd/go/internal/work/init.go
++++ b/src/cmd/go/internal/work/init.go
+@@ -111,7 +111,8 @@ func buildModeInit() {
+ ldBuildmode = "c-shared"
+ case "default":
+ switch platform {
+- case "android/arm", "android/arm64", "android/amd64", "android/386":
++ case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/ppc64le", "linux/s390x",
++ "android/amd64", "android/arm", "android/arm64", "android/386":
+ codegenArg = "-shared"
+ ldBuildmode = "pie"
+ case "darwin/arm", "darwin/arm64":
diff --git a/community/go1.10/set-external-linker.patch b/community/go1.10/set-external-linker.patch
new file mode 100644
index 0000000000..ac3cc19971
--- /dev/null
+++ b/community/go1.10/set-external-linker.patch
@@ -0,0 +1,104 @@
+diff --git a/src/cmd/link/internal/amd64/obj.go b/src/cmd/link/internal/amd64/obj.go
+index 87e8091..4470e05 100644
+--- a/src/cmd/link/internal/amd64/obj.go
++++ b/src/cmd/link/internal/amd64/obj.go
+@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {
+ PEreloc1: pereloc1,
+ TLSIEtoLE: tlsIEtoLE,
+
+- Linuxdynld: "/lib64/ld-linux-x86-64.so.2",
++ Linuxdynld: "/lib/ld-musl-x86_64.so.1",
+ Freebsddynld: "/libexec/ld-elf.so.1",
+ Openbsddynld: "/usr/libexec/ld.so",
+ Netbsddynld: "/libexec/ld.elf_so",
+diff --git a/src/cmd/link/internal/arm/obj.go b/src/cmd/link/internal/arm/obj.go
+index da16f92..fd14940 100644
+--- a/src/cmd/link/internal/arm/obj.go
++++ b/src/cmd/link/internal/arm/obj.go
+@@ -58,7 +58,7 @@ func Init() (*sys.Arch, ld.Arch) {
+ Gentext: gentext,
+ Machoreloc1: machoreloc1,
+
+- Linuxdynld: "/lib/ld-linux.so.3", // 2 for OABI, 3 for EABI
++ Linuxdynld: "/lib/ld-musl-armhf.so.1",
+ Freebsddynld: "/usr/libexec/ld-elf.so.1",
+ Openbsddynld: "/usr/libexec/ld.so",
+ Netbsddynld: "/libexec/ld.elf_so",
+diff --git a/src/cmd/link/internal/arm64/obj.go b/src/cmd/link/internal/arm64/obj.go
+index 6b386ad..9986371 100644
+--- a/src/cmd/link/internal/arm64/obj.go
++++ b/src/cmd/link/internal/arm64/obj.go
+@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {
+ Gentext: gentext,
+ Machoreloc1: machoreloc1,
+
+- Linuxdynld: "/lib/ld-linux-aarch64.so.1",
++ Linuxdynld: "/lib/ld-musl-aarch64.so.1",
+
+ Freebsddynld: "XXX",
+ Openbsddynld: "XXX",
+diff --git a/src/cmd/link/internal/mips/obj.go b/src/cmd/link/internal/mips/obj.go
+index c5d3451..fd85e63 100644
+--- a/src/cmd/link/internal/mips/obj.go
++++ b/src/cmd/link/internal/mips/obj.go
+@@ -60,7 +60,7 @@ func Init() (*sys.Arch, ld.Arch) {
+ Gentext: gentext,
+ Machoreloc1: machoreloc1,
+
+- Linuxdynld: "/lib/ld.so.1",
++ Linuxdynld: "/lib/ld-musl-mipsle.so.1",
+
+ Freebsddynld: "XXX",
+ Openbsddynld: "XXX",
+diff --git a/src/cmd/link/internal/mips64/obj.go b/src/cmd/link/internal/mips64/obj.go
+index 83974e5..0f65647 100644
+--- a/src/cmd/link/internal/mips64/obj.go
++++ b/src/cmd/link/internal/mips64/obj.go
+@@ -59,7 +59,7 @@ func Init() (*sys.Arch, ld.Arch) {
+ Gentext: gentext,
+ Machoreloc1: machoreloc1,
+
+- Linuxdynld: "/lib64/ld64.so.1",
++ Linuxdynld: "/lib/ld-musl-mips64le.so.1",
+ Freebsddynld: "XXX",
+ Openbsddynld: "XXX",
+ Netbsddynld: "XXX",
+diff --git a/src/cmd/link/internal/ppc64/obj.go b/src/cmd/link/internal/ppc64/obj.go
+index 273d9b4..abe257d 100644
+--- a/src/cmd/link/internal/ppc64/obj.go
++++ b/src/cmd/link/internal/ppc64/obj.go
+@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {
+ Machoreloc1: machoreloc1,
+
+ // TODO(austin): ABI v1 uses /usr/lib/ld.so.1,
+- Linuxdynld: "/lib64/ld64.so.1",
++ Linuxdynld: "/lib/ld-musl-powerpc64le.so.1",
+
+ Freebsddynld: "XXX",
+ Openbsddynld: "XXX",
+diff --git a/src/cmd/link/internal/s390x/obj.go b/src/cmd/link/internal/s390x/obj.go
+index 9ac7eb8..b3f7a66 100644
+--- a/src/cmd/link/internal/s390x/obj.go
++++ b/src/cmd/link/internal/s390x/obj.go
+@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {
+ Gentext: gentext,
+ Machoreloc1: machoreloc1,
+
+- Linuxdynld: "/lib64/ld64.so.1",
++ Linuxdynld: "/lib/ld-musl-s390x.so.1",
+
+ // not relevant for s390x
+ Freebsddynld: "XXX",
+diff --git a/src/cmd/link/internal/x86/obj.go b/src/cmd/link/internal/x86/obj.go
+index 6a744dc..d81f392 100644
+--- a/src/cmd/link/internal/x86/obj.go
++++ b/src/cmd/link/internal/x86/obj.go
+@@ -58,7 +58,7 @@ func Init() (*sys.Arch, ld.Arch) {
+ Machoreloc1: machoreloc1,
+ PEreloc1: pereloc1,
+
+- Linuxdynld: "/lib/ld-linux.so.2",
++ Linuxdynld: "/lib/ld-musl-i386.so.1",
+ Freebsddynld: "/usr/libexec/ld-elf.so.1",
+ Openbsddynld: "/usr/libexec/ld.so",
+ Netbsddynld: "/usr/libexec/ld.elf_so",