[PATCH] maint: Require Guile >= 2.2.6.

DoneSubmitted by Ludovic Courtès.
Details
3 participants
  • Efraim Flashner
  • Ludovic Courtès
  • Vagrant Cascadian
Owner
unassigned
Severity
normal
L
L
Ludovic Courtès wrote on 17 Dec 2020 16:33
(address . guix-patches@gnu.org)(name . Ludovic Courtès)(address . ludo@gnu.org)
20201217153300.19296-1-ludo@gnu.org
* configure.ac: For Guile 2.2, require 2.2.6 or later.* guix/gexp.scm (define-syntax-parameter-once): Remove.Use 'define-syntax-parameter' instead.* guix/mnoads.scm: Likewise.* guix/inferior.scm (proxy)[select*]: Remove.* guix/scripts/publish.scm <top level>: Remove replacement for (@@ (webhttp) read-header-line).* guix/store/deduplication.scm (counting-wrapper-port): Remove.(nar-sha256): Call 'port-position' on PORT to compute SIZE.--- configure.ac | 2 +- guix/gexp.scm | 15 ++------------- guix/inferior.scm | 11 +---------- guix/monads.scm | 15 ++------------- guix/scripts/publish.scm | 26 -------------------------- guix/store/deduplication.scm | 32 ++++---------------------------- 6 files changed, 10 insertions(+), 91 deletions(-)
Toggle diff (190 lines)diff --git a/configure.ac b/configure.acindex a5bdf24e93..afb449950f 100644--- a/configure.ac+++ b/configure.ac@@ -102,7 +102,7 @@ if test "x$GUILD" = "x"; then fi if test "x$GUILE_EFFECTIVE_VERSION" = "x2.2"; then- PKG_CHECK_MODULES([GUILE], [guile-2.2 >= 2.2.3])+ PKG_CHECK_MODULES([GUILE], [guile-2.2 >= 2.2.6]) fi dnl Get CFLAGS and LDFLAGS for libguile.diff --git a/guix/gexp.scm b/guix/gexp.scmindex 051831238e..764c89a187 100644--- a/guix/gexp.scm+++ b/guix/gexp.scm@@ -1317,18 +1317,7 @@ and in the current monad setting (system type, etc.)" reference->sexp (gexp-references exp)))) (return (apply (gexp-proc exp) args)))) -(define-syntax-rule (define-syntax-parameter-once name proc)- ;; Like 'define-syntax-parameter' but ensure the top-level binding for NAME- ;; does not get redefined. This works around a race condition in a- ;; multi-threaded context with Guile <= 2.2.4: <https://bugs.gnu.org/27476>.- (eval-when (load eval expand compile)- (define name- (if (module-locally-bound? (current-module) 'name)- (module-ref (current-module) 'name)- (make-syntax-transformer 'name 'syntax-parameter- (list proc))))))--(define-syntax-parameter-once current-imported-modules+(define-syntax-parameter current-imported-modules ;; Current list of imported modules. (identifier-syntax '())) @@ -1339,7 +1328,7 @@ environment." (identifier-syntax modules))) body ...)) -(define-syntax-parameter-once current-imported-extensions+(define-syntax-parameter current-imported-extensions ;; Current list of extensions. (identifier-syntax '())) diff --git a/guix/inferior.scm b/guix/inferior.scmindex 77820872b3..2fe91beaab 100644--- a/guix/inferior.scm+++ b/guix/inferior.scm@@ -469,22 +469,13 @@ is similar to the sexp returned by 'package-provenance' for regular packages." "Proxy communication between CLIENT and BACKEND until CLIENT closes the connection, at which point CLIENT is closed (both CLIENT and BACKEND must be input/output ports.)"- (define (select* read write except)- ;; This is a workaround for <https://bugs.gnu.org/30365> in Guile < 2.2.4:- ;; since 'select' sometimes returns non-empty sets for no good reason,- ;; call 'select' a second time with a zero timeout to filter out incorrect- ;; replies.- (match (select read write except)- ((read write except)- (select read write except 0))))- ;; Use buffered ports so that 'get-bytevector-some' returns up to the ;; whole buffer like read(2) would--see <https://bugs.gnu.org/30066>. (setvbuf client 'block 65536) (setvbuf backend 'block 65536) (let loop ()- (match (select* (list client backend) '() '())+ (match (select (list client backend) '() '()) ((reads () ()) (when (memq client reads) (match (get-bytevector-some client)diff --git a/guix/monads.scm b/guix/monads.scmindex 6924471345..6ae616aca9 100644--- a/guix/monads.scm+++ b/guix/monads.scm@@ -274,23 +274,12 @@ more optimizations." (_ #'generic-name)))))))))) -(define-syntax-rule (define-syntax-parameter-once name proc)- ;; Like 'define-syntax-parameter' but ensure the top-level binding for NAME- ;; does not get redefined. This works around a race condition in a- ;; multi-threaded context with Guile <= 2.2.4: <https://bugs.gnu.org/27476>.- (eval-when (load eval expand compile)- (define name- (if (module-locally-bound? (current-module) 'name)- (module-ref (current-module) 'name)- (make-syntax-transformer 'name 'syntax-parameter- (list proc))))))--(define-syntax-parameter-once >>=+(define-syntax-parameter >>= ;; The name 'bind' is already taken, so we choose this (obscure) symbol. (lambda (s) (syntax-violation '>>= ">>= (bind) used outside of 'with-monad'" s))) -(define-syntax-parameter-once return+(define-syntax-parameter return (lambda (s) (syntax-violation 'return "return used outside of 'with-monad'" s))) diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scmindex c31cef3181..5a865c838d 100644--- a/guix/scripts/publish.scm+++ b/guix/scripts/publish.scm@@ -824,32 +824,6 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")." (define %http-write (@@ (web server http) http-write)) -(match (list (major-version) (minor-version) (micro-version))- (("2" "2" "5") ;Guile 2.2.5- (let ()- (define %read-line (@ (ice-9 rdelim) %read-line))- (define bad-header (@@ (web http) bad-header))-- ;; XXX: Work around <https://bugs.gnu.org/36350> by reverting to the- ;; definition of 'read-header-line' as found in 2.2.4 and earlier.- (define (read-header-line port)- "Read an HTTP header line and return it without its final CRLF or LF.-Raise a 'bad-header' exception if the line does not end in CRLF or LF,-or if EOF is reached."- (match (%read-line port)- (((? string? line) . #\newline)- ;; '%read-line' does not consider #\return a delimiter; so if it's- ;; there, remove it. We are more tolerant than the RFC in that we- ;; tolerate LF-only endings.- (if (string-suffix? "\r" line)- (string-drop-right line 1)- line))- ((line . _) ;EOF or missing delimiter- (bad-header 'read-header-line line))))-- (set! (@@ (web http) read-header-line) read-header-line)))- (_ #t))- (define (strip-headers response) "Return RESPONSE's headers minus 'Content-Length' and our internal headers." (fold alist-deletediff --git a/guix/store/deduplication.scm b/guix/store/deduplication.scmindex a72a43bf79..cd9660174c 100644--- a/guix/store/deduplication.scm+++ b/guix/store/deduplication.scm@@ -37,38 +37,14 @@ dump-file/deduplicate copy-file/deduplicate)) -;; XXX: This port is used as a workaround on Guile <= 2.2.4 where-;; 'port-position' throws to 'out-of-range' when the offset is great than or-;; equal to 2^32: <https://bugs.gnu.org/32161>.-(define (counting-wrapper-port output-port)- "Return two values: an output port that wraps OUTPUT-PORT, and a thunk to-retrieve the number of bytes written to OUTPUT-PORT."- (let ((byte-count 0))- (values (make-custom-binary-output-port "counting-wrapper"- (lambda (bytes offset count)- (put-bytevector output-port bytes- offset count)- (set! byte-count- (+ byte-count count))- count)- (lambda ()- byte-count)- #f- (lambda ()- (close-port output-port)))- (lambda ()- byte-count))))- (define (nar-sha256 file) "Gives the sha256 hash of a file and the size of the file in nar form."- (let*-values (((port get-hash) (open-sha256-port))- ((wrapper get-size) (counting-wrapper-port port)))- (write-file file wrapper)- (force-output wrapper)+ (let-values (((port get-hash) (open-sha256-port)))+ (write-file file port) (force-output port) (let ((hash (get-hash))- (size (get-size)))- (close-port wrapper)+ (size (port-position port)))+ (close-port port) (values hash size)))) (define (tempname-in directory)-- 2.29.2
E
E
Efraim Flashner wrote on 17 Dec 2020 21:16
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 45299@debbugs.gnu.org)
X9u8pKtBqouh8FYw@E5400
Debian 10 (the current release) has guile-2.2.4
(ins)efraim@E5400 ~$ ssh do1 apt-cache policy guile-2.2guile-2.2: Installed: (none) Candidate: 2.2.4+1-2+deb10u1 Version table: 2.2.7+1-5.4 200 200 http://deb.debian.org/debiansid/main amd64 Packages 2.2.4+1-2+deb10u1 500 500 http://mirrors.digitalocean.com/debianbuster/main amd64 Packages 500 http://deb.debian.org/debianbuster/main amd64 Packages
guile-3 is currently in unstable
(ins)efraim@E5400 ~$ ssh do1 apt-cache policy guile-3.0guile-3.0: Installed: (none) Candidate: 3.0.4-3 Version table: 3.0.4-3 200 200 http://deb.debian.org/debiansid/main amd64 Packages
-- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנרGPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl/bvKQACgkQQarn3Mo9g1HRGBAAo5I4hHM5k4slmxZalfydtWJdfuAHFsTOF2W2ntv8lKWdAJfZ52i1c76iggwvFGndbeFOADFaWv1VY6UX8hjm+UZxUNemOOHUEXqNhMbRS2DSQ1L4z6sART6W8oxlfHsRWjA3RQPfyffZbCZ8X87pS2cp/NwYzF1x2HVuaZ+AEEkM4hk0pDqkmr2ZnkjHLzjxnN9PvbSZHSGNoQWHnAHoi0U8dYeeI3YreA7OkkxxQ40RJjYvvOh3ClpDxE8f+UTNm0j9EEvH4iMc/ofwV1Ce3UneE/UZa3T5hKMD6rcfI5PloZsZz+nIUJ2S+HtOVi5ZQy9Lq/2g9htfkYD+QfUKEPWQkvGBZm5rtV15Lpw8MOiFqDdAN6iZMT/mWm6Xs3fkYTV4ZMjvmIgtNLs1a8SisPxosq5EsF/UE4ej5d5Ic/tqGqFWPg31/ruLjN8MrATGrXv1+ITqagXd0qZDPKRZsi8Fef+GNiIl8Teka7P4J57TYyV1Nut/tbNMb5VR5pfEPuh56ij9rhzD68BXfCfw7+Imcat2WWuXoRzdtVan1eNogER+unHorNYdLdZK+AWsqtzdopUMO95r7CPHZYznP5r5Mi5ltBkb/BmUoBAUZxFVE/fLEVi/u8TiLWA5XS2QT3UiNLaJw/Uhzx+S6FVS8ordPK+WS04/EsxC9ZeR98E==HTlJ-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 18 Dec 2020 15:51
(name . Efraim Flashner)(address . efraim@flashner.co.il)(address . 45299@debbugs.gnu.org)
87wnxfb210.fsf@gnu.org
Hi Efraim,
Efraim Flashner <efraim@flashner.co.il> skribis:
Toggle quote (2 lines)> Debian 10 (the current release) has guile-2.2.4
Hmm OK. Should it hold us back, though?
2.2.6 was released in June 2019. Also, I expect most users to eitheruse Vagrant’s brand new ‘guix’ package or to use our binary tarball.
Thoughts?
Ludo’.
V
V
Vagrant Cascadian wrote on 18 Dec 2020 22:06
(address . 45299@debbugs.gnu.org)
87im8y6cyh.fsf@yucca
On 2020-12-18, Ludovic Courtès wrote:
Toggle quote (6 lines)> Efraim Flashner <efraim@flashner.co.il> skribis:>>> Debian 10 (the current release) has guile-2.2.4
> Hmm OK. Should it hold us back, though?
Debian 10 doesn't have many of the guile-* build dependencies, so Iwould not recommend the current Debian stable release block bumping theminimum guile 2.2 version for guix...

Toggle quote (2 lines)> 2.2.6 was released in June 2019.
Debian bullseye (the testing branch) currently has guile-2.2 at 2.2.7:
https://tracker.debian.org/pkg/guile-2.2
Debian bullseye is likely to become Debian stable mid-2021, starting tofreeze in early 2021.
It should have all the dependencies for building guix against guile-2.2,and *almost* all for building guix against guile-3.0...

Toggle quote (3 lines)> Also, I expect most users to either use Vagrant’s brand new ‘guix’> package or to use our binary tarball.
The guix package may not make it out of Debian experimental any timesoon... unless I switch it to use guile-2.2 (and track down thecorresponding test suite failures) or the guile-gnutls test suite issueswith guile-3.0 get fixed.

live well, vagrant
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCX90Z5gAKCRDcUY/If5cWqoqqAQCDKp3XwMuTcAFKvry5hs1tKUOBX8WBD/+/EcXbtZYRNwD/SoSwDzcnghxZK6FXekURZRwPDBPQLTEHG9VuUmt6NQ8==ilST-----END PGP SIGNATURE-----
L
L
Ludovic Courtès wrote on 20 Dec 2020 00:04
(name . Vagrant Cascadian)(address . vagrant@debian.org)
87wnxd8kka.fsf@gnu.org
Hi,
Vagrant Cascadian <vagrant@debian.org> skribis:
Toggle quote (11 lines)> On 2020-12-18, Ludovic Courtès wrote:>> Efraim Flashner <efraim@flashner.co.il> skribis:>>>>> Debian 10 (the current release) has guile-2.2.4>>> Hmm OK. Should it hold us back, though?>> Debian 10 doesn't have many of the guile-* build dependencies, so I> would not recommend the current Debian stable release block bumping the> minimum guile 2.2 version for guix...
Alright. Pushed as 4f621a2b003e85d480999e4d0630e9dc3de85bc3!
Toggle quote (5 lines)> The guix package may not make it out of Debian experimental any time> soon... unless I switch it to use guile-2.2 (and track down the> corresponding test suite failures) or the guile-gnutls test suite issues> with guile-3.0 get fixed.
Noted, I should keep investigating.
Thanks for your feedback!
Ludo’.
Closed
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send email to 45299@debbugs.gnu.org