--- Begin Message ---
Subject: |
[PATCH 1/3] gnu: Add hpcguix-web. |
Date: |
Mon, 28 May 2018 15:24:50 +0200 |
* gnu/package/web.scm (hpcguix-web): New variable.
---
gnu/packages/web.scm | 80 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 80 insertions(+)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 9f1609591..2c69490f8 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -25,6 +25,7 @@
;;; Copyright © 2017 Pierre Langlois <address@hidden>
;;; Copyright © 2017 Rutger Helling <address@hidden>
;;; Copyright © 2018 Julien Lepiller <address@hidden>
+;;; Copyright © 2018 Pierre-Antoine Rouby <address@hidden>
;;;
;;; 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
--- End Message ---
--- Begin Message ---
Subject: |
Re: [bug#31621] [PATCH 2/3] gnu: service: Add hpcguix-web. |
Date: |
Fri, 01 Jun 2018 10:05:23 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Hello,
(+Cc: Roel.)
Rouby Pierre-Antoine <address@hidden> 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’.
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
address@hidden://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
address@hidden://github.com/UMCUGenetics/hpcguix-web/blob/master/hpcweb-configuration.scm,
+complete example}.
+
address@hidden @code{package} (default: @code{hpcguix-web})
+The hpcguix-web package to use.
@end table
@end deftp
+A typical hpcguix-web service declaration looks like this:
+
@example
-(services (cons* (service hpcguix-web-service-type
- (hpcguix-web-configuration
- (specs
- #~(define site-config
- (hpcweb-configuration
- (title-prefix "Guix-HPC - ")
- (menu '(("/about" "ABOUT"))))))))
+(service hpcguix-web-service-type
+ (hpcguix-web-configuration
+ (specs
+ #~(define site-config
+ (hpcweb-configuration
+ (title-prefix "Guix-HPC - ")
+ (menu '(("/about" "ABOUT"))))))))
@end example
@node Certificate Services
diff --git a/gnu/services/web.scm b/gnu/services/web.scm
index d8acc9549..aae2f3db0 100644
--- a/gnu/services/web.scm
+++ b/gnu/services/web.scm
@@ -902,13 +902,15 @@ a webserver.")
(root #~(string-append #$package
"/share/web/cat-avatar-generator"))))))
+
(define-record-type* <hpcguix-web-configuration>
- hpcguix-web-configuration
- make-hpcguix-web-configuration
+ hpcguix-web-configuration make-hpcguix-web-configuration
hpcguix-web-configuration?
+ (package hpcguix-web-package (default hpcguix-web)) ;<package>
+
;; Specs is gexp of hpcguix-web configuration file
- (specs hpcguix-web-configuration-specs))
+ (specs hpcguix-web-configuration-specs))
(define %hpcguix-web-accounts
(list (user-group
@@ -922,7 +924,7 @@ a webserver.")
(home-directory "/var/empty")
(shell (file-append shadow "/sbin/nologin")))))
-(define (%hpcguix-web-activation config)
+(define %hpcguix-web-activation
#~(begin
(use-modules (guix build utils))
(let ((home-dir "/var/cache/guix/web")
@@ -932,7 +934,8 @@ a webserver.")
(chmod home-dir #o755))))
(define (hpcguix-web-shepherd-service config)
- (let* ((specs (hpcguix-web-configuration-specs config)))
+ (let ((specs (hpcguix-web-configuration-specs config))
+ (hpcguix-web (hpcguix-web-package config)))
(with-imported-modules (source-module-closure
'((gnu build shepherd)))
(shepherd-service
@@ -940,25 +943,23 @@ a webserver.")
(provision '(hpcguix-web))
(requirement '(networking))
(start #~(make-forkexec-constructor
- (list (string-append #$hpcguix-web "/bin/run")
+ (list #$(file-append hpcguix-web "/bin/run")
(string-append "--config="
#$(scheme-file "hpcguix-web.scm" specs)))
#:user "hpcguix-web"
#:group "hpcguix-web"
#:environment-variables
- (list (string-append "XDG_CACHE_HOME="
- "/var/cache"))))
+ (list "XDG_CACHE_HOME=/var/cache")))
(stop #~(make-kill-destructor))))))
(define hpcguix-web-service-type
(service-type
(name 'hpcguix-web)
- (description
- "Run hpcguix-web daemon @command{run}.")
+ (description "Run the hpcguix-web server.")
(extensions
(list (service-extension account-service-type
(const %hpcguix-web-accounts))
(service-extension activation-service-type
- %hpcguix-web-activation)
+ (const %hpcguix-web-activation))
(service-extension shepherd-root-service-type
(compose list hpcguix-web-shepherd-service))))))
diff --git a/gnu/tests/web.scm b/gnu/tests/web.scm
index 474a5bdb5..a6bf6efcf 100644
--- a/gnu/tests/web.scm
+++ b/gnu/tests/web.scm
@@ -286,7 +286,7 @@ HTTP-PORT, along with php-fpm."
;;;
-;;; HPCGUIX-WEB
+;;; hpcguix-web
;;;
(define* (run-hpcguix-web-server-test name test-os)
@@ -329,15 +329,14 @@ HTTP-PORT, along with php-fpm."
(match (assq-ref response-parts 'running)
((pid) (number? pid))))))
marionette))
-
+
(test-equal "http-get"
200
- (let-values
- (((response text)
- (begin
- (sleep 3) ; HACK wait service available
- (http-get "http://localhost:8080"))))
- (response-code response)))
+ (begin
+ (wait-for-tcp-port 5000 marionette)
+ (let-values (((response text)
+ (http-get "http://localhost:8080")))
+ (response-code response))))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))
@@ -360,5 +359,5 @@ HTTP-PORT, along with php-fpm."
(define %test-hpcguix-web
(system-test
(name "hpcguix-web")
- (description "Connect to a running HPCGUIX-WEB server.")
+ (description "Connect to a running hpcguix-web server.")
(value (run-hpcguix-web-server-test name %hpcguix-web-os))))
--- End Message ---