mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-18 21:59:54 +01:00
Actually make headless work on arm aarch64
Following the two comments at https://code.briarproject.org/briar/briar/-/issues/1854#note_44340 .jar files now get built with $ ./gradlew --configure-on-demand briar-headless:x86LinuxJar $ ./gradlew --configure-on-demand briar-headless:aarch64LinuxJar Related to #1854
This commit is contained in:
@@ -96,15 +96,21 @@ public class UnixTorPluginFactory implements DuplexPluginFactory {
|
|||||||
String architecture = null;
|
String architecture = null;
|
||||||
if (isLinux()) {
|
if (isLinux()) {
|
||||||
String arch = System.getProperty("os.arch");
|
String arch = System.getProperty("os.arch");
|
||||||
|
LOG.info("System's os.arch is " + arch);
|
||||||
if (arch.equals("amd64")) {
|
if (arch.equals("amd64")) {
|
||||||
architecture = "linux-x86_64";
|
architecture = "linux-x86_64";
|
||||||
}
|
}
|
||||||
|
else if (arch.equals("aarch64")) {
|
||||||
|
architecture = "linux-aarch64";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (architecture == null) {
|
if (architecture == null) {
|
||||||
LOG.info("Tor is not supported on this architecture");
|
LOG.info("Tor is not supported on this architecture");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOG.info("The selected architecture for Tor is " + architecture);
|
||||||
|
|
||||||
Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL,
|
Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL,
|
||||||
MAX_POLLING_INTERVAL, BACKOFF_BASE);
|
MAX_POLLING_INTERVAL, BACKOFF_BASE);
|
||||||
TorRendezvousCrypto torRendezvousCrypto = new TorRendezvousCryptoImpl();
|
TorRendezvousCrypto torRendezvousCrypto = new TorRendezvousCryptoImpl();
|
||||||
|
|||||||
@@ -11,9 +11,10 @@ The REST API peer comes as a `jar` file
|
|||||||
and needs a Java Runtime Environment (JRE) that supports at least Java 8.
|
and needs a Java Runtime Environment (JRE) that supports at least Java 8.
|
||||||
It currently works only on GNU/Linux operating systems.
|
It currently works only on GNU/Linux operating systems.
|
||||||
|
|
||||||
To build the `jar` file, you can do this:
|
To build the `jar` file, you need to specify the combination of architecture and platform:
|
||||||
|
|
||||||
$ ./gradlew --configure-on-demand briar-headless:jar
|
$ ./gradlew --configure-on-demand briar-headless:x86LinuxJar
|
||||||
|
$ ./gradlew --configure-on-demand briar-headless:aarch64LinuxJar
|
||||||
|
|
||||||
You can start the peer (and its API server) like this:
|
You can start the peer (and its API server) like this:
|
||||||
|
|
||||||
|
|||||||
@@ -44,18 +44,32 @@ dependencies {
|
|||||||
kaptTest "com.google.dagger:dagger-compiler:$daggerVersion"
|
kaptTest "com.google.dagger:dagger-compiler:$daggerVersion"
|
||||||
}
|
}
|
||||||
|
|
||||||
jar {
|
void jarFactory(Jar jarTask, jarArchitecture) {
|
||||||
manifest {
|
jarTask.doFirst {
|
||||||
|
println 'Building ' + jarArchitecture + ' version has started'
|
||||||
|
}
|
||||||
|
jarTask.manifest {
|
||||||
attributes(
|
attributes(
|
||||||
'Main-Class': 'org.briarproject.briar.headless.MainKt'
|
'Main-Class': 'org.briarproject.briar.headless.MainKt'
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
from {
|
jarTask.setArchiveClassifier(jarArchitecture)
|
||||||
|
jarTask.from {
|
||||||
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
|
||||||
}
|
}
|
||||||
doLast() {
|
{
|
||||||
|
String[] architectures = ["linux-aarch64", "linux-x86_64"]
|
||||||
|
for (String arch : architectures) {
|
||||||
|
if (arch != jarArchitecture) {
|
||||||
|
exclude "obfs4proxy_" + arch + ".zip"
|
||||||
|
exclude "tor_" + arch + ".zip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
jarTask.with jar
|
||||||
|
jarTask.doLast {
|
||||||
// Rename the original jar
|
// Rename the original jar
|
||||||
File jar = project.jar.archivePath
|
File jar = jarTask.archivePath
|
||||||
String srcPath = jar.toString().replaceFirst('\\.jar$', '.unsorted.jar')
|
String srcPath = jar.toString().replaceFirst('\\.jar$', '.unsorted.jar')
|
||||||
File srcFile = new File(srcPath)
|
File srcFile = new File(srcPath)
|
||||||
jar.renameTo(srcFile)
|
jar.renameTo(srcFile)
|
||||||
@@ -80,9 +94,18 @@ jar {
|
|||||||
}
|
}
|
||||||
destStream.close()
|
destStream.close()
|
||||||
srcJarFile.close()
|
srcJarFile.close()
|
||||||
|
println 'Building ' + jarArchitecture + ' version has finished'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task aarch64LinuxJar(type: Jar) {
|
||||||
|
jarFactory(it, 'linux-aarch64')
|
||||||
|
}
|
||||||
|
|
||||||
|
task x86LinuxJar(type: Jar) {
|
||||||
|
jarFactory(it, 'linux-x86_64')
|
||||||
|
}
|
||||||
|
|
||||||
// At the moment for non-Android projects we need to explicitly mark the code generated by kapt
|
// At the moment for non-Android projects we need to explicitly mark the code generated by kapt
|
||||||
// as 'generated source code' for correct highlighting and resolve in IDE.
|
// as 'generated source code' for correct highlighting and resolve in IDE.
|
||||||
idea {
|
idea {
|
||||||
|
|||||||
Reference in New Issue
Block a user