summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2020-02-03 19:24:46 +0000
committerEmīls <emils@mullvad.net>2020-02-07 17:26:19 +0000
commitfec3ccc803fded3ccd5c753b9e045af10f576687 (patch)
tree34899e5339892fe678608f274d401b026ebaedd3
parentf1de40264ddab180a16f4e5c23207118288ebf05 (diff)
downloadmullvadvpn-fec3ccc803fded3ccd5c753b9e045af10f576687.tar.xz
mullvadvpn-fec3ccc803fded3ccd5c753b9e045af10f576687.zip
Use newer android docker image to build wireugard
Use newer android docker image to build wireguard-go libraries in CI to speed up builds. The main change is that NDK toolchains will now be installed at runtime to decrease the size (and thus the time it takes to download) the 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=