# Contributor: Sören Tempel # Maintainer: Eivind Uggedal setvar pkgname = 'go' setvar pkgver = '1.9.1' # This should be the latest commit on the corresponding release branch setvar _toolsver = ""5d2fd3ccab986d52112bf301d47a819783339d0e"" setvar pkgrel = '0' setvar pkgdesc = ""Go programming language compiler"" setvar url = ""http://www.golang.org/"" setvar arch = ""all"" setvar license = ""BSD"" setvar depends = ""binutils gcc"" setvar depends_dev = """" setvar makedepends = ""bash go-bootstrap"" setvar options = ""!strip"" setvar provides = ""go-bootstrap=$pkgver-r$pkgrel"" setvar install = """" setvar subpackages = ""$pkgname-doc"" setvar source = ""http://golang.org/dl/go${pkgver/_/}.src.tar.gz go-tools-${pkgver/_/}.tar.gz::https://github.com/golang/tools/archive/${_toolsver}.tar.gz default-buildmode-pie.patch set-external-linker.patch make-sure-R0-is-zero-before-main-on-ppc64le.patch cmd-compile-fix-regression-in-PPC64.rules-move-zero.patch "" # NOTE: building go for x86 with grsec kernel requires: # sysctl -w kernel.modify_ldt=1 if test $CBUILD = $CTARGET { setvar makedepends = ""go-bootstrap $makedepends"" setvar provides = ""go-bootstrap=$pkgver-r$pkgrel"" setvar subpackages = ""$subpackages $pkgname-tools"" setvar _gotools = ""cover godoc stringer"" } else { setvar pkgname = ""go-bootstrap"" setvar 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}" } setvar _tooldir = ""$srcdir"/tools-${_toolsver}" case (CTARGET_ARCH) { 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" } * { die "Unsupported arch" } } setvar builddir = ""$srcdir"/go" proc 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 { if test -d $p { export GOROOT_BOOTSTRAP="$p" break } } ./make.bash # copied from bootstrap.bash to fixup cross-built bootstrap go if test $CBUILD != $CTARGET { 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 } # 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 { "$GOROOT"/bin/go install golang.org/x/tools/cmd/$tool } } proc package { cd $builddir mkdir -p "$pkgdir"/usr/bin "$pkgdir"/usr/lib/go/bin "$pkgdir"/usr/share/doc/go for binary in go gofmt { install -Dm755 bin/"$binary" "$pkgdir"/usr/lib/go/bin/"$binary" ln -s /usr/lib/go/bin/"$binary" "$pkgdir"/usr/bin/ } 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 '{''}' '+' } proc tools { setvar pkgdesc = ""Go programming language tools"" setvar depends = "$pkgname" mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib/go/bin \ "$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH for tool in $_gotools { if test -f "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool { mv "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool \ "$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool } if test -f "$builddir/bin/$tool" { install -Dm755 "$builddir/bin/$tool" "$subpkgdir"/usr/lib/go/bin/"$tool" ln -s /usr/lib/go/bin/"$tool" "$subpkgdir"/usr/bin/ } } } setvar sha512sums = ""3c5d11089a54c61acd1a4fad9618ddb2058cc783a54564407ee50e37c864deaadfd5effeab623080c136a599096f448aae091ef41d0afca1abfcdb98adf4a793 go1.9.1.src.tar.gz d679873082dbac6a47b7c43ac74c47cb19616fb053a4faa3e6ee78004ece86aa5c432fba3d24c030d47396089d7ec7c6357af5648bd767341056396066ff9a04 go-tools-1.9.1.tar.gz ef9da66d76e4698314eaf2aa88cf40a8430a15f8f6cb9ad17ee9d72498ec049b60e63e1ff5acf13a916c5ea365f9d9a282b6f2b06e28de9e3484eb9a3d7dd98e default-buildmode-pie.patch 6b36f3780ab10e5c4902473a8ab5c0417220ece584b537517e9e60979bdc5a548ed14dd2546605392c89ec5ea6691769d337d34e2e19b92eba5bbca1898f4ada set-external-linker.patch 451ca02dea91d74d8e3216c7a48d963bbfc040b43d15868087d6339a1815c4996817c5ace265a20abcdb9d1da4e9ff58e373397d98df773b729876f4623b1cc8 make-sure-R0-is-zero-before-main-on-ppc64le.patch 9e7c8e6132cd7ab22a72fc92c4f7489b25e0f501efc796c8d07f282b178873ce0c51b173c6cf2c18ca42e24e0fec8a47244eb8c93022e37758705f0a77ed96b1 cmd-compile-fix-regression-in-PPC64.rules-move-zero.patch""