summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2020-02-08 18:24:52 +0000
committerEmīls <emils@mullvad.net>2020-02-08 18:24:52 +0000
commit8f2b7f644b9634c74df9362be4605652c7ccdfe8 (patch)
tree34899e5339892fe678608f274d401b026ebaedd3
parentf1de40264ddab180a16f4e5c23207118288ebf05 (diff)
parentfec3ccc803fded3ccd5c753b9e045af10f576687 (diff)
downloadmullvadvpn-8f2b7f644b9634c74df9362be4605652c7ccdfe8.tar.xz
mullvadvpn-8f2b7f644b9634c74df9362be4605652c7ccdfe8.zip
Merge branch 'use-newer-android-build-docker-image'
-rwxr-xr-xwireguard/build-wireguard-go.sh5
-rw-r--r--wireguard/wireguard-go/Android.mk20
-rwxr-xr-xwireguard/wireguard-go/build-android.sh18
-rw-r--r--wireguard/wireguard-go/go.sum1
4 files changed, 13 insertions, 31 deletions
diff --git a/wireguard/build-wireguard-go.sh b/wireguard/build-wireguard-go.sh
index e14ccd60f2..f30397e81c 100755
--- a/wireguard/build-wireguard-go.sh
+++ b/wireguard/build-wireguard-go.sh
@@ -72,16 +72,15 @@ function unix_target_triple {
function build_unix {
echo "Building wireguard-go for $1"
pushd wireguard-go
- go build -v -o libwg.a -buildmode c-archive
target_triple_dir="../../build/lib/$(unix_target_triple)"
mkdir -p $target_triple_dir
- mv libwg.a $target_triple_dir
+ go build -v -o $target_triple_dir/libwg.a -buildmode c-archive
popd
}
function build_android {
echo "Building for android"
- local docker_image_hash="d73fdea1108cd75d7eb09f8894fe6892dc502a2d62c39b4f75072e777398f477"
+ local docker_image_hash="f432cb779611284ce69aca59a90a8a601171d4c29728561ae32bd228b1699198"
docker run --rm \
-v "$(pwd)/../":/workspace \
diff --git a/wireguard/wireguard-go/Android.mk b/wireguard/wireguard-go/Android.mk
index 0273a4adb1..6b31ffeb80 100644
--- a/wireguard/wireguard-go/Android.mk
+++ b/wireguard/wireguard-go/Android.mk
@@ -2,7 +2,6 @@
#
# Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
-BUILDDIR ?= $(CURDIR)/build
DESTDIR ?= $(CURDIR)/../../android/build/extraJni/$(ANDROID_ABI)
NDK_GO_ARCH_MAP_x86 := 386
@@ -27,27 +26,12 @@ GOBUILDOS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
GOBUILDVERSION := 1.12
GOBUILDTARBALL := https://dl.google.com/go/go$(GOBUILDVERSION).$(GOBUILDOS)-$(GOBUILDARCH).tar.gz
GOBUILDVERSION_NEEDED := go version go$(GOBUILDVERSION) $(GOBUILDOS)/$(GOBUILDARCH)
-export GOROOT := $(BUILDDIR)/goroot
-export GOPATH := $(BUILDDIR)/gopath
-export PATH := $(GOROOT)/bin:$(PATH)
-GOBUILDVERSION_CURRENT := $(shell $(GOROOT)/bin/go version 2>/dev/null)
-ifneq ($(GOBUILDVERSION_NEEDED),$(GOBUILDVERSION_CURRENT))
-$(shell rm -f $(GOROOT)/bin/go)
-endif
-$(GOROOT)/bin/go:
- rm -rf "$(GOROOT)"
- mkdir -p "$(GOROOT)"
- curl "$(GOBUILDTARBALL)" | tar -C "$(GOROOT)" --strip-components=1 -xzf - || { rm -rf "$(GOROOT)"; exit 1; }
- patch -p1 -f -N -r- -d "$(GOROOT)" < goruntime-boottime-over-monotonic.diff || { rm -rf "$(GOROOT)"; exit 1; }
-$(shell test "$$(cat $(BUILDDIR)/.gobuildversion 2>/dev/null)" = "$(GOBUILDVERSION_CURRENT)" || rm -f "$(DESTDIR)/libwg.so")
-
-$(DESTDIR)/libwg.so: $(GOROOT)/bin/go
+$(DESTDIR)/libwg.so:
mkdir -p $(DESTDIR)
- go get -tags "linux android" || { chmod -fR +w "$(GOPATH)/pkg/mod"; rm -rf "$(GOPATH)/pkg/mod"; exit 1; }
+ go get -tags "linux android"
chmod -fR +w "$(GOPATH)/pkg/mod"
go build -tags "linux android" -ldflags="-X main.socketDirectory=/data/data/$(ANDROID_PACKAGE_NAME)/cache/wireguard" -v -o "$@" -buildmode c-shared
- go version > $(BUILDDIR)/.gobuildversion
rm -f $(DESTDIR)/libwg.h
diff --git a/wireguard/wireguard-go/build-android.sh b/wireguard/wireguard-go/build-android.sh
index d7c683db63..4f1849aa75 100755
--- a/wireguard/wireguard-go/build-android.sh
+++ b/wireguard/wireguard-go/build-android.sh
@@ -6,6 +6,9 @@ set -e
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd $script_dir
+# Keep a GOPATH in the build directory to maintain a cache of downloaded libraries
+GOPATH=$script_dir/../../build/android-go-path/
+mkdir -p $GOPATH
for arch in arm arm64 x86_64 x86; do
case "$arch" in
@@ -13,37 +16,30 @@ for arch in arm arm64 x86_64 x86; do
export ANDROID_LLVM_TRIPLE="aarch64-linux-android"
export ANDROID_LIB_TRIPLE="aarch64-linux-android"
export RUST_TARGET_TRIPLE="aarch64-linux-android"
- export RUST_LLVM_ARCH="aarch64"
export ANDROID_ABI="arm64-v8a"
;;
"x86_64")
export ANDROID_LLVM_TRIPLE="x86_64-linux-android"
export ANDROID_LIB_TRIPLE="x86_64-linux-android"
export RUST_TARGET_TRIPLE="x86_64-linux-android"
- export RUST_LLVM_ARCH="x86_64"
export ANDROID_ABI="x86_64"
;;
"arm")
export ANDROID_LLVM_TRIPLE="armv7a-linux-androideabi"
export ANDROID_LIB_TRIPLE="arm-linux-androideabi"
export RUST_TARGET_TRIPLE="armv7-linux-androideabi"
- export RUST_LLVM_ARCH="armv7"
export ANDROID_ABI="armeabi-v7a"
;;
"x86")
export ANDROID_LLVM_TRIPLE="i686-linux-android"
export ANDROID_LIB_TRIPLE="i686-linux-android"
export RUST_TARGET_TRIPLE="i686-linux-android"
- export RUST_LLVM_ARCH="i686"
export ANDROID_ABI="x86"
;;
esac
- export ANDROID_ARCH_NAME="$arch"
- export ANDROID_TOOLCHAIN_ROOT="/opt/android/toolchains/android21-${RUST_LLVM_ARCH}"
- export ANDROID_SYSROOT="${ANDROID_TOOLCHAIN_ROOT}/sysroot"
- export ANDROID_C_COMPILER="${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_LLVM_TRIPLE}21-clang"
-
+ eval "$(install-ndk-toolchain $arch)"
+ export ANDROID_ARCH_NAME=$arch
export PATH="$PATH:${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/bin"
# Build Wireguard-Go
@@ -62,5 +58,7 @@ for arch in arm arm64 x86_64 x86; do
cp ../../android/build/extraJni/$ANDROID_ABI/libwg.so ../../build/lib/$RUST_TARGET_TRIPLE
chmod 777 ../../android/build/extraJni/$ANDROID_ABI/libwg.so ../../build/lib/$RUST_TARGET_TRIPLE
rm -rf build
-
done
+
+# ensure `git clean -fd` does not require root permissions
+find $GOPATH -exec chmod +rw {} \;
diff --git a/wireguard/wireguard-go/go.sum b/wireguard/wireguard-go/go.sum
index d81030de9e..20a3d834b5 100644
--- a/wireguard/wireguard-go/go.sum
+++ b/wireguard/wireguard-go/go.sum
@@ -21,6 +21,7 @@ golang.org/x/sys v0.0.0-20190618155005-516e3c20635f/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20191003212358-c178f38b412c h1:6Zx7DRlKXf79yfxuQ/7GqV3w2y7aDsk6bGg0MzF5RVU=
golang.org/x/sys v0.0.0-20191003212358-c178f38b412c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.zx2c4.com/wireguard v0.0.20190518-0.20190605110920-108c37a05639 h1:AoX5+g0OBk+KqTTMVl4YPFZ9ioU2tPW1YwtzaVWdORA=