all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Christopher Allan Webber <cwebber@dustycloud.org>
To: guix-devel@gnu.org
Subject: [PATCH] gnu: Add stellar-core.
Date: Fri, 19 Feb 2016 14:04:16 -0800	[thread overview]
Message-ID: <874md4pdai.fsf@dustycloud.org> (raw)

[-- Attachment #1: 0001-gnu-Add-stellar-core.patch --]
[-- Type: text/x-diff, Size: 6567 bytes --]

From 338d0f3246ede034fde0eb9a3be1b640159e3bd9 Mon Sep 17 00:00:00 2001
From: Christopher Allan Webber <cwebber@dustycloud.org>
Date: Fri, 19 Feb 2016 13:47:19 -0800
Subject: [PATCH] gnu: Add stellar-core.

* gnu/packages/finance.scm (stellar-core): New variable.
* gnu/packages/patches/stellar-core-find-mk-files.patch: New file.
---
 gnu/packages/finance.scm                           | 75 ++++++++++++++++++++++
 .../patches/stellar-core-find-mk-files.patch       | 33 ++++++++++
 2 files changed, 108 insertions(+)
 create mode 100644 gnu/packages/patches/stellar-core-find-mk-files.patch

diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index e9487d4..c461ca7 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,9 +22,15 @@
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix download)
+ #:use-module (guix git-download)
  #:use-module (guix build utils)
  #:use-module (guix build-system gnu)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages autogen)
+ #:use-module (gnu packages autotools)
  #:use-module (gnu packages boost)
+ #:use-module (gnu packages bison)
+ #:use-module (gnu packages flex)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages pkg-config)
@@ -81,3 +88,71 @@ collectively by the network.  Bitcoin Core is the reference implementation
 of the bitcoin protocol.  This package provides the Bitcoin Core command
 line client and a client based on Qt.")
     (license license:expat)))
+
+(define-public stellar-core
+  (package
+    (name "stellar-core")
+    (version "0.4.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/stellar/stellar-core.git")
+                    (commit "v0.4.1")
+                    (recursive? #t)))
+              (sha256
+               (base32
+                "15mm1jk2kk5x34vn9gqwp7ijhsmhm6dwymznz7hqvjj8kjd088fi"))
+              ;; This is a pain in the butt.
+              ;; autogen.sh calls make-mks which does git ls-files, which
+              ;; obviously we can't do.
+              ;; As a workaround, we provide the results of the
+              ;; .mk files generated by this script, but if a new version
+              ;; comes out, you might need to provide new versions
+              ;; of this patch by running autogen and then adding the results
+              ;; manually!  Not nice at all.
+              ;; Alternative paths forward might be to de-bundle things
+              ;; or maybe run autogen as part of the git-fetch phase...
+              ;; which seems hard to do.
+              ;; Anyway, you'll need to provide the contents of:
+              ;;  - src/src.mk
+              ;;  - lib/medida.mk
+              ;;  - lib/lib.mk
+              (patches (list (search-patch
+                              "stellar-core-find-mk-files.patch")))))
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'autogen-self-and-submodules
+                    (lambda _
+                      (and (zero? (system* "sh" "autogen.sh"
+                                           ;; we'll handle submodules manually
+                                           "--skip-submodules"))
+                           ;; Run autogen on libsodium too.
+                           ;; In the future, we might also have to manually
+                           ;; run this on other git submodules which are
+                           ;; introduced
+                           (begin (chdir "lib/libsodium") #t)
+                           (zero? (system* "sh" "autogen.sh"))
+                           (begin (chdir "../..") #t)))))
+       ;; Tries to run tests with a running postgres server...
+       ;; well, sorry, we can't do that!
+       #:tests? #f))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("autogen" ,autogen)
+       ;; used by libsodium git submodule
+       ("libtool" ,libtool)))
+    (inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("postgresql" ,postgresql)))
+    (home-page "https://www.stellar.org/")
+    (synopsis "Communicate with the Stellar peer-to-peer network")
+    (description "Stellar-core is a replicated state machine that
+maintains a local copy of a cryptographic ledger and processes
+transactions against it, in consensus with a set of peers.
+It implements the Stellar Consensus Protocol, a federated consensus
+protocol.")
+    (license license:asl2.0)))
diff --git a/gnu/packages/patches/stellar-core-find-mk-files.patch b/gnu/packages/patches/stellar-core-find-mk-files.patch
new file mode 100644
index 0000000..2b26171
--- /dev/null
+++ b/gnu/packages/patches/stellar-core-find-mk-files.patch
@@ -0,0 +1,33 @@
+Use "find" instead of "git ls-files" to fill in the src/src.mk file
+
+(Guix removes the .git directory, so we have to do this!)
+
+diff --git a/make-mks b/make-mks
+index f3edf10..5972ebf 100755
+--- a/make-mks
++++ b/make-mks
+@@ -6,21 +6,17 @@ case "$0" in
+ 	;;
+ esac
+ 
+-# Bail if not under git
+-git rev-parse
+-
+ trap 'rm -f src/src.mk lib/medida.mk lib/lib.mk' 0
+ 
+ message="# This file was generated by make-mks; don't edit it by hand."
+ 
+-# Use only files git knows about, to avoid picking up autogenrated
+-# files or other random cruft.  When adding a new file foo.cpp, you
+-# must run "git add -N foo.cpp" before running this script.
++# Since Guix is running not from git, we can just use find to fill
++# in this information instead of `git lsfiles`
+ (cd src
+  echo "$message"
+- echo "SRC_H_FILES" = $(git ls-files '*.h' '*.[ih]pp')
+- echo "SRC_CXX_FILES" = $(git ls-files '*.cpp')
+- echo "SRC_X_FILES" = $(git ls-files '*.x')
++ echo "SRC_H_FILES" = $(find . -name '*.h') $(find . -name '*.[ih]pp')
++ echo "SRC_CXX_FILES" = $(find . -name '*.cpp')
++ echo "SRC_X_FILES" = $(find . -name '*.x')
+ ) > src/src.mk
-- 
2.1.4

             reply	other threads:[~2016-02-19 22:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-19 22:04 Christopher Allan Webber [this message]
2016-02-19 22:37 ` [PATCH] gnu: Add stellar-core Christopher Allan Webber
2016-02-20  4:56   ` Leo Famulari
2016-02-20  5:19     ` Christopher Allan Webber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874md4pdai.fsf@dustycloud.org \
    --to=cwebber@dustycloud.org \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.