diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2023-01-30 11:33:18 +0200 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2023-01-30 12:39:40 +0200 |
commit | 4cf1acc7f3033b50b0bf19e02c9f522d522d338c (patch) | |
tree | 9fd64956ee60304c15387eb394cd649e49f01467 /guix/ci.scm | |
parent | edb8c09addd186d9538d43b12af74d6c7aeea082 (diff) | |
parent | 595b53b74e3ef57a1c0c96108ba86d38a170a241 (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.scm | 23 |
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 |