unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH 0/2] Cuirass package + service.
@ 2016-10-26 13:05 Mathieu Lirzin
  2016-10-26 13:05 ` [PATCH 1/2] gnu: Add Cuirass Mathieu Lirzin
  2016-10-26 13:05 ` [PATCH 2/2] services: Add 'cuirass-service' Mathieu Lirzin
  0 siblings, 2 replies; 23+ messages in thread
From: Mathieu Lirzin @ 2016-10-26 13:05 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1179 bytes --]

Hello,

Here is a package definition and service for Cuirass.

As documented both in the second patch, the service is not really useful as it
is.  TL;DR Cuirass needs to be launched the first time with the
"--specifications" option and then without it, because it has a side effect on
the database.  As a consequence the same specifications will be re-added each
time the service is restarted.

I think we want to allow users to add additional specifications at runtime
without having to reconfigure the system or even restart Cuirass, I think it
would make sense for cuirass to use a Client+Server architecture communicating
over Socket.  If nobody has a better idea, I will start working on that
(taking inspiration from the Shepherd).

Thanks,

Mathieu Lirzin (2):
  gnu: Add Cuirass.
  services: Add 'cuirass-service'.

 doc/guix.texi            |  86 +++++++++++++++++++++++++++++++
 gnu/local.mk             |   1 +
 gnu/packages/ci.scm      |  51 +++++++++++++++++++
 gnu/services/cuirass.scm | 128 +++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 266 insertions(+)
 create mode 100644 gnu/services/cuirass.scm

-- 
2.9.3


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 1/2] gnu: Add Cuirass.
  2016-10-26 13:05 [PATCH 0/2] Cuirass package + service Mathieu Lirzin
@ 2016-10-26 13:05 ` Mathieu Lirzin
  2016-10-26 13:36   ` David Craven
  2016-10-26 13:05 ` [PATCH 2/2] services: Add 'cuirass-service' Mathieu Lirzin
  1 sibling, 1 reply; 23+ messages in thread
From: Mathieu Lirzin @ 2016-10-26 13:05 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 226 bytes --]


* gnu/packages/ci.scm (cuirass): New variable.

Co-authored-by: Jan Nieuwenhuizen <janneke@gnu.org>
---
 gnu/packages/ci.scm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-Cuirass.patch --]
[-- Type: text/x-patch; name="0001-gnu-Add-Cuirass.patch", Size: 2834 bytes --]

diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 3f54ff1..3cacc23 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -1,5 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -181,3 +183,52 @@
 release that uses a purely functional language to describe build jobs and
 their dependencies.")
       (license l:gpl3+))))
+
+(define-public cuirass
+  (let ((commit "24d45055077911fb92aaa67762d442af44d20403")
+        (revision "1"))
+    (package
+      (name "cuirass")
+      (version (string-append "0.0.1-" revision "." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://notabug.org/mthl/cuirass")
+                      (commit commit)))
+                (file-name (string-append name "-" version))
+                (sha256
+                 (base32
+                  "0r7jnrnkxgwj9iplp9l129xwi2w6zg0ndavm0sxz7ni49qsrx89y"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'bootstrap
+             (lambda _ (zero? (system* "sh" "bootstrap"))))
+           (add-after 'install 'wrap-program
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               ;; Wrap the 'cuirass' command to refer to the right modules.
+               (let* ((out    (assoc-ref outputs "out"))
+                      (sqlite (assoc-ref inputs "guile-sqlite3"))
+                      (guix   (assoc-ref inputs "guix"))
+                      (mods   (string-append out "/share/guile/site/2.0:"
+                                             sqlite "/share/guile/site/2.0:"
+                                             guix "/share/guile/site/2.0")))
+                 (wrap-program (string-append out "/bin/cuirass")
+                   `("GUILE_LOAD_PATH" ":" prefix (,mods))
+                   `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,mods)))))))))
+      (inputs
+       `(("guile" ,guile-2.0)
+         ("guile-json" ,guile-json)
+         ("guile-sqlite3" ,guile-sqlite3)
+         ("guix" ,guix)))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)))
+      (synopsis "Continuous integration system")
+      (description
+       "Cuirass is a continuous integration system which uses GNU Guix.  It is
+intended as replacement for Hydra.")
+      (home-page "https://notabug.org/mthl/cuirass")
+      (license l:gpl3+))))

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 2/2] services: Add 'cuirass-service'.
  2016-10-26 13:05 [PATCH 0/2] Cuirass package + service Mathieu Lirzin
  2016-10-26 13:05 ` [PATCH 1/2] gnu: Add Cuirass Mathieu Lirzin
@ 2016-10-26 13:05 ` Mathieu Lirzin
  2016-10-26 13:35   ` David Craven
                     ` (2 more replies)
  1 sibling, 3 replies; 23+ messages in thread
From: Mathieu Lirzin @ 2016-10-26 13:05 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 411 bytes --]


* gnu/services/cuirass.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* doc/guix.texi (Continuous integration): New node.
---
 doc/guix.texi            |  86 +++++++++++++++++++++++++++++++
 gnu/local.mk             |   1 +
 gnu/services/cuirass.scm | 128 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 215 insertions(+)
 create mode 100644 gnu/services/cuirass.scm


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0002-services-Add-cuirass-service.patch --]
[-- Type: text/x-patch; name="0002-services-Add-cuirass-service.patch", Size: 10376 bytes --]

diff --git a/doc/guix.texi b/doc/guix.texi
index 86b82c8..f9cb9e4 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -7687,6 +7687,7 @@ declaration.
 * Mail Services::               IMAP, POP3, SMTP, and all that.
 * Web Services::                Web servers.
 * Network File System::         NFS related services.
+* Continuous integration::      The cuirass service.
 * Miscellaneous Services::      Other services.
 @end menu
 
@@ -10524,6 +10525,91 @@ If it is @code{#f} then the daemon will use the host's fully qualified domain na
 @end table
 @end deftp
 
+@node Continuous integration
+@subsubsection Continuous integration
+
+@cindex continuous integration
+@uref{https://notabug.org/mthl/cuirass, Cuirass} is a continuous
+integration tool for Guix.  It can be used both for development and
+for providing substitutes to others (@pxref{Substitutes}).
+
+The @code{(gnu services cuirass)} module provides the following service.
+
+@deffn {Scheme Procedure} cuirass-service @
+       [#:config @code{%default-cuirass-configuration}]
+Return a service that runs @command{cuirass}.
+
+The @var{#:config} keyword argument specifies the configuration for
+@command{cuirass}, which must be a @code{<cuirass-configuration>}
+object, by default it doesn't provide any build job.  If you want to
+provide your own configuration you will most likely use the
+@code{cuirass-configuration} special form which returns such objects.
+@end deffn
+
+In order to add build jobs you will have to set the
+@code{specifications} field.  Due to current limitations of Cuirass, the
+specifications are re-added each time the associated Shepherd service is
+restarted.  This is indeed a bug.  Here is an example of a cuirass
+service defining a build job based on a specification that can be found
+in Cuirass source tree.
+
+@example
+(let ((spec `((#:name . "guix")
+              (#:url . "git://git.savannah.gnu.org/guix.git")
+              (#:load-path . ".")
+              ;; Adapt to a valid absolute file name.
+              (#:file . "/.../cuirass/tests/gnu-system.scm")
+              (#:proc . hydra-jobs)
+              (#:arguments (subset . "hello"))
+              (#:branch . "master"))))
+  (cuirass-service #:config (cuirass-configuration
+                             (specifications (list spec)))))
+@end example
+
+While information related to build jobs are located directly in the
+specifications, global parameters for the @command{cuirass} process are
+accessible in other @code{cuirass-configuration} fields.
+
+@deftp {Data Type} cuirass-configuration
+Data type representing the configuration of Cuirass.
+
+@table @asis
+@item @code{cache-directory} (default: "")
+Location of the repository cache.
+
+@item @code{user} (default: "cuirass")
+Owner of the @code{cuirass} process.
+
+@item @code{group} (default: "cuirass")
+Owner's group of the @code{cuirass} process.
+
+@item @code{interval} (default: 60)
+Number of seconds between the poll of the repositories followed by the
+Cuirass jobs.
+
+@item @code{database} (default: "/var/run/cuirass/cuirass.db")
+Location of sqlite database which contains the build results and previously
+added specifications.
+
+@item @code{specifications} (default: @code{'()})
+A list of specifications, where a specification is an association list
+(@pxref{Associations Lists,,, guile, GNU Guile Reference Manual}) whose
+keys are keywords (@code{#:keyword-example}) as shown in the example
+above.
+
+@item @code{use-substitutes?} (default: @code{#f})
+This allows using substitutes to avoid building every dependencies of a job
+from source.
+
+@item @code{one-shot?} (default: @code{#f})
+Only evaluate specifications and build derivations once.
+@end table
+@end deftp
+
+@defvar %default-cuirass-configuration
+This global variable contains a @code{cuirass-configuration} where all
+the fields contain their default value.
+@end defvar
 
 @node Miscellaneous Services
 @subsubsection Miscellaneous Services
diff --git a/gnu/local.mk b/gnu/local.mk
index c6cd586..e0ec339 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -392,6 +392,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/services/admin.scm			\
   %D%/services/avahi.scm			\
   %D%/services/base.scm				\
+  %D%/services/cuirass.scm			\
   %D%/services/databases.scm			\
   %D%/services/dbus.scm				\
   %D%/services/desktop.scm			\
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
new file mode 100644
index 0000000..93e2805
--- /dev/null
+++ b/gnu/services/cuirass.scm
@@ -0,0 +1,128 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software: you can redistribute it and/or modify
+;;; it under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation, either version 3 of the License, or
+;;; (at your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services cuirass)
+  #:use-module (guix gexp)
+  #:use-module (guix records)
+  #:use-module (gnu packages admin)
+  #:autoload   (gnu packages ci) (cuirass)
+  #:use-module (gnu services)
+  #:use-module (gnu services base)
+  #:use-module (gnu services shepherd)
+  #:use-module (gnu system shadow)
+  #:export (<cuirass-configuration>
+            cuirass-configuration
+            cuirass-configuration?
+            cuirass-configuration-cache-directory
+            cuirass-configuration-group
+            cuirass-configuration-interval
+            cuirass-configuration-database
+            cuirass-configuration-specifications
+            cuirass-configuration-use-substitutes?
+            cuirass-configuration-one-shot?
+            %default-cuirass-configuration
+
+            cuirass-service-type
+            cuirass-service))
+
+;;;; Commentary:
+;;;
+;;; This module implements a service that to run instances of Cuirass, a
+;;; continuous integration tool.
+;;;
+;;;; Code:
+
+(define-record-type* <cuirass-configuration>
+  cuirass-configuration make-cuirass-configuration
+  cuirass-configuration?
+  (cache-directory  cuirass-configuration-cache-directory ;string (dir-name)
+                    (default ""))
+  (user             cuirass-configuration-user ;string
+                    (default "cuirass"))
+  (group            cuirass-configuration-group ;string
+                    (default "cuirass"))
+  (interval         cuirass-configuration-interval ;integer (seconds)
+                    (default 60))
+  (database         cuirass-configuration-database ;string (file-name)
+                    (default "/var/run/cuirass/cuirass.db"))
+  (specifications   cuirass-configuration-specifications ;string (file-name)
+                    (default ""))
+  (use-substitutes? cuirass-configuration-use-substitutes? ;boolean
+                    (default #f))
+  (one-shot?        cuirass-configuration-one-shot? ;boolean
+                    (default #f)))
+
+(define %default-cuirass-configuration
+  (cuirass-configuration))
+
+(define (cuirass-shepherd-service config)
+  "Return a <shepherd-service> for the Cuirass service with CONFIG."
+  (and
+   (cuirass-configuration? config)
+   (let ((cache-directory  (cuirass-configuration-cache-directory config))
+         (interval         (cuirass-configuration-interval config))
+         (database         (cuirass-configuration-database config))
+         (specifications   (cuirass-configuration-specifications config))
+         (use-substitutes? (cuirass-configuration-use-substitutes? config))
+         (one-shot?        (cuirass-configuration-one-shot? config)))
+     (list (shepherd-service
+            (documentation "Run Cuirass.")
+            (provision '(cuirass))
+            (requirement '(guix-daemon))
+            (start #~(make-forkexec-constructor
+                      (list (string-append #$cuirass "/bin/cuirass")
+                            #$@(if (string=? "" cache-directory)
+                                   '()
+                                   (list "--cache-directory" cache-directory))
+                            ;; XXX: the specifications are re-added each time
+                            ;; this service restarts
+                            #$@(if (string=? "" specifications)
+                                   '()
+                                   (list "--specifications" specifications))
+                            "--database" #$database
+                            "--interval" #$(number->string interval)
+                            #$@(if use-substitutes? '("--use-substitutes") '())
+                            #$@(if one-shot? "--one-shot" '()))))
+            (stop #~(make-kill-destructor)))))))
+
+(define (cuirass-account config)
+  "Return the user accounts and user groups for CONFIG."
+  (let ((cuirass-user  (cuirass-configuration-user config))
+        (cuirass-group (cuirass-configuration-group config)))
+    (list (user-group
+           (name cuirass-group)
+           (system? #t))
+          (user-account
+           (name cuirass-user)
+           (group cuirass-group)
+           (system? #t)
+           (comment "Cuirass privilege separation user")
+           (home-directory (string-append "/var/run/" cuirass-user))
+           (shell #~(string-append #$shadow "/sbin/nologin"))))))
+
+(define cuirass-service-type
+  (service-type
+   (name 'cuirass)
+   (extensions
+    (list
+     (service-extension shepherd-root-service-type cuirass-shepherd-service)
+     (service-extension account-service-type cuirass-account)))))
+
+(define* (cuirass-service #:key (config %default-cuirass-configuration))
+  "Return a service that runs cuirass according to CONFIG."
+  (service cuirass-service-type config))

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH 2/2] services: Add 'cuirass-service'.
  2016-10-26 13:05 ` [PATCH 2/2] services: Add 'cuirass-service' Mathieu Lirzin
@ 2016-10-26 13:35   ` David Craven
  2016-10-26 14:42     ` Mathieu Lirzin
  2016-10-27  0:22   ` Leo Famulari
  2016-10-27 13:36   ` Ludovic Courtès
  2 siblings, 1 reply; 23+ messages in thread
From: David Craven @ 2016-10-26 13:35 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Hi Mathieu,

Do we need to export all of these?

+            cuirass-configuration-cache-directory
+            cuirass-configuration-group
+            cuirass-configuration-interval
+            cuirass-configuration-database
+            cuirass-configuration-specifications
+            cuirass-configuration-use-substitutes?
+            cuirass-configuration-one-shot?
+            %default-cuirass-configuration

Is %default-cuirass-configuration needed?

Looks good to me otherwise.

Thank you.
David

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 1/2] gnu: Add Cuirass.
  2016-10-26 13:05 ` [PATCH 1/2] gnu: Add Cuirass Mathieu Lirzin
@ 2016-10-26 13:36   ` David Craven
  2016-11-29 22:25     ` Mathieu Lirzin
  0 siblings, 1 reply; 23+ messages in thread
From: David Craven @ 2016-10-26 13:36 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

LGTM!

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 2/2] services: Add 'cuirass-service'.
  2016-10-26 13:35   ` David Craven
@ 2016-10-26 14:42     ` Mathieu Lirzin
  2016-10-26 18:57       ` David Craven
  0 siblings, 1 reply; 23+ messages in thread
From: Mathieu Lirzin @ 2016-10-26 14:42 UTC (permalink / raw)
  To: David Craven; +Cc: guix-devel

Hello David,

David Craven <david@craven.ch> writes:

> Do we need to export all of these?
>
> +            cuirass-configuration-cache-directory
> +            cuirass-configuration-group
> +            cuirass-configuration-interval
> +            cuirass-configuration-database
> +            cuirass-configuration-specifications
> +            cuirass-configuration-use-substitutes?
> +            cuirass-configuration-one-shot?
> +            %default-cuirass-configuration

Since the <cuirass-configuration> data type is documented in the manual,
the idea was to export the procedures that allow manipulating this type
in a REPL.  However since it appears that other services are not doing
that, I think it is better to remove them.

> Is %default-cuirass-configuration needed?

The benefit is a slightly more meaningful default value for #:CONFIG in
the 'cuirass-service' procedure documentation.  However I am not sure if
that helps much.  WDYT?

Thanks for the review.

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 2/2] services: Add 'cuirass-service'.
  2016-10-26 14:42     ` Mathieu Lirzin
@ 2016-10-26 18:57       ` David Craven
  0 siblings, 0 replies; 23+ messages in thread
From: David Craven @ 2016-10-26 18:57 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

>> Is %default-cuirass-configuration needed?
>
> The benefit is a slightly more meaningful default value for #:CONFIG in
> the 'cuirass-service' procedure documentation.  However I am not sure if
> that helps much.  WDYT?

I don't think it's necessary. An example where it's useful is
%default-syslog.conf, but not for aliasing the configuration
constructor.

David

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 2/2] services: Add 'cuirass-service'.
  2016-10-26 13:05 ` [PATCH 2/2] services: Add 'cuirass-service' Mathieu Lirzin
  2016-10-26 13:35   ` David Craven
@ 2016-10-27  0:22   ` Leo Famulari
  2016-11-06 13:16     ` Andreas Enge
  2016-10-27 13:36   ` Ludovic Courtès
  2 siblings, 1 reply; 23+ messages in thread
From: Leo Famulari @ 2016-10-27  0:22 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

On Wed, Oct 26, 2016 at 03:05:58PM +0200, Mathieu Lirzin wrote:
> 
> * gnu/services/cuirass.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
> * doc/guix.texi (Continuous integration): New node.

> +In order to add build jobs you will have to set the
> +@code{specifications} field.  Due to current limitations of Cuirass, the
> +specifications are re-added each time the associated Shepherd service is
> +restarted.  This is indeed a bug.  Here is an example of a cuirass
> +service defining a build job based on a specification that can be found
> +in Cuirass source tree.

What does it mean for the specifications to be "re-added"? Can you
clarify this in the docs?

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 2/2] services: Add 'cuirass-service'.
  2016-10-26 13:05 ` [PATCH 2/2] services: Add 'cuirass-service' Mathieu Lirzin
  2016-10-26 13:35   ` David Craven
  2016-10-27  0:22   ` Leo Famulari
@ 2016-10-27 13:36   ` Ludovic Courtès
  2016-11-29 22:22     ` Mathieu Lirzin
  2 siblings, 1 reply; 23+ messages in thread
From: Ludovic Courtès @ 2016-10-27 13:36 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Salut !

Mathieu Lirzin <mthl@gnu.org> skribis:

> * gnu/services/cuirass.scm: New file.
> * gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
> * doc/guix.texi (Continuous integration): New node.

[...]

> +++ b/doc/guix.texi
> @@ -7687,6 +7687,7 @@ declaration.
>  * Mail Services::               IMAP, POP3, SMTP, and all that.
>  * Web Services::                Web servers.
>  * Network File System::         NFS related services.
> +* Continuous integration::      The cuirass service.
                ^                      ^
Capitalize please.  :-)

> +@deftp {Data Type} cuirass-configuration
> +Data type representing the configuration of Cuirass.
> +
> +@table @asis
> +@item @code{cache-directory} (default: "")
                                          ^^
Could you enclose it in @code?  Same for the other default values.

> +@defvar %default-cuirass-configuration

So far we’ve used “@defvr {Scheme Variable} foo”, like Guile does.  It
may be debatable, but I think we should be consistent.

I agree with Leo’s suggestion about the doc, but apart from that, it
looks all good.  Nice work!

Thank you!  I can’t wait to see it in action on the new machine.  :-)

Ludo’.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 2/2] services: Add 'cuirass-service'.
  2016-10-27  0:22   ` Leo Famulari
@ 2016-11-06 13:16     ` Andreas Enge
  0 siblings, 0 replies; 23+ messages in thread
From: Andreas Enge @ 2016-11-06 13:16 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

On Wed, Oct 26, 2016 at 08:22:36PM -0400, Leo Famulari wrote:
> What does it mean for the specifications to be "re-added"? Can you
> clarify this in the docs?

I think this is a bug :-)

The specifications are stored in a database, and they may appear multiple
times, leading to duplicate evaluations. I think the database should be
set up in a way that these duplicate entries do not occur. Then one also
would not need to distinguish between the first time the service is called
and later times.

Andreas

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 2/2] services: Add 'cuirass-service'.
  2016-10-27 13:36   ` Ludovic Courtès
@ 2016-11-29 22:22     ` Mathieu Lirzin
  2016-11-30 21:53       ` Unable to configure a system with 'cuirass-service' ng0
  0 siblings, 1 reply; 23+ messages in thread
From: Mathieu Lirzin @ 2016-11-29 22:22 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

Pushed in commit a7cf4eb6d99838606d8ecfa776f7e4920dfbb7f5 with bug fixed
and requested changes.

Thanks.

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 1/2] gnu: Add Cuirass.
  2016-10-26 13:36   ` David Craven
@ 2016-11-29 22:25     ` Mathieu Lirzin
  2016-11-30 13:10       ` Ludovic Courtès
  0 siblings, 1 reply; 23+ messages in thread
From: Mathieu Lirzin @ 2016-11-29 22:25 UTC (permalink / raw)
  To: David Craven; +Cc: guix-devel

David Craven <david@craven.ch> writes:

> LGTM!

Pushed in commit 365de1e7a5b37f9fd88cd964cc7d47f6f729d053, with an
updated Cuirass commit.

Thanks.

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 1/2] gnu: Add Cuirass.
  2016-11-29 22:25     ` Mathieu Lirzin
@ 2016-11-30 13:10       ` Ludovic Courtès
  0 siblings, 0 replies; 23+ messages in thread
From: Ludovic Courtès @ 2016-11-30 13:10 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Mathieu Lirzin <mthl@gnu.org> skribis:

> David Craven <david@craven.ch> writes:
>
>> LGTM!
>
> Pushed in commit 365de1e7a5b37f9fd88cd964cc7d47f6f729d053, with an
> updated Cuirass commit.

Thank you!

I plan to give it a try on the new machine (bayfront) Real Soon.

Ludo’.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Unable to configure a system with 'cuirass-service'
  2016-11-29 22:22     ` Mathieu Lirzin
@ 2016-11-30 21:53       ` ng0
  2016-11-30 23:14         ` Carlo Zancanaro
  0 siblings, 1 reply; 23+ messages in thread
From: ng0 @ 2016-11-30 21:53 UTC (permalink / raw)
  To: guix-devel

Mathieu Lirzin <mthl@gnu.org> writes:

> Pushed in commit a7cf4eb6d99838606d8ecfa776f7e4920dfbb7f5 with bug fixed
> and requested changes.
>
> Thanks.

To begin to test the service, I tried this with this[0] system
config today and failed. I tried some variations, moving around
the let, checking for typos, let* instead of let, etc, but I
wasn't succesful.
What does this mean? I am able to configure the system with this,
but finally (cuirass-service) is silently ignored and never makes
it into the new system.

Is there anything obvious I have to change?

[0]:  https://ptpb.pw/lIwS.scm

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-11-30 21:53       ` Unable to configure a system with 'cuirass-service' ng0
@ 2016-11-30 23:14         ` Carlo Zancanaro
  2016-12-01 12:41           ` ng0
  0 siblings, 1 reply; 23+ messages in thread
From: Carlo Zancanaro @ 2016-11-30 23:14 UTC (permalink / raw)
  To: ng0; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 504 bytes --]

On Wed, Nov 30 2016, ng0 wrote
> Is there anything obvious I have to change?

Your `let` body contains both the `(cuirass-service ...)` form as 
well as the `%desktop-services` form. A `let` form will take the 
value of the last form in its body, so the `(cuirass-service ...)` 
value is being thrown away.

Try removing one of the closing parentheses after `%desktop-services`
and add it after the `(cuirass-service ...)` form. (This has the effect
of moving `%desktop-services` out of the `let` body.)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 472 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-11-30 23:14         ` Carlo Zancanaro
@ 2016-12-01 12:41           ` ng0
  2016-12-01 12:59             ` Carlo Zancanaro
  0 siblings, 1 reply; 23+ messages in thread
From: ng0 @ 2016-12-01 12:41 UTC (permalink / raw)
  To: Carlo Zancanaro; +Cc: guix-devel

Sorry, I should really set up my client to add CC or even To with lists...

      Carlo Zancanaro <carlo@zancanaro.id.au> writes:

      > On Wed, Nov 30 2016, ng0 wrote
      >> Is there anything obvious I have to change?
      [ 6 more citation lines. Click/Enter to show. ]
      >
      > Your `let` body contains both the `(cuirass-service ...)` form as 
      > well as the `%desktop-services` form. A `let` form will take the 
      > value of the last form in its body, so the `(cuirass-service ...)` 
      > value is being thrown away.
      >
      > Try removing one of the closing parentheses after `%desktop-services`
      > and add it after the `(cuirass-service ...)` form. (This has the effect
      > of moving `%desktop-services` out of the `let` body.)

      Thanks!

      https://ptpb.pw/gQOZ.scm with this change it fails differently:

      ng0@greendragon ~$ sudo guix system build /etc/config.scm
      Backtrace:
      In ice-9/boot-9.scm:
       160: 18 [catch #t #<catch-closure a4de40> ...]
      In unknown file:
         ?: 17 [apply-smob/1 #<catch-closure a4de40>]
      In ice-9/boot-9.scm:
        66: 16 [call-with-prompt prompt0 ...]
      In ice-9/eval.scm:
       432: 15 [eval # #]
      In ice-9/boot-9.scm:
      2404: 14 [save-module-excursion #<procedure a6d900 at ice-9/boot-9.scm:4051:3 ()>]
      4056: 13 [#<procedure a6d900 at ice-9/boot-9.scm:4051:3 ()>]
      1727: 12 [%start-stack load-stack #<procedure a77120 at ice-9/boot-9.scm:4047:10 ()>]
      1732: 11 [#<procedure a81b70 ()>]
      In unknown file:
         ?: 10 [primitive-load "/gnu/store/vk6q4xahpy1dvs5ig3gg699fgszbf8ay-guix-0.11.0-4.1f41/bin/.guix-real"]
      In guix/ui.scm:
      1222: 9 [run-guix-command system "build" "/etc/config.scm"]
      In ice-9/boot-9.scm:
       160: 8 [catch srfi-34 #<procedure 378a7e0 at guix/ui.scm:426:2 ()> ...]
       160: 7 [catch system-error ...]
      In guix/scripts/system.scm:
       954: 6 [#<procedure 376b120 at guix/scripts/system.scm:946:2 ()>]
       841: 5 [process-action build ("/etc/config.scm") ...]
      In guix/store.scm:
      1215: 4 [run-with-store # ...]
      In guix/scripts/system.scm:
       853: 3 [#<procedure 10053c0 at guix/scripts/system.scm:845:8 (state)> #]
       611: 2 [perform-action build # # ...]
      In gnu/system.scm:
       635: 1 [operating-system-derivation # # #f]
      In unknown file:
         ?: 0 [append (# # # # ...) (# # # # ...)]

      ERROR: In procedure append:
      ERROR: In procedure append: Wrong type argument in position 1 (expecting empty list): #<<service> type: #<service-type cuirass 3686210>
      parameters: #<<cuirass-configuration> cache-directory: "" user: "cuirass" group: "cuirass" interval: 60 database: "/var/run/cuirass/cuirass.db"
      specifications: (((#:name . "guix") (#:url . "git://git.savannah.gnu.org/guix.git") (#:load-path . ".") (#:file .
      "/.../cuirass/tests/gnu-system.scm") (#:proc . hydra-jobs) (#:arguments (subset . "hello")) (#:branch . "master"))) use-substitutes?: #f
      one-shot?: #f>>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-12-01 12:41           ` ng0
@ 2016-12-01 12:59             ` Carlo Zancanaro
  2016-12-01 13:23               ` ng0
  0 siblings, 1 reply; 23+ messages in thread
From: Carlo Zancanaro @ 2016-12-01 12:59 UTC (permalink / raw)
  To: ng0; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 932 bytes --]


On Thu, Dec 01 2016, ng0 wrote
> https://ptpb.pw/gQOZ.scm with this change it fails differently:

This is wrong again, but for a different reason. The 
`%desktop-services` must be the last argument to the `cons*` call.

You want it to look like this (assuming my formatting comes out at 
least a little bit okay):

  (services (cons* (gnome-desktop-service)
                   (tor-service)
                   (console-keymap-service "de")
		   (lsh-service)
		   (let ((spec-guix `((#:name . "guix")
				      (#:url . "git://git.savannah.gnu.org/guix.git")
				      (#:load-path . ".")
				      ;; Adapt to a valid absolute file name.
				      (#:file . "/.../cuirass/tests/gnu-system.scm")
				      (#:proc . hydra-jobs)
				      (#:arguments (subset . "hello"))
				      (#:branch . "master"))))

		     (cuirass-service #:config (cuirass-configuration
						(specifications (list spec-guix)))))
		   %desktop-services))

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 472 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-12-01 12:59             ` Carlo Zancanaro
@ 2016-12-01 13:23               ` ng0
  2016-12-01 15:13                 ` Carlo Zancanaro
  0 siblings, 1 reply; 23+ messages in thread
From: ng0 @ 2016-12-01 13:23 UTC (permalink / raw)
  To: Carlo Zancanaro; +Cc: guix-devel

Carlo Zancanaro <carlo@zancanaro.id.au> writes:

> On Thu, Dec 01 2016, ng0 wrote
>> https://ptpb.pw/gQOZ.scm with this change it fails differently:
>
> This is wrong again, but for a different reason. The 
> `%desktop-services` must be the last argument to the `cons*` call.

I tried that before (though I did just think it was wrong) and
now I get the same message as yesterday:

ng0@greendragon ~$ sudo guix system build /etc/config.scm
Backtrace:
In ice-9/boot-9.scm:
1727: 19 [%start-stack load-stack ...]
1732: 18 [#<procedure 1ef3b70 ()>]
In unknown file:
   ?: 17 [primitive-load "/gnu/store/vk6q4xahpy1dvs5ig3gg699fgszbf8ay-guix-0.11.0-4.1f41/bin/.guix-real"]
In guix/ui.scm:
1222: 16 [run-guix-command system "build" "/etc/config.scm"]
In ice-9/boot-9.scm:
 160: 15 [catch srfi-34 #<procedure 4bfa800 at guix/ui.scm:426:2 ()> ...]
 160: 14 [catch system-error ...]
In guix/scripts/system.scm:
 954: 13 [#<procedure 4bea450 at guix/scripts/system.scm:946:2 ()>]
 841: 12 [process-action build ("/etc/config.scm") ...]
In guix/store.scm:
1215: 11 [run-with-store # ...]
In guix/scripts/system.scm:
 853: 10 [#<procedure 4d95cc0 at guix/scripts/system.scm:845:8 (state)> #]
 611: 9 [perform-action build # # ...]
In gnu/system.scm:
 635: 8 [operating-system-derivation # # #f]
In gnu/services.scm:
 585: 7 [loop #]
In srfi/srfi-1.scm:
 575: 6 [map #<procedure loop (sink)> (# # #)]
In gnu/services.scm:
 585: 5 [loop #<<service> type: # parameters: #>]
In srfi/srfi-1.scm:
 575: 4 [map #<procedure loop (sink)> (# # # # ...)]
In gnu/services.scm:
 585: 3 [loop #<<service> type: # parameters: ()>]
In srfi/srfi-1.scm:
 573: 2 [map #<procedure 5ef2c20 at gnu/services.scm:574:4 (service)> (# # # # ...)]
In gnu/services/cuirass.scm:
  81: 1 [cuirass-shepherd-service #]
In unknown file:
   ?: 0 [string=? "" ((# # # # ...))]

ERROR: In procedure string=?:
ERROR: In procedure string=: Wrong type argument in position 2 (expecting string): (((#:name . "guix") (#:url . "git://git.savannah.gnu.org/guix.git") (#:load-path . ".") (#:file . "/.../cuirass/tests/gnu-system.scm") (#:proc . hydra-jobs) (#:arguments (subset . "hello")) (#:branch . "master")))


-- 
♥Ⓐ  ng0  | ng0.chaosnet.org

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-12-01 13:23               ` ng0
@ 2016-12-01 15:13                 ` Carlo Zancanaro
  2016-12-01 20:22                   ` Mathieu Lirzin
  0 siblings, 1 reply; 23+ messages in thread
From: Carlo Zancanaro @ 2016-12-01 15:13 UTC (permalink / raw)
  To: ng0; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1043 bytes --]


On Thu, Dec 01 2016, ng0 wrote 
> I tried that before (though I did just think it was wrong) and 
> now I get the same message as yesterday:
>
> ...
> 
> In gnu/services/cuirass.scm: 
>   81: 1 [cuirass-shepherd-service #] 
> In unknown file: 
>    ?: 0 [string=? "" ((# # # # ...))]
>
> ERROR: In procedure string=?: ERROR: In procedure string=: Wrong 
> type argument in position 2 (expecting string): (((#:name . 
> "guix") (#:url . "git://git.savannah.gnu.org/guix.git") 
> (#:load-path . ".") (#:file . 
> "/.../cuirass/tests/gnu-system.scm") (#:proc . hydra-jobs) 
> (#:arguments (subset . "hello")) (#:branch . "master")))

It looks like cuirass is expecting the specifications to be a 
string, not a list. I don't know anything about cuirass, so I 
can't help you to configure the cuirass-service.

Looking at the source, specifications has a comment ";string
(file-name)". It looks like the "specifications" field of the
configuration is just equivalent to the --specifications argument to the
cuirass command, if that helps at all.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 472 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-12-01 15:13                 ` Carlo Zancanaro
@ 2016-12-01 20:22                   ` Mathieu Lirzin
  2016-12-15 21:58                     ` Mathieu Lirzin
  0 siblings, 1 reply; 23+ messages in thread
From: Mathieu Lirzin @ 2016-12-01 20:22 UTC (permalink / raw)
  To: Carlo Zancanaro; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1197 bytes --]

Hi,

Carlo Zancanaro <carlo@zancanaro.id.au> writes:

> On Thu, Dec 01 2016, ng0 wrote 
>> I tried that before (though I did just think it was wrong) and now I
>> get the same message as yesterday:
>>
>> ...
>>
>> In gnu/services/cuirass.scm:   81: 1 [cuirass-shepherd-service #] In
>> unknown file:    ?: 0 [string=? "" ((# # # # ...))]
>>
>> ERROR: In procedure string=?: ERROR: In procedure string=: Wrong
>> type argument in position 2 (expecting string): (((#:name . "guix")
>> (#:url . "git://git.savannah.gnu.org/guix.git") (#:load-path . ".")
>> (#:file . "/.../cuirass/tests/gnu-system.scm") (#:proc . hydra-jobs)
>> (#:arguments (subset . "hello")) (#:branch . "master")))
>
> It looks like cuirass is expecting the specifications to be a string,
> not a list. I don't know anything about cuirass, so I can't help you
> to configure the cuirass-service.
>
> Looking at the source, specifications has a comment ";string
> (file-name)". It looks like the "specifications" field of the
> configuration is just equivalent to the --specifications argument to the
> cuirass command, if that helps at all.

Indeed, this is a mistake on my side.  Here are 2 patches that should
fix this issue.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-cuirass-Update-to-revision-2.patch --]
[-- Type: text/x-diff, Size: 1263 bytes --]

From 707d6f7255eeab39b6694bc81537966cbca0e61d Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl@gnu.org>
Date: Thu, 1 Dec 2016 21:10:18 +0100
Subject: [PATCH 1/2] gnu: cuirass: Update to revision 2.

* gnu/packages/ci.scm (cuirass): Update to revision 2.
---
 gnu/packages/ci.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index f07e75a..d88ee6d 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -185,8 +185,8 @@ their dependencies.")
       (license l:gpl3+))))
 
 (define-public cuirass
-  (let ((commit "7248c0038f3d0bfcf6c469d534efb4a13952c112")
-        (revision "1"))
+  (let ((commit "05eba838eab4ca928d8df926d70677821714e962")
+        (revision "2"))
     (package
       (name "cuirass")
       (version (string-append "0.0.1-" revision "." (string-take commit 7)))
@@ -198,7 +198,7 @@ their dependencies.")
                 (file-name (string-append name "-" version))
                 (sha256
                  (base32
-                  "0hkwh2pcz3wzg1n533ch2w7vwr97yr369q4ki0yqk99wfipjrydw"))))
+                  "17bchil0dxflf74fncpr6drbpvc43a0hnvp22gp9w58kwpskwvri"))))
       (build-system gnu-build-system)
       (arguments
        '(#:phases
-- 
2.10.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-services-cuirass-Put-specifications-in-the-store.patch --]
[-- Type: text/x-diff, Size: 2743 bytes --]

From ab369ae1b894bcbb4045aa70b30399543eb4b050 Mon Sep 17 00:00:00 2001
From: Mathieu Lirzin <mthl@gnu.org>
Date: Thu, 1 Dec 2016 20:41:08 +0100
Subject: [PATCH 2/2] services: cuirass: Put specifications in the store.

* gnu/services/cuirass.scm (<cuirass-configuration>): Change type of
'specifications' field to an alist to match the documentation example.
(cuirass-shepherd-service): Store the provided specifications in a file.  Use
that file as the "--specification" argument.
---
 gnu/services/cuirass.scm | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index d843c07..4975a7e 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -52,8 +52,8 @@
                     (default 60))
   (database         cuirass-configuration-database ;string (file-name)
                     (default "/var/run/cuirass/cuirass.db"))
-  (specifications   cuirass-configuration-specifications ;string (file-name)
-                    (default ""))
+  (specifications   cuirass-configuration-specifications ;specification-alist
+                    (default '()))
   (use-substitutes? cuirass-configuration-use-substitutes? ;boolean
                     (default #f))
   (one-shot?        cuirass-configuration-one-shot? ;boolean
@@ -66,7 +66,7 @@
    (let ((cache-directory  (cuirass-configuration-cache-directory config))
          (interval         (cuirass-configuration-interval config))
          (database         (cuirass-configuration-database config))
-         (specifications   (cuirass-configuration-specifications config))
+         (specs            (cuirass-configuration-specifications config))
          (use-substitutes? (cuirass-configuration-use-substitutes? config))
          (one-shot?        (cuirass-configuration-one-shot? config)))
      (list (shepherd-service
@@ -78,9 +78,11 @@
                             #$@(if (string=? "" cache-directory)
                                    '()
                                    (list "--cache-directory" cache-directory))
-                            #$@(if (string=? "" specifications)
+                            #$@(if (null? specs)
                                    '()
-                                   (list "--specifications" specifications))
+                                   (let ((str (format #f "'~S" specs)))
+                                     (list "--specifications"
+                                           (plain-file "specs.scm" str))))
                             "--database" #$database
                             "--interval" #$(number->string interval)
                             #$@(if use-substitutes? '("--use-substitutes") '())
-- 
2.10.2


[-- Attachment #4: Type: text/plain, Size: 194 bytes --]


Tell me if this works better.

Next problem to solve is that 'git' is not found in the path even when
put in the global packages...

Thanks for testing the Cuirass service,

-- 
Mathieu Lirzin

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-12-01 20:22                   ` Mathieu Lirzin
@ 2016-12-15 21:58                     ` Mathieu Lirzin
  2016-12-15 22:55                       ` ng0
  0 siblings, 1 reply; 23+ messages in thread
From: Mathieu Lirzin @ 2016-12-15 21:58 UTC (permalink / raw)
  To: ng0; +Cc: guix-devel

Hi,

Mathieu Lirzin <mthl@gnu.org> writes:

> Carlo Zancanaro <carlo@zancanaro.id.au> writes:
>
>> On Thu, Dec 01 2016, ng0 wrote 
>>> I tried that before (though I did just think it was wrong) and now I
>>> get the same message as yesterday:
>>>
>>> ...
>>>
>>> In gnu/services/cuirass.scm:   81: 1 [cuirass-shepherd-service #] In
>>> unknown file:    ?: 0 [string=? "" ((# # # # ...))]
>>>
>>> ERROR: In procedure string=?: ERROR: In procedure string=: Wrong
>>> type argument in position 2 (expecting string): (((#:name . "guix")
>>> (#:url . "git://git.savannah.gnu.org/guix.git") (#:load-path . ".")
>>> (#:file . "/.../cuirass/tests/gnu-system.scm") (#:proc . hydra-jobs)
>>> (#:arguments (subset . "hello")) (#:branch . "master")))
>>
>> It looks like cuirass is expecting the specifications to be a string,
>> not a list. I don't know anything about cuirass, so I can't help you
>> to configure the cuirass-service.
>>
>> Looking at the source, specifications has a comment ";string
>> (file-name)". It looks like the "specifications" field of the
>> configuration is just equivalent to the --specifications argument to the
>> cuirass command, if that helps at all.
>
> Indeed, this is a mistake on my side.  Here are 2 patches that should
> fix this issue.

I went ahead and pushed them in commits:

 - 44ccd9622eb4a0083d4f833a61172973390ca62b
 - 57aa94bd7e7d530e52356723c8f1dbf727144b25

Thanks,

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-12-15 21:58                     ` Mathieu Lirzin
@ 2016-12-15 22:55                       ` ng0
  2016-12-15 23:15                         ` Mathieu Lirzin
  0 siblings, 1 reply; 23+ messages in thread
From: ng0 @ 2016-12-15 22:55 UTC (permalink / raw)
  To: guix-devel

Mathieu Lirzin <mthl@gnu.org> writes:

> Hi,
>
> Mathieu Lirzin <mthl@gnu.org> writes:
>
>> Carlo Zancanaro <carlo@zancanaro.id.au> writes:
>>
>>> On Thu, Dec 01 2016, ng0 wrote 
>>>> I tried that before (though I did just think it was wrong) and now I
>>>> get the same message as yesterday:
>>>>
>>>> ...
>>>>
>>>> In gnu/services/cuirass.scm:   81: 1 [cuirass-shepherd-service #] In
>>>> unknown file:    ?: 0 [string=? "" ((# # # # ...))]
>>>>
>>>> ERROR: In procedure string=?: ERROR: In procedure string=: Wrong
>>>> type argument in position 2 (expecting string): (((#:name . "guix")
>>>> (#:url . "git://git.savannah.gnu.org/guix.git") (#:load-path . ".")
>>>> (#:file . "/.../cuirass/tests/gnu-system.scm") (#:proc . hydra-jobs)
>>>> (#:arguments (subset . "hello")) (#:branch . "master")))
>>>
>>> It looks like cuirass is expecting the specifications to be a string,
>>> not a list. I don't know anything about cuirass, so I can't help you
>>> to configure the cuirass-service.
>>>
>>> Looking at the source, specifications has a comment ";string
>>> (file-name)". It looks like the "specifications" field of the
>>> configuration is just equivalent to the --specifications argument to the
>>> cuirass command, if that helps at all.
>>
>> Indeed, this is a mistake on my side.  Here are 2 patches that should
>> fix this issue.
>
> I went ahead and pushed them in commits:
>
>  - 44ccd9622eb4a0083d4f833a61172973390ca62b
>  - 57aa94bd7e7d530e52356723c8f1dbf727144b25
>
> Thanks,
>
> -- 
> Mathieu Lirzin
>

Thanks, I wasn't able to test them before and provide you with
feedback, I was just busy and the CI is kind of low priority for
gnunet. But we'd like to get a CI running on our own
infrastructure on systems like GuixSD as far as I understood
conversations so far.

But I am aware that a general CI might still take some time with
cuirass.
-- 
♥Ⓐ  ng0  | ng0.chaosnet.org

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Unable to configure a system with 'cuirass-service'
  2016-12-15 22:55                       ` ng0
@ 2016-12-15 23:15                         ` Mathieu Lirzin
  0 siblings, 0 replies; 23+ messages in thread
From: Mathieu Lirzin @ 2016-12-15 23:15 UTC (permalink / raw)
  To: ng0; +Cc: guix-devel

ng0 <ng0@libertad.pw> writes:

> Mathieu Lirzin <mthl@gnu.org> writes:
>
>> Hi,
>>
>> Mathieu Lirzin <mthl@gnu.org> writes:
>>
>>> Carlo Zancanaro <carlo@zancanaro.id.au> writes:
>>>
>>>> On Thu, Dec 01 2016, ng0 wrote 
>>>>> I tried that before (though I did just think it was wrong) and now I
>>>>> get the same message as yesterday:
>>>>>
>>>>> ...
>>>>>
>>>>> In gnu/services/cuirass.scm:   81: 1 [cuirass-shepherd-service #] In
>>>>> unknown file:    ?: 0 [string=? "" ((# # # # ...))]
>>>>>
>>>>> ERROR: In procedure string=?: ERROR: In procedure string=: Wrong
>>>>> type argument in position 2 (expecting string): (((#:name . "guix")
>>>>> (#:url . "git://git.savannah.gnu.org/guix.git") (#:load-path . ".")
>>>>> (#:file . "/.../cuirass/tests/gnu-system.scm") (#:proc . hydra-jobs)
>>>>> (#:arguments (subset . "hello")) (#:branch . "master")))
>>>>
>>>> It looks like cuirass is expecting the specifications to be a string,
>>>> not a list. I don't know anything about cuirass, so I can't help you
>>>> to configure the cuirass-service.
>>>>
>>>> Looking at the source, specifications has a comment ";string
>>>> (file-name)". It looks like the "specifications" field of the
>>>> configuration is just equivalent to the --specifications argument to the
>>>> cuirass command, if that helps at all.
>>>
>>> Indeed, this is a mistake on my side.  Here are 2 patches that should
>>> fix this issue.
>>
>> I went ahead and pushed them in commits:
>>
>>  - 44ccd9622eb4a0083d4f833a61172973390ca62b
>>  - 57aa94bd7e7d530e52356723c8f1dbf727144b25
>>
>> Thanks,
>>
>> -- 
>> Mathieu Lirzin
>>
>
> Thanks, I wasn't able to test them before and provide you with
> feedback, I was just busy and the CI is kind of low priority for
> gnunet. 

Sure no problem.

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2016-12-15 23:15 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-26 13:05 [PATCH 0/2] Cuirass package + service Mathieu Lirzin
2016-10-26 13:05 ` [PATCH 1/2] gnu: Add Cuirass Mathieu Lirzin
2016-10-26 13:36   ` David Craven
2016-11-29 22:25     ` Mathieu Lirzin
2016-11-30 13:10       ` Ludovic Courtès
2016-10-26 13:05 ` [PATCH 2/2] services: Add 'cuirass-service' Mathieu Lirzin
2016-10-26 13:35   ` David Craven
2016-10-26 14:42     ` Mathieu Lirzin
2016-10-26 18:57       ` David Craven
2016-10-27  0:22   ` Leo Famulari
2016-11-06 13:16     ` Andreas Enge
2016-10-27 13:36   ` Ludovic Courtès
2016-11-29 22:22     ` Mathieu Lirzin
2016-11-30 21:53       ` Unable to configure a system with 'cuirass-service' ng0
2016-11-30 23:14         ` Carlo Zancanaro
2016-12-01 12:41           ` ng0
2016-12-01 12:59             ` Carlo Zancanaro
2016-12-01 13:23               ` ng0
2016-12-01 15:13                 ` Carlo Zancanaro
2016-12-01 20:22                   ` Mathieu Lirzin
2016-12-15 21:58                     ` Mathieu Lirzin
2016-12-15 22:55                       ` ng0
2016-12-15 23:15                         ` Mathieu Lirzin

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).