aboutsummaryrefslogtreecommitdiffstats
path: root/community/go/APKBUILD
blob: 0cdd77f3b83e19c5db3d230bf5bfa0f4f95ee5fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: Eivind Uggedal <eivind@uggedal.com>
pkgname=go
pkgver=1.7.3
# This should be the latest commit on the corresponding release branch
_toolsver="26c35b4dcf6dfcb924e26828ed9f4d028c5ce05a"
pkgrel=0
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" ;;
	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="83d1b7bd4281479ab7d153e5152c9fc9  go1.7.3.src.tar.gz
9e14a20ca24062e0855293bc8d38c00b  go-tools-1.7.3.tar.gz
1e3ad4f657ac6c22a92e8fc907893e4f  default-buildmode-pie.patch
3bda1b07117ed599a991877465eaffdd  go-linux-musl-arm64-bootstrap.tar.bz2"
sha256sums="79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44  go1.7.3.src.tar.gz
b796a67a568ca0df5a5a9a1870703db281b17907f812b9cf6ff42568f6764275  go-tools-1.7.3.tar.gz
f3e5a8e0c1c05c34f489ccbfb65291ab2265fa0ef04b8b501e5c98b17547c4b9  default-buildmode-pie.patch
a1d870570317f5e87c606d6bad0d435a594fed802c99475ab306768dc853a029  go-linux-musl-arm64-bootstrap.tar.bz2"
sha512sums="9289c7720a551725643be757df0b676b7ec3add73e5f01af5e3ac1d81e2b31a304aca6e86d395ddc06fc3982099814478b5ec693124a3327f79399db7bcd73eb  go1.7.3.src.tar.gz
553be713d03f1a53605c41f67822c75d86dacf9ccba9f2329e111b4178287aee1ddccd3ccc4ab76b9dbcff34f11aeddebce5deac47e715ea75d032bc9ab0355c  go-tools-1.7.3.tar.gz
13cd386c38875b951da4057586007f3c67503dc79ddf57befbf763af85ec2cd2a2e6b00614450c179c93f1f8747ee7456ee412adccd08a5f115b33812598a148  default-buildmode-pie.patch
da2a33c7bafe11bdad12e755bfe19c9f8ab34ae14899712a0e10da202d5457af419a920be5ffa19cc03d2351194b5c02f1edb595201f81dfb8a51f34b42a8162  go-linux-musl-arm64-bootstrap.tar.bz2"