From 66a198c8075f02d7075a555b48dd3adde88ebbbf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 22 Mar 2020 12:41:28 +0100 Subject: hydra: evaluate: Use 'with-build-handler'. * build-aux/hydra/evaluate.scm (command-line): Remove 'set!' for 'build-things'. Use 'with-build-handler' instead. * build-aux/hydra/gnu-system.scm (hydra-jobs): Add comment about removing 'show-what-to-build' call. --- build-aux/hydra/evaluate.scm | 78 +++++++++++++++++++----------------------- build-aux/hydra/gnu-system.scm | 2 ++ 2 files changed, 38 insertions(+), 42 deletions(-) (limited to 'build-aux') diff --git a/build-aux/hydra/evaluate.scm b/build-aux/hydra/evaluate.scm index adb14808fa..6e63a149bd 100644 --- a/build-aux/hydra/evaluate.scm +++ b/build-aux/hydra/evaluate.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017, 2018 Ludovic Courtès +;;; Copyright © 2016, 2017, 2018, 2020 Ludovic Courtès ;;; Copyright © 2017 Jan Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. @@ -24,6 +24,7 @@ (use-modules (guix store) (guix git-download) ((guix build utils) #:select (with-directory-excursion)) + ((guix ui) #:select (build-notifier)) (srfi srfi-19) (ice-9 match) (ice-9 pretty-print) @@ -89,49 +90,42 @@ Otherwise return THING." #:use-substitutes? #f #:substitute-urls '()) - ;; Grafts can trigger early builds. We do not want that to happen - ;; during evaluation, so use a sledgehammer to catch such problems. - ;; An exception, though, is the evaluation of Guix itself, which - ;; requires building a "trampoline" program. - (set! build-things - (lambda (store . args) - (format (current-error-port) - "warning: building things during evaluation~%") - (format (current-error-port) - "'build-things' arguments: ~s~%" args) - (apply real-build-things store args))) + ;; The evaluation of Guix itself requires building a "trampoline" + ;; program, and possibly everything it depends on. Thus, allow builds + ;; but print a notification. + (with-build-handler (build-notifier #:use-substitutes? #f) - ;; Add %TOP-SRCDIR to the store with a proper Git predicate so we work - ;; from a clean checkout - (let ((source (add-to-store store "guix-source" #t - "sha256" %top-srcdir - #:select? (git-predicate %top-srcdir)))) - (with-directory-excursion source - (save-module-excursion - (lambda () - (set-current-module %user-module) - (format (current-error-port) - "loading '~a' relative to '~a'...~%" - file source) - (primitive-load file)))) + ;; Add %TOP-SRCDIR to the store with a proper Git predicate so we work + ;; from a clean checkout + (let ((source (add-to-store store "guix-source" #t + "sha256" %top-srcdir + #:select? (git-predicate %top-srcdir)))) + (with-directory-excursion source + (save-module-excursion + (lambda () + (set-current-module %user-module) + (format (current-error-port) + "loading '~a' relative to '~a'...~%" + file source) + (primitive-load file)))) - ;; Call the entry point of FILE and print the resulting job sexp. - (pretty-print - (match ((module-ref %user-module - (if (equal? cuirass? "cuirass") - 'cuirass-jobs - 'hydra-jobs)) - store `((guix - . ((file-name . ,source))))) - (((names . thunks) ...) - (map (lambda (job thunk) - (format (current-error-port) "evaluating '~a'... " job) - (force-output (current-error-port)) - (cons job - (assert-valid-job job - (call-with-time-display thunk)))) - names thunks))) - port))))) + ;; Call the entry point of FILE and print the resulting job sexp. + (pretty-print + (match ((module-ref %user-module + (if (equal? cuirass? "cuirass") + 'cuirass-jobs + 'hydra-jobs)) + store `((guix + . ((file-name . ,source))))) + (((names . thunks) ...) + (map (lambda (job thunk) + (format (current-error-port) "evaluating '~a'... " job) + (force-output (current-error-port)) + (cons job + (assert-valid-job job + (call-with-time-display thunk)))) + names thunks))) + port)))))) ((command _ ...) (format (current-error-port) "Usage: ~a FILE [cuirass] Evaluate the Hydra or Cuirass jobs defined in FILE.~%" diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm index 4afdb48903..a03324daeb 100644 --- a/build-aux/hydra/gnu-system.scm +++ b/build-aux/hydra/gnu-system.scm @@ -65,6 +65,8 @@ Return #f if no such checkout is found." (run-with-store store (channel-instances->derivation (list instance)))) + ;; TODO: Remove 'show-what-to-build' call when Cuirass' 'evaluate' scripts + ;; uses 'with-build-handler'. (show-what-to-build store (list derivation)) (build-derivations store (list derivation)) -- cgit 1.4.1 From 9acacb71c958218fd69cf0fb9df0b439a980a0f2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 22 Mar 2020 15:58:49 +0100 Subject: Remove workaround for 'time-monotonic' in Guile 2.2.2. This is a followup to e688c2df3924423b67892cc9939ca099c729d1cb. * build-aux/hydra/evaluate.scm : Remove 'time-monotonic' definition. * guix/cache.scm: Likewise. * guix/progress.scm: Likewise. * guix/scripts/substitute.scm: Likewise. * guix/scripts/weather.scm: Likewise. * tests/cache.scm: Likewise. --- build-aux/hydra/evaluate.scm | 7 ------- guix/cache.scm | 9 +-------- guix/progress.scm | 9 +-------- guix/scripts/substitute.scm | 7 ------- guix/scripts/weather.scm | 7 ------- tests/cache.scm | 9 +-------- 6 files changed, 3 insertions(+), 45 deletions(-) (limited to 'build-aux') diff --git a/build-aux/hydra/evaluate.scm b/build-aux/hydra/evaluate.scm index 6e63a149bd..c74fcdb763 100644 --- a/build-aux/hydra/evaluate.scm +++ b/build-aux/hydra/evaluate.scm @@ -42,13 +42,6 @@ (beautify-user-module! m) m)) -(cond-expand - (guile-2.2 - ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and - ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. - (define time-monotonic time-tai)) - (else #t)) - (define (call-with-time thunk kont) "Call THUNK and pass KONT the elapsed time followed by THUNK's return values." diff --git a/guix/cache.scm b/guix/cache.scm index 1dc0083f1d..feff131068 100644 --- a/guix/cache.scm +++ b/guix/cache.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,13 +33,6 @@ ;;; ;;; Code: -(cond-expand - (guile-2.2 - ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and - ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. - (define time-monotonic time-tai)) - (else #t)) - (define (obsolete? date now ttl) "Return #t if DATE is obsolete compared to NOW + TTL seconds." (time>? (subtract-duration now (make-time time-duration 0 ttl)) diff --git a/guix/progress.scm b/guix/progress.scm index c7567a35fd..fec65b424c 100644 --- a/guix/progress.scm +++ b/guix/progress.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Sou Bunnbu ;;; Copyright © 2015 Steve Sprang -;;; Copyright © 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2018 Clément Lassieur ;;; ;;; This file is part of GNU Guix. @@ -96,13 +96,6 @@ stopped." ;;; File download progress report. ;;; -(cond-expand - (guile-2.2 - ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and - ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. - (define time-monotonic time-tai)) - (else #t)) - (define (nearest-exact-integer x) "Given a real number X, return the nearest exact integer, with ties going to the nearest exact even integer." diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index dfb975a24a..95b47a7816 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -102,13 +102,6 @@ ;;; ;;; Code: -(cond-expand - (guile-2.2 - ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and - ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. - (define time-monotonic time-tai)) - (else #t)) - (define %narinfo-cache-directory ;; A local cache of narinfos, to avoid going to the network. Most of the ;; time, 'guix substitute' is called by guix-daemon as root and stores its diff --git a/guix/scripts/weather.scm b/guix/scripts/weather.scm index a9e0cba92a..eb76771452 100644 --- a/guix/scripts/weather.scm +++ b/guix/scripts/weather.scm @@ -106,13 +106,6 @@ scope." '() packages))))) -(cond-expand - (guile-2.2 - ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and - ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. - (define time-monotonic time-tai)) - (else #t)) - (define (call-with-time thunk kont) "Call THUNK and pass KONT the elapsed time followed by THUNK's return values." diff --git a/tests/cache.scm b/tests/cache.scm index e46cdd816d..80b44d69aa 100644 --- a/tests/cache.scm +++ b/tests/cache.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Ludovic Courtès +;;; Copyright © 2017, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,13 +24,6 @@ #:use-module ((guix utils) #:select (call-with-temporary-directory)) #:use-module (ice-9 match)) -(cond-expand - (guile-2.2 - ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and - ;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it. - (define time-monotonic time-tai)) - (else #t)) - (test-begin "cache") (test-equal "remove-expired-cache-entries" -- cgit 1.4.1