about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEfraim Flashner2019-07-09 04:07:43 -0500
committerEfraim Flashner2019-07-09 04:32:01 -0500
commitbf39703ad44364ccb3513fc4f0940408fd715fbf (patch)
tree439cb1fc235cba5aa669ac500efa6c994be3de5c
parentec1280b48c11762699ffa84c8789a4dab2b56b4a (diff)
downloadguix-bioinformatics-bf39703ad44364ccb3513fc4f0940408fd715fbf.tar.gz
gn: Add mod-python.
* gn/packages/web.scm (mod-python): New variable.
-rw-r--r--gn/packages/web.scm53
1 files changed, 53 insertions, 0 deletions
diff --git a/gn/packages/web.scm b/gn/packages/web.scm
index 6c426e1..0cc8663 100644
--- a/gn/packages/web.scm
+++ b/gn/packages/web.scm
@@ -2,6 +2,8 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages web)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -126,3 +128,54 @@ extensive prebuilt components, and powerful plugins built on jQuery.")
     (synopsis "Bootstrap minimal")
     (description "Bootstrap native does not use jquery.")
     (license license:expat))))
+
+(define-public mod-python
+  (let ((commit "902bb8700e2c45ffd96b78e2f1146a3c101be7f5")
+        (revision "1"))
+    (package
+      (name "mod-python")
+      (version (git-version "3.5.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/grisha/mod_python.git")
+                 (commit commit)))
+          (file-name (git-file-name name version))
+          (sha256
+           (base32
+            "0lqlpldw11dml24n05305xzpbjlkay497djjczvgsj5v8djkxcq0"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:tests? #f ; tests require a running apache server
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-source
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out    (assoc-ref outputs "out")))
+                 (substitute* "Makefile.in"
+                   ;; Don't use httpd's prefix
+                   (("LIBEXECDIR=.*") (string-append "LIBEXECDIR=" out "/modules\n")))
+                 (substitute* "scripts/Makefile.in"
+                   (("BINDIR=.*") (string-append "BINDIR=" out "/bin")))
+                 (substitute* "dist/setup.py.in"
+                   ;; we want out modules dir, not httpd's
+                   ;; If we want SYSCONFDIR to be the same as httpd's :
+                   ;; (("@SYSCONFDIR@") (string-append (assoc-ref %build-inputs "httpd") "/etc/httpd"))
+                   (("@LIBEXECDIR@") (string-append out "/modules")))
+                 (substitute* "dist/Makefile.in"
+                   (("\\$\\(DESTDIR\\)") "/")
+                   (("--root") (string-append "--prefix=" out " --root"))))
+               #t)))))
+      (inputs
+       `(("httpd" ,httpd)
+         ("python" ,python-2))) ; does not seem to build with python3.7+
+      (native-inputs `(("flex" ,(@ (gnu packages flex) flex))))
+      (home-page "http://modpython.org/")
+      (synopsis "Apache/Python Integration")
+      (description "Mod_python is an Apache module that embeds the Python
+interpreter within the server.  With mod_python you can write web-based
+applications in Python that will run many times faster than traditional CGI and
+will have access to advanced features such as ability to retain database
+connections and other data between hits and access to Apache internals.")
+      (license license:asl2.0))))