* [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web.
@ 2018-05-28 13:24 Rouby Pierre-Antoine
2018-05-28 13:28 ` [bug#31621] [PATCH 2/3] gnu: service: " Rouby Pierre-Antoine
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Rouby Pierre-Antoine @ 2018-05-28 13:24 UTC (permalink / raw)
To: 31621; +Cc: Rouby Pierre-Antoine
* 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@gmx.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@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
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web.
2018-05-28 13:24 [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web Rouby Pierre-Antoine
@ 2018-05-28 13:28 ` Rouby Pierre-Antoine
2018-05-29 8:31 ` Rouby Pierre-Antoine
2018-05-29 8:52 ` Nils Gillmann
2018-05-28 13:28 ` [bug#31621] [PATCH 3/3] gnu: tests: " Rouby Pierre-Antoine
` (2 subsequent siblings)
3 siblings, 2 replies; 13+ messages in thread
From: Rouby Pierre-Antoine @ 2018-05-28 13:28 UTC (permalink / raw)
To: 31621; +Cc: Rouby Pierre-Antoine
* gnu/service/web.scm (<hpcguix-web-configuration>): New record-type.
---
gnu/services/web.scm | 71 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 70 insertions(+), 1 deletion(-)
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index b336a8dd3..d8acc9549 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,11 +26,14 @@
(define-module (gnu services web)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
+ #:use-module (gnu system pam)
#:use-module (gnu system shadow)
#:use-module (gnu packages admin)
#:use-module (gnu packages web)
#:use-module (gnu packages php)
+ #:use-module (gnu packages guile)
#:use-module (guix records)
+ #:use-module (guix modules)
#:use-module (guix gexp)
#:use-module ((guix utils) #:select (version-major))
#:use-module ((guix packages) #:select (package-version))
@@ -155,7 +159,11 @@
php-fpm-service-type
nginx-php-location
- cat-avatar-generator-service))
+ cat-avatar-generator-service
+
+ hpcguix-web-configuration
+ hpcguix-web-configuration?
+ hpcguix-web-service-type))
;;; Commentary:
;;;
@@ -893,3 +901,64 @@ a webserver.")
(nginx-server-configuration-locations configuration)))
(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?
+
+ ;; Specs is gexp of hpcguix-web configuration file
+ (specs hpcguix-web-configuration-specs))
+
+(define %hpcguix-web-accounts
+ (list (user-group
+ (name "hpcguix-web")
+ (system? #t))
+ (user-account
+ (name "hpcguix-web")
+ (group "hpcguix-web")
+ (system? #t)
+ (comment "hpcguix-web")
+ (home-directory "/var/empty")
+ (shell (file-append shadow "/sbin/nologin")))))
+
+(define (%hpcguix-web-activation config)
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((home-dir "/var/cache/guix/web")
+ (user (getpwnam "hpcguix-web")))
+ (mkdir-p home-dir)
+ (chown home-dir (passwd:uid user) (passwd:gid user))
+ (chmod home-dir #o755))))
+
+(define (hpcguix-web-shepherd-service config)
+ (let* ((specs (hpcguix-web-configuration-specs config)))
+ (with-imported-modules (source-module-closure
+ '((gnu build shepherd)))
+ (shepherd-service
+ (documentation "hpcguix-web daemon")
+ (provision '(hpcguix-web))
+ (requirement '(networking))
+ (start #~(make-forkexec-constructor
+ (list (string-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"))))
+ (stop #~(make-kill-destructor))))))
+
+(define hpcguix-web-service-type
+ (service-type
+ (name 'hpcguix-web)
+ (description
+ "Run hpcguix-web daemon @command{run}.")
+ (extensions
+ (list (service-extension account-service-type
+ (const %hpcguix-web-accounts))
+ (service-extension activation-service-type
+ %hpcguix-web-activation)
+ (service-extension shepherd-root-service-type
+ (compose list hpcguix-web-shepherd-service))))))
--
2.17.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 3/3] gnu: tests: Add hpcguix-web.
2018-05-28 13:24 [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web Rouby Pierre-Antoine
2018-05-28 13:28 ` [bug#31621] [PATCH 2/3] gnu: service: " Rouby Pierre-Antoine
@ 2018-05-28 13:28 ` Rouby Pierre-Antoine
2018-05-29 8:57 ` [bug#31621] [PATCH 1/3] gnu: " Nils Gillmann
2018-06-01 8:05 ` bug#31621: [PATCH 2/3] gnu: service: " Ludovic Courtès
3 siblings, 0 replies; 13+ messages in thread
From: Rouby Pierre-Antoine @ 2018-05-28 13:28 UTC (permalink / raw)
To: 31621; +Cc: Rouby Pierre-Antoine
* gnu/tests/web.scm (run-hpcguix-web-server-test): New procedure.
(%hpcguix-web-specs, %hpcguix-web-os, %test-hpcguix-web): New variable.
---
gnu/tests/web.scm | 83 ++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 82 insertions(+), 1 deletion(-)
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 1912f8f79..474a5bdb5 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -31,7 +32,8 @@
#:use-module (guix store)
#:export (%test-httpd
%test-nginx
- %test-php-fpm))
+ %test-php-fpm
+ %test-hpcguix-web))
(define %index.html-contents
;; Contents of the /index.html file.
@@ -281,3 +283,82 @@ HTTP-PORT, along with php-fpm."
(name "php-fpm")
(description "Test PHP-FPM through nginx.")
(value (run-php-fpm-test))))
+
+\f
+;;;
+;;; HPCGUIX-WEB
+;;;
+
+(define* (run-hpcguix-web-server-test name test-os)
+ "Run tests in %HPCGUIX-WEB-OS, which has hpcguix-web running."
+ (define os
+ (marionette-operating-system
+ test-os
+ #:imported-modules '((gnu services herd)
+ (guix combinators))))
+
+ (define vm
+ (virtual-machine
+ (operating-system os)
+ (port-forwardings '((8080 . 5000)))))
+
+ (define test
+ (with-imported-modules '((gnu build marionette))
+ #~(begin
+ (use-modules (srfi srfi-11) (srfi srfi-64)
+ (gnu build marionette)
+ (web uri)
+ (web client)
+ (web response))
+
+ (define marionette
+ (make-marionette (list #$vm)))
+
+ (mkdir #$output)
+ (chdir #$output)
+
+ (test-begin #$name)
+
+ (test-assert "hpcguix-web running"
+ (marionette-eval
+ '(begin
+ (use-modules (gnu services herd))
+ (match (start-service 'hpcguix-web)
+ (#f #f)
+ (('service response-parts ...)
+ (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)))
+
+ (test-end)
+ (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+ (gexp->derivation (string-append name "-test") test))
+
+(define %hpcguix-web-specs
+ ;; Server config gexp.
+ #~(define site-config
+ (hpcweb-configuration
+ (title-prefix "[TEST] HPCGUIX-WEB"))))
+
+(define %hpcguix-web-os
+ (simple-operating-system
+ (dhcp-client-service)
+ (service hpcguix-web-service-type
+ (hpcguix-web-configuration
+ (specs %hpcguix-web-specs)))))
+
+(define %test-hpcguix-web
+ (system-test
+ (name "hpcguix-web")
+ (description "Connect to a running HPCGUIX-WEB server.")
+ (value (run-hpcguix-web-server-test name %hpcguix-web-os))))
--
2.17.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web.
2018-05-28 13:28 ` [bug#31621] [PATCH 2/3] gnu: service: " Rouby Pierre-Antoine
@ 2018-05-29 8:31 ` Rouby Pierre-Antoine
2018-05-29 8:52 ` Nils Gillmann
1 sibling, 0 replies; 13+ messages in thread
From: Rouby Pierre-Antoine @ 2018-05-29 8:31 UTC (permalink / raw)
To: 31621; +Cc: Rouby Pierre-Antoine
* 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.
---
gnu/services/web.scm | 71 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 70 insertions(+), 1 deletion(-)
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index b336a8dd3..d8acc9549 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,11 +26,14 @@
(define-module (gnu services web)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
+ #:use-module (gnu system pam)
#:use-module (gnu system shadow)
#:use-module (gnu packages admin)
#:use-module (gnu packages web)
#:use-module (gnu packages php)
+ #:use-module (gnu packages guile)
#:use-module (guix records)
+ #:use-module (guix modules)
#:use-module (guix gexp)
#:use-module ((guix utils) #:select (version-major))
#:use-module ((guix packages) #:select (package-version))
@@ -155,7 +159,11 @@
php-fpm-service-type
nginx-php-location
- cat-avatar-generator-service))
+ cat-avatar-generator-service
+
+ hpcguix-web-configuration
+ hpcguix-web-configuration?
+ hpcguix-web-service-type))
;;; Commentary:
;;;
@@ -893,3 +901,64 @@ a webserver.")
(nginx-server-configuration-locations configuration)))
(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?
+
+ ;; Specs is gexp of hpcguix-web configuration file
+ (specs hpcguix-web-configuration-specs))
+
+(define %hpcguix-web-accounts
+ (list (user-group
+ (name "hpcguix-web")
+ (system? #t))
+ (user-account
+ (name "hpcguix-web")
+ (group "hpcguix-web")
+ (system? #t)
+ (comment "hpcguix-web")
+ (home-directory "/var/empty")
+ (shell (file-append shadow "/sbin/nologin")))))
+
+(define (%hpcguix-web-activation config)
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((home-dir "/var/cache/guix/web")
+ (user (getpwnam "hpcguix-web")))
+ (mkdir-p home-dir)
+ (chown home-dir (passwd:uid user) (passwd:gid user))
+ (chmod home-dir #o755))))
+
+(define (hpcguix-web-shepherd-service config)
+ (let* ((specs (hpcguix-web-configuration-specs config)))
+ (with-imported-modules (source-module-closure
+ '((gnu build shepherd)))
+ (shepherd-service
+ (documentation "hpcguix-web daemon")
+ (provision '(hpcguix-web))
+ (requirement '(networking))
+ (start #~(make-forkexec-constructor
+ (list (string-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"))))
+ (stop #~(make-kill-destructor))))))
+
+(define hpcguix-web-service-type
+ (service-type
+ (name 'hpcguix-web)
+ (description
+ "Run hpcguix-web daemon @command{run}.")
+ (extensions
+ (list (service-extension account-service-type
+ (const %hpcguix-web-accounts))
+ (service-extension activation-service-type
+ %hpcguix-web-activation)
+ (service-extension shepherd-root-service-type
+ (compose list hpcguix-web-shepherd-service))))))
--
2.17.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web.
2018-05-28 13:28 ` [bug#31621] [PATCH 2/3] gnu: service: " Rouby Pierre-Antoine
2018-05-29 8:31 ` Rouby Pierre-Antoine
@ 2018-05-29 8:52 ` Nils Gillmann
2018-05-30 7:25 ` Pierre-Antoine Rouby
2018-05-30 9:47 ` Rouby Pierre-Antoine
1 sibling, 2 replies; 13+ messages in thread
From: Nils Gillmann @ 2018-05-29 8:52 UTC (permalink / raw)
To: Rouby Pierre-Antoine; +Cc: 31621
Hi Rouby,
thanks for your patch series.
The service of it seems not to be documented. Could you write
a little documentation for it so people will know how
to use it?
That's so far the first and only review I have time for
right now.
Rouby Pierre-Antoine transcribed 4.0K bytes:
> * gnu/service/web.scm (<hpcguix-web-configuration>): New record-type.
> ---
> gnu/services/web.scm | 71 +++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 70 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/services/web.scm b/gnu/services/web.scm
> index b336a8dd3..d8acc9549 100644
> --- a/gnu/services/web.scm
> +++ b/gnu/services/web.scm
> @@ -6,6 +6,7 @@
> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
> ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
> +;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -25,11 +26,14 @@
> (define-module (gnu services web)
> #:use-module (gnu services)
> #:use-module (gnu services shepherd)
> + #:use-module (gnu system pam)
> #:use-module (gnu system shadow)
> #:use-module (gnu packages admin)
> #:use-module (gnu packages web)
> #:use-module (gnu packages php)
> + #:use-module (gnu packages guile)
> #:use-module (guix records)
> + #:use-module (guix modules)
> #:use-module (guix gexp)
> #:use-module ((guix utils) #:select (version-major))
> #:use-module ((guix packages) #:select (package-version))
> @@ -155,7 +159,11 @@
> php-fpm-service-type
> nginx-php-location
>
> - cat-avatar-generator-service))
> + cat-avatar-generator-service
> +
> + hpcguix-web-configuration
> + hpcguix-web-configuration?
> + hpcguix-web-service-type))
>
> ;;; Commentary:
> ;;;
> @@ -893,3 +901,64 @@ a webserver.")
> (nginx-server-configuration-locations configuration)))
> (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?
> +
> + ;; Specs is gexp of hpcguix-web configuration file
> + (specs hpcguix-web-configuration-specs))
> +
> +(define %hpcguix-web-accounts
> + (list (user-group
> + (name "hpcguix-web")
> + (system? #t))
> + (user-account
> + (name "hpcguix-web")
> + (group "hpcguix-web")
> + (system? #t)
> + (comment "hpcguix-web")
> + (home-directory "/var/empty")
> + (shell (file-append shadow "/sbin/nologin")))))
> +
> +(define (%hpcguix-web-activation config)
> + #~(begin
> + (use-modules (guix build utils))
> + (let ((home-dir "/var/cache/guix/web")
> + (user (getpwnam "hpcguix-web")))
> + (mkdir-p home-dir)
> + (chown home-dir (passwd:uid user) (passwd:gid user))
> + (chmod home-dir #o755))))
> +
> +(define (hpcguix-web-shepherd-service config)
> + (let* ((specs (hpcguix-web-configuration-specs config)))
> + (with-imported-modules (source-module-closure
> + '((gnu build shepherd)))
> + (shepherd-service
> + (documentation "hpcguix-web daemon")
> + (provision '(hpcguix-web))
> + (requirement '(networking))
> + (start #~(make-forkexec-constructor
> + (list (string-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"))))
> + (stop #~(make-kill-destructor))))))
> +
> +(define hpcguix-web-service-type
> + (service-type
> + (name 'hpcguix-web)
> + (description
> + "Run hpcguix-web daemon @command{run}.")
> + (extensions
> + (list (service-extension account-service-type
> + (const %hpcguix-web-accounts))
> + (service-extension activation-service-type
> + %hpcguix-web-activation)
> + (service-extension shepherd-root-service-type
> + (compose list hpcguix-web-shepherd-service))))))
> --
> 2.17.0
>
>
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web.
2018-05-28 13:24 [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web Rouby Pierre-Antoine
2018-05-28 13:28 ` [bug#31621] [PATCH 2/3] gnu: service: " Rouby Pierre-Antoine
2018-05-28 13:28 ` [bug#31621] [PATCH 3/3] gnu: tests: " Rouby Pierre-Antoine
@ 2018-05-29 8:57 ` Nils Gillmann
2018-05-30 9:41 ` Rouby Pierre-Antoine
2018-06-01 8:05 ` bug#31621: [PATCH 2/3] gnu: service: " Ludovic Courtès
3 siblings, 1 reply; 13+ messages in thread
From: Nils Gillmann @ 2018-05-29 8:57 UTC (permalink / raw)
To: Rouby Pierre-Antoine; +Cc: 31621
(Okay, so my email application seems to put your last name
first. Sorry for the confusion in the first email I've sent)
Rouby Pierre-Antoine transcribed 4.4K bytes:
> * 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@gmx.com>
> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
> ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
> +;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@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")))
Unless git-file-name is implicit now, I would add this to the source.
You can grep the source directory to find examples. It is relatively
new, so not many packages are using it.
> + (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
Nitpick: Replace the start ("This package") with the name of the
application. As far as I remember lint should complain here aswell.
> +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
>
>
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web.
2018-05-29 8:52 ` Nils Gillmann
@ 2018-05-30 7:25 ` Pierre-Antoine Rouby
2018-05-30 9:47 ` Rouby Pierre-Antoine
1 sibling, 0 replies; 13+ messages in thread
From: Pierre-Antoine Rouby @ 2018-05-30 7:25 UTC (permalink / raw)
To: Nils Gillmann; +Cc: 31621
Hi Nils,
> From: "Nils Gillmann" <ng0@n0.is>
> The service of it seems not to be documented. Could you write
> a little documentation for it so people will know how
> to use it?
Yes, no problem. :)
^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web.
2018-05-29 8:57 ` [bug#31621] [PATCH 1/3] gnu: " Nils Gillmann
@ 2018-05-30 9:41 ` Rouby Pierre-Antoine
2018-05-31 16:09 ` Ludovic Courtès
0 siblings, 1 reply; 13+ messages in thread
From: Rouby Pierre-Antoine @ 2018-05-30 9:41 UTC (permalink / raw)
To: ng0; +Cc: 31621, Rouby Pierre-Antoine
* 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..e540fd4b9 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -25,6 +25,7 @@
;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@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")))
+ (file-name (git-file-name name version))
+ (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 "Hpcguix-web 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
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web.
2018-05-29 8:52 ` Nils Gillmann
2018-05-30 7:25 ` Pierre-Antoine Rouby
@ 2018-05-30 9:47 ` Rouby Pierre-Antoine
2018-05-31 16:12 ` Ludovic Courtès
1 sibling, 1 reply; 13+ messages in thread
From: Rouby Pierre-Antoine @ 2018-05-30 9:47 UTC (permalink / raw)
To: ng0; +Cc: 31621, Rouby Pierre-Antoine
* 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'.
---
doc/guix.texi | 50 ++++++++++++++++++++++++++++++-
gnu/services/web.scm | 71 +++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 119 insertions(+), 2 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 5129b998b..6c91dd5a7 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -47,7 +47,8 @@ Copyright @copyright{} 2017, 2018 Arun Isaac@*
Copyright @copyright{} 2017 nee@*
Copyright @copyright{} 2018 Rutger Helling@*
Copyright @copyright{} 2018 Oleg Pykhalov@*
-Copyright @copyright{} 2018 Mike Gerwitz
+Copyright @copyright{} 2018 Mike Gerwitz@*
+Copyright @copyright{} 2018 Pierre-Antoine Rouby
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -16135,6 +16136,53 @@ A simple setup for cat-avatar-generator can look like this:
%base-services))
@end example
+@subsubheading Hpcguix-web
+
+@cindex hpcguix-web
+The @code{hpcguix-web} is web interface to @code{Guix} packages visualizations.
+
+@defvr {Scheme Variable} hpcguix-web-service-type
+A service type for @code{hpcguix-web}.
+@end defvr
+
+@deftp {Data Type} hpcguix-web-configuration
+Data Type for @code{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}
+
+@table @asis
+@item @code{title-prefix} (default: @code{"hpcguix | "})
+The page title prefix.
+
+@item @code{guix-command} (default: @code{"guix"})
+The @code{Guix} command.
+
+@item @code{package-filter-proc} (default: @code{(const #t)})
+Package filter.
+
+@item @code{package-page-extension-proc} (default: @code{(const '())})
+Extension package for @code{hpcguix-web}.
+
+@item @code{menu} (default: @code{'()})
+Additional entry in page @code{menu}.
+@end table
+@end table
+@end deftp
+
+@example
+(services (cons* (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
@subsubsection Certificate Services
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index b336a8dd3..d8acc9549 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,11 +26,14 @@
(define-module (gnu services web)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
+ #:use-module (gnu system pam)
#:use-module (gnu system shadow)
#:use-module (gnu packages admin)
#:use-module (gnu packages web)
#:use-module (gnu packages php)
+ #:use-module (gnu packages guile)
#:use-module (guix records)
+ #:use-module (guix modules)
#:use-module (guix gexp)
#:use-module ((guix utils) #:select (version-major))
#:use-module ((guix packages) #:select (package-version))
@@ -155,7 +159,11 @@
php-fpm-service-type
nginx-php-location
- cat-avatar-generator-service))
+ cat-avatar-generator-service
+
+ hpcguix-web-configuration
+ hpcguix-web-configuration?
+ hpcguix-web-service-type))
;;; Commentary:
;;;
@@ -893,3 +901,64 @@ a webserver.")
(nginx-server-configuration-locations configuration)))
(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?
+
+ ;; Specs is gexp of hpcguix-web configuration file
+ (specs hpcguix-web-configuration-specs))
+
+(define %hpcguix-web-accounts
+ (list (user-group
+ (name "hpcguix-web")
+ (system? #t))
+ (user-account
+ (name "hpcguix-web")
+ (group "hpcguix-web")
+ (system? #t)
+ (comment "hpcguix-web")
+ (home-directory "/var/empty")
+ (shell (file-append shadow "/sbin/nologin")))))
+
+(define (%hpcguix-web-activation config)
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((home-dir "/var/cache/guix/web")
+ (user (getpwnam "hpcguix-web")))
+ (mkdir-p home-dir)
+ (chown home-dir (passwd:uid user) (passwd:gid user))
+ (chmod home-dir #o755))))
+
+(define (hpcguix-web-shepherd-service config)
+ (let* ((specs (hpcguix-web-configuration-specs config)))
+ (with-imported-modules (source-module-closure
+ '((gnu build shepherd)))
+ (shepherd-service
+ (documentation "hpcguix-web daemon")
+ (provision '(hpcguix-web))
+ (requirement '(networking))
+ (start #~(make-forkexec-constructor
+ (list (string-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"))))
+ (stop #~(make-kill-destructor))))))
+
+(define hpcguix-web-service-type
+ (service-type
+ (name 'hpcguix-web)
+ (description
+ "Run hpcguix-web daemon @command{run}.")
+ (extensions
+ (list (service-extension account-service-type
+ (const %hpcguix-web-accounts))
+ (service-extension activation-service-type
+ %hpcguix-web-activation)
+ (service-extension shepherd-root-service-type
+ (compose list hpcguix-web-shepherd-service))))))
--
2.17.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web.
2018-05-30 9:41 ` Rouby Pierre-Antoine
@ 2018-05-31 16:09 ` Ludovic Courtès
2018-05-31 22:38 ` Roel Janssen
0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2018-05-31 16:09 UTC (permalink / raw)
To: Rouby Pierre-Antoine; +Cc: ng0, 31621
Hello!
(Cc’ing Roel, who might have something to say. :-))
Rouby Pierre-Antoine <pierre-antoine.rouby@inria.fr> skribis:
> * gnu/package/web.scm (hpcguix-web): New variable.
[...]
> +(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")))
Please use the version scheme as explained in the manual (info "(guix)
Version Numbers").
That’s all I have to say. :-)
Ludo’.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web.
2018-05-30 9:47 ` Rouby Pierre-Antoine
@ 2018-05-31 16:12 ` Ludovic Courtès
0 siblings, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2018-05-31 16:12 UTC (permalink / raw)
To: Rouby Pierre-Antoine; +Cc: ng0, 31621
Rouby Pierre-Antoine <pierre-antoine.rouby@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 think you had written a system test no? Did it end up in a different
patch?
Apart from that it LGTM, thank you, and thanks Nils for the review!
Ludo’.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web.
2018-05-31 16:09 ` Ludovic Courtès
@ 2018-05-31 22:38 ` Roel Janssen
0 siblings, 0 replies; 13+ messages in thread
From: Roel Janssen @ 2018-05-31 22:38 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: ng0, 31621, Rouby Pierre-Antoine
Ludovic Courtès <ludovic.courtes@inria.fr> writes:
> Hello!
>
> (Cc’ing Roel, who might have something to say. :-))
Yes yes. Shamefully, I haven't tested the patches yet.
I like the work of Pierre-Antoine on hpcguix-web a lot!
>
> Rouby Pierre-Antoine <pierre-antoine.rouby@inria.fr> skribis:
>
>> * gnu/package/web.scm (hpcguix-web): New variable.
>
> [...]
>
>> +(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")))
>
> Please use the version scheme as explained in the manual (info "(guix)
> Version Numbers").
>
> That’s all I have to say. :-)
We could just release a 0.0.2. Then we don't need use git-fetch at all.
Kind regards,
Roel Janssen
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#31621: [PATCH 2/3] gnu: service: Add hpcguix-web.
2018-05-28 13:24 [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web Rouby Pierre-Antoine
` (2 preceding siblings ...)
2018-05-29 8:57 ` [bug#31621] [PATCH 1/3] gnu: " Nils Gillmann
@ 2018-06-01 8:05 ` Ludovic Courtès
3 siblings, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2018-06-01 8:05 UTC (permalink / raw)
To: Rouby Pierre-Antoine; +Cc: ng0, 31621-done
[-- Attachment #1: Type: text/plain, Size: 587 bytes --]
Hello,
(+Cc: Roel.)
Rouby Pierre-Antoine <pierre-antoine.rouby@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’.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 7141 bytes --]
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"))))))
+\f
(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."
\f
;;;
-;;; 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))))
^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-06-01 8:06 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-28 13:24 [bug#31621] [PATCH 1/3] gnu: Add hpcguix-web Rouby Pierre-Antoine
2018-05-28 13:28 ` [bug#31621] [PATCH 2/3] gnu: service: " Rouby Pierre-Antoine
2018-05-29 8:31 ` Rouby Pierre-Antoine
2018-05-29 8:52 ` Nils Gillmann
2018-05-30 7:25 ` Pierre-Antoine Rouby
2018-05-30 9:47 ` Rouby Pierre-Antoine
2018-05-31 16:12 ` Ludovic Courtès
2018-05-28 13:28 ` [bug#31621] [PATCH 3/3] gnu: tests: " Rouby Pierre-Antoine
2018-05-29 8:57 ` [bug#31621] [PATCH 1/3] gnu: " Nils Gillmann
2018-05-30 9:41 ` Rouby Pierre-Antoine
2018-05-31 16:09 ` Ludovic Courtès
2018-05-31 22:38 ` Roel Janssen
2018-06-01 8:05 ` bug#31621: [PATCH 2/3] gnu: service: " Ludovic Courtès
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).