mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-24 23:18:17 +01:00
Merge pull request #6867 from alvasw/makefile_enforce_jdk
Makefile: Enforce same JDK
This commit is contained in:
commit
70b8195a8c
6 changed files with 212 additions and 119 deletions
111
Makefile
111
Makefile
|
@ -100,7 +100,7 @@
|
|||
|
||||
# Set up everything necessary for deploying your localnet. This is the
|
||||
# default target.
|
||||
setup: build .localnet
|
||||
setup: .localnet
|
||||
|
||||
clean: clean-build clean-localnet
|
||||
|
||||
|
@ -110,15 +110,6 @@ clean-build:
|
|||
clean-localnet:
|
||||
rm -rf .localnet ./dao-setup
|
||||
|
||||
# Build Bisq binaries and shell scripts used in the targets below
|
||||
build: seednode/build desktop/build
|
||||
|
||||
seednode/build:
|
||||
./gradlew :seednode:build
|
||||
|
||||
desktop/build:
|
||||
./gradlew :desktop:build
|
||||
|
||||
# Unpack and customize a Bitcoin regtest node and Alice and Bob Bisq
|
||||
# nodes that have been preconfigured with a blockchain containing the
|
||||
# BSQ genesis transaction
|
||||
|
@ -147,106 +138,22 @@ localnet: .localnet
|
|||
# user, you'll need to manually run each of the targets listed below
|
||||
# commands manually in a separate terminal or as background jobs.
|
||||
deploy: setup
|
||||
# ensure localnet is not already deployed
|
||||
if screen -ls localnet | grep Detached; then false; fi
|
||||
# create a new screen session named 'localnet'
|
||||
screen -dmS localnet
|
||||
# deploy each node in its own named screen window
|
||||
for target in \
|
||||
bitcoind \
|
||||
seednode \
|
||||
seednode2 \
|
||||
alice \
|
||||
bob \
|
||||
mediator; do \
|
||||
screen -S localnet -X screen -t $$target; \
|
||||
screen -S localnet -p $$target -X stuff "make $$target\n"; \
|
||||
done;
|
||||
./gradlew :startRegtest
|
||||
# give bitcoind rpc server time to start
|
||||
sleep 5
|
||||
# generate a block to ensure Bisq nodes get dao-synced
|
||||
make block
|
||||
tail -f .localnet/bitcoind_shell.log \
|
||||
.localnet/seednode_1_shell.log \
|
||||
.localnet/seednode_2_shell.log \
|
||||
.localnet/alice_shell.log \
|
||||
.localnet/bob_shell.log \
|
||||
.localnet/mediator_shell.log
|
||||
|
||||
# Undeploy a running localnet by killing all Bitcoin and Bisq
|
||||
# node processes, then killing the localnet screen session altogether
|
||||
undeploy:
|
||||
# kill all Bitcoind and Bisq nodes running in screen windows
|
||||
screen -S localnet -X at "#" stuff "^C"
|
||||
# quit all screen windows which results in killing the session
|
||||
screen -S localnet -X at "#" kill
|
||||
# remove dead screens
|
||||
screen -wipe || true
|
||||
|
||||
bitcoind: .localnet
|
||||
bitcoind \
|
||||
-regtest \
|
||||
-prune=0 \
|
||||
-txindex=1 \
|
||||
-peerbloomfilters=1 \
|
||||
-server \
|
||||
-rpcuser=bisqdao \
|
||||
-rpcpassword=bsq \
|
||||
-datadir=.localnet/bitcoind \
|
||||
-blocknotify='.localnet/bitcoind/blocknotify %s'
|
||||
|
||||
seednode: seednode/build
|
||||
./bisq-seednode \
|
||||
--baseCurrencyNetwork=BTC_REGTEST \
|
||||
--useLocalhostForP2P=true \
|
||||
--useDevPrivilegeKeys=true \
|
||||
--fullDaoNode=true \
|
||||
--rpcUser=bisqdao \
|
||||
--rpcPassword=bsq \
|
||||
--rpcBlockNotificationPort=5120 \
|
||||
--nodePort=2002 \
|
||||
--userDataDir=.localnet \
|
||||
--appName=seednode
|
||||
|
||||
seednode2: seednode/build
|
||||
./bisq-seednode \
|
||||
--baseCurrencyNetwork=BTC_REGTEST \
|
||||
--useLocalhostForP2P=true \
|
||||
--useDevPrivilegeKeys=true \
|
||||
--fullDaoNode=true \
|
||||
--rpcUser=bisqdao \
|
||||
--rpcPassword=bsq \
|
||||
--rpcBlockNotificationPort=5121 \
|
||||
--nodePort=3002 \
|
||||
--userDataDir=.localnet \
|
||||
--appName=seednode2
|
||||
|
||||
mediator: desktop/build
|
||||
./bisq-desktop \
|
||||
--baseCurrencyNetwork=BTC_REGTEST \
|
||||
--useLocalhostForP2P=true \
|
||||
--useDevPrivilegeKeys=true \
|
||||
--nodePort=4444 \
|
||||
--appDataDir=.localnet/mediator \
|
||||
--appName=Mediator
|
||||
|
||||
alice: setup
|
||||
./bisq-desktop \
|
||||
--baseCurrencyNetwork=BTC_REGTEST \
|
||||
--useLocalhostForP2P=true \
|
||||
--useDevPrivilegeKeys=true \
|
||||
--nodePort=5555 \
|
||||
--fullDaoNode=true \
|
||||
--rpcUser=bisqdao \
|
||||
--rpcPassword=bsq \
|
||||
--rpcBlockNotificationPort=5122 \
|
||||
--genesisBlockHeight=111 \
|
||||
--genesisTxId=30af0050040befd8af25068cc697e418e09c2d8ebd8d411d2240591b9ec203cf \
|
||||
--appDataDir=.localnet/alice \
|
||||
--appName=Alice
|
||||
|
||||
bob: setup
|
||||
./bisq-desktop \
|
||||
--baseCurrencyNetwork=BTC_REGTEST \
|
||||
--useLocalhostForP2P=true \
|
||||
--useDevPrivilegeKeys=true \
|
||||
--nodePort=6666 \
|
||||
--appDataDir=.localnet/bob \
|
||||
--appName=Bob
|
||||
./gradlew :stopRegtest
|
||||
|
||||
# Generate a new block on your Bitcoin regtest network. Requires that
|
||||
# bitcoind is already running. See the `bitcoind` target above.
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package bisq.gradle.regtest_plugin
|
||||
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.tasks.Internal
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
|
||||
abstract class KillTask : DefaultTask() {
|
||||
|
||||
@get:Internal
|
||||
abstract val pidFile: RegularFileProperty
|
||||
|
||||
@TaskAction
|
||||
fun run() {
|
||||
ProcessKiller(pidFile.asFile.get())
|
||||
.kill()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package bisq.gradle.regtest_plugin
|
||||
|
||||
import java.io.File
|
||||
|
||||
class ProcessKiller(private val pidFile: File) {
|
||||
|
||||
companion object {
|
||||
private const val SIG_INT_NUMBER = 2
|
||||
}
|
||||
|
||||
fun kill() {
|
||||
if (!pidFile.exists()) {
|
||||
return
|
||||
}
|
||||
|
||||
val pid = pidFile.readText()
|
||||
val processBuilder = ProcessBuilder(
|
||||
"kill",
|
||||
"-s", SIG_INT_NUMBER.toString(),
|
||||
pid
|
||||
)
|
||||
|
||||
processBuilder.redirectErrorStream(true)
|
||||
processBuilder.redirectOutput(ProcessBuilder.Redirect.DISCARD)
|
||||
|
||||
val process = processBuilder.start()
|
||||
process.waitFor()
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -13,14 +13,22 @@ class RegtestPlugin : Plugin<Project> {
|
|||
|
||||
override fun apply(project: Project) {
|
||||
val startBitcoindTask = project.tasks.register<StartBitcoindTask>("startRegtestBitcoind") {
|
||||
pidFile.set(project.layout.projectDirectory.file(".localnet/bitcoind.pid"))
|
||||
|
||||
dataDirectory.set(project.layout.projectDirectory.dir(".localnet/bitcoind"))
|
||||
rpcUser.set(RPC_USER)
|
||||
rpcPassword.set(RPC_PASSWORD)
|
||||
blockNotifyArg.set(".localnet/bitcoind/blocknotify %s")
|
||||
}
|
||||
|
||||
val startFirstSeedNodeTask = project.tasks.register<StartSeedNodeTask>("startRegtestFirstSeednode") {
|
||||
val stopBitcoindTask = project.tasks.register<KillTask>("stopRegtestBitcoind") {
|
||||
pidFile.set(startBitcoindTask.flatMap { it.pidFile })
|
||||
}
|
||||
|
||||
val startFirstSeedNodeTask = project.tasks.register<StartBisqTask>("startRegtestFirstSeednode") {
|
||||
dependsOn(startBitcoindTask)
|
||||
|
||||
pidFile.set(project.layout.projectDirectory.file(".localnet/seednode_1.pid"))
|
||||
startScriptFile.set(project.layout.projectDirectory.file("bisq-seednode"))
|
||||
|
||||
arguments.set(
|
||||
|
@ -31,9 +39,15 @@ class RegtestPlugin : Plugin<Project> {
|
|||
logFile.set(project.layout.projectDirectory.file(".localnet/seednode_1_shell.log"))
|
||||
}
|
||||
|
||||
val startSecondSeedNodeTask = project.tasks.register<StartSeedNodeTask>("startRegtestSecondSeednode") {
|
||||
val stopFirstSeedNodeTask = project.tasks.register<KillTask>("stopRegtestFirstSeednode") {
|
||||
pidFile.set(startFirstSeedNodeTask.flatMap { it.pidFile })
|
||||
}
|
||||
|
||||
val startSecondSeedNodeTask = project.tasks.register<StartBisqTask>("startRegtestSecondSeednode") {
|
||||
dependsOn(startBitcoindTask)
|
||||
dependsOn(startFirstSeedNodeTask)
|
||||
|
||||
pidFile.set(project.layout.projectDirectory.file(".localnet/seednode_2.pid"))
|
||||
startScriptFile.set(project.layout.projectDirectory.file("bisq-seednode"))
|
||||
|
||||
arguments.set(
|
||||
|
@ -43,20 +57,113 @@ class RegtestPlugin : Plugin<Project> {
|
|||
workingDirectory.set(project.layout.projectDirectory)
|
||||
logFile.set(project.layout.projectDirectory.file(".localnet/seednode_2_shell.log"))
|
||||
}
|
||||
|
||||
val stopSeedNodeTask = project.tasks.register<KillTask>("stopRegtestSecondSeednode") {
|
||||
pidFile.set(startSecondSeedNodeTask.flatMap { it.pidFile })
|
||||
}
|
||||
|
||||
val startMediatorTask = project.tasks.register<StartBisqTask>("startRegtestMediator") {
|
||||
dependsOn(startFirstSeedNodeTask)
|
||||
dependsOn(startSecondSeedNodeTask)
|
||||
|
||||
pidFile.set(project.layout.projectDirectory.file(".localnet/mediator.pid"))
|
||||
startScriptFile.set(project.layout.projectDirectory.file("bisq-desktop"))
|
||||
|
||||
arguments.set(
|
||||
createBisqUserArgs(4444, ".localnet/mediator", "Mediator")
|
||||
)
|
||||
|
||||
workingDirectory.set(project.layout.projectDirectory)
|
||||
logFile.set(project.layout.projectDirectory.file(".localnet/mediator_shell.log"))
|
||||
}
|
||||
|
||||
val stopMediatorTask = project.tasks.register<KillTask>("stopRegtestMediator") {
|
||||
pidFile.set(startMediatorTask.flatMap { it.pidFile })
|
||||
}
|
||||
|
||||
val startAliceTask = project.tasks.register<StartBisqTask>("startRegtestAlice") {
|
||||
dependsOn(startFirstSeedNodeTask)
|
||||
dependsOn(startSecondSeedNodeTask)
|
||||
|
||||
pidFile.set(project.layout.projectDirectory.file(".localnet/alice.pid"))
|
||||
startScriptFile.set(project.layout.projectDirectory.file("bisq-desktop"))
|
||||
|
||||
val additionalArgs = listOf(
|
||||
"--fullDaoNode=true",
|
||||
"--rpcUser=bisqdao",
|
||||
"--rpcPassword=bsq",
|
||||
"--rpcBlockNotificationPort=5122",
|
||||
"--genesisBlockHeight=111",
|
||||
"--genesisTxId=30af0050040befd8af25068cc697e418e09c2d8ebd8d411d2240591b9ec203cf"
|
||||
)
|
||||
arguments.set(
|
||||
createBisqUserArgs(5555, ".localnet/alice", "Alice", additionalArgs)
|
||||
)
|
||||
|
||||
workingDirectory.set(project.layout.projectDirectory)
|
||||
logFile.set(project.layout.projectDirectory.file(".localnet/alice_shell.log"))
|
||||
}
|
||||
|
||||
val stopAliceTask = project.tasks.register<KillTask>("stopRegtestAlice") {
|
||||
pidFile.set(startAliceTask.flatMap { it.pidFile })
|
||||
}
|
||||
|
||||
val startBobTask = project.tasks.register<StartBisqTask>("startRegtest") {
|
||||
dependsOn(startMediatorTask)
|
||||
dependsOn(startAliceTask)
|
||||
|
||||
pidFile.set(project.layout.projectDirectory.file(".localnet/bob.pid"))
|
||||
startScriptFile.set(project.layout.projectDirectory.file("bisq-desktop"))
|
||||
|
||||
arguments.set(
|
||||
createBisqUserArgs(6666, ".localnet/bob", "Bob")
|
||||
)
|
||||
|
||||
workingDirectory.set(project.layout.projectDirectory)
|
||||
logFile.set(project.layout.projectDirectory.file(".localnet/bob_shell.log"))
|
||||
}
|
||||
|
||||
project.tasks.register<KillTask>("stopRegtest") {
|
||||
dependsOn(stopBitcoindTask)
|
||||
|
||||
dependsOn(stopFirstSeedNodeTask)
|
||||
dependsOn(stopSeedNodeTask)
|
||||
|
||||
dependsOn(stopMediatorTask)
|
||||
dependsOn(stopAliceTask)
|
||||
|
||||
pidFile.set(startBobTask.flatMap { it.pidFile })
|
||||
}
|
||||
}
|
||||
|
||||
private fun createSeedNodeArgs(blockNotificationPort: Int, nodePort: Int, appName: String): List<String> = listOf(
|
||||
"--baseCurrencyNetwork=BTC_REGTEST",
|
||||
"--useLocalhostForP2P=true",
|
||||
"--useDevPrivilegeKeys=true",
|
||||
"--fullDaoNode=true",
|
||||
private fun createBisqUserArgs(nodePort: Int,
|
||||
dataDir: String,
|
||||
appName: String,
|
||||
additionalArgs: List<String> = emptyList()): List<String> =
|
||||
createBisqCommonArgs(nodePort) +
|
||||
listOf(
|
||||
"--appDataDir=$dataDir",
|
||||
"--appName=$appName"
|
||||
) + additionalArgs
|
||||
|
||||
"--rpcUser=${RPC_USER}",
|
||||
"--rpcPassword=${RPC_PASSWORD}",
|
||||
"--rpcBlockNotificationPort=$blockNotificationPort",
|
||||
private fun createSeedNodeArgs(blockNotificationPort: Int, nodePort: Int, appName: String): List<String> =
|
||||
createBisqCommonArgs(nodePort) +
|
||||
listOf(
|
||||
"--fullDaoNode=true",
|
||||
|
||||
"--nodePort=$nodePort",
|
||||
"--userDataDir=.localnet",
|
||||
"--appName=$appName"
|
||||
)
|
||||
"--rpcUser=${RPC_USER}",
|
||||
"--rpcPassword=${RPC_PASSWORD}",
|
||||
"--rpcBlockNotificationPort=$blockNotificationPort",
|
||||
|
||||
"--userDataDir=.localnet",
|
||||
"--appName=$appName"
|
||||
)
|
||||
|
||||
private fun createBisqCommonArgs(nodePort: Int): List<String> =
|
||||
listOf(
|
||||
"--baseCurrencyNetwork=BTC_REGTEST",
|
||||
"--useLocalhostForP2P=true",
|
||||
"--useDevPrivilegeKeys=true",
|
||||
"--nodePort=$nodePort"
|
||||
)
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import org.gradle.api.tasks.InputFile
|
|||
import org.gradle.api.tasks.Internal
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
|
||||
abstract class StartSeedNodeTask : DefaultTask() {
|
||||
abstract class StartBisqTask : DefaultTask() {
|
||||
|
||||
@get:InputFile
|
||||
abstract val startScriptFile: RegularFileProperty
|
||||
|
@ -24,8 +24,17 @@ abstract class StartSeedNodeTask : DefaultTask() {
|
|||
@get:Internal
|
||||
abstract val logFile: RegularFileProperty
|
||||
|
||||
@get:Internal
|
||||
abstract val pidFile: RegularFileProperty
|
||||
|
||||
@TaskAction
|
||||
fun run() {
|
||||
ProcessKiller(pidFile.asFile.get())
|
||||
.kill()
|
||||
|
||||
// Wait until process stopped
|
||||
Thread.sleep(5000)
|
||||
|
||||
val processBuilder = ProcessBuilder(
|
||||
"bash", startScriptFile.asFile.get().absolutePath, arguments.get().joinToString(" ")
|
||||
)
|
||||
|
@ -34,6 +43,11 @@ abstract class StartSeedNodeTask : DefaultTask() {
|
|||
processBuilder.redirectErrorStream(true)
|
||||
processBuilder.redirectOutput(logFile.asFile.get())
|
||||
|
||||
processBuilder.start()
|
||||
val process = processBuilder.start()
|
||||
val pid = process.pid()
|
||||
|
||||
pidFile.asFile
|
||||
.get()
|
||||
.writeText(pid.toString())
|
||||
}
|
||||
}
|
|
@ -2,13 +2,18 @@ package bisq.gradle.regtest_plugin
|
|||
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.file.DirectoryProperty
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.InputDirectory
|
||||
import org.gradle.api.tasks.Internal
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
|
||||
abstract class StartBitcoindTask : DefaultTask() {
|
||||
|
||||
@get:Internal
|
||||
abstract val pidFile: RegularFileProperty
|
||||
|
||||
@get:InputDirectory
|
||||
abstract val dataDirectory: DirectoryProperty
|
||||
|
||||
|
@ -23,6 +28,12 @@ abstract class StartBitcoindTask : DefaultTask() {
|
|||
|
||||
@TaskAction
|
||||
fun run() {
|
||||
ProcessKiller(pidFile.asFile.get())
|
||||
.kill()
|
||||
|
||||
// Wait until process stopped
|
||||
Thread.sleep(5000)
|
||||
|
||||
val processBuilder = ProcessBuilder(
|
||||
"bitcoind",
|
||||
"-datadir=${dataDirectory.asFile.get().absolutePath}",
|
||||
|
@ -42,6 +53,11 @@ abstract class StartBitcoindTask : DefaultTask() {
|
|||
processBuilder.redirectErrorStream(true)
|
||||
processBuilder.redirectOutput(ProcessBuilder.Redirect.DISCARD)
|
||||
|
||||
processBuilder.start()
|
||||
val process = processBuilder.start()
|
||||
val pid = process.pid()
|
||||
|
||||
pidFile.asFile
|
||||
.get()
|
||||
.writeText(pid.toString())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue