summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/emacs-xyz.scm49
1 files changed, 49 insertions, 0 deletions
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 34b17f7657..5461a3a62c 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -67,6 +67,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system emacs)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system perl)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
@@ -92,6 +93,7 @@
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages w3m)
@@ -12769,3 +12771,50 @@ Using this RPC stack, Emacs can communicate with the peer process
 smoothly.  Because the protocol employs S-expression encoding and consists of
 asynchronous communications, the RPC response is fairly good.")
       (license license:gpl3+))))
+
+(define-public emacs-edbi
+  (let ((commit "6f50aaf4bde75255221f2292c7a4ad3fa9d918c0"))
+    (package
+      (name "emacs-edbi")
+      (version (git-version "0.1.3" "1" commit))
+      (home-page "https://github.com/kiwanami/emacs-edbi")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0x0igyvdcm4863n7zndvcv6wgzwgn7324cbfjja6xd7r0k936zdy"))
+                (file-name (git-file-name name version))))
+      (build-system emacs-build-system)
+      (inputs
+       `(("perl" ,perl)
+         ("perl-rpc-epc-service" ,perl-rpc-epc-service)
+         ("perl-dbi" ,perl-dbi)
+         ;; TODO: Adding support for perl-dbd-mysql and others would
+         ;; dramatically increase the closure size.  Make several packages?
+         ("perl-dbd-sqlite" ,perl-dbd-sqlite)))
+      (propagated-inputs
+       `(("emacs-e2wm" ,emacs-e2wm)
+         ("emacs-epc" ,emacs-epc)))
+      (arguments
+       `(#:include '("\\.el$" "\\.pl$")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'install 'patch-path
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((perl (assoc-ref inputs "perl"))
+                     (dir (string-append  (assoc-ref outputs "out")
+                                          "/share/emacs/site-lisp/guix.d/edbi-"
+                                          ,version)))
+                 (substitute* (string-append dir  "/edbi.el")
+                   (("\"perl\"") (string-append "\"" perl "/bin/perl\"")))
+                 (chmod (string-append dir "/edbi-bridge.pl") #o555)
+                 (wrap-program (string-append dir "/edbi-bridge.pl")
+                   `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))
+                 #t))))))
+      (synopsis "Database Interface for Emacs Lisp")
+      (description "This program connects the database server through Perl's
+DBI, and provides DB-accessing API and the simple management UI.")
+      (license license:gpl3+))))