[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Ludovic Courtès |
Date: |
Mon, 29 Jan 2018 12:07:15 -0500 (EST) |
branch: master
commit 5e959dd8f2bd9119758ff0fd056965bf2c6a6b21
Author: Ludovic Courtès <address@hidden>
Date: Sun Jan 28 14:43:32 2018 +0100
base: 'spawn-builds' shuffles jobs.
* src/cuirass/base.scm (shuffle-jobs): New procedure.
(spawn-builds): Use it.
---
src/cuirass/base.scm | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/cuirass/base.scm b/src/cuirass/base.scm
index 8fed366..7f02633 100644
--- a/src/cuirass/base.scm
+++ b/src/cuirass/base.scm
@@ -286,6 +286,16 @@ and so on. "
;;; Building packages.
;;;
+(define (shuffle-jobs jobs)
+ "Shuffle JOBS, a list of job alists."
+ ;; Our shuffling algorithm is simple: we sort by .drv file name. :-)
+ (define (job<? job1 job2)
+ (let ((drv1 (assq-ref job1 #:derivation))
+ (drv2 (assq-ref job2 #:derivation)))
+ (string<? drv1 drv2)))
+
+ (sort jobs job<?))
+
(define* (spawn-builds store db jobs
#:key (max-batch-size 200))
"Build the derivations associated with JOBS, a list of job alists, updating
@@ -316,7 +326,9 @@ MAX-BATCH-SIZE items."
(build-event-output-port (lambda (event status)
(handle-build-event db event))
#t)))
- (let loop ((jobs jobs)
+ ;; Shuffle jobs so that we don't build sequentially i686/x86_64/aarch64,
+ ;; master/core-updates, etc., which would be suboptimal.
+ (let loop ((jobs (shuffle-jobs jobs))
(count total))
(if (zero? count)
(log-message "done with ~a derivations" total)
- master updated (1206135 -> e058823), Ludovic Courtès, 2018/01/29
- [no subject], Ludovic Courtès, 2018/01/29
- [no subject],
Ludovic Courtès <=
- [no subject], Ludovic Courtès, 2018/01/29
- [no subject], Ludovic Courtès, 2018/01/29
- [no subject], Ludovic Courtès, 2018/01/29
- [no subject], Ludovic Courtès, 2018/01/29