summaryrefslogtreecommitdiff
path: root/guix/ci.scm
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2023-01-30 11:33:18 +0200
committerEfraim Flashner <efraim@flashner.co.il>2023-01-30 12:39:40 +0200
commit4cf1acc7f3033b50b0bf19e02c9f522d522d338c (patch)
tree9fd64956ee60304c15387eb394cd649e49f01467 /guix/ci.scm
parentedb8c09addd186d9538d43b12af74d6c7aeea082 (diff)
parent595b53b74e3ef57a1c0c96108ba86d38a170a241 (diff)
Merge remote-tracking branch 'origin/master' into core-updates
Conflicts: doc/guix.texi gnu/local.mk gnu/packages/admin.scm gnu/packages/base.scm gnu/packages/chromium.scm gnu/packages/compression.scm gnu/packages/databases.scm gnu/packages/diffoscope.scm gnu/packages/freedesktop.scm gnu/packages/gnome.scm gnu/packages/gnupg.scm gnu/packages/guile.scm gnu/packages/inkscape.scm gnu/packages/llvm.scm gnu/packages/openldap.scm gnu/packages/pciutils.scm gnu/packages/ruby.scm gnu/packages/samba.scm gnu/packages/sqlite.scm gnu/packages/statistics.scm gnu/packages/syndication.scm gnu/packages/tex.scm gnu/packages/tls.scm gnu/packages/version-control.scm gnu/packages/xml.scm guix/build-system/copy.scm guix/scripts/home.scm
Diffstat (limited to 'guix/ci.scm')
-rw-r--r--guix/ci.scm23
1 files changed, 22 insertions, 1 deletions
diff --git a/guix/ci.scm b/guix/ci.scm
index 88b80f781d..ecdffde2d1 100644
--- a/guix/ci.scm
+++ b/guix/ci.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Mathieu Othacehe <othacehe@gnu.org>
;;;
;;; This file is part of GNU Guix.
@@ -24,6 +24,7 @@
#:select (resolve-uri-reference))
#:use-module (json)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-19)
#:use-module (ice-9 match)
#:use-module (web uri)
#:use-module (guix i18n)
@@ -42,6 +43,9 @@
build-system
build-status
build-timestamp
+ build-start-time
+ build-stop-time
+ build-duration
build-products
checkout?
@@ -84,6 +88,11 @@
;;;
;;; Code:
+(define (seconds->date seconds)
+ "Given SECONDS, a number of seconds since 1970-01-01, return the
+corresponding date object."
+ (time-utc->date (make-time time-utc 0 seconds)))
+
(define-json-mapping <build-product> make-build-product
build-product?
json->build-product
@@ -118,6 +127,10 @@
(status build-status "buildstatus" ;symbol
integer->build-status)
(timestamp build-timestamp) ;integer
+ (start-time build-start-time "starttime" ;date
+ seconds->date)
+ (stop-time build-stop-time "stoptime" ;date
+ seconds->date)
(products build-products "buildproducts" ;<build-product>*
(lambda (products)
(map json->build-product
@@ -201,6 +214,14 @@ api-agnostic."
(define* (json-api-fetch base-url path #:rest query)
(json-fetch (apply api-url base-url path query)))
+(define (build-duration build)
+ "Return the duration in seconds of BUILD."
+ (define duration
+ (time-difference (date->time-utc (build-stop-time build))
+ (date->time-utc (build-start-time build))))
+
+ (time-second duration))
+
(define* (queued-builds url #:optional (limit %query-limit))
"Return the list of queued derivations on URL."
(let ((queue