-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build-logic: Create 'bisq.application' plugin
- Loading branch information
Showing
1 changed file
with
65 additions
and
0 deletions.
There are no files selected for viewing
65 changes: 65 additions & 0 deletions
65
build-logic/commons/src/main/groovy/bisq.application.gradle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
plugins { | ||
id 'bisq.java-conventions' | ||
id 'application' | ||
} | ||
|
||
build.dependsOn installDist | ||
installDist.destinationDir = file('build/app') | ||
distZip.enabled = false | ||
distTar.enabled = false | ||
|
||
// the 'installDist' and 'startScripts' blocks below configure bisq executables to put | ||
// generated shell scripts in the root project directory, such that users can easily | ||
// discover and invoke e.g. ./bisq-desktop, ./bisq-seednode, etc. | ||
// See https://stackoverflow.com/q/46327736 for details. | ||
|
||
installDist { | ||
doLast { | ||
// copy generated shell scripts, e.g. `bisq-desktop` directly to the project | ||
// root directory for discoverability and ease of use | ||
|
||
copy { | ||
from "$destinationDir/bin" | ||
into rootProject.projectDir | ||
} | ||
// copy libs required for generated shell script classpaths to 'lib' dir under | ||
// the project root directory | ||
copy { | ||
from "$destinationDir/lib" | ||
into "${rootProject.projectDir}/lib" | ||
} | ||
|
||
// edit generated shell scripts such that they expect to be executed in the | ||
// project root dir as opposed to a 'bin' subdirectory | ||
def windowsScriptFile = file("${rootProject.projectDir}/bisq-${applicationName}.bat") | ||
windowsScriptFile.text = windowsScriptFile.text.replace( | ||
'set APP_HOME=%DIRNAME%..', 'set APP_HOME=%DIRNAME%') | ||
|
||
def unixScriptFile = file("${rootProject.projectDir}/bisq-$applicationName") | ||
unixScriptFile.text = unixScriptFile.text.replace( | ||
'APP_HOME=$( cd "${APP_HOME:-./}.." && pwd -P ) || exit', 'APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit') | ||
|
||
if (applicationName == 'desktop') { | ||
def script = file("${rootProject.projectDir}/bisq-$applicationName") | ||
script.text = script.text.replace( | ||
'DEFAULT_JVM_OPTS=""', 'DEFAULT_JVM_OPTS="-XX:MaxRAM=8g -Xss1280k -XX:+UseG1GC ' + | ||
'-XX:MaxHeapFreeRatio=10 -XX:MinHeapFreeRatio=5 -XX:+UseStringDeduplication ' + | ||
'-Djava.net.preferIPv4Stack=true"') | ||
} | ||
|
||
if (applicationName == 'apitest') { | ||
// Pass the logback config file as a system property to avoid chatty | ||
// logback startup due to multiple logback.xml files in the classpath | ||
// (:daemon & :cli). | ||
def script = file("${rootProject.projectDir}/bisq-$applicationName") | ||
script.text = script.text.replace( | ||
'DEFAULT_JVM_OPTS=""', 'DEFAULT_JVM_OPTS="' + | ||
'-Dlogback.configurationFile=apitest/build/resources/main/logback.xml"') | ||
} | ||
} | ||
} | ||
|
||
startScripts { | ||
// rename scripts from, e.g. `desktop` to `bisq-desktop` | ||
applicationName = "bisq-$applicationName" | ||
} |