Package: guix-patches;
Reported by: Rouby Pierre-Antoine <pierre-antoine.rouby <at> inria.fr>
Date: Mon, 28 May 2018 13:26:01 UTC
Severity: normal
Tags: patch
Done: ludo <at> gnu.org (Ludovic Courtès)
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: help-debbugs <at> gnu.org (GNU bug Tracking System) To: ludo <at> gnu.org (Ludovic Courtès) Cc: tracker <at> debbugs.gnu.org Subject: bug#31621: closed ([PATCH 1/3] gnu: Add hpcguix-web.) Date: Fri, 01 Jun 2018 08:06:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Fri, 01 Jun 2018 10:05:23 +0200 with message-id <871sdrc4os.fsf <at> inria.fr> and subject line Re: [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web. has caused the debbugs.gnu.org bug report #31621, regarding [PATCH 1/3] gnu: Add hpcguix-web. to be marked as done. (If you believe you have received this mail in error, please contact help-debbugs <at> gnu.org.) -- 31621: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=31621 GNU Bug Tracking System Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Rouby Pierre-Antoine <pierre-antoine.rouby <at> inria.fr> To: guix-patches <at> gnu.org Cc: Rouby Pierre-Antoine <pierre-antoine.rouby <at> inria.fr> Subject: [PATCH 1/3] gnu: Add hpcguix-web. Date: Mon, 28 May 2018 15:24:50 +0200* gnu/package/web.scm (hpcguix-web): New variable. --- gnu/packages/web.scm | 80 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 9f1609591..2c69490f8 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -25,6 +25,7 @@ ;;; Copyright © 2017 Pierre Langlois <pierre.langlois <at> gmx.com> ;;; Copyright © 2017 Rutger Helling <rhelling <at> mykolab.com> ;;; Copyright © 2018 Julien Lepiller <julien <at> lepiller.eu> +;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby <at> inria.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -82,6 +83,7 @@ #:use-module (gnu packages gnuzilla) #:use-module (gnu packages gperf) #:use-module (gnu packages gtk) + #:use-module (gnu packages guile) #:use-module (gnu packages java) #:use-module (gnu packages javascript) #:use-module (gnu packages jemalloc) @@ -96,6 +98,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages openstack) #:use-module (gnu packages base) + #:use-module (gnu packages package-management) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) #:use-module (gnu packages python) @@ -6428,3 +6431,80 @@ compressed JSON header blocks. @item @command{inflatehd} converts such compressed headers back to JSON pairs. @end itemize\n") (license l:expat))) + +(define-public hpcguix-web + (package + (name "hpcguix-web") + (version "0.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/UMCUGenetics/hpcguix-web.git") + (commit "3e3b9a3a406ee2dcd10c96cbedcc16ea378e8e8f"))) + (sha256 + (base32 + "01888byi9mh7d3adcmwhmg44kg98g92r44ilc4wd7an66mjnxpry")))) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26) + (ice-9 popen) + (ice-9 rdelim)) + + #:phases + (modify-phases %standard-phases + (add-before 'configure 'autoconf + (lambda _ + (setenv "GUILE_AUTO_COMPILE" "0") + (setenv "XDG_CACHE_HOME" (getcwd)) + (invoke "autoreconf" "-vif"))) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (guix (assoc-ref inputs "guix")) + (guile (assoc-ref inputs "guile")) + (json (assoc-ref inputs "guile-json")) + (guile-cm (assoc-ref inputs + "guile-commonmark")) + (deps (list guile guile-cm guix json)) + (effective + (read-line + (open-pipe* OPEN_READ + (string-append guile "/bin/guile") + "-c" "(display (effective-version))"))) + (path (string-join + (map (cut string-append <> + "/share/guile/site/" + effective) + deps) + ":")) + (gopath (string-join + (map (cut string-append <> + "/lib/guile/" effective + "/site-ccache") + deps) + ":"))) + (wrap-program (string-append out "/bin/run") + `("GUILE_LOAD_PATH" ":" prefix (,path)) + `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath))) + + #t)))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("uglify-js" ,uglify-js) + ("pkg-config" ,pkg-config))) + (inputs + `(("guix" ,guix))) + (propagated-inputs + `(("guile" ,guile-2.2) + ("guile-commonmark" ,guile-commonmark) + ("guile-json" ,guile-json))) + (home-page "https://github.com/UMCUGenetics/hpcguix-web") + (synopsis "Web interface for cluster deployments of Guix") + (description "This package provides a web interface to the list of +packages provided by Guix. The list of packages is searchable and +provides instructions on how to use Guix in a shared HPC +environment.") + (license l:agpl3+))) -- 2.17.0
[Message part 3 (message/rfc822, inline)]
From: ludo <at> gnu.org (Ludovic Courtès) To: Rouby Pierre-Antoine <pierre-antoine.rouby <at> inria.fr> Cc: Roel Janssen <roel <at> gnu.org>, 31621-done <at> debbugs.gnu.org, ng0 <at> n0.is Subject: Re: [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web. Date: Fri, 01 Jun 2018 10:05:23 +0200[Message part 4 (text/plain, inline)]Hello, (+Cc: Roel.) Rouby Pierre-Antoine <pierre-antoine.rouby <at> inria.fr> skribis: > * gnu/service/web.scm (<hpcguix-web-configuration>): New record-type. > (%hpcguix-web-accounts): New variable. > (%hpcguix-web-activation,hpcguix-web-shepherd-service, > hpcguix-web-service-type): New procedures. > * doc/guix.texi (Web Services): Add 'hpcguix-web'. I found the test ;-), sorry for the confusion. I squashed the test with the other commit (because they logically belong to the same change), and I applied it with the changes below. Thank you! Ludo’.[Message part 5 (text/x-patch, inline)]diff --git a/doc/guix.texi b/doc/guix.texi index 9b9ce0f77..3b5078741 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -16163,30 +16163,32 @@ A simple setup for cat-avatar-generator can look like this: @subsubheading Hpcguix-web @cindex hpcguix-web -The @code{hpcguix-web} is web interface to @code{Guix} packages visualizations. +The @uref{hpcguix-web, https://github.com/UMCUGenetics/hpcguix-web/} +program is a customizable web interface to browse Guix packages, +initially designed for users of high-performance computing (HPC) +clusters. @defvr {Scheme Variable} hpcguix-web-service-type -A service type for @code{hpcguix-web}. +The service type for @code{hpcguix-web}. @end defvr @deftp {Data Type} hpcguix-web-configuration -Data Type for @code{hpcguix-web} service configuration. +Data type for the hpcguix-web service configuration. @table @asis @item @code{specs} -The @code{hpcguix-web} @code{gexp} service -@url{https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm, -configuration} +A gexp (@pxref{G-Expressions}) specifying the hpcguix-web service +configuration. The main items available in this spec are: @table @asis @item @code{title-prefix} (default: @code{"hpcguix | "}) The page title prefix. @item @code{guix-command} (default: @code{"guix"}) -The @code{Guix} command. +The @command{guix} command. @item @code{package-filter-proc} (default: @code{(const #t)}) -Package filter. +A procedure specifying how to filter packages that are displayed. @item @code{package-page-extension-proc} (default: @code{(const '())}) Extension package for @code{hpcguix-web}. @@ -16194,17 +16196,26 @@ Extension package for @code{hpcguix-web}. @item @code{menu} (default: @code{'()}) Additional entry in page @code{menu}. @end table + +See the hpcguix-web repository for a +@uref{https://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm, +complete example}. + +@item @code{package} (default: @code{hpcguix-web}) +The hpcguix-web package to use. @end table @end deftp +A typical hpcguix-web service declaration looks like this: + @example -(services (cons* (service hpcguix-web-service-type - (hpcguix-web-configuration - (specs - #~(define site-config - (hpcweb-configuration - (title-prefix "Guix-HPC - ") - (menu '(("/about" "ABOUT")))))))) +(service hpcguix-web-service-type + (hpcguix-web-configuration + (specs + #~(define site-config + (hpcweb-configuration + (title-prefix "Guix-HPC - ") + (menu '(("/about" "ABOUT")))))))) @end example @node Certificate Services diff --git a/gnu/services/web.scm b/gnu/services/web.scm index d8acc9549..aae2f3db0 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -902,13 +902,15 @@ a webserver.") (root #~(string-append #$package "/share/web/cat-avatar-generator")))))) + (define-record-type* <hpcguix-web-configuration> - hpcguix-web-configuration - make-hpcguix-web-configuration + hpcguix-web-configuration make-hpcguix-web-configuration hpcguix-web-configuration? + (package hpcguix-web-package (default hpcguix-web)) ;<package> + ;; Specs is gexp of hpcguix-web configuration file - (specs hpcguix-web-configuration-specs)) + (specs hpcguix-web-configuration-specs)) (define %hpcguix-web-accounts (list (user-group @@ -922,7 +924,7 @@ a webserver.") (home-directory "/var/empty") (shell (file-append shadow "/sbin/nologin"))))) -(define (%hpcguix-web-activation config) +(define %hpcguix-web-activation #~(begin (use-modules (guix build utils)) (let ((home-dir "/var/cache/guix/web") @@ -932,7 +934,8 @@ a webserver.") (chmod home-dir #o755)))) (define (hpcguix-web-shepherd-service config) - (let* ((specs (hpcguix-web-configuration-specs config))) + (let ((specs (hpcguix-web-configuration-specs config)) + (hpcguix-web (hpcguix-web-package config))) (with-imported-modules (source-module-closure '((gnu build shepherd))) (shepherd-service @@ -940,25 +943,23 @@ a webserver.") (provision '(hpcguix-web)) (requirement '(networking)) (start #~(make-forkexec-constructor - (list (string-append #$hpcguix-web "/bin/run") + (list #$(file-append hpcguix-web "/bin/run") (string-append "--config=" #$(scheme-file "hpcguix-web.scm" specs))) #:user "hpcguix-web" #:group "hpcguix-web" #:environment-variables - (list (string-append "XDG_CACHE_HOME=" - "/var/cache")))) + (list "XDG_CACHE_HOME=/var/cache"))) (stop #~(make-kill-destructor)))))) (define hpcguix-web-service-type (service-type (name 'hpcguix-web) - (description - "Run hpcguix-web daemon @command{run}.") + (description "Run the hpcguix-web server.") (extensions (list (service-extension account-service-type (const %hpcguix-web-accounts)) (service-extension activation-service-type - %hpcguix-web-activation) + (const %hpcguix-web-activation)) (service-extension shepherd-root-service-type (compose list hpcguix-web-shepherd-service)))))) diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm index 474a5bdb5..a6bf6efcf 100644 --- a/gnu/tests/web.scm +++ b/gnu/tests/web.scm @@ -286,7 +286,7 @@ HTTP-PORT, along with php-fpm." ;;; -;;; HPCGUIX-WEB +;;; hpcguix-web ;;; (define* (run-hpcguix-web-server-test name test-os) @@ -329,15 +329,14 @@ HTTP-PORT, along with php-fpm." (match (assq-ref response-parts 'running) ((pid) (number? pid)))))) marionette)) - + (test-equal "http-get" 200 - (let-values - (((response text) - (begin - (sleep 3) ; HACK wait service available - (http-get "http://localhost:8080")))) - (response-code response))) + (begin + (wait-for-tcp-port 5000 marionette) + (let-values (((response text) + (http-get "http://localhost:8080"))) + (response-code response)))) (test-end) (exit (= (test-runner-fail-count (test-runner-current)) 0))))) @@ -360,5 +359,5 @@ HTTP-PORT, along with php-fpm." (define %test-hpcguix-web (system-test (name "hpcguix-web") - (description "Connect to a running HPCGUIX-WEB server.") + (description "Connect to a running hpcguix-web server.") (value (run-hpcguix-web-server-test name %hpcguix-web-os))))
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.