summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars-Dominik Braun <ldb@leibniz-psychology.org>2020-03-03 10:38:40 +0100
committerGuix Patches Tester <>2020-03-05 20:00:29 +0000
commit26be4ac41f11c2c1796571987ab80898daa70917 (patch)
tree0e950cf21e5cffe476b1c49008b154c1aeca585c
parent5d0f33c2ab9aa0cdc51a35525e895a603eac78ea (diff)
downloadguix-patches-26be4ac41f11c2c1796571987ab80898daa70917.tar
guix-patches-26be4ac41f11c2c1796571987ab80898daa70917.tar.gz
gnu: Add couchdb
* gnu/packages/databases.scm (couchdb): New variable
-rw-r--r--gnu/packages/databases.scm93
1 files changed, 93 insertions, 0 deletions
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index a8ce065a70..f2b2de25b3 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -74,14 +74,17 @@
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages dbm)
#:use-module (gnu packages emacs)
+ #:use-module (gnu packages erlang)
#:use-module (gnu packages flex)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gnuzilla)
#:use-module (gnu packages guile)
#:use-module (gnu packages time)
#:use-module (gnu packages golang)
+ #:use-module (gnu packages icu4c)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages language)
#:use-module (gnu packages libevent)
@@ -3368,3 +3371,93 @@ The drivers officially supported by @code{libdbi} are:
@end itemize")
(home-page "http://libdbi-drivers.sourceforge.net/")
(license license:lgpl2.1+)))
+
+(define-public couchdb
+ (package
+ (name "couchdb")
+ (version "3.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://apache/couchdb/source/" version
+ "/apache-couchdb-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1nbz2vafzhp9jv8xna8cfnf99jwn22xs4ydzm426qx7yf0dbn2fi"))
+ (modules '((guix build utils)))
+ ;; remove pre-built binary, will be rebuilt
+ (snippet '(begin (delete-file "bin/rebar") #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/couch/rebar.config.script"
+ (("/usr/include/mozjs-60")
+ (string-append (assoc-ref inputs "mozjs") "/include/mozjs-60")))
+ (substitute* "Makefile"
+ ;; disable python-black code formatting
+ (("check: all python-black") "check: all")
+ ;; disable venv creation and package installation
+ (("python3 -m venv .venv") "true")
+ (("\\.venv/bin/python3 -m pip install -r requirements.txt") "true")
+ ;; do not test elixir, depends on `mix` and several external dependencies
+ (("@\\$\\(MAKE\\) elixir") "")
+ ;; use system python
+ (("\\.venv/bin/python3")
+ (string-append (assoc-ref inputs "python") "/bin/python3")))
+ #t))
+ (add-after 'unpack 'set-env
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; make sure rebar finds a C compiler
+ (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
+ #t))
+ (replace 'configure
+ (lambda* (#:key inputs #:allow-other-keys)
+ (invoke "./configure" "--skip-deps" "--spidermonkey-version" "60")
+ #t))
+ (replace 'build
+ (lambda _
+ ;; create a release build
+ (invoke "make" "release")
+ #t))
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; couchdb tries to bundle erts, use our own copy
+ (let ((erts-version "10.3.5.9"))
+ (delete-file-recursively
+ (string-append "rel/couchdb/erts-" erts-version))
+ (substitute* '("rel/couchdb/bin/couchdb" "rel/couchdb/bin/remsh")
+ (("ROOTDIR=\\$\\{ERTS_BIN_DIR%/\\*\\}")
+ (string-append "ROOTDIR=" (assoc-ref outputs "out")))
+ (("BINDIR=\"[^\"]+\"")
+ (string-append
+ "BINDIR=" (assoc-ref inputs "erlang")
+ "/lib/erlang/erts-" erts-version "/bin")))
+ (copy-recursively "rel/couchdb" (assoc-ref outputs "out")))
+ #t)))))
+ (native-inputs
+ ;; for tests
+ `(("python" ,python)
+ ("python-nose" ,python-nose)
+ ("python-requests" ,python-requests)
+ ("python-hypothesis" ,python-hypothesis)
+ ("curl" ,curl)
+ ;; for documentation
+ ("python-sphinx" ,python-sphinx)))
+ (inputs
+ `(("erlang" ,erlang)
+ ("icu4c" ,icu4c)
+ ("openssl" ,openssl)
+ ("mozjs" ,mozjs-60)))
+ (home-page "https://couchdb.apache.org/")
+ (synopsis "Document-oriented NoSQL database, implemented in Erlang")
+ (description "CouchDB is a database that completely embraces the web. Store
+your data with JSON documents. Access your documents with your web browser, via
+HTTP. Query, combine, and transform your documents with JavaScript. CouchDB
+works well with modern web and mobile apps. You can distribute your data,
+efficiently using CouchDB’s incremental replication. CouchDB supports
+master-master setups with automatic conflict detection.")
+ (license license:asl2.0)))