blob: 7db7178f753be2f59ea7c86483c2ceba4719c219 (
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
|
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: Eivind Uggedal <eivind@uggedal.com>
pkgname=go
pkgver=1.5.3
# This should be the latest commit on the corresponding release branch
_toolsver="d02228d1857b9f49cd0252788516ff5584266eb6"
pkgrel=0
pkgdesc="Go programming language compiler"
url="http://www.golang.org/"
arch="all"
license="BSD"
depends=""
depends_dev=""
makedepends="bash go-bootstrap"
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
no-pic.patch
default-sc-getpw-r-size-max.patch"
# NOTE: building go for x86 with grsec kernel requires:
# sysctl -w kernel.modify_ldt=1
_gotools="cover vet godoc"
_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
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 "$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
mv "$pkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool \
"$subpkgdir"/usr/lib/go/pkg/tool/linux_$GOARCH/$tool || return 1
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="80a0eac7ab750b01b3f7096a1d4667b8 go1.5.3.src.tar.gz
c64b28ba5df8499bcc19adc995da991a go-tools-1.5.3.tar.gz
b303cb36017c5f1303b1567b31b48de3 no-pic.patch
12a36502180b9801f8d9e60824563c92 default-sc-getpw-r-size-max.patch"
sha256sums="754e06dab1c31ab168fc9db9e32596734015ea9e24bc44cae7f237f417ce4efe go1.5.3.src.tar.gz
80db6fc563df50eb924dbf4f96cef287fc6b89cc8b98595c1dac3c80a118f290 go-tools-1.5.3.tar.gz
973144c68d10cdc740501ad814841912bae7c3936480fabb3f7fe092ba82ba7f no-pic.patch
70f8f9b3ad6b8639db2b401ae14747a6e8d762443ca054c358a5aa4815df7d1f default-sc-getpw-r-size-max.patch"
sha512sums="b348832ea7cb095cf793960cf9f4da5e9f6ca8de7b5262bb819de97efea4835643e30a18efd4a82d01ea3854a1905af9e134271716c4b68c9d2a8f6e15f65ff0 go1.5.3.src.tar.gz
80813c2da74c7b25fa2cfd15b2505757e7f466469ac701cb22d190dc83a607f091c4dea207a2e371e53d7a1f5459e7b53e5eea53c95565e958a6eb7fcb212359 go-tools-1.5.3.tar.gz
e21084dc07a74c7b6437ae22034b62e3a255692d32dba767c15efdb123d3159c03a02437a41350e512eaa2478a7afbd8b409317a779c56ee4939512d060d57fa no-pic.patch
d59c977341b9ab15664b4b0c4f3df9e74ce48ffbd59594a7abb5a0907469f9d362c4e558606dd4b7cd102c165dd53027bae6aa1c48623c2105461dcad4cee14d default-sc-getpw-r-size-max.patch"
|