Package: guix-patches;
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Wed, 26 May 2021 21:13:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 48685 in the body.
You can then email your comments to 48685 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
guix-patches <at> gnu.org
:bug#48685
; Package guix-patches
.
(Wed, 26 May 2021 21:13:01 GMT) Full text and rfc822 format available.Ludovic Courtès <ludo <at> gnu.org>
:guix-patches <at> gnu.org
.
(Wed, 26 May 2021 21:13:01 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: guix-patches <at> gnu.org Cc: Ludovic Courtès <ludo <at> gnu.org> Subject: [PATCH 0/2] Require Guile 3.0 Date: Wed, 26 May 2021 23:12:10 +0200
Hi! These patches drop support for Guile 2.2 so we can concentrate on moving forward. For the record, Guile 3.0 was released 1.5 year ago. In Debian, Guile 3.0 is available but the ‘guix’ package is currently built against 2.2 due to the GnuTLS/Guile bug at <https://issues.guix.gnu.org/46330>; this is likely to be addressed by the time we publish the next Guix release. Thoughts? Ludo’. Ludovic Courtès (2): maint: Require Guile 3.0. ui, lint: Simplify exception handling in Guile 3 style. configure.ac | 6 +-- doc/guix.texi | 3 +- gnu/packages/package-management.scm | 34 ------------ guix/lint.scm | 81 +++++++++++++---------------- guix/scripts/deploy.scm | 7 +-- guix/store.scm | 16 ++---- guix/swh.scm | 20 +++---- guix/ui.scm | 60 ++++++++------------- 8 files changed, 72 insertions(+), 155 deletions(-) -- 2.31.1
guix-patches <at> gnu.org
:bug#48685
; Package guix-patches
.
(Wed, 26 May 2021 21:19:02 GMT) Full text and rfc822 format available.Message #8 received at 48685 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: 48685 <at> debbugs.gnu.org Cc: Ludovic Courtès <ludo <at> gnu.org> Subject: [PATCH 1/2] maint: Require Guile 3.0. Date: Wed, 26 May 2021 23:18:13 +0200
* configure.ac: Require Guile 3.0. * doc/guix.texi (Requirements): Adjust accordingly. * gnu/packages/package-management.scm (guile2.2-guix): Remove. * guix/lint.scm (exception-with-kind-and-args?): Remove 'cond-expand'. * guix/scripts/deploy.scm (deploy-machine*): Likewise. * guix/store.scm (call-with-store): Likewise. * guix/swh.scm (http-get*, http-post*): Likewise. * guix/ui.scm (without-compiler-optimizations, guard*) (call-with-error-handling): Likewise. --- configure.ac | 6 +--- doc/guix.texi | 3 +- gnu/packages/package-management.scm | 34 --------------------- guix/lint.scm | 11 ++----- guix/scripts/deploy.scm | 7 ++--- guix/store.scm | 16 +++------- guix/swh.scm | 20 ++++--------- guix/ui.scm | 46 ++++++++++------------------- 8 files changed, 33 insertions(+), 110 deletions(-) diff --git a/configure.ac b/configure.ac index 583b902361..84592f6041 100644 --- a/configure.ac +++ b/configure.ac @@ -96,16 +96,12 @@ m4_pattern_forbid([^GUIX_]) dnl Search for 'guile' and 'guild'. This macro defines dnl 'GUILE_EFFECTIVE_VERSION'. -GUILE_PKG([3.0 2.2]) +GUILE_PKG([3.0]) GUILE_PROGS if test "x$GUILD" = "x"; then AC_MSG_ERROR(['guild' binary not found; please check your Guile installation.]) fi -if test "x$GUILE_EFFECTIVE_VERSION" = "x2.2"; then - PKG_CHECK_MODULES([GUILE], [guile-2.2 >= 2.2.6]) -fi - dnl Get CFLAGS and LDFLAGS for libguile. GUILE_FLAGS diff --git a/doc/guix.texi b/doc/guix.texi index e8b0485f78..05a4f9a6e2 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -833,8 +833,7 @@ GNU Guix is available for download from its website at GNU Guix depends on the following packages: @itemize -@item @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x or -2.2.x; +@item @url{https://gnu.org/software/guile/, GNU Guile}, version 3.0.x; @item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, version 0.1.0 or later; @item diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 1cea8ed83d..6378d7c2d9 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -518,40 +518,6 @@ the Nix package manager.") (invoke "make" "install-binPROGRAMS"))) (delete 'wrap-program))))))) - -(define-public guile2.2-guix - (package - (inherit guix) - (name "guile2.2-guix") - (native-inputs - `(("guile" ,guile-2.2) - ("gnutls" ,guile2.2-gnutls) - ("guile-gcrypt" ,guile2.2-gcrypt) - ("guile-json" ,guile2.2-json) - ("guile-lib" ,guile2.2-lib) - ("guile-sqlite3" ,guile2.2-sqlite3) - ("guile-ssh" ,guile2.2-ssh) - ("guile-git" ,guile2.2-git) - ("guile-zlib" ,guile2.2-zlib) - ("guile-lzlib" ,guile2.2-lzlib) - ,@(fold alist-delete (package-native-inputs guix) - '("guile" "gnutls" "guile-gcrypt" "guile-json" - "guile-lib" "guile-sqlite3" "guile-ssh" "guile-git" - "guile-zlib" "guile-lzlib")))) - (inputs - `(("guile" ,guile-2.2) - ,@(alist-delete "guile" (package-inputs guix)))) - (propagated-inputs - `(("gnutls" ,gnutls) - ("guile-gcrypt" ,guile2.2-gcrypt) - ("guile-json" ,guile2.2-json) - ("guile-lib" ,guile2.2-lib) - ("guile-sqlite3" ,guile2.2-sqlite3) - ("guile-ssh" ,guile2.2-ssh) - ("guile-git" ,guile2.2-git) - ("guile-zlib" ,guile2.2-zlib) - ("guile-lzlib" ,guile2.2-lzlib))))) - (define-public guile3.0-guix (deprecated-package "guile3.0-guix" guix)) diff --git a/guix/lint.scm b/guix/lint.scm index a2d6418b85..023a179ea6 100644 --- a/guix/lint.scm +++ b/guix/lint.scm @@ -1003,14 +1003,9 @@ descriptions maintained upstream." (origin-uris origin)) '()))) -(cond-expand - (guile-3 - ;; Guile 3.0.0 does not export this predicate. - (define exception-with-kind-and-args? - (exception-predicate &exception-with-kind-and-args))) - (else ;Guile 2 - (define exception-with-kind-and-args? - (const #f)))) +;; Guile 3.0.0 does not export this predicate. +(define exception-with-kind-and-args? + (exception-predicate &exception-with-kind-and-args)) (define* (check-derivation package #:key store) "Emit a warning if we fail to compile PACKAGE to a derivation." diff --git a/guix/scripts/deploy.scm b/guix/scripts/deploy.scm index 0725fba54b..b2029943e2 100644 --- a/guix/scripts/deploy.scm +++ b/guix/scripts/deploy.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 David Thompson <davet <at> gnu.org> ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays <at> sdf.org> -;;; Copyright © 2020 Ludovic Courtès <ludo <at> gnu.org> +;;; Copyright © 2020, 2021 Ludovic Courtès <ludo <at> gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -125,10 +125,7 @@ Perform the deployment specified by FILE.\n")) ;; and include a '&message'. However, that message only contains ;; the format string. Thus, special-case it here to avoid ;; displaying a bare format string. - ((cond-expand - (guile-3 - ((exception-predicate &exception-with-kind-and-args) c)) - (else #f)) + (((exception-predicate &exception-with-kind-and-args) c) (raise c)) ((message-condition? c) diff --git a/guix/store.scm b/guix/store.scm index 9d706ae590..cf5d5eeccc 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -648,18 +648,10 @@ connection. Use with care." (close-connection store) (apply values results))))) - (cond-expand - (guile-3 - (with-exception-handler (lambda (exception) - (close-connection store) - (raise-exception exception)) - thunk)) - (else ;Guile 2.2 - (catch #t - thunk - (lambda (key . args) - (close-connection store) - (apply throw key args))))))) + (with-exception-handler (lambda (exception) + (close-connection store) + (raise-exception exception)) + thunk))) (define-syntax-rule (with-store store exp ...) "Bind STORE to an open connection to the store and evaluate EXPs; diff --git a/guix/swh.scm b/guix/swh.scm index 06d2957252..f6d5241e06 100644 --- a/guix/swh.scm +++ b/guix/swh.scm @@ -148,20 +148,12 @@ url (string-append url "/"))) -(cond-expand - (guile-3 - ;; XXX: Work around a bug in Guile 3.0.2 where #:verify-certificate? would - ;; be ignored (<https://bugs.gnu.org/40486>). - (define* (http-get* uri #:rest rest) - (apply http-request uri #:method 'GET rest)) - (define* (http-post* uri #:rest rest) - (apply http-request uri #:method 'POST rest))) - (else ;Guile 2.2 - ;; Guile 2.2 did not have #:verify-certificate? so ignore it. - (define* (http-get* uri #:key verify-certificate? streaming?) - (http-request uri #:method 'GET #:streaming? streaming?)) - (define* (http-post* uri #:key verify-certificate? streaming?) - (http-request uri #:method 'POST #:streaming? streaming?)))) +;; XXX: Work around a bug in Guile 3.0.2 where #:verify-certificate? would +;; be ignored (<https://bugs.gnu.org/40486>). +(define* (http-get* uri #:rest rest) + (apply http-request uri #:method 'GET rest)) +(define* (http-post* uri #:rest rest) + (apply http-request uri #:method 'POST rest)) (define %date-regexp ;; Match strings like "2014-11-17T22:09:38+01:00" or diff --git a/guix/ui.scm b/guix/ui.scm index 05b3f5f84c..6b0155f563 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -196,17 +196,11 @@ information, or #f if it could not be found." (stack-ref stack 1) ;skip the 'throw' frame last)))) -(cond-expand - (guile-3 - (define-syntax-rule (without-compiler-optimizations exp) - ;; Compile with the baseline compiler (-O1), which is much less expensive - ;; than -O2. - (parameterize (((@ (system base compile) default-optimization-level) 1)) - exp))) - (else - (define-syntax-rule (without-compiler-optimizations exp) - ;; No easy way to turn off optimizations on Guile 2.2. - exp))) +(define-syntax-rule (without-compiler-optimizations exp) + ;; Compile with the baseline compiler (-O1), which is much less expensive + ;; than -O2. + (parameterize (((@ (system base compile) default-optimization-level) 1)) + exp)) (define* (load* file user-module #:key (on-error 'nothing-special)) @@ -674,22 +668,17 @@ or variants of @code{~a} in the same profile.") or remove one of them from the profile.") name1 name2))))) -(cond-expand - (guile-3 - ;; On Guile 3.0, in 'call-with-error-handling' we need to re-raise. To - ;; preserve useful backtraces in case of unhandled errors, we want that to - ;; happen before the stack has been unwound, hence 'guard*'. - (define-syntax-rule (guard* (var clauses ...) exp ...) - "This variant of SRFI-34 'guard' does not unwind the stack before +;; On Guile 3.0, in 'call-with-error-handling' we need to re-raise. To +;; preserve useful backtraces in case of unhandled errors, we want that to +;; happen before the stack has been unwound, hence 'guard*'. +(define-syntax-rule (guard* (var clauses ...) exp ...) + "This variant of SRFI-34 'guard' does not unwind the stack before evaluating the tests and bodies of CLAUSES." - (with-exception-handler - (lambda (var) - (cond clauses ... (else (raise var)))) - (lambda () exp ...) - #:unwind? #f))) - (else - (define-syntax-rule (guard* (var clauses ...) exp ...) - (guard (var clauses ...) exp ...)))) + (with-exception-handler + (lambda (var) + (cond clauses ... (else (raise var)))) + (lambda () exp ...) + #:unwind? #f)) (define (call-with-error-handling thunk) "Call THUNK within a user-friendly error handler." @@ -822,10 +811,7 @@ directories:~{ ~a~}~%") ;; Furthermore, use of 'guard*' ensures that the stack has not ;; been unwound when we re-raise, since that would otherwise show ;; useless backtraces. - ((cond-expand - (guile-3 - ((exception-predicate &exception-with-kind-and-args) c)) - (else #f)) + (((exception-predicate &exception-with-kind-and-args) c) (raise c)) ((message-condition? c) -- 2.31.1
guix-patches <at> gnu.org
:bug#48685
; Package guix-patches
.
(Wed, 26 May 2021 21:19:02 GMT) Full text and rfc822 format available.Message #11 received at 48685 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: 48685 <at> debbugs.gnu.org Cc: Ludovic Courtès <ludo <at> gnu.org> Subject: [PATCH 2/2] ui, lint: Simplify exception handling in Guile 3 style. Date: Wed, 26 May 2021 23:18:14 +0200
* guix/lint.scm (check-derivation)[try]: Remove "catch #t" wrapping. * guix/ui.scm (call-with-error-handling): Remove "catch 'system-error" and move 'system-error handling to the &exception-with-kind-and-args clause. --- guix/lint.scm | 70 +++++++++++++++++++++++---------------------------- guix/ui.scm | 14 +++++------ 2 files changed, 39 insertions(+), 45 deletions(-) diff --git a/guix/lint.scm b/guix/lint.scm index 023a179ea6..41dd5d0633 100644 --- a/guix/lint.scm +++ b/guix/lint.scm @@ -1010,45 +1010,39 @@ descriptions maintained upstream." (define* (check-derivation package #:key store) "Emit a warning if we fail to compile PACKAGE to a derivation." (define (try store system) - (catch #t ;TODO: Remove 'catch' when Guile 2.x is no longer supported. - (lambda () - (guard (c ((store-protocol-error? c) - (make-warning package - (G_ "failed to create ~a derivation: ~a") - (list system - (store-protocol-error-message c)))) - ((exception-with-kind-and-args? c) - (make-warning package - (G_ "failed to create ~a derivation: ~s") - (list system - (cons (exception-kind c) - (exception-args c))))) - ((message-condition? c) - (make-warning package - (G_ "failed to create ~a derivation: ~a") - (list system - (condition-message c)))) - ((formatted-message? c) - (let ((str (apply format #f - (formatted-message-string c) - (formatted-message-arguments c)))) - (make-warning package - (G_ "failed to create ~a derivation: ~a") - (list system str))))) - (parameterize ((%graft? #f)) - (package-derivation store package system #:graft? #f) + (guard (c ((store-protocol-error? c) + (make-warning package + (G_ "failed to create ~a derivation: ~a") + (list system + (store-protocol-error-message c)))) + ((exception-with-kind-and-args? c) + (make-warning package + (G_ "failed to create ~a derivation: ~s") + (list system + (cons (exception-kind c) + (exception-args c))))) + ((message-condition? c) + (make-warning package + (G_ "failed to create ~a derivation: ~a") + (list system + (condition-message c)))) + ((formatted-message? c) + (let ((str (apply format #f + (formatted-message-string c) + (formatted-message-arguments c)))) + (make-warning package + (G_ "failed to create ~a derivation: ~a") + (list system str))))) + (parameterize ((%graft? #f)) + (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 - (make-warning package - (G_ "failed to create ~a derivation: ~s") - (list system args))))) + ;; 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)))))) (define (check-with-store store) (filter lint-warning? diff --git a/guix/ui.scm b/guix/ui.scm index 6b0155f563..d3e01f846d 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -812,7 +812,12 @@ directories:~{ ~a~}~%") ;; been unwound when we re-raise, since that would otherwise show ;; useless backtraces. (((exception-predicate &exception-with-kind-and-args) c) - (raise c)) + (if (eq? 'system-error (exception-kind c)) ;EPIPE & co. + (match (exception-args c) + ((proc format-string format-args . _) + (leave (G_ "~a: ~a~%") proc + (apply format #f format-string format-args)))) + (raise c))) ((message-condition? c) ;; Normally '&message' error conditions have an i18n'd message. @@ -822,12 +827,7 @@ directories:~{ ~a~}~%") (when (fix-hint? c) (display-hint (condition-fix-hint c))) (exit 1))) - ;; Catch EPIPE and the likes. - (catch 'system-error - thunk - (lambda (key proc format-string format-args . rest) - (leave (G_ "~a: ~a~%") proc - (apply format #f format-string format-args)))))) + (thunk))) (define-syntax-rule (leave-on-EPIPE exp ...) "Run EXP... in a context where EPIPE errors are caught and lead to 'exit' -- 2.31.1
Ludovic Courtès <ludo <at> gnu.org>
:Ludovic Courtès <ludo <at> gnu.org>
:Message #16 received at 48685-done <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: 48685-done <at> debbugs.gnu.org Subject: Re: bug#48685: [PATCH 0/2] Require Guile 3.0 Date: Tue, 01 Jun 2021 23:28:27 +0200
Ludovic Courtès <ludo <at> gnu.org> skribis: > maint: Require Guile 3.0. > ui, lint: Simplify exception handling in Guile 3 style. Pushed as 5bcb4f8a58ad316174768c167927c03be3272786! Ludo’.
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Wed, 30 Jun 2021 11:24:09 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.