chiark / gitweb /
golang: Various fixes
authorFredrik Fornwall <fredrik@fornwall.net>
Mon, 17 Aug 2015 20:58:29 +0000 (16:58 -0400)
committerFredrik Fornwall <fredrik@fornwall.net>
Mon, 17 Aug 2015 20:58:29 +0000 (16:58 -0400)
packages/golang/build.sh
packages/golang/src-runtime-cgo-cgo.go.patch [new file with mode: 0644]
packages/golang/src-runtime-cgo-gcc_android.c.patch [new file with mode: 0644]

index b27b53c1466e07c0c5f700aa66682d6ea6e771fb..d745d36adb4ff6444193458cfb3742aab69817e8 100644 (file)
@@ -1,6 +1,7 @@
 TERMUX_PKG_HOMEPAGE=https://golang.org/
 TERMUX_PKG_DESCRIPTION="Go programming language compiler"
 TERMUX_PKG_VERSION=1.5rc1
+TERMUX_PKG_BUILD_REVISION=1
 TERMUX_PKG_SRCURL=https://storage.googleapis.com/golang/go1.5rc1.src.tar.gz
 TERMUX_PKG_FOLDERNAME=go
 TERMUX_PKG_KEEP_STATIC_LIBRARIES=true
@@ -18,11 +19,13 @@ termux_step_post_extract_package () {
 
 termux_step_make_install () {
        if [ "$TERMUX_ARCH" = "arm" ]; then
-               TERMUX_GOLANG_DIRNAME=linux_arm
+               export GOOS=android
+               export CGO_ENABLED=1
                export GOARCH=arm
                export GOARM=7
        elif [ "$TERMUX_ARCH" = "i686" ]; then
-               TERMUX_GOLANG_DIRNAME=linux_386
+               export GOOS=linux
+               export CGO_ENABLED=0
                export GOARCH=386
                export GO386=sse2
        else
@@ -30,12 +33,20 @@ termux_step_make_install () {
                exit 1
        fi
 
+       TERMUX_GOLANG_DIRNAME=${GOOS}_$GOARCH
+
        TERMUX_GODIR=$TERMUX_PREFIX/lib/go
        rm -Rf $TERMUX_GODIR
        mkdir -p $TERMUX_GODIR/{src,pkg/tool/$TERMUX_GOLANG_DIRNAME,pkg/include,pkg/$TERMUX_GOLANG_DIRNAME}
 
        cd $TERMUX_PKG_SRCDIR/src
-       env CC_FOR_TARGET=$CC CC=gcc GOROOT_BOOTSTRAP=$TERMUX_HOST_GOLANG_DIR GOROOT_FINAL=$TERMUX_GODIR GOOS=linux ./make.bash
+       env CC_FOR_TARGET=$CC \
+           CXX_FOR_TARGET=$CXX \
+           CC=gcc \
+           GO_LDFLAGS="-extldflags=-pie" \
+           GOROOT_BOOTSTRAP=$TERMUX_HOST_GOLANG_DIR \
+            GOROOT_FINAL=$TERMUX_GODIR \
+           ./make.bash
 
        cd ..
        cp bin/$TERMUX_GOLANG_DIRNAME/{go,gofmt} $TERMUX_PREFIX/bin
diff --git a/packages/golang/src-runtime-cgo-cgo.go.patch b/packages/golang/src-runtime-cgo-cgo.go.patch
new file mode 100644 (file)
index 0000000..30bfce2
--- /dev/null
@@ -0,0 +1,11 @@
+diff -u -r ../go/src/runtime/cgo/cgo.go ./src/runtime/cgo/cgo.go
+--- ../go/src/runtime/cgo/cgo.go       2015-08-06 00:36:35.000000000 -0400
++++ ./src/runtime/cgo/cgo.go   2015-08-16 16:03:29.614948543 -0400
+@@ -16,7 +16,6 @@
+ #cgo darwin,arm64 LDFLAGS: -framework CoreFoundation
+ #cgo dragonfly LDFLAGS: -lpthread
+ #cgo freebsd LDFLAGS: -lpthread
+-#cgo android LDFLAGS: -llog
+ #cgo !android,linux LDFLAGS: -lpthread
+ #cgo netbsd LDFLAGS: -lpthread
+ #cgo openbsd LDFLAGS: -lpthread
diff --git a/packages/golang/src-runtime-cgo-gcc_android.c.patch b/packages/golang/src-runtime-cgo-gcc_android.c.patch
new file mode 100644 (file)
index 0000000..9b1a1b4
--- /dev/null
@@ -0,0 +1,25 @@
+diff -u -r ../go/src/runtime/cgo/gcc_android.c ./src/runtime/cgo/gcc_android.c
+--- ../go/src/runtime/cgo/gcc_android.c        2015-08-06 00:36:35.000000000 -0400
++++ ./src/runtime/cgo/gcc_android.c    2015-08-16 16:08:05.346940583 -0400
+@@ -11,21 +11,11 @@
+ {
+       va_list ap;
+-      // Write to both stderr and logcat.
+-      //
+-      // When running from an .apk, /dev/stderr and /dev/stdout
+-      // redirect to /dev/null. And when running a test binary
+-      // via adb shell, it's easy to miss logcat.
+-
+       fprintf(stderr, "runtime/cgo: ");
+       va_start(ap, format);
+       vfprintf(stderr, format, ap);
+       va_end(ap);
+       fprintf(stderr, "\n");
+-      va_start(ap, format);
+-      __android_log_vprint(ANDROID_LOG_FATAL, "runtime/cgo", format, ap);
+-      va_end(ap);
+-
+       abort();
+ }