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 val logger = streams.value.log
import scala.sys.process._ import scala.sys.process._
val binaryDir = Paths.get("binaries", "bitcoind") val binaryDir = CommonSettings.binariesPath.resolve("bitcoind")
if (Files.notExists(binaryDir)) { if (Files.notExists(binaryDir)) {
logger.info(s"Creating directory for bitcoind binaries: $binaryDir") logger.info(s"Creating directory for bitcoind binaries: $binaryDir")

View file

@ -1,5 +1,7 @@
import java.nio.file._ import java.nio.file._
import scala.util.Properties
name := "bitcoin-s-eclair-rpc" name := "bitcoin-s-eclair-rpc"
libraryDependencies ++= Deps.eclairRpc libraryDependencies ++= Deps.eclairRpc
@ -12,7 +14,7 @@ TaskKeys.downloadEclair := {
val logger = streams.value.log val logger = streams.value.log
import scala.sys.process._ import scala.sys.process._
val binaryDir = Paths.get("binaries", "eclair") val binaryDir = CommonSettings.binariesPath.resolve("eclair")
if (Files.notExists(binaryDir)) { if (Files.notExists(binaryDir)) {
logger.info(s"Creating directory for Eclair binaires: $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)) => case (None, Some(path)) =>
val eclairV = val eclairV =
s"/eclair-node-${EclairRpcClient.version}-${EclairRpcClient.commit}.jar" s"eclair-node-${EclairRpcClient.version}-${EclairRpcClient.commit}.jar"
val fullPath = path + eclairV val fullPath = path + eclairV
val jar = new File(fullPath) val jar = new File(fullPath)

View file

@ -1,4 +1,6 @@
// these two imports are needed for sbt syntax to work // these two imports are needed for sbt syntax to work
import java.nio.file.Paths
import sbt._ import sbt._
import sbt.Keys._ import sbt.Keys._
@ -116,4 +118,6 @@ object CommonSettings {
) ++ testSettings ) ++ testSettings
lazy val prodSettings: Seq[Setting[_]] = settings 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.rpc.util.RpcUtil
import org.bitcoins.testkit.async.TestAsyncUtil import org.bitcoins.testkit.async.TestAsyncUtil
import org.bitcoins.testkit.rpc.{BitcoindRpcTestUtil, TestRpcUtil} import org.bitcoins.testkit.rpc.{BitcoindRpcTestUtil, TestRpcUtil}
import org.bitcoins.testkit.util.TestkitBinaries
import scala.concurrent.duration.{DurationInt, FiniteDuration} import scala.concurrent.duration.{DurationInt, FiniteDuration}
import scala.concurrent.{ExecutionContext, Future} import scala.concurrent.{ExecutionContext, Future}
@ -47,7 +48,7 @@ trait EclairRpcTestUtil extends BitcoinSLogger {
/** Directory where sbt downloads Eclair binaries */ /** Directory where sbt downloads Eclair binaries */
private[bitcoins] val binaryDirectory = private[bitcoins] val binaryDirectory =
BitcoindRpcTestUtil.baseBinaryDirectory.resolve("eclair") TestkitBinaries.baseBinaryDirectory.resolve("eclair")
/** Path to Jar downloaded by Eclair, if it exists */ /** Path to Jar downloaded by Eclair, if it exists */
private[bitcoins] def binary( private[bitcoins] def binary(

View file

@ -53,7 +53,7 @@ import org.bitcoins.rpc.jsonmodels.{
SignRawTransactionResult SignRawTransactionResult
} }
import org.bitcoins.rpc.util.{AsyncUtil, RpcUtil} 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 org.bitcoins.util.ListUtil
import scala.annotation.tailrec import scala.annotation.tailrec
@ -156,25 +156,9 @@ trait BitcoindRpcTestUtil extends BitcoinSLogger {
lazy val network: RegTest.type = RegTest 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 */ /** The directory that sbt downloads bitcoind binaries into */
private[bitcoins] val binaryDirectory = { private[bitcoins] val binaryDirectory = {
baseBinaryDirectory.resolve("bitcoind") TestkitBinaries.baseBinaryDirectory.resolve("bitcoind")
} }
def newestBitcoindBinary: File = getBinary(BitcoindVersion.newest) 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
}
}