unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [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).