From aa64d3a4080035a50790245f865dc07deff0b73c Mon Sep 17 00:00:00 2001 From: Sam Jones Date: Sun, 13 Aug 2017 21:03:25 -0400 Subject: [PATCH] libbitcoin 3.3.0 (new formula) Add formula for libbitcoin, a C++ library for Bitcoin development (https://github.com/libbitcoin/libbitcoin). Before building, the formula downloads and builds libbitcoin's secp256k1 fork (https://github.com/libbitcoin/secp256k1). The formula includes a small C++ program for the test. --- Formula/libbitcoin.rb | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Formula/libbitcoin.rb diff --git a/Formula/libbitcoin.rb b/Formula/libbitcoin.rb new file mode 100644 index 0000000000000..a1d594c4438dd --- /dev/null +++ b/Formula/libbitcoin.rb @@ -0,0 +1,54 @@ +class Libbitcoin < Formula + desc "Bitcoin Cross-Platform C++ Development Toolkit" + homepage "https://libbitcoin.org/" + url "https://github.com/libbitcoin/libbitcoin/archive/v3.3.0.tar.gz" + sha256 "391913a73615afcb42c6a7c4736f23888cfc999a899fc38395ddcbd560251d94" + + depends_on "autoconf" => :build + depends_on "automake" => :build + depends_on "libtool" => :build + depends_on "pkg-config" => :build + depends_on "boost" + + resource "secp256k1" do + url "https://github.com/libbitcoin/secp256k1/archive/v0.1.0.13.tar.gz" + sha256 "9e48dbc88d0fb5646d40ea12df9375c577f0e77525e49833fb744d3c2a69e727" + end + + def install + resource("secp256k1").stage do + system "./autogen.sh" + system "./configure", "--disable-dependency-tracking", + "--disable-silent-rules", + "--prefix=#{libexec}", + "--enable-module-recovery" + system "make", "install" + end + + ENV.prepend_path "PKG_CONFIG_PATH", "#{libexec}/lib/pkgconfig" + + system "./autogen.sh" + system "./configure", "--disable-dependency-tracking", + "--disable-silent-rules", + "--prefix=#{prefix}" + system "make", "install" + end + + test do + (testpath/"test.cpp").write <<-EOS.undent + #include + int main() { + const auto block = bc::chain::block::genesis_mainnet(); + const auto& tx = block.transactions().front(); + const auto& input = tx.inputs().front(); + const auto script = input.script().to_data(false); + std::string message(script.begin() + sizeof(uint64_t), script.end()); + bc::cout << message << std::endl; + return 0; + } + EOS + system ENV.cxx, "-std=c++11", "test.cpp", "-L#{lib}", + "-lbitcoin", "-lboost_system", "-o", "test" + system "./test" + end +end