summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-09-08 12:10:25 +0200
committerLudovic Courtès <ludo@gnu.org>2013-09-08 12:10:25 +0200
commit6bf25b7b0554e8b569bc4938c4833491aedc742f (patch)
tree87881d0f74a8cbb5139e6fc093e9e86edfea70be
parente7b385008ca0f0817c3514357cf53151cea0f511 (diff)
downloadguix-6bf25b7b0554e8b569bc4938c4833491aedc742f.tar.gz
hydra: Support a 'subset' argument.
* build-aux/hydra/gnu-system.scm (%core-packages): New variable.
  (%packages-to-cross-build): Make an alias for %CORE-PACKAGES.
  (hydra-jobs): Check for the 'subset' argument, and honor it for values
  "all" and "core".
-rw-r--r--build-aux/hydra/gnu-system.scm36
1 files changed, 28 insertions, 8 deletions
diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm
index d7bdb2d7e4..8206be22ff 100644
--- a/build-aux/hydra/gnu-system.scm
+++ b/build-aux/hydra/gnu-system.scm
@@ -79,7 +79,7 @@ SYSTEM."
     ,(cute package->alist store package system
            (cut package-cross-derivation <> <> target <>))))
 
-(define %packages-to-cross-build
+(define %core-packages
   (list gmp mpfr mpc coreutils findutils diffutils patch sed grep
         gawk gettext hello guile-2.0
         %bootstrap-binaries-tarball
@@ -89,6 +89,9 @@ SYSTEM."
         %guile-bootstrap-tarball
         %bootstrap-tarballs))
 
+(define %packages-to-cross-build
+  %core-packages)
+
 (define %cross-targets
   '("mips64el-linux-gnu"
     "mips64el-linux-gnuabi64"))
@@ -106,6 +109,11 @@ SYSTEM."
       (_
        (list (%current-system)))))
 
+  (define subset
+    (match (assoc-ref arguments 'subset)
+      ("core" 'core)                              ; only build core packages
+      (_ 'all)))                                  ; build everything
+
   (define job-name
     (compose string->symbol package-full-name))
 
@@ -127,11 +135,23 @@ SYSTEM."
                                          inputs))))
                                     %final-inputs))))
     (append-map (lambda (system)
-                  (fold-packages (lambda (package result)
-                                   (if (member package base-packages)
-                                       result
-                                       (cons (package-job store (job-name package)
-                                                          package system)
-                                             result)))
-                                 (cross-jobs system)))
+                  (case subset
+                    ((all)
+                     ;; Build everything.
+                     (fold-packages (lambda (package result)
+                                      (if (member package base-packages)
+                                          result
+                                          (cons (package-job store (job-name package)
+                                                             package system)
+                                                result)))
+                                    (cross-jobs system)))
+                    ((core)
+                     ;; Build core packages only.
+                     (append (map (lambda (package)
+                                    (package-job store (job-name package)
+                                                 package system))
+                                  %core-packages)
+                             (cross-jobs system)))
+                    (else
+                     (error "unknown subset" subset))))
                 systems)))