diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2018-03-29 12:52:24 +0200 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2018-03-29 12:52:24 +0200 |
commit | 4808cbda3343458e8acff5e01013315385c28c92 (patch) | |
tree | b0ba61ccdfc1befead1530c56c28b5542d4a7cbe /community | |
parent | cab3014a2b6c574cd57060a63743fe1c671e71f0 (diff) | |
download | aports-4808cbda3343458e8acff5e01013315385c28c92.tar.bz2 aports-4808cbda3343458e8acff5e01013315385c28c92.tar.xz |
community/go1.10: add backport
Diffstat (limited to 'community')
-rw-r--r-- | community/go1.10/APKBUILD | 161 | ||||
-rw-r--r-- | community/go1.10/default-buildmode-pie.patch | 14 | ||||
-rw-r--r-- | community/go1.10/set-external-linker.patch | 104 |
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", |