# Contributor: Sören Tempel # Maintainer: Eivind Uggedal pkgname=go pkgver=1.7_rc1 # This should be the latest commit on the corresponding release branch _toolsver="527b253f588776e5f72a0a0d1e93195cd3f82707" pkgrel=0 pkgdesc="Go programming language compiler" url="http://www.golang.org/" arch="all" license="BSD" depends="" depends_dev="" makedepends="bash go-bootstrap paxmark" options="!strip" install="" subpackages="$pkgname-doc $pkgname-tools $pkgname-cross" 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 " # NOTE: building go for x86 with grsec kernel requires: # sysctl -w kernel.modify_ldt=1 _gotools="cover godoc stringer" _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/bin "$pkgdir"/usr/share/doc/go # go before 1.7 has issues with randmmap on arm # https://github.com/golang/go/issues/16081 if [ "$GOARCH" = "arm" ]; then paxmark -r bin/go || attr -s pax.flags -V "rx" bin/go \ || return 1 fi 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-doc 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" \) \ -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 if test -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 || return 1 fi 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="9235e0a992216ae400eb1a3bd350259f go1.7rc1.src.tar.gz 24099025de8422aa8b50341ea71bad0e go-tools-1.7rc1.tar.gz 1e3ad4f657ac6c22a92e8fc907893e4f default-buildmode-pie.patch" sha256sums="f26b42ea8d3de92efda5e2f7172b22d59e19676f23bbcf64412b32b4f4a5ff58 go1.7rc1.src.tar.gz 89819a5a457d1771bc5960079ed6f0e2870c81aafd3e0b13f0b82fc2427a1220 go-tools-1.7rc1.tar.gz f3e5a8e0c1c05c34f489ccbfb65291ab2265fa0ef04b8b501e5c98b17547c4b9 default-buildmode-pie.patch" sha512sums="3c4fee4ebc8ac0e1eeb36b5583263b9c28952ecd93c6dfba6696dec820f41b4f1cb27b9d630d94d066df00c06e11a748542a06ddccbc66a7c9a80e8e2906dd8f go1.7rc1.src.tar.gz c298f821033f9db3cd100e38346474c3982417958f347078abfff895834964251269116535e46aa5c2a9e58c421928b874ea98e5c5cd65a83c0b64ae04029d3e go-tools-1.7rc1.tar.gz 13cd386c38875b951da4057586007f3c67503dc79ddf57befbf763af85ec2cd2a2e6b00614450c179c93f1f8747ee7456ee412adccd08a5f115b33812598a148 default-buildmode-pie.patch"