summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-03-08 17:29:09 +0100
committerDavid Lönnhager <david.l@mullvad.net>2021-03-10 10:29:57 +0100
commitbed5061dadf89f8112a73e495a9dfd576453dc67 (patch)
treea1ed7ddf3b03cc93b95c58d7e51138ee70abe004
parent156849174f40fb1284908193eaeaece85c14a930 (diff)
downloadmullvadvpn-bed5061dadf89f8112a73e495a9dfd576453dc67.tar.xz
mullvadvpn-bed5061dadf89f8112a73e495a9dfd576453dc67.zip
Update Android Docker image
-rw-r--r--.github/workflows/android-app.yml2
-rwxr-xr-xandroid/fdroid-build/init.sh6
-rwxr-xr-xwireguard/build-wireguard-go.sh3
-rw-r--r--wireguard/libwg/Dockerfile20
-rw-r--r--wireguard/libwg/goruntime-boottime-over-monotonic.diff68
5 files changed, 51 insertions, 48 deletions
diff --git a/.github/workflows/android-app.yml b/.github/workflows/android-app.yml
index 26bab204b2..7119167f76 100644
--- a/.github/workflows/android-app.yml
+++ b/.github/workflows/android-app.yml
@@ -39,7 +39,7 @@ jobs:
# Install Go
- uses: actions/setup-go@v2.1.3
with:
- go-version: 1.13.5
+ go-version: 1.16
# Install Android SDK
- uses: maxim-lobanov/setup-android-tools@v1
diff --git a/android/fdroid-build/init.sh b/android/fdroid-build/init.sh
index 7b7d7c578d..f363372df7 100755
--- a/android/fdroid-build/init.sh
+++ b/android/fdroid-build/init.sh
@@ -21,9 +21,9 @@ rustup target add \
# Install Go
cd "$HOME"
-curl -sf -L -O https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz
-echo "0804bf02020dceaa8a7d7275ee79f7a142f1996bfd0c39216ccb405f93f994c0 go1.13.3.linux-amd64.tar.gz" | sha256sum -c
-tar -xzvf go1.13.3.linux-amd64.tar.gz
+curl -sf -L -O https://golang.org/dl/go1.16.linux-amd64.tar.gz
+echo "013a489ebb3e24ef3d915abe5b94c3286c070dfe0818d5bca8108f1d6e8440d2 go1.16.linux-amd64.tar.gz" | sha256sum -c
+tar -xzvf go1.16.linux-amd64.tar.gz
patch -p1 -f -N -r- -d "$HOME/go" < "$REPO_DIR/wireguard/libwg/goruntime-boottime-over-monotonic.diff"
# Configure Cargo for cross-compilation
diff --git a/wireguard/build-wireguard-go.sh b/wireguard/build-wireguard-go.sh
index cd696e23b2..95d45c28b1 100755
--- a/wireguard/build-wireguard-go.sh
+++ b/wireguard/build-wireguard-go.sh
@@ -95,12 +95,13 @@ function build_unix {
function build_android {
echo "Building for android"
- local docker_image_hash="f432cb779611284ce69aca59a90a8a601171d4c29728561ae32bd228b1699198"
+ local docker_image_hash="25151087eb355a6e609db01a9498df0af4a8bec5d59ad561521512ece7bd21e9"
if is_docker_build $@; then
docker run --rm \
-v "$(pwd)/../":/workspace \
--entrypoint "/workspace/wireguard/libwg/build-android.sh" \
+ --env ANDROID_NDK_HOME="/opt/android/android-ndk-r20b" \
quay.io/mullvad/mullvad-android-app-build@sha256:$docker_image_hash
else
./libwg/build-android.sh
diff --git a/wireguard/libwg/Dockerfile b/wireguard/libwg/Dockerfile
index 1e7422edab..d53fdff78e 100644
--- a/wireguard/libwg/Dockerfile
+++ b/wireguard/libwg/Dockerfile
@@ -16,25 +16,27 @@ RUN apt-get update -y && apt-get install -y \
# Install Android NDK
RUN cd /tmp && \
- curl -sf -L -O https://dl.google.com/android/repository/android-ndk-r20-linux-x86_64.zip && \
- test $(sha256sum android-ndk-r20-linux-x86_64.zip | cut -f1 -d' ') = "57435158f109162f41f2f43d5563d2164e4d5d0364783a9a6fab3ef12cb06ce0" && \
+ curl -sf -L -o ndk.zip https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip && \
+ echo "8381c440fe61fcbb01e209211ac01b519cd6adf51ab1c2281d5daad6ca4c8c8c ndk.zip" | sha256sum -c - && \
mkdir /opt/android && \
cd /opt/android && \
- unzip -q /tmp/android-ndk-r20-linux-x86_64.zip && \
- rm /tmp/android-ndk-r20-linux-x86_64.zip
+ unzip -q /tmp/ndk.zip && \
+ rm /tmp/ndk.zip
-ENV ANDROID_NDK_HOME="/opt/android/android-ndk-r20"
+ENV ANDROID_NDK_HOME="/opt/android/android-ndk-r20b"
+ENV GOLANG_VERSION 1.16
+ENV GOLANG_HASH 013a489ebb3e24ef3d915abe5b94c3286c070dfe0818d5bca8108f1d6e8440d2
# Install Go-lang and patch it to use the appropriate monotonic clock
COPY goruntime-boottime-over-monotonic.diff /opt/goruntime-boottime-over-monotonic.diff
RUN cd /tmp && \
- curl -sf -L -O https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz && \
- echo "0804bf02020dceaa8a7d7275ee79f7a142f1996bfd0c39216ccb405f93f994c0 go1.13.3.linux-amd64.tar.gz" | sha256sum --check && \
+ curl -sf -L -o go.tgz https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz && \
+ echo "${GOLANG_HASH} go.tgz" | sha256sum -c - && \
cd /opt && \
- tar -xzf /tmp/go1.13.3.linux-amd64.tar.gz && \
- rm /tmp/go1.13.3.linux-amd64.tar.gz && \
+ tar -xzf /tmp/go.tgz && \
+ rm /tmp/go.tgz && \
patch -p1 -f -N -r- -d "/opt/go" < /opt/goruntime-boottime-over-monotonic.diff
ENV PATH=${PATH}:/opt/go/bin
diff --git a/wireguard/libwg/goruntime-boottime-over-monotonic.diff b/wireguard/libwg/goruntime-boottime-over-monotonic.diff
index e5c668bde1..5cbc225674 100644
--- a/wireguard/libwg/goruntime-boottime-over-monotonic.diff
+++ b/wireguard/libwg/goruntime-boottime-over-monotonic.diff
@@ -1,6 +1,6 @@
-From 6998a7866b8428fd49c31506795c9f8154826d13 Mon Sep 17 00:00:00 2001
+From b83553d9f260ba20c6faaa52e6fe6f74309eb41a Mon Sep 17 00:00:00 2001
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
-Date: Wed, 27 Feb 2019 05:05:44 +0100
+Date: Mon, 22 Feb 2021 02:36:03 +0100
Subject: [PATCH] runtime: use CLOCK_BOOTTIME in nanotime on Linux
This makes timers account for having expired while a computer was
@@ -28,10 +28,10 @@ Change-Id: I7b2a6ca0c5bc5fce57ec0eeafe7b68270b429321
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/runtime/sys_linux_386.s b/src/runtime/sys_linux_386.s
-index 40b55a67eb..6105780ff4 100644
+index 1e3a834812..78b6021fc7 100644
--- a/src/runtime/sys_linux_386.s
+++ b/src/runtime/sys_linux_386.s
-@@ -288,13 +288,13 @@ noswitch:
+@@ -337,13 +337,13 @@ noswitch:
LEAL 8(SP), BX // &ts (struct timespec)
MOVL BX, 4(SP)
@@ -48,20 +48,20 @@ index 40b55a67eb..6105780ff4 100644
INVOKE_SYSCALL
diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s
-index b709f77060..18a1f1d43a 100644
+index 37cb8dad03..e8b730bcaa 100644
--- a/src/runtime/sys_linux_amd64.s
+++ b/src/runtime/sys_linux_amd64.s
-@@ -261,7 +261,7 @@ noswitch:
- MOVQ runtime·vdsoClockgettimeSym(SB), AX
- CMPQ AX, $0
- JEQ fallback
+@@ -302,7 +302,7 @@ noswitch:
+ SUBQ $16, SP // Space for results
+ ANDQ $~15, SP // Align for C code
+
- MOVL $1, DI // CLOCK_MONOTONIC
+ MOVL $7, DI // CLOCK_BOOTTIME
LEAQ 0(SP), SI
- CALL AX
- MOVQ 0(SP), AX // sec
+ MOVQ runtime·vdsoClockgettimeSym(SB), AX
+ CMPQ AX, $0
diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s
-index 43a58335c8..8b93635f4f 100644
+index 475f52344c..bb567abcf4 100644
--- a/src/runtime/sys_linux_arm.s
+++ b/src/runtime/sys_linux_arm.s
@@ -11,7 +11,7 @@
@@ -73,17 +73,17 @@ index 43a58335c8..8b93635f4f 100644
// for EABI, as we don't support OABI
#define SYS_BASE 0x0
-@@ -291,7 +291,7 @@ noswitch:
+@@ -366,7 +366,7 @@ noswitch:
SUB $24, R13 // Space for results
BIC $0x7, R13 // Align for C code
- MOVW $CLOCK_MONOTONIC, R0
+ MOVW $CLOCK_BOOTTIME, R0
MOVW $8(R13), R1 // timespec
- MOVW runtime·vdsoClockgettimeSym(SB), R11
- CMP $0, R11
+ MOVW runtime·vdsoClockgettimeSym(SB), R2
+ CMP $0, R2
diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s
-index 8b344be8f8..daf142fba0 100644
+index 198a5bacef..9715387f36 100644
--- a/src/runtime/sys_linux_arm64.s
+++ b/src/runtime/sys_linux_arm64.s
@@ -13,7 +13,7 @@
@@ -95,7 +95,7 @@ index 8b344be8f8..daf142fba0 100644
#define SYS_exit 93
#define SYS_read 63
-@@ -247,7 +247,7 @@ noswitch:
+@@ -319,7 +319,7 @@ noswitch:
BIC $15, R1
MOVD R1, RSP
@@ -103,59 +103,59 @@ index 8b344be8f8..daf142fba0 100644
+ MOVW $CLOCK_BOOTTIME, R0
MOVD runtime·vdsoClockgettimeSym(SB), R2
CBZ R2, fallback
- BL (R2)
+
diff --git a/src/runtime/sys_linux_mips64x.s b/src/runtime/sys_linux_mips64x.s
-index c45703d228..9842b596e7 100644
+index c3e9f37694..e3879acd38 100644
--- a/src/runtime/sys_linux_mips64x.s
+++ b/src/runtime/sys_linux_mips64x.s
-@@ -189,7 +189,7 @@ TEXT runtime·walltime(SB),NOSPLIT,$16
- RET
+@@ -312,7 +312,7 @@ noswitch:
+ AND $~15, R1 // Align for C code
+ MOVV R1, R29
- TEXT runtime·nanotime(SB),NOSPLIT,$16
- MOVW $1, R4 // CLOCK_MONOTONIC
+ MOVW $7, R4 // CLOCK_BOOTTIME
MOVV $0(R29), R5
- MOVV $SYS_clock_gettime, R2
- SYSCALL
+
+ MOVV runtime·vdsoClockgettimeSym(SB), R25
diff --git a/src/runtime/sys_linux_mipsx.s b/src/runtime/sys_linux_mipsx.s
-index f362b0f3f1..5ab866e047 100644
+index fab2ab3892..f9af103594 100644
--- a/src/runtime/sys_linux_mipsx.s
+++ b/src/runtime/sys_linux_mipsx.s
-@@ -193,7 +193,7 @@ TEXT runtime·walltime(SB),NOSPLIT,$8-12
+@@ -238,7 +238,7 @@ TEXT runtime·walltime1(SB),NOSPLIT,$8-12
RET
- TEXT runtime·nanotime(SB),NOSPLIT,$8-8
+ TEXT runtime·nanotime1(SB),NOSPLIT,$8-8
- MOVW $1, R4 // CLOCK_MONOTONIC
+ MOVW $7, R4 // CLOCK_BOOTTIME
MOVW $4(R29), R5
MOVW $SYS_clock_gettime, R2
SYSCALL
diff --git a/src/runtime/sys_linux_ppc64x.s b/src/runtime/sys_linux_ppc64x.s
-index 6835f434de..46618b2d91 100644
+index fd69ee70a5..ff6bc8355b 100644
--- a/src/runtime/sys_linux_ppc64x.s
+++ b/src/runtime/sys_linux_ppc64x.s
-@@ -204,7 +204,7 @@ fallback:
+@@ -249,7 +249,7 @@ fallback:
JMP finish
- TEXT runtime·nanotime(SB),NOSPLIT,$16
+ TEXT runtime·nanotime1(SB),NOSPLIT,$16-8
- MOVD $1, R3 // CLOCK_MONOTONIC
+ MOVD $7, R3 // CLOCK_BOOTTIME
MOVD R1, R15 // R15 is unchanged by C code
MOVD g_m(g), R21 // R21 = m
diff --git a/src/runtime/sys_linux_s390x.s b/src/runtime/sys_linux_s390x.s
-index c79ceea751..44e3258e60 100644
+index c15a1d5364..f52c4d5098 100644
--- a/src/runtime/sys_linux_s390x.s
+++ b/src/runtime/sys_linux_s390x.s
-@@ -180,7 +180,7 @@ TEXT runtime·walltime(SB),NOSPLIT,$16
+@@ -207,7 +207,7 @@ TEXT runtime·walltime1(SB),NOSPLIT,$16
RET
- TEXT runtime·nanotime(SB),NOSPLIT,$16
+ TEXT runtime·nanotime1(SB),NOSPLIT,$16
- MOVW $1, R2 // CLOCK_MONOTONIC
+ MOVW $7, R2 // CLOCK_BOOTTIME
MOVD $tp-16(SP), R3
MOVW $SYS_clock_gettime, R1
SYSCALL
--
-2.20.1
+2.30.1