From d7afbdf690af2964a3f443381be91af955a22eec Mon Sep 17 00:00:00 2001 From: Nico Alt Date: Tue, 9 Mar 2021 12:00:00 +0000 Subject: [PATCH] Use Tor binary for armhf (armv7) Example devices are Nexus 5 and Raspberry Pi v2. Based on https://code.briarproject.org/briar/briar/-/merge_requests/1376 Related to https://code.briarproject.org/briar/briar/-/issues/1854 --- .../bramble/plugin/tor/UnixTorPluginFactory.java | 14 ++++++++++---- briar-headless/README.md | 1 + briar-headless/build.gradle | 6 +++++- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java index 0f7117c65..d5efba41c 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java @@ -25,6 +25,7 @@ import javax.annotation.concurrent.Immutable; import javax.inject.Inject; import javax.net.SocketFactory; +import static java.util.logging.Level.INFO; import static java.util.logging.Logger.getLogger; import static org.briarproject.bramble.util.OsUtils.isLinux; @@ -96,12 +97,15 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { String architecture = null; if (isLinux()) { String arch = System.getProperty("os.arch"); - LOG.info("System's os.arch is " + arch); + if (LOG.isLoggable(INFO)) { + LOG.info("System's os.arch is " + arch); + } if (arch.equals("amd64")) { architecture = "linux-x86_64"; - } - else if (arch.equals("aarch64")) { + } else if (arch.equals("aarch64")) { architecture = "linux-aarch64"; + } else if (arch.equals("arm")) { + architecture = "linux-armhf"; } } if (architecture == null) { @@ -109,7 +113,9 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { return null; } - LOG.info("The selected architecture for Tor is " + architecture); + if (LOG.isLoggable(INFO)) { + LOG.info("The selected architecture for Tor is " + architecture); + } Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL, MAX_POLLING_INTERVAL, BACKOFF_BASE); diff --git a/briar-headless/README.md b/briar-headless/README.md index bc050a925..0b446467a 100644 --- a/briar-headless/README.md +++ b/briar-headless/README.md @@ -15,6 +15,7 @@ To build the `jar` file, you need to specify the combination of architecture and $ ./gradlew --configure-on-demand briar-headless:x86LinuxJar $ ./gradlew --configure-on-demand briar-headless:aarch64LinuxJar + $ ./gradlew --configure-on-demand briar-headless:armhfLinuxJar You can start the peer (and its API server) like this: diff --git a/briar-headless/build.gradle b/briar-headless/build.gradle index 641ca400e..53eae7bb0 100644 --- a/briar-headless/build.gradle +++ b/briar-headless/build.gradle @@ -58,7 +58,7 @@ void jarFactory(Jar jarTask, jarArchitecture) { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } { - String[] architectures = ["linux-aarch64", "linux-x86_64"] + String[] architectures = ["linux-aarch64", "linux-armhf", "linux-x86_64"] for (String arch : architectures) { if (arch != jarArchitecture) { exclude "obfs4proxy_" + arch + ".zip" @@ -102,6 +102,10 @@ task aarch64LinuxJar(type: Jar) { jarFactory(it, 'linux-aarch64') } +task armhfLinuxJar(type: Jar) { + jarFactory(it, 'linux-armhf') +} + task x86LinuxJar(type: Jar) { jarFactory(it, 'linux-x86_64') }