From 1683e4863af430fa85c790dcca600fad538432e8 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 15 Sep 2019 19:16:06 +0100 Subject: [PATCH] gnu: Add guix-data-service. * gnu/packages/web.scm (guix-data-service): New variable. --- gnu/packages/web.scm | 95 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 4509f63f1b..01c7288caa 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -56,6 +56,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix cvs-download) #:use-module (guix hg-download) @@ -77,6 +78,8 @@ #:use-module (gnu packages check) #:use-module (gnu packages documentation) #:use-module (gnu packages docbook) + #:use-module (gnu packages emacs) + #:use-module (gnu packages emacs-xyz) #:use-module (gnu packages autotools) #:use-module (gnu packages compression) #:use-module (gnu packages curl) @@ -4013,6 +4016,98 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") (define-public python2-feedparser (package-with-python2 python-feedparser)) +(define-public guix-data-service + (let ((commit "bb94f6dd05a33135fa661b86d35d203c0c099dba") + (revision "1")) + (package + (name "guix-data-service") + (version (string-append "0.0.1-" revision "." (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/guix/data-service.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1y6s4igjvi0293z4d4hbgwifs8avcam71qhis9z4f8mjz6w7vcpb")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; TODO Tests require PostgreSQL + #:modules ((guix build utils) + (guix build gnu-build-system) + (ice-9 rdelim) + (ice-9 popen)) + #:phases + (modify-phases %standard-phases + (add-after 'set-paths 'set-GUIX_ENVIRONMENT + (lambda* (#:key inputs #:allow-other-keys) + ;; This means guix.el finds the Emacs modules + (setenv "GUIX_ENVIRONMENT" + (assoc-ref inputs "emacs-with-modules")) + #t)) + (add-before 'build 'set-GUILE_AUTO_COMPILE + (lambda _ + ;; To avoid errors relating to guild + (setenv "GUILE_AUTO_COMPILE" "0") + #t)) + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (guile (assoc-ref inputs "guile")) + (guile-effective-version + (read-line + (open-pipe* OPEN_READ + (string-append guile "/bin/guile") + "-c" "(display (effective-version))"))) + (scm (string-append out "/share/guile/site/" + guile-effective-version)) + (go (string-append out "/lib/guile/" + guile-effective-version + "/site-ccache"))) + (for-each + (lambda (file) + (wrap-program (string-append bin "/" file) + `("PATH" ":" prefix + (,bin)) + `("GUILE_LOAD_PATH" ":" prefix + (,scm ,(getenv "GUILE_LOAD_PATH"))) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix + (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))) + '("guix-data-service" + "guix-data-service-process-branch-updated-email" + "guix-data-service-process-job" + "guix-data-service-process-jobs" + "guix-data-service-query-build-servers")) + #t))) + (delete 'strip)))) ; As the .go files aren't compatible + (inputs + `(("guix" ,guix) + ("guile-fibers" ,guile-fibers) + ("guile-json" ,guile-json-3) + ("guile-email" ,guile-email) + ("guile-squee" ,guile-squee) + ("postgresql" ,postgresql) + ("sqitch" ,sqitch))) + (native-inputs + `(("guile" ,guile-2.2) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("emacs-with-modules" ,(directory-union + "emacs-union" + (list emacs-no-x + emacs-htmlize))) + ("pkg-config" ,pkg-config))) + (synopsis "Store and provide data about GNU Guix") + (description + "The Guix Data Service stores data about GNU Guix, and provides this +through a web interface. It supports listening to the guix-commits mailing +list to find out about new revisions, then loads the data from these in to a +PostgreSQL database.") + (home-page "http://data.guix.gnu.org/") + (license license:agpl3+)))) + (define-public gumbo-parser (package (name "gumbo-parser")