git » go-1.20.git » commit 0b3c30e

extra2community: Moving go from extra to community

author Bartłomiej Piotrowski
2018-08-31 12:06:14 UTC
committer Bartłomiej Piotrowski
2018-08-31 12:06:14 UTC
parent ac7052a8337972d322b2332c1a911a0a999fca2c

extra2community: Moving go from extra to community

PKGBUILD +91 -0
default-buildmode-pie.patch +14 -0

diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 0000000..0ad36ad
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,91 @@
+# Maintainer: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
+
+pkgbase=go
+pkgname=(go go-pie)
+epoch=2
+pkgver=1.10.3
+pkgrel=1
+arch=(x86_64)
+url='http://golang.org/'
+license=(BSD)
+makedepends=(git go)
+source=(https://storage.googleapis.com/golang/go$pkgver.src.tar.gz
+        default-buildmode-pie.patch)
+sha256sums=('567b1cc66c9704d1c019c50bef946272e911ec6baf244310f87f4e678be155f2'
+            '9d2f0d201d4e002d74f548cc82bd131139bab5dd62191004c71dd430fdc1666d')
+
+export GOOS=linux
+case "$CARCH" in
+  x86_64) export GOARCH=amd64 ;;
+esac
+export GOROOT_FINAL=/usr/lib/go
+export GOROOT_BOOTSTRAP=/usr/lib/go
+export GOCACHE=off
+
+prepare() {
+  cp -r $pkgbase ${pkgbase}-pie
+
+  cd ${pkgbase}-pie
+  patch -p1 -i "$srcdir"/default-buildmode-pie.patch
+}
+
+build() {
+  export GOPATH="$srcdir/"
+
+  for _pkgname in ${pkgname[@]}; do
+    export GOROOT="$srcdir/$_pkgname"
+    export GOBIN="$GOROOT/bin"
+
+    cd "$srcdir/$_pkgname/src"
+    ./make.bash --no-clean -v
+
+    PATH="$GOBIN:$PATH" go install -v -buildmode=shared std
+    PATH="$GOBIN:$PATH" go install -v -race std
+  done
+}
+
+check() {
+  # Run test suite only for unpatched Go as it expects non-PIE ldBuildmode
+  export GOROOT="$srcdir/$pkgbase"
+  export GOBIN="$GOROOT/bin"
+  export PATH="$srcdir/$pkgbase/bin:$PATH"
+  export GO_TEST_TIMEOUT_SCALE=2
+
+  cd $pkgbase/src
+  ./run.bash --no-rebuild -v -v -v -k 
+}
+
+_package() {
+  options=(!strip staticlibs)
+  cd "$srcdir/$1"
+
+  install -d "$pkgdir/usr/bin" "$pkgdir/usr/lib/go" "$pkgdir/usr/share/doc/go"
+  cp -a bin pkg src lib misc api "$pkgdir/usr/lib/go"
+  cp -r doc/* "$pkgdir/usr/share/doc/go"
+
+  ln -sf /usr/lib/go/bin/go "$pkgdir/usr/bin/go"
+  ln -sf /usr/lib/go/bin/gofmt "$pkgdir/usr/bin/gofmt"
+  ln -sf /usr/share/doc/go "$pkgdir/usr/lib/go/doc"
+
+  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/go/LICENSE"
+  install -Dm644 VERSION "$pkgdir/usr/lib/go/VERSION"
+
+  rm -rf "$pkgdir/usr/lib/go/pkg/bootstrap"
+  rm -rf "$pkgdir/usr/lib/go/pkg/tool/*/api"
+}
+
+package_go() {
+  pkgdesc='Core compiler tools for the Go programming language'
+  provides=(go-pie)
+  conflicts=(go-pie)
+
+  _package $pkgname
+}
+
+package_go-pie() {
+  pkgdesc='Core compiler tools for the Go programming language (with PIE enabled by default)'
+  provides=(go)
+  conflicts=(go)
+
+  _package $pkgname
+}
diff --git a/default-buildmode-pie.patch b/default-buildmode-pie.patch
new file mode 100644
index 0000000..3b018b7
--- /dev/null
+++ b/default-buildmode-pie.patch
@@ -0,0 +1,14 @@
+diff --git a/src/cmd/go/internal/work/init.go b/src/cmd/go/internal/work/init.go
+index 7f894f5..a517887 100644
+--- a/src/cmd/go/internal/work/init.go
++++ b/src/cmd/go/internal/work/init.go
+@@ -111,7 +111,8 @@ func buildModeInit() {
+ 		ldBuildmode = "c-shared"
+ 	case "default":
+ 		switch platform {
+-		case "android/arm", "android/arm64", "android/amd64", "android/386":
++		case "linux/amd64", "linux/arm", "linux/arm64", "linux/386", "linux/ppc64le",
++			"android/arm", "android/arm64", "android/amd64", "android/386":
+ 			codegenArg = "-shared"
+ 			ldBuildmode = "pie"
+ 		case "darwin/arm", "darwin/arm64":