diff options
Diffstat (limited to 'gnu/ci.scm')
-rw-r--r-- | gnu/ci.scm | 66 |
1 files changed, 34 insertions, 32 deletions
diff --git a/gnu/ci.scm b/gnu/ci.scm index 6edcdd0e19..ff76ffde57 100644 --- a/gnu/ci.scm +++ b/gnu/ci.scm @@ -23,6 +23,7 @@ (define-module (gnu ci) #:use-module (guix channels) #:use-module (guix config) + #:use-module (guix describe) #:use-module (guix store) #:use-module (guix grafts) #:use-module (guix profiles) @@ -78,12 +79,9 @@ (define* (derivation->job name drv #:key - period (max-silent-time 3600) (timeout 3600)) - "Return a Cuirass job called NAME and describing DRV. PERIOD is the minimal -duration that must separate two evaluations of the same job. If PERIOD is -false, then the job will be evaluated as soon as possible. + "Return a Cuirass job called NAME and describing DRV. MAX-SILENT-TIME and TIMEOUT are build options passed to the daemon when building the derivation." @@ -97,7 +95,6 @@ building the derivation." (derivation->output-paths drv))) (#:nix-name . ,(derivation-name drv)) (#:system . ,(derivation-system drv)) - (#:period . ,period) (#:max-silent-time . ,max-silent-time) (#:timeout . ,timeout))) @@ -155,6 +152,7 @@ SYSTEM." "arm-linux-gnueabihf" "aarch64-linux-gnu" "powerpc-linux-gnu" + "powerpc64le-linux-gnu" "riscv64-linux-gnu" "i586-pc-gnu" ;aka. GNU/Hurd "i686-w64-mingw32" @@ -235,14 +233,11 @@ SYSTEM." (* 3600 hours)) (define (image-jobs store system) - "Return a list of jobs that build images for SYSTEM. Those jobs are -expensive in storage and I/O operations, hence their periodicity is limited by -passing the PERIOD argument." + "Return a list of jobs that build images for SYSTEM." (define (->job name drv) (let ((name (string-append name "." system))) (parameterize ((%graft? #f)) - (derivation->job name drv - #:period (hours 48))))) + (derivation->job name drv)))) (define (build-image image) (run-with-store store @@ -333,11 +328,7 @@ passing the PERIOD argument." (set-guile-for-build (default-guile)) (system-test-value test))))) - ;; Those tests are extremely expensive in I/O operations and storage - ;; size, use the "period" attribute to run them with a period of at - ;; least 48 hours. - (derivation->job name drv - #:period (hours 24))))) + (derivation->job name drv)))) (if (member system %guix-system-supported-systems) ;; Override the value of 'current-guix' used by system tests. Using a @@ -352,8 +343,7 @@ passing the PERIOD argument." (define (->job name drv) (let ((name (string-append name "." system))) (parameterize ((%graft? #f)) - (derivation->job name drv - #:period (hours 24))))) + (derivation->job name drv)))) ;; XXX: Add a job for the stable Guix? (list @@ -422,16 +412,12 @@ valid." (define (arguments->manifests arguments channels) "Return the list of manifests extracted from ARGUMENTS." - (define (channel-name->checkout name) - (let ((channel (find (lambda (channel) - (eq? (channel-name channel) name)) - channels))) - (channel-url channel))) - - (map (match-lambda - ((name . path) - (let ((checkout (channel-name->checkout name))) - (in-vicinity checkout path)))) + (map (lambda (manifest) + (any (lambda (checkout) + (let ((path (in-vicinity checkout manifest))) + (and (file-exists? path) + path))) + (map channel-url channels))) arguments)) (define (manifests->packages store manifests) @@ -497,11 +483,6 @@ valid." (package->job store package system)))) (append (filter-map job all) - (image-jobs store system) - (system-test-jobs store system - #:source source - #:commit commit) - (tarball-jobs store system) (cross-jobs store system)))) ('core ;; Build core packages only. @@ -521,6 +502,27 @@ valid." (let ((hello (specification->package "hello"))) (list (package-job store (job-name hello) hello system)))) + ('images + ;; Build Guix System images only. + (image-jobs store system)) + ('system-tests + ;; Build Guix System tests only. + (system-test-jobs store system + #:source source + #:commit commit)) + ('tarball + ;; Build Guix tarball only. + (tarball-jobs store system)) + (('channels . channels) + ;; Build only the packages from CHANNELS. + (let ((all (all-packages))) + (filter-map + (lambda (package) + (any (lambda (channel) + (and (member (channel-name channel) channels) + (package->job store package system))) + (package-channels package))) + all))) (('packages . rest) ;; Build selected list of packages only. (let ((packages (map specification->package rest))) |