aports/community/go/APKBUILD
2017-02-07 14:57:53 +02:00

160 lines
5.5 KiB
Plaintext

# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: Eivind Uggedal <eivind@uggedal.com>
pkgname=go
pkgver=1.7.4
# This should be the latest commit on the corresponding release branch
_toolsver="26c35b4dcf6dfcb924e26828ed9f4d028c5ce05a"
pkgrel=1
pkgdesc="Go programming language compiler"
url="http://www.golang.org/"
arch="all"
license="BSD"
depends="binutils gcc"
depends_dev=""
makedepends="bash"
options="!strip"
install=""
subpackages="$pkgname-doc $pkgname-tools"
source="http://golang.org/dl/go${pkgver/_/}.src.tar.gz
$pkgname-tools-${pkgver/_/}.tar.gz::https://github.com/golang/tools/archive/${_toolsver}.tar.gz
default-buildmode-pie.patch
http://dev.alpinelinux.org/bootstrap/go/go-linux-musl-arm64-bootstrap.tar.bz2
"
# NOTE: building go for x86 with grsec kernel requires:
# sysctl -w kernel.modify_ldt=1
# use go-bootstrap for archs that are supported
case "$CARCH" in
aarch64)
_goroot_bootstrap="$srcdir"/go-linux-arm64-bootstrap
;;
*)
makedepends="$makedepends go-bootstrap"
_goroot_bootstrap=/usr/lib/go-bootstrap
;;
esac
_gotools="cover godoc stringer"
_tooldir="$srcdir"/tools-${_toolsver}
_gocross="darwin freebsd openbsd windows"
for os in $_gocross; do
subpackages="$subpackages $pkgname-cross-${os}:_crosspkg"
done
builddir="$srcdir"/$pkgname
build() {
cd "$builddir/src"
export GOPATH="$srcdir"
export GOROOT="$builddir"
export GOBIN="$GOROOT"/bin
export GOROOT_FINAL=/usr/lib/go
export GOROOT_BOOTSTRAP="$_goroot_bootstrap"
case "$CARCH" in
aarch64)export GOARCH="arm64" ;;
armhf) export GOARCH="arm" GOARM=6 ;;
armv7) export GOARCH="arm" GOARM=7 ;;
x86) export GOARCH="386" GO386=387 ;;
x86_64) export GOARCH="amd64" ;;
*) 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/bin "$pkgdir"/usr/share/doc/go
for binary in go gofmt; do
mv bin/"$binary" "$pkgdir"/usr/lib/go/bin/ || return 1
ln -s /usr/lib/go/bin/"$binary" "$pkgdir"/usr/bin/ || 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-src sub package.
cp -a pkg src lib "$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" -o -name "*.rc" -o -name "*.bat" \) \
-exec rm -rf \{\} \+ || return 1
rm -rf "$pkgdir"/usr/lib/go/pkg/bootstrap
rm -f "$pkgdir"/usr/lib/go/pkg/tool/*/api
}
tools() {
pkgdesc="Go programming language tools"
depends="$pkgname"
mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib/go/bin
for binary in "$builddir"/bin/*; do
mv $binary "$subpkgdir"/usr/lib/go/bin || return 1
ln -s /usr/lib/go/bin/"${binary##*/}" "$subpkgdir"/usr/bin/ || return 1
done
mkdir -p "$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH
cp "$subpkgdir"/usr/lib/go/bin/godoc \
"$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/godoc || return 1
for tool in $_gotools; do
[ -f "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool ] \
|| continue
mv "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool \
"$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool || return 1
done
}
_crosspkg() {
local name="$(echo "${subpkgname}" | cut -d '-' -f3)"
pkgdesc="Go cross compiler for $name"
depends="$pkgname"
mkdir -p "$subpkgdir"/usr/lib/go/pkg/tool/
mv "$pkgdir"/usr/lib/go/pkg/tool/${name}_* \
"$subpkgdir"/usr/lib/go/pkg/tool/ || return 1
mv "$pkgdir"/usr/lib/go/pkg/${name}_* \
"$subpkgdir"/usr/lib/go/pkg/ || return 1
}
md5sums="49c1076428a5d3b5ad7ac65233fcca2f go1.7.4.src.tar.gz
9e14a20ca24062e0855293bc8d38c00b go-tools-1.7.4.tar.gz
1e3ad4f657ac6c22a92e8fc907893e4f default-buildmode-pie.patch
3bda1b07117ed599a991877465eaffdd go-linux-musl-arm64-bootstrap.tar.bz2"
sha256sums="4c189111e9ba651a2bb3ee868aa881fab36b2f2da3409e80885ca758a6b614cc go1.7.4.src.tar.gz
b796a67a568ca0df5a5a9a1870703db281b17907f812b9cf6ff42568f6764275 go-tools-1.7.4.tar.gz
f3e5a8e0c1c05c34f489ccbfb65291ab2265fa0ef04b8b501e5c98b17547c4b9 default-buildmode-pie.patch
a1d870570317f5e87c606d6bad0d435a594fed802c99475ab306768dc853a029 go-linux-musl-arm64-bootstrap.tar.bz2"
sha512sums="dc9950c3ea7100e536ad58fd93505d584276b7c50d4b8fe2ba7f20fd043dcf0d315b735c48945302055e91517594cc2b0061ccec9478a8ab48f1f2836c20afb3 go1.7.4.src.tar.gz
553be713d03f1a53605c41f67822c75d86dacf9ccba9f2329e111b4178287aee1ddccd3ccc4ab76b9dbcff34f11aeddebce5deac47e715ea75d032bc9ab0355c go-tools-1.7.4.tar.gz
13cd386c38875b951da4057586007f3c67503dc79ddf57befbf763af85ec2cd2a2e6b00614450c179c93f1f8747ee7456ee412adccd08a5f115b33812598a148 default-buildmode-pie.patch
da2a33c7bafe11bdad12e755bfe19c9f8ab34ae14899712a0e10da202d5457af419a920be5ffa19cc03d2351194b5c02f1edb595201f81dfb8a51f34b42a8162 go-linux-musl-arm64-bootstrap.tar.bz2"