Move binaries to be stored inside of the HOME/.bitcoin-s/binaries instead of usrdir/binaries. This makes it so different projects that use bitcoin-s can re-use binaries instead of having to download them for every project (#1128)

This commit is contained in:
Chris Stewart 2020-02-17 12:07:04 -06:00 committed by GitHub
parent 876eab472f
commit 2279313eb9
7 changed files with 30 additions and 22 deletions

View file

@ -17,7 +17,8 @@ TaskKeys.downloadBitcoind := {
val logger = streams.value.log
import scala.sys.process._
val binaryDir = Paths.get("binaries", "bitcoind")
val binaryDir = CommonSettings.binariesPath.resolve("bitcoind")
if (Files.notExists(binaryDir)) {
logger.info(s"Creating directory for bitcoind binaries: $binaryDir")

View file

@ -1,5 +1,7 @@
import java.nio.file._
import scala.util.Properties
name := "bitcoin-s-eclair-rpc"
libraryDependencies ++= Deps.eclairRpc
@ -12,7 +14,7 @@ TaskKeys.downloadEclair := {
val logger = streams.value.log
import scala.sys.process._
val binaryDir = Paths.get("binaries", "eclair")
val binaryDir = CommonSettings.binariesPath.resolve("eclair")
if (Files.notExists(binaryDir)) {
logger.info(s"Creating directory for Eclair binaires: $binaryDir")

View file

@ -700,7 +700,7 @@ class EclairRpcClient(val instance: EclairInstance, binary: Option[File] = None)
}
case (None, Some(path)) =>
val eclairV =
s"/eclair-node-${EclairRpcClient.version}-${EclairRpcClient.commit}.jar"
s"eclair-node-${EclairRpcClient.version}-${EclairRpcClient.commit}.jar"
val fullPath = path + eclairV
val jar = new File(fullPath)

View file

@ -1,4 +1,6 @@
// these two imports are needed for sbt syntax to work
import java.nio.file.Paths
import sbt._
import sbt.Keys._
@ -116,4 +118,6 @@ object CommonSettings {
) ++ testSettings
lazy val prodSettings: Seq[Setting[_]] = settings
lazy val binariesPath = Paths.get(Properties.userHome, ".bitcoin-s", "binaries")
}

View file

@ -26,6 +26,7 @@ import org.bitcoins.rpc.config.{BitcoindAuthCredentials, BitcoindInstance}
import org.bitcoins.rpc.util.RpcUtil
import org.bitcoins.testkit.async.TestAsyncUtil
import org.bitcoins.testkit.rpc.{BitcoindRpcTestUtil, TestRpcUtil}
import org.bitcoins.testkit.util.TestkitBinaries
import scala.concurrent.duration.{DurationInt, FiniteDuration}
import scala.concurrent.{ExecutionContext, Future}
@ -47,7 +48,7 @@ trait EclairRpcTestUtil extends BitcoinSLogger {
/** Directory where sbt downloads Eclair binaries */
private[bitcoins] val binaryDirectory =
BitcoindRpcTestUtil.baseBinaryDirectory.resolve("eclair")
TestkitBinaries.baseBinaryDirectory.resolve("eclair")
/** Path to Jar downloaded by Eclair, if it exists */
private[bitcoins] def binary(

View file

@ -53,7 +53,7 @@ import org.bitcoins.rpc.jsonmodels.{
SignRawTransactionResult
}
import org.bitcoins.rpc.util.{AsyncUtil, RpcUtil}
import org.bitcoins.testkit.util.FileUtil
import org.bitcoins.testkit.util.{FileUtil, TestkitBinaries}
import org.bitcoins.util.ListUtil
import scala.annotation.tailrec
@ -156,25 +156,9 @@ trait BitcoindRpcTestUtil extends BitcoinSLogger {
lazy val network: RegTest.type = RegTest
/** The base directory where binaries needed in tests
* are located. */
private[bitcoins] val baseBinaryDirectory = {
val cwd = Paths.get(Properties.userDir)
val pathsToGoBackFrom = List("eclair-rpc-test",
"bitcoind-rpc-test",
"node-test",
"wallet-test",
"chain-test")
val rootDir = if (pathsToGoBackFrom.exists(cwd.endsWith)) {
cwd.getParent()
} else cwd
rootDir.resolve("binaries")
}
/** The directory that sbt downloads bitcoind binaries into */
private[bitcoins] val binaryDirectory = {
baseBinaryDirectory.resolve("bitcoind")
TestkitBinaries.baseBinaryDirectory.resolve("bitcoind")
}
def newestBitcoindBinary: File = getBinary(BitcoindVersion.newest)

View file

@ -0,0 +1,16 @@
package org.bitcoins.testkit.util
import java.nio.file.{Path, Paths}
import scala.util.Properties
object TestkitBinaries {
/** The base directory where binaries needed in tests
* are located. */
lazy val baseBinaryDirectory: Path = {
val home = Paths.get(Properties.userHome, ".bitcoin-s", "binaries")
home
}
}