guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/05: lint: 'check-derivation' tries all the package's supported system


From: Ludovic Courtès
Subject: 02/05: lint: 'check-derivation' tries all the package's supported systems.
Date: Tue, 20 Nov 2018 12:40:00 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 3b32891b12ee18c57b0fc346ed7dce8b6976066b
Author: Ludovic Courtès <address@hidden>
Date:   Tue Nov 20 18:25:13 2018 +0100

    lint: 'check-derivation' tries all the package's supported systems.
    
    This allows us to catch architecture-specific evaluation failures.
    
    * guix/scripts/lint.scm (check-derivation): Move body into...
    [try]: ... this.  New procedure.
    Call 'try' for each supported system of PACKAGE.
---
 guix/scripts/lint.scm | 54 ++++++++++++++++++++++++++++-----------------------
 tests/lint.scm        |  4 ++--
 2 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index e477bf0..e8cf2dc 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -774,30 +774,36 @@ descriptions maintained upstream."
 
 (define (check-derivation package)
   "Emit a warning if we fail to compile PACKAGE to a derivation."
-  (catch #t
-    (lambda ()
-      (guard (c ((nix-protocol-error? c)
-                 (emit-warning package
-                               (format #f (G_ "failed to create derivation: 
~a")
-                                       (nix-protocol-error-message c))))
-                ((message-condition? c)
-                 (emit-warning package
-                               (format #f (G_ "failed to create derivation: 
~a")
-                                       (condition-message c)))))
-        (with-store store
-          ;; Disable grafts since it can entail rebuilds.
-          (package-derivation store package #:graft? #f)
-
-          ;; If there's a replacement, make sure we can compute its
-          ;; derivation.
-          (match (package-replacement package)
-            (#f #t)
-            (replacement
-             (package-derivation store replacement #:graft? #f))))))
-    (lambda args
-      (emit-warning package
-                    (format #f (G_ "failed to create derivation: ~s~%")
-                            args)))))
+  (define (try system)
+    (catch #t
+      (lambda ()
+        (guard (c ((nix-protocol-error? c)
+                   (emit-warning package
+                                 (format #f (G_ "failed to create ~a 
derivation: ~a")
+                                         system
+                                         (nix-protocol-error-message c))))
+                  ((message-condition? c)
+                   (emit-warning package
+                                 (format #f (G_ "failed to create ~a 
derivation: ~a")
+                                         system
+                                         (condition-message c)))))
+          (with-store store
+            ;; Disable grafts since it can entail rebuilds.
+            (package-derivation store package system #:graft? #f)
+
+            ;; If there's a replacement, make sure we can compute its
+            ;; derivation.
+            (match (package-replacement package)
+              (#f #t)
+              (replacement
+               (package-derivation store replacement system
+                                   #:graft? #f))))))
+      (lambda args
+        (emit-warning package
+                      (format #f (G_ "failed to create ~a derivation: ~s")
+                              system args)))))
+
+  (for-each try (package-supported-systems package)))
 
 (define (check-license package)
   "Warn about type errors of the 'license' field of PACKAGE."
diff --git a/tests/lint.scm b/tests/lint.scm
index ab0e8b9..300153e 100644
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013 Cyril Roelandt <address@hidden>
 ;;; Copyright © 2014, 2015, 2016 Eric Bavier <address@hidden>
-;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <address@hidden>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2015, 2016 Mathieu Lirzin <address@hidden>
 ;;; Copyright © 2016 Hartmut Goebel <address@hidden>
 ;;; Copyright © 2017 Alex Kost <address@hidden>
@@ -365,7 +365,7 @@
                    (arguments
                     '(#:imported-modules (invalid-module))))))
         (check-derivation pkg)))
-    "failed to create derivation")))
+    "failed to create")))
 
 (test-assert "license: invalid license"
   (string-contains



reply via email to

[Prev in Thread] Current Thread [Next in Thread]