summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-07-16 13:42:34 +0200
committerLudovic Courtès <ludo@gnu.org>2013-07-16 13:42:34 +0200
commit77bed84246b82c933e76e34bbdae59982097f7c8 (patch)
tree925373e90b8b8e569773cc8b43c769e8a4d04635
parent195e81aa5260bab340cbafe42bc3192b23d38505 (diff)
downloadguix-77bed84246b82c933e76e34bbdae59982097f7c8.tar.gz
hydra: Build for all the specified systems.
* build-aux/hydra/gnu-system.scm (hydra-jobs): Pick all the `system'
  keys in ARGUMENTS.
  [cross-jobs]: Turn into a procedure, with a `system' parameter.
  Build packages for all of SYSTEMS and %CROSS-TARGETS.
-rw-r--r--build-aux/hydra/gnu-system.scm31
1 files changed, 20 insertions, 11 deletions
diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm
index 6518f2b4aa..16fa4941c1 100644
--- a/build-aux/hydra/gnu-system.scm
+++ b/build-aux/hydra/gnu-system.scm
@@ -95,14 +95,21 @@ SYSTEM."
 
 (define (hydra-jobs store arguments)
   "Return Hydra jobs."
-  (define system
-    (or (assoc-ref arguments 'system)
-        (%current-system)))
+  (define systems
+    (match (filter-map (match-lambda
+                        (('system . value)
+                         value)
+                        (_ #f))
+                       arguments)
+      ((lst ..1)
+       lst)
+      (_
+       (list (%current-system)))))
 
   (define job-name
     (compose string->symbol package-full-name))
 
-  (define cross-jobs
+  (define (cross-jobs system)
     (append-map (lambda (target)
                   (map (lambda (package)
                          (package-cross-job store (job-name package)
@@ -119,10 +126,12 @@ SYSTEM."
                                         (((_ inputs _ ...) ...)
                                          inputs))))
                                     %final-inputs))))
-    (fold-packages (lambda (package result)
-                     (if (member package base-packages)
-                         result
-                         (cons (package-job store (job-name package)
-                                            package system)
-                               result)))
-                   cross-jobs)))
+    (append-map (lambda (system)
+                  (fold-packages (lambda (package result)
+                                   (if (member package base-packages)
+                                       result
+                                       (append (package-job store (job-name package)
+                                                            package system)
+                                               result)))
+                                 (cross-jobs system)))
+                systems)))