GNU bug report logs -
#61970
[PATCH] lint: Return exit code 1 if there are warnings.
Previous Next
To reply to this bug, email your comments to 61970 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
ludo <at> gnu.org, guix-patches <at> gnu.org
:
bug#61970
; Package
guix-patches
.
(Sat, 04 Mar 2023 23:18:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Antero Mejr <antero <at> mailbox.org>
:
New bug report received and forwarded. Copy sent to
ludo <at> gnu.org, guix-patches <at> gnu.org
.
(Sat, 04 Mar 2023 23:18:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
* guix/scripts/lint.scm (guix-lint, run-checkers): Modify procedure.
---
Exiting 1 makes it a lot easier to include a "guix lint" step in external
CI pipelines.
guix/scripts/lint.scm | 60 ++++++++++++++++++++++++++-----------------
1 file changed, 36 insertions(+), 24 deletions(-)
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index 9920c3ee62..a4bec357c7 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -61,21 +61,25 @@ (define (emit-warnings warnings)
(define* (run-checkers package checkers #:key store)
"Run the given CHECKERS on PACKAGE."
- (let ((tty? (isatty? (current-error-port))))
- (for-each (lambda (checker)
- (when tty?
- (format (current-error-port) "checking ~a@~a [~a]...\x1b[K\r"
- (package-name package) (package-version package)
- (lint-checker-name checker))
- (force-output (current-error-port)))
- (emit-warnings
- (if (lint-checker-requires-store? checker)
- ((lint-checker-check checker) package #:store store)
- ((lint-checker-check checker) package))))
- checkers)
+ (let* ((tty? (isatty? (current-error-port)))
+ (results
+ (map (lambda (checker)
+ (when tty?
+ (format (current-error-port) "checking ~a@~a [~a]...\x1b[K\r"
+ (package-name package) (package-version package)
+ (lint-checker-name checker))
+ (force-output (current-error-port)))
+ (let ((results (if (lint-checker-requires-store? checker)
+ ((lint-checker-check checker) package
+ #:store store)
+ ((lint-checker-check checker) package))))
+ (emit-warnings results)
+ results))
+ checkers)))
(when tty?
(format (current-error-port) "\x1b[K")
- (force-output (current-error-port)))))
+ (force-output (current-error-port)))
+ results))
(define (list-checkers-and-exit checkers)
;; Print information about all available checkers and exit.
@@ -218,14 +222,22 @@ (define (call-maybe-with-store proc)
(proc store))
(proc #f)))
- (call-maybe-with-store
- (lambda (store)
- (cond
- ((null? args)
- (fold-packages (lambda (p r) (run-checkers p checkers
- #:store store)) '()))
- (else
- (for-each (lambda (package)
- (run-checkers package checkers
- #:store store))
- args)))))))))
+ (define (null?-rec lst)
+ (if (list? lst)
+ (not (member #f (map null?-rec lst)))
+ #f))
+
+ (if (null?-rec
+ (call-maybe-with-store
+ (lambda (store)
+ (cond
+ ((null? args)
+ (fold-packages (lambda (p r)
+ (cons (run-checkers p checkers
+ #:store store) r)) '()))
+ (else
+ (map (lambda (package)
+ (run-checkers package checkers #:store store))
+ args))))))
+ (exit 0)
+ (exit 1))))))
--
2.38.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#61970
; Package
guix-patches
.
(Mon, 06 Mar 2023 16:00:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 61970 <at> debbugs.gnu.org (full text, mbox):
Hi,
Antero Mejr <antero <at> mailbox.org> skribis:
> * guix/scripts/lint.scm (guix-lint, run-checkers): Modify procedure.
Please expound a little bit. :-)
Could you also add a sentence under “Invoking guix lint” in the manual?
> Exiting 1 makes it a lot easier to include a "guix lint" step in external
> CI pipelines.
Yeah, though some lint warnings are more critical than others, and often
they’re just warnings, which is why ‘guix lint’ always returned zero so
far.
> (define* (run-checkers package checkers #:key store)
> "Run the given CHECKERS on PACKAGE."
> - (let ((tty? (isatty? (current-error-port))))
> - (for-each (lambda (checker)
> - (when tty?
> - (format (current-error-port) "checking ~a@~a [~a]...\x1b[K\r"
> - (package-name package) (package-version package)
> - (lint-checker-name checker))
> - (force-output (current-error-port)))
> - (emit-warnings
> - (if (lint-checker-requires-store? checker)
> - ((lint-checker-check checker) package #:store store)
> - ((lint-checker-check checker) package))))
> - checkers)
> + (let* ((tty? (isatty? (current-error-port)))
> + (results
> + (map (lambda (checker)
> + (when tty?
> + (format (current-error-port) "checking ~a@~a [~a]...\x1b[K\r"
> + (package-name package) (package-version package)
> + (lint-checker-name checker))
> + (force-output (current-error-port)))
> + (let ((results (if (lint-checker-requires-store? checker)
> + ((lint-checker-check checker) package
> + #:store store)
> + ((lint-checker-check checker) package))))
> + (emit-warnings results)
> + results))
> + checkers)))
For clarity I would separate warning collection from warning printing.
So:
(let ((tty? …)
(warnings (append-map (lambda (checker) …) checkers)))
(for-each (lambda (warning) …) warnings)
(null? warnings)) ;return #t when WARNINGS is empty
> + (define (null?-rec lst)
> + (if (list? lst)
> + (not (member #f (map null?-rec lst)))
> + #f))
> +
> + (if (null?-rec
> + (call-maybe-with-store
> + (lambda (store)
> + (cond
> + ((null? args)
> + (fold-packages (lambda (p r)
> + (cons (run-checkers p checkers
> + #:store store) r)) '()))
> + (else
> + (map (lambda (package)
> + (run-checkers package checkers #:store store))
> + args))))))
> + (exit 0)
> + (exit 1))))))
I’d suggest something similar here.
Could you send an updated patch?
Thanks,
Ludo’.
Information forwarded
to
guix-patches <at> gnu.org
:
bug#61970
; Package
guix-patches
.
(Wed, 24 Jul 2024 13:27:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 61970 <at> debbugs.gnu.org (full text, mbox):
Hi Antero,
On Mon, 06 Mar 2023 at 16:59, Ludovic Courtès <ludo <at> gnu.org> wrote:
> Could you send an updated patch?
Have you had the opportunity to look at Ludo’s comments?
Cheers,
simon
This bug report was last modified 229 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.