* [bug#34007] [PATCH 0/5] Drop Guile 2.0 support
@ 2019-01-07 10:47 Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 1/5] build: Require Guile 2.2 Ludovic Courtès
2019-01-09 14:44 ` bug#34007: [PATCH 0/5] Drop Guile 2.0 support Ludovic Courtès
0 siblings, 2 replies; 7+ messages in thread
From: Ludovic Courtès @ 2019-01-07 10:47 UTC (permalink / raw)
To: 34007
Hello Guix,
This removes Guile 2.0 support, which in turn in a first step towards
Guile 2.9/3.0 support.
Note that build-side code that would trigger full rebuilds is
unchanged and so still uses APIs that are deprecated in Guile 2.2, in
particular (guix build utils) and (guix build gnu-build-system).
Feedback welcome!
Ludo’.
Ludovic Courtès (5):
build: Require Guile 2.2.
maint: Remove 'cond-expand' forms for Guile 2.0.
download: Remove Guile 2.0 workaround.
Remove most uses of the _IO*F constants.
self: Drop support for Guix < 0.15 on Guile 2.0.
README | 2 +-
configure.ac | 6 +-
doc/guix.texi | 5 +-
gnu/packages/package-management.scm | 39 ++++--------
guix/build/compile.scm | 18 ++----
guix/build/download-nar.scm | 6 +-
guix/build/download.scm | 28 +++------
guix/build/make-bootstrap.scm | 4 +-
guix/build/syscalls.scm | 56 ++++++++---------
guix/build/union.scm | 21 +++++--
guix/ftp-client.scm | 8 +--
guix/http-client.scm | 2 +-
guix/inferior.scm | 10 ++-
guix/scripts/pack.scm | 6 +-
guix/scripts/substitute.scm | 6 +-
guix/self.scm | 95 +++++++----------------------
guix/ssh.scm | 12 ++--
guix/status.scm | 6 +-
guix/store.scm | 9 +--
guix/ui.scm | 9 +--
tests/publish.scm | 6 +-
tests/status.scm | 6 +-
tests/store.scm | 6 +-
23 files changed, 131 insertions(+), 235 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#34007] [PATCH 1/5] build: Require Guile 2.2.
2019-01-07 10:47 [bug#34007] [PATCH 0/5] Drop Guile 2.0 support Ludovic Courtès
@ 2019-01-07 10:48 ` Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 2/5] maint: Remove 'cond-expand' forms for Guile 2.0 Ludovic Courtès
` (3 more replies)
2019-01-09 14:44 ` bug#34007: [PATCH 0/5] Drop Guile 2.0 support Ludovic Courtès
1 sibling, 4 replies; 7+ messages in thread
From: Ludovic Courtès @ 2019-01-07 10:48 UTC (permalink / raw)
To: 34007
* configure.ac: Require Guile 2.2.
* README: Adjust accordingly.
* doc/guix.texi (Requirements): Likewise.
* gnu/packages/package-management.scm (guile2.0-guix): Deprecate.
(guix-minimal): Inherit from GUIX, not from GUILE2.0-GUIX.
---
README | 2 +-
configure.ac | 6 +----
doc/guix.texi | 5 ++--
gnu/packages/package-management.scm | 39 ++++++++++-------------------
4 files changed, 17 insertions(+), 35 deletions(-)
diff --git a/README b/README
index e7871917f2..296df41516 100644
--- a/README
+++ b/README
@@ -20,7 +20,7 @@ Guix is based on the [[https://nixos.org/nix/][Nix]] package manager.
GNU Guix currently depends on the following packages:
- - [[https://gnu.org/software/guile/][GNU Guile 2.2.x or 2.0.x]], version 2.0.13 or later
+ - [[https://gnu.org/software/guile/][GNU Guile 2.2.x]]
- [[https://notabug.org/cwebber/guile-gcrypt][Guile-Gcrypt]] 0.1.0 or later
- [[https://www.gnu.org/software/make/][GNU Make]]
- [[https://www.gnutls.org][GnuTLS]] compiled with guile support enabled
diff --git a/configure.ac b/configure.ac
index 2817e6e24d..891fce28ae 100644
--- a/configure.ac
+++ b/configure.ac
@@ -93,16 +93,12 @@ m4_pattern_forbid([^GUIX_])
dnl Search for 'guile' and 'guild'. This macro defines
dnl 'GUILE_EFFECTIVE_VERSION'.
-GUILE_PKG([2.2 2.0])
+GUILE_PKG([2.2])
GUILE_PROGS
if test "x$GUILD" = "x"; then
AC_MSG_ERROR(['guild' binary not found; please check your guile-2.x installation.])
fi
-if test "x$GUILE_EFFECTIVE_VERSION" = "x2.0"; then
- PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.13])
-fi
-
dnl Installation directories for .scm and .go files.
guilemoduledir="${datarootdir}/guile/site/$GUILE_EFFECTIVE_VERSION"
guileobjectdir="${libdir}/guile/$GUILE_EFFECTIVE_VERSION/site-ccache"
diff --git a/doc/guix.texi b/doc/guix.texi
index fcb5b8c088..8376ce77a1 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -17,7 +17,7 @@
@set SUBSTITUTE-SERVER ci.guix.info
@copying
-Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès@*
+Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès@*
Copyright @copyright{} 2013, 2014, 2016 Andreas Enge@*
Copyright @copyright{} 2013 Nikita Karetnikov@*
Copyright @copyright{} 2014, 2015, 2016 Alex Kost@*
@@ -641,8 +641,7 @@ in the Guix source tree for additional details.
GNU Guix depends on the following packages:
@itemize
-@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.13 or
-later, including 2.2.x;
+@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.2.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 85c95a75e9..8eb4e2eefe 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com>
@@ -362,36 +362,23 @@ the Nix package manager.")
(delete 'wrap-program)))))))
(define-public guile2.0-guix
- (package
- (inherit guix)
- (name "guile2.0-guix")
- (inputs
- `(("guile" ,guile-2.0)
- ,@(alist-delete "guile" (package-inputs guix))))
- (propagated-inputs
- `(("gnutls" ,gnutls/guile-2.0)
- ("guile-gcrypt" ,guile2.0-gcrypt)
- ("guile-json" ,guile2.0-json)
- ("guile-sqlite3" ,guile2.0-sqlite3)
- ("guile-ssh" ,guile2.0-ssh)
- ("guile-git" ,guile2.0-git)))))
+ (deprecated-package "guile2.0-guix" guix))
(define-public guix-minimal
;; A version of Guix which is built with the minimal set of dependencies, as
;; outlined in the README "Requirements" section. Intended as a CI job, so
;; marked as hidden.
- (let ((guix guile2.0-guix))
- (hidden-package
- (package
- (inherit guix)
- (name "guix-minimal")
- (inputs
- `(("guile" ,guile-2.0.13)
- ,@(alist-delete "guile" (package-inputs guix))))
- (propagated-inputs
- (fold alist-delete
- (package-propagated-inputs guix)
- '("guile-ssh")))))))
+ (hidden-package
+ (package
+ (inherit guix)
+ (name "guix-minimal")
+ (inputs
+ `(("guile" ,guile-2.2)
+ ,@(alist-delete "guile" (package-inputs guix))))
+ (propagated-inputs
+ (fold alist-delete
+ (package-propagated-inputs guix)
+ '("guile-ssh"))))))
(define (source-file? file stat)
"Return true if FILE is likely a source file, false if it is a typical
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [bug#34007] [PATCH 2/5] maint: Remove 'cond-expand' forms for Guile 2.0.
2019-01-07 10:48 ` [bug#34007] [PATCH 1/5] build: Require Guile 2.2 Ludovic Courtès
@ 2019-01-07 10:48 ` Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 3/5] download: Remove Guile 2.0 workaround Ludovic Courtès
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2019-01-07 10:48 UTC (permalink / raw)
To: 34007
Note: Leave 'cond-expand' forms used in the build-side modules that can
run on %BOOTSTRAP-GUILE, which is currently Guile 2.0.
* guix/build/compile.scm: Move 'use-modules' clause from 'cond-expand'
to 'define-module' form.
(%default-optimizations): Remove 'cond-expand'.
* guix/build/download.scm (tls-wrap): Remove 'cond-expand'.
* guix/build/syscalls.scm: Remove 'cond-expand' form around
'%set-automatic-finalization-enabled?!' and
'without-automatic-finalization'.
* guix/inferior.scm (port->inferior): Remove 'cond-expand'.
* guix/scripts/pack.scm (wrapped-package)[build]: Remove 'cond-expand'.
* guix/status.scm (build-event-output-port): Remove 'cond-expand'.
* guix/store.scm (open-inet-socket): Remove 'cond-expand'.
* guix/ui.scm (install-locale): Remove 'cond-expand'.
* tests/status.scm ("current-build-output-port, UTF-8 + garbage"):
Remove 'cond-expand'.
* tests/store.scm ("current-build-output-port, UTF-8 + garbage"):
Remove 'cond-expand'.
---
guix/build/compile.scm | 18 +++++--------
guix/build/download.scm | 6 ++---
guix/build/syscalls.scm | 56 ++++++++++++++++++-----------------------
guix/inferior.scm | 6 ++---
guix/scripts/pack.scm | 6 ++---
guix/status.scm | 6 ++---
guix/store.scm | 7 +-----
guix/ui.scm | 5 ----
tests/status.scm | 6 ++---
tests/store.scm | 6 ++---
10 files changed, 43 insertions(+), 79 deletions(-)
diff --git a/guix/build/compile.scm b/guix/build/compile.scm
index 5a1363556a..215489f136 100644
--- a/guix/build/compile.scm
+++ b/guix/build/compile.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -26,28 +26,22 @@
#:use-module (system base message)
#:use-module (guix modules)
#:use-module (guix build utils)
+ #:use-module (language tree-il optimize)
+ #:use-module (language cps optimize)
#:export (%default-optimizations
%lightweight-optimizations
compile-files))
;;; Commentary:
;;;
-;;; Support code to compile Guile code as efficiently as possible (both with
-;;; Guile 2.0 and 2.2).
+;;; Support code to compile Guile code as efficiently as possible (with 2.2).
;;;
;;; Code:
-(cond-expand
- (guile-2.2 (use-modules (language tree-il optimize)
- (language cps optimize)))
- (else #f))
-
(define %default-optimizations
;; Default optimization options (equivalent to -O2 on Guile 2.2).
- (cond-expand
- (guile-2.2 (append (tree-il-default-optimization-options)
- (cps-default-optimization-options)))
- (else '())))
+ (append (tree-il-default-optimization-options)
+ (cps-default-optimization-options)))
(define %lightweight-optimizations
;; Lightweight optimizations (like -O0, but with partial evaluation).
diff --git a/guix/build/download.scm b/guix/build/download.scm
index 54163849a2..199702a679 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
@@ -314,9 +314,7 @@ host name without trailing dot."
;; Write HTTP requests line by line rather than byte by byte:
;; <https://bugs.gnu.org/22966>. This is possible with Guile >= 2.2.
- (cond-expand
- (guile-2.2 (setvbuf record 'line))
- (else #f))
+ (setvbuf record 'line)
record)))
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 56a689f667..d75c11ada7 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -699,39 +699,31 @@ mounted at FILE."
(define CLONE_NEWPID #x20000000)
(define CLONE_NEWNET #x40000000)
-(cond-expand
- (guile-2.2
- (define %set-automatic-finalization-enabled?!
- ;; When using a statically-linked Guile, for instance in the initrd, we
- ;; cannot resolve this symbol, but most of the time we don't need it
- ;; anyway. Thus, delay it.
- (let ((proc (delay
- (pointer->procedure int
- (dynamic-func
- "scm_set_automatic_finalization_enabled"
- (dynamic-link))
- (list int)))))
- (lambda (enabled?)
- "Switch on or off automatic finalization in a separate thread.
+(define %set-automatic-finalization-enabled?!
+ ;; When using a statically-linked Guile, for instance in the initrd, we
+ ;; cannot resolve this symbol, but most of the time we don't need it
+ ;; anyway. Thus, delay it.
+ (let ((proc (delay
+ (pointer->procedure int
+ (dynamic-func
+ "scm_set_automatic_finalization_enabled"
+ (dynamic-link))
+ (list int)))))
+ (lambda (enabled?)
+ "Switch on or off automatic finalization in a separate thread.
Turning finalization off shuts down the finalization thread as a side effect."
- (->bool ((force proc) (if enabled? 1 0))))))
+ (->bool ((force proc) (if enabled? 1 0))))))
- (define-syntax-rule (without-automatic-finalization exp)
- "Turn off automatic finalization within the dynamic extent of EXP."
- (let ((enabled? #t))
- (dynamic-wind
- (lambda ()
- (set! enabled? (%set-automatic-finalization-enabled?! #f)))
- (lambda ()
- exp)
- (lambda ()
- (%set-automatic-finalization-enabled?! enabled?))))))
-
- (else
- (define-syntax-rule (without-automatic-finalization exp)
- ;; Nothing to do here: Guile 2.0 does not have a separate finalization
- ;; thread.
- exp)))
+(define-syntax-rule (without-automatic-finalization exp)
+ "Turn off automatic finalization within the dynamic extent of EXP."
+ (let ((enabled? #t))
+ (dynamic-wind
+ (lambda ()
+ (set! enabled? (%set-automatic-finalization-enabled?! #f)))
+ (lambda ()
+ exp)
+ (lambda ()
+ (%set-automatic-finalization-enabled?! enabled?)))))
;; The libc interface to sys_clone is not useful for Scheme programs, so the
;; low-level system call is wrapped instead. The 'syscall' function is
diff --git a/guix/inferior.scm b/guix/inferior.scm
index 973bd5264e..a6e6d2f16e 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -137,9 +137,7 @@ it's an old Guix."
"Given PIPE, an input/output port, return an inferior that talks over PIPE.
PIPE is closed with CLOSE when 'close-inferior' is called on the returned
inferior."
- (cond-expand
- ((and guile-2 (not guile-2.2)) #t)
- (else (setvbuf pipe 'line)))
+ (setvbuf pipe 'line)
(match (read pipe)
(('repl-version 0 rest ...)
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 98b06971bd..e137fb136a 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
@@ -553,9 +553,7 @@ please email '~a'~%")
"run.c" "-o" result)
(delete-file "run.c")))
- (setvbuf (current-output-port)
- (cond-expand (guile-2.2 'line)
- (else _IOLBF)))
+ (setvbuf (current-output-port) 'line)
;; Link the top-level files of PACKAGE so that search paths are
;; properly defined in PROFILE/etc/profile.
diff --git a/guix/status.scm b/guix/status.scm
index d4fc4ca16e..1a7cb313ea 100644
--- a/guix/status.scm
+++ b/guix/status.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
@@ -636,9 +636,7 @@ The second return value is a thunk to retrieve the current state."
;; The build port actually receives Unicode strings.
(set-port-encoding! port "UTF-8")
- (cond-expand
- ((and guile-2 (not guile-2.2)) #t)
- (else (setvbuf port 'line)))
+ (setvbuf port 'line)
(values port (lambda () %state)))
(define (call-with-status-report on-event thunk)
diff --git a/guix/store.scm b/guix/store.scm
index 042dfab67f..1883829231 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Jan Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
@@ -404,11 +404,6 @@
(define (open-inet-socket host port)
"Connect to the Unix-domain socket at HOST:PORT and return it. Raise a
'&nix-connection-error' upon error."
- ;; Define 'TCP_NODELAY' on Guile 2.0. The value is the same on all GNU
- ;; systems.
- (cond-expand (guile-2.2 #t)
- (else (define TCP_NODELAY 1)))
-
(let ((sock (with-fluids ((%default-port-encoding #f))
;; This trick allows use of the `scm_c_read' optimization.
(socket PF_UNIX SOCK_STREAM 0))))
diff --git a/guix/ui.scm b/guix/ui.scm
index 4c31246920..f542cd3e3f 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -427,11 +427,6 @@ report them in a user-friendly way."
(lambda _
(setlocale LC_ALL ""))
(lambda args
- (cond-expand
- ;; Guile 2.2 already emits a warning, so let's not add a second one.
- (guile-2.2 #t)
- (else (warning (G_ "failed to install locale: ~a~%")
- (strerror (system-error-errno args)))))
(display-hint (G_ "Consider installing the @code{glibc-utf8-locales} or
@code{glibc-locales} package and defining @code{GUIX_LOCPATH}, along these
lines:
diff --git a/tests/status.scm b/tests/status.scm
index 99abb41c8b..08a3153218 100644
--- a/tests/status.scm
+++ b/tests/status.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -125,9 +125,7 @@
(test-equal "current-build-output-port, UTF-8 + garbage"
;; What about a mixture of UTF-8 + garbage?
- (let ((replacement (cond-expand
- ((and guile-2 (not guile-2.2)) "?")
- (else "�"))))
+ (let ((replacement "�"))
`((build-log #f ,(string-append "garbage: " replacement "lambda: λ\n"))))
(let-values (((port get-status) (build-event-output-port cons '())))
(display "garbage: " port)
diff --git a/tests/store.scm b/tests/store.scm
index 3ff526cdcf..5ff9308d7d 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -444,9 +444,7 @@
(package-derivation %store %bootstrap-guile))))
(guard (c ((nix-protocol-error? c) #t))
(build-derivations %store (list d))))))))
- (cond-expand
- (guile-2.2 "garbage: �lambda: λ")
- (else "garbage: ?lambda: λ"))))
+ "garbage: �lambda: λ"))
(test-assert "log-file, derivation"
(let* ((b (add-text-to-store %store "build" "echo $foo > $out" '()))
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [bug#34007] [PATCH 3/5] download: Remove Guile 2.0 workaround.
2019-01-07 10:48 ` [bug#34007] [PATCH 1/5] build: Require Guile 2.2 Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 2/5] maint: Remove 'cond-expand' forms for Guile 2.0 Ludovic Courtès
@ 2019-01-07 10:48 ` Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 4/5] Remove most uses of the _IO*F constants Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 5/5] self: Drop support for Guix < 0.15 on Guile 2.0 Ludovic Courtès
3 siblings, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2019-01-07 10:48 UTC (permalink / raw)
To: 34007
* guix/build/download.scm: Remove Guile 2.0 workaround.
---
guix/build/download.scm | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/guix/build/download.scm b/guix/build/download.scm
index 199702a679..24b5aa378f 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -504,18 +504,6 @@ port if PORT is a TLS session record port."
(module-set! (resolve-module '(web http))
'parse-rfc-822-date parse-rfc-822-date))
-;; XXX: Work around <http://bugs.gnu.org/19840>, present in Guile
-;; up to 2.0.11.
-(unless (or (> (string->number (major-version)) 2)
- (> (string->number (minor-version)) 0)
- (> (string->number (micro-version)) 11))
- (let ((var (module-variable (resolve-module '(web http))
- 'declare-relative-uri-header!)))
- ;; If 'declare-relative-uri-header!' doesn't exist, forget it.
- (when (and var (variable-bound? var))
- (let ((declare-relative-uri-header! (variable-ref var)))
- (declare-relative-uri-header! "Location")))))
-
;; XXX: Work around broken proxy handling on Guile 2.2 <= 2.2.2, fixed in
;; Guile commits 7d0d9e2c25c1e872cfc7d14ab5139915f1813d56 and
;; 6ad28ae3bc6a6d9e95ab7d70510d12c97673a143. See bug report at
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [bug#34007] [PATCH 4/5] Remove most uses of the _IO*F constants.
2019-01-07 10:48 ` [bug#34007] [PATCH 1/5] build: Require Guile 2.2 Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 2/5] maint: Remove 'cond-expand' forms for Guile 2.0 Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 3/5] download: Remove Guile 2.0 workaround Ludovic Courtès
@ 2019-01-07 10:48 ` Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 5/5] self: Drop support for Guix < 0.15 on Guile 2.0 Ludovic Courtès
3 siblings, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2019-01-07 10:48 UTC (permalink / raw)
To: 34007
These constants, for use with 'setvbuf', were deprecated in Guile 2.2
and disappeared in Guile 3.0. Here we keep these constants in
build-side code where removing them is not feasible.
* guix/build/download-nar.scm (download-nar): Adjust 'setvbuf' calls to
the Guile 2.2+ API.
* guix/build/download.scm (open-socket-for-uri): Likewise.
(open-connection-for-uri, url-fetch): Likewise.
* guix/build/make-bootstrap.scm (make-stripped-libc): Likewise.
* guix/build/union.scm (setvbuf) [guile-2.0]: New conditional wrapper.
(union-build): Adjust to new API.
* guix/ftp-client.scm (ftp-open, ftp-list, ftp-retr): Likewise.
* guix/http-client.scm (http-fetch): Likewise.
* guix/inferior.scm (proxy): Likewise.
* guix/scripts/substitute.scm (fetch, http-multiple-get): Likewise.
* guix/self.scm (compiled-modules): Likewise.
* guix/ssh.scm (remote-daemon-channel, store-import-channel)
(store-export-channel): Likewise.
* guix/ui.scm (initialize-guix): Likewise.
* tests/publish.scm (http-get-port): Likewise.
* guix/store.scm (%newlines): Adjust comment.
---
guix/build/download-nar.scm | 6 +++---
guix/build/download.scm | 10 +++++-----
guix/build/make-bootstrap.scm | 4 ++--
guix/build/union.scm | 21 +++++++++++++++++----
guix/ftp-client.scm | 8 ++++----
guix/http-client.scm | 2 +-
guix/inferior.scm | 4 ++--
guix/scripts/substitute.scm | 6 +++---
guix/self.scm | 6 +++---
guix/ssh.scm | 12 ++++++------
guix/store.scm | 2 +-
guix/ui.scm | 4 ++--
tests/publish.scm | 6 +++---
13 files changed, 52 insertions(+), 39 deletions(-)
diff --git a/guix/build/download-nar.scm b/guix/build/download-nar.scm
index 13f01fb1e8..681f22238d 100644
--- a/guix/build/download-nar.scm
+++ b/guix/build/download-nar.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -93,8 +93,8 @@ ITEM."
"Download and extract the normalized archive for ITEM. Return #t on
success, #f otherwise."
;; Let progress reports go through.
- (setvbuf (current-error-port) _IONBF)
- (setvbuf (current-output-port) _IONBF)
+ (setvbuf (current-error-port) 'none)
+ (setvbuf (current-output-port) 'none)
(let loop ((urls (urls-for-item item)))
(match urls
diff --git a/guix/build/download.scm b/guix/build/download.scm
index 24b5aa378f..c08221b3b2 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -357,7 +357,7 @@ ETIMEDOUT error is raised."
(connect* s (addrinfo:addr ai) timeout)
;; Buffer input and output on this port.
- (setvbuf s _IOFBF)
+ (setvbuf s 'block)
;; If we're using a proxy, make a note of that.
(when http-proxy (set-http-proxy-port?! s #t))
s)
@@ -401,7 +401,7 @@ VERIFY-CERTIFICATE? is true, verify HTTPS server certificates."
(with-https-proxy
(let ((s (open-socket-for-uri uri #:timeout timeout)))
;; Buffer input and output on this port.
- (setvbuf s _IOFBF %http-receive-buffer-size)
+ (setvbuf s 'block %http-receive-buffer-size)
(if https?
(tls-wrap s (uri-host uri)
@@ -777,11 +777,11 @@ otherwise simply ignore them."
hashes))
content-addressed-mirrors))
- ;; Make this unbuffered so 'progress-report/file' works as expected. _IOLBF
+ ;; Make this unbuffered so 'progress-report/file' works as expected. 'line
;; means '\n', not '\r', so it's not appropriate here.
- (setvbuf (current-output-port) _IONBF)
+ (setvbuf (current-output-port) 'none)
- (setvbuf (current-error-port) _IOLBF)
+ (setvbuf (current-error-port) 'line)
(let try ((uri (append uri content-addressed-uris)))
(match uri
diff --git a/guix/build/make-bootstrap.scm b/guix/build/make-bootstrap.scm
index 43b136248f..48799f7e90 100644
--- a/guix/build/make-bootstrap.scm
+++ b/guix/build/make-bootstrap.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -67,7 +67,7 @@ when producing a bootstrap libc."
util).*\\.so(\\..*)?|lib(machuser|hurduser).so.*|(libc(rt|)|libpthread)\
_nonshared\\.a)$")
- (setvbuf (current-output-port) _IOLBF)
+ (setvbuf (current-output-port) 'line)
(let* ((libdir (string-append output "/lib")))
(mkdir-p libdir)
(for-each (lambda (file)
diff --git a/guix/build/union.scm b/guix/build/union.scm
index fff795c4d3..961ac3298b 100644
--- a/guix/build/union.scm
+++ b/guix/build/union.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com>
;;;
@@ -39,6 +39,19 @@
;;;
;;; Code:
+;; This code can be used with the bootstrap Guile, which is Guile 2.0, so
+;; provide a compatibility layer.
+(cond-expand
+ ((and guile-2 (not guile-2.2))
+ (define (setvbuf port mode . rest)
+ (apply (@ (guile) setvbuf) port
+ (match mode
+ ('line _IOLBF)
+ ('block _IOFBF)
+ ('none _IONBF))
+ rest)))
+ (else #f))
+
(define (files-in-directory dirname)
(let ((dir (opendir dirname)))
(let loop ((files '()))
@@ -179,10 +192,10 @@ returns #f, skip the faulty file altogether."
(reverse dirs-with-file))))
table)))
- (setvbuf (current-output-port) _IOLBF)
- (setvbuf (current-error-port) _IOLBF)
+ (setvbuf (current-output-port) 'line)
+ (setvbuf (current-error-port) 'line)
(when (file-port? log-port)
- (setvbuf log-port _IOLBF))
+ (setvbuf log-port 'line))
(union-of-directories output (delete-duplicates inputs)))
diff --git a/guix/ftp-client.scm b/guix/ftp-client.scm
index 0b8f61c276..8d5adcb8ed 100644
--- a/guix/ftp-client.scm
+++ b/guix/ftp-client.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -154,7 +154,7 @@ TIMEOUT, an ETIMEDOUT error is raised."
(catch 'system-error
(lambda ()
(connect* s (addrinfo:addr ai) timeout)
- (setvbuf s _IOLBF)
+ (setvbuf s 'line)
(let-values (((code message) (%ftp-listen s)))
(if (eqv? code 220)
(begin
@@ -237,7 +237,7 @@ TIMEOUT, an ETIMEDOUT error is raised."
(s (socket (addrinfo:fam ai) (addrinfo:socktype ai)
(addrinfo:protocol ai))))
(connect* s (address-with-port (addrinfo:addr ai) port) timeout)
- (setvbuf s _IOLBF)
+ (setvbuf s 'line)
(dynamic-wind
(lambda () #t)
@@ -293,7 +293,7 @@ must be closed before CONN can be used for other purposes."
(throw 'ftp-error conn "LIST" code message))))
(connect* s (address-with-port (addrinfo:addr ai) port) timeout)
- (setvbuf s _IOLBF)
+ (setvbuf s 'line)
(%ftp-command (string-append "RETR " file)
150 (ftp-connection-socket conn))
diff --git a/guix/http-client.scm b/guix/http-client.scm
index 07360e6108..067002a79a 100644
--- a/guix/http-client.scm
+++ b/guix/http-client.scm
@@ -97,7 +97,7 @@ Raise an '&http-get-error' condition if downloading fails."
headers))
(_ headers))))
(unless (or buffered? (not (file-port? port)))
- (setvbuf port _IONBF))
+ (setvbuf port 'none))
(let*-values (((resp data)
(http-get uri #:streaming? #t #:port port
#:keep-alive? #t
diff --git a/guix/inferior.scm b/guix/inferior.scm
index a6e6d2f16e..ba8d00866b 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -389,8 +389,8 @@ input/output ports.)"
;; 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 _IOFBF 65536)
- (setvbuf backend _IOFBF 65536)
+ (setvbuf client 'block 65536)
+ (setvbuf backend 'block 65536)
(let loop ()
(match (select* (list client backend) '() '())
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 53b1777241..797a76db3f 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2018 Kyle Meyer <kyle@kyleam.com>
;;;
@@ -219,7 +219,7 @@ provide."
(set! port (guix:open-connection-for-uri
uri #:verify-certificate? #f))
(unless (or buffered? (not (file-port? port)))
- (setvbuf port _IONBF)))
+ (setvbuf port 'none)))
(http-fetch uri #:text? #f #:port port
#:verify-certificate? #f))))))
(else
@@ -567,7 +567,7 @@ initial connection on which HTTP requests are sent."
verify-certificate?))))
;; For HTTPS, P is not a file port and does not support 'setvbuf'.
(when (file-port? p)
- (setvbuf p _IOFBF (expt 2 16)))
+ (setvbuf p 'block (expt 2 16)))
;; Send REQUESTS, up to a certain number, in a row.
;; XXX: Do our own caching to work around inefficiencies when
diff --git a/guix/self.scm b/guix/self.scm
index 2664fd886f..4e97cb7e98 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -866,8 +866,8 @@ containing MODULE-FILES and possibly other files as well."
#:report-load report-load
#:report-compilation report-compilation)))
- (setvbuf (current-output-port) _IONBF)
- (setvbuf (current-error-port) _IONBF)
+ (setvbuf (current-output-port) 'none)
+ (setvbuf (current-error-port) 'none)
(set! %load-path (cons #+module-tree %load-path))
(set! %load-path
diff --git a/guix/ssh.scm b/guix/ssh.scm
index 1ed8406633..d90cb77be0 100644
--- a/guix/ssh.scm
+++ b/guix/ssh.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -140,12 +140,12 @@ right away."
(match (select read write except)
((read write except)
(select read write except 0))))))
- (setvbuf stdout _IONBF)
+ (setvbuf stdout 'none)
;; 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 stdin _IOFBF 65536)
- (setvbuf sock _IOFBF 65536)
+ (setvbuf stdin 'block 65536)
+ (setvbuf sock 'block 65536)
(connect sock AF_UNIX ,socket-name)
@@ -218,7 +218,7 @@ can be written."
(consume-input (current-input-port))
(list 'protocol-error (nix-protocol-error-message c))))
(with-store store
- (setvbuf (current-input-port) _IONBF)
+ (setvbuf (current-input-port) 'none)
(import-paths store (current-input-port))
'(success))))
(lambda args
@@ -269,7 +269,7 @@ be read. When RECURSIVE? is true, the closure of FILES is exported."
(write '(exporting)) ;we're ready
(force-output)
- (setvbuf (current-output-port) _IONBF)
+ (setvbuf (current-output-port) 'none)
(export-paths store files (current-output-port)
#:recursive? ,recursive?))))))
diff --git a/guix/store.scm b/guix/store.scm
index 1883829231..1f88eb2b33 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -608,7 +608,7 @@ to OUT, using chunks of BUFFER-SIZE bytes."
(define %newlines
;; Newline characters triggering a flush of 'current-build-output-port'.
- ;; Unlike Guile's _IOLBF, we flush upon #\return so that progress reports
+ ;; Unlike Guile's 'line, we flush upon #\return so that progress reports
;; that use that trick are correctly displayed.
(char-set #\newline #\return))
diff --git a/guix/ui.scm b/guix/ui.scm
index f542cd3e3f..1e089753e1 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -454,8 +454,8 @@ See the \"Application Setup\" section in the manual, for more info.\n")))))
;; notified via an EPIPE later.
(sigaction SIGPIPE SIG_IGN)
- (setvbuf (current-output-port) _IOLBF)
- (setvbuf (current-error-port) _IOLBF))
+ (setvbuf (current-output-port) 'line)
+ (setvbuf (current-error-port) 'line))
(define* (show-version-and-exit #:optional (command (car (command-line))))
"Display version information for COMMAND and `(exit 0)'."
diff --git a/tests/publish.scm b/tests/publish.scm
index 79a786e723..097ac036e0 100644
--- a/tests/publish.scm
+++ b/tests/publish.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -63,12 +63,12 @@
(let ((socket (open-socket-for-uri uri)))
;; Make sure to use an unbuffered port so that we can then peek at the
;; underlying file descriptor via 'call-with-gzip-input-port'.
- (setvbuf socket _IONBF)
+ (setvbuf socket 'none)
(call-with-values
(lambda ()
(http-get uri #:port socket #:streaming? #t))
(lambda (response port)
- ;; Don't (setvbuf port _IONBF) because of <http://bugs.gnu.org/19610>
+ ;; Don't (setvbuf port 'none) because of <http://bugs.gnu.org/19610>
;; (PORT might be a custom binary input port).
port))))
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [bug#34007] [PATCH 5/5] self: Drop support for Guix < 0.15 on Guile 2.0.
2019-01-07 10:48 ` [bug#34007] [PATCH 1/5] build: Require Guile 2.2 Ludovic Courtès
` (2 preceding siblings ...)
2019-01-07 10:48 ` [bug#34007] [PATCH 4/5] Remove most uses of the _IO*F constants Ludovic Courtès
@ 2019-01-07 10:48 ` Ludovic Courtès
3 siblings, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2019-01-07 10:48 UTC (permalink / raw)
To: 34007
* guix/self.scm (false-if-wrong-guile, package-for-guile): Remove.
(specification->package): Remove "guile2.0-" variants.
(compiled-guix): #:guile-for-build defaults to (default-guile).
Use 'specification->package' instead of 'package-for-guile'.
(guile-for-build): Remove.
(guix-derivation): Use 'default-guile' instead of 'guile-for-build'.
Check whether we're running on Guile 2.0 with PULL-VERSION < 1.
---
guix/self.scm | 89 +++++++++++----------------------------------------
1 file changed, 19 insertions(+), 70 deletions(-)
diff --git a/guix/self.scm b/guix/self.scm
index 4e97cb7e98..c2ee5254f5 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -31,6 +31,7 @@
#:use-module ((guix build compile) #:select (%lightweight-optimizations))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-35)
#:use-module (ice-9 match)
#:export (make-config.scm
whole-package ;for internal use in 'guix pull'
@@ -43,35 +44,6 @@
;;; Dependency handling.
;;;
-(define* (false-if-wrong-guile package
- #:optional (guile-version (effective-version)))
- "Return #f if PACKAGE depends on the \"wrong\" major version of Guile (e.g.,
-2.0 instead of 2.2), otherwise return PACKAGE."
- (let ((guile (any (match-lambda
- ((label (? package? dep) _ ...)
- (and (string=? (package-name dep) "guile")
- dep)))
- (package-direct-inputs package))))
- (and (or (not guile)
- (string-prefix? guile-version
- (package-version guile)))
- package)))
-
-(define (package-for-guile guile-version . names)
- "Return the package with one of the given NAMES that depends on
-GUILE-VERSION (\"2.0\" or \"2.2\"), or #f if none of the packages matches."
- (let loop ((names names))
- (match names
- (()
- #f)
- ((name rest ...)
- (match (specification->package name)
- (#f
- (loop rest))
- ((? package? package)
- (or (false-if-wrong-guile package guile-version)
- (loop rest))))))))
-
(define specification->package
;; Use our own variant of that procedure because that of (gnu packages)
;; would traverse all the .scm files, which is wasteful.
@@ -89,12 +61,7 @@ GUILE-VERSION (\"2.0\" or \"2.2\"), or #f if none of the packages matches."
("gzip" (ref '(gnu packages compression) 'gzip))
("bzip2" (ref '(gnu packages compression) 'bzip2))
("xz" (ref '(gnu packages compression) 'xz))
- ("guile2.0-json" (ref '(gnu packages guile) 'guile2.0-json))
- ("guile2.0-ssh" (ref '(gnu packages ssh) 'guile2.0-ssh))
- ("guile2.0-git" (ref '(gnu packages guile) 'guile2.0-git))
- ;; XXX: No "guile2.0-sqlite3".
- ("guile2.0-gnutls" (ref '(gnu packages tls) 'gnutls/guile-2.0))
- (_ #f)))) ;no such package
+ (_ #f)))) ;no such package
\f
;;;
@@ -488,7 +455,7 @@ assumed to be part of MODULES."
(pull-version 1)
(name (string-append "guix-" version))
(guile-version (effective-version))
- (guile-for-build (guile-for-build guile-version))
+ (guile-for-build (default-guile))
(zlib (specification->package "zlib"))
(gzip (specification->package "gzip"))
(bzip2 (specification->package "bzip2"))
@@ -496,32 +463,22 @@ assumed to be part of MODULES."
(guix (specification->package "guix")))
"Return a file-like object that contains a compiled Guix."
(define guile-json
- (package-for-guile guile-version
- "guile-json"
- "guile2.0-json"))
+ (specification->package "guile-json"))
(define guile-ssh
- (package-for-guile guile-version
- "guile-ssh"
- "guile2.0-ssh"))
+ (specification->package "guile-ssh"))
(define guile-git
- (package-for-guile guile-version
- "guile-git"
- "guile2.0-git"))
+ (specification->package "guile-git"))
(define guile-sqlite3
- (package-for-guile guile-version
- "guile-sqlite3"
- "guile2.0-sqlite3"))
+ (specification->package "guile-sqlite3"))
(define guile-gcrypt
- (package-for-guile guile-version
- "guile-gcrypt"))
+ (specification->package "guile-gcrypt"))
(define gnutls
- (package-for-guile guile-version
- "gnutls" "guile2.0-gnutls"))
+ (specification->package "gnutls"))
(define dependencies
(match (append-map (lambda (package)
@@ -912,21 +869,6 @@ containing MODULE-FILES and possibly other files as well."
;;; Building.
;;;
-(define (guile-for-build version)
- "Return a derivation for Guile 2.0 or 2.2, whichever matches the currently
-running Guile."
- (define canonical-package ;soft reference
- (module-ref (resolve-interface '(gnu packages base))
- 'canonical-package))
-
- (match version
- ("2.2"
- (canonical-package (module-ref (resolve-interface '(gnu packages guile))
- 'guile-2.2)))
- ("2.0"
- (module-ref (resolve-interface '(gnu packages guile))
- 'guile-2.0))))
-
(define* (guix-derivation source version
#:optional (guile-version (effective-version))
#:key (pull-version 0))
@@ -943,9 +885,16 @@ is not supported."
(define guile
;; When PULL-VERSION >= 1, produce a self-contained Guix and use Guile 2.2
;; unconditionally.
- (guile-for-build (if (>= pull-version 1)
- "2.2"
- guile-version)))
+ (default-guile))
+
+ (when (and (< pull-version 1)
+ (not (string=? (package-version guile) guile-version)))
+ ;; Guix < 0.15.0 has PULL-VERSION = 0, where the host Guile is reused and
+ ;; can be any version. When that happens and Guile is not current (e.g.,
+ ;; it's Guile 2.0), just bail out.
+ (raise (condition
+ (&message
+ (message "Guix is too old and cannot be upgraded")))))
(mbegin %store-monad
(set-guile-for-build guile)
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#34007: [PATCH 0/5] Drop Guile 2.0 support
2019-01-07 10:47 [bug#34007] [PATCH 0/5] Drop Guile 2.0 support Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 1/5] build: Require Guile 2.2 Ludovic Courtès
@ 2019-01-09 14:44 ` Ludovic Courtès
1 sibling, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2019-01-09 14:44 UTC (permalink / raw)
To: 34007-done
Ludovic Courtès <ludo@gnu.org> skribis:
> This removes Guile 2.0 support, which in turn in a first step towards
> Guile 2.9/3.0 support.
Pushed!
6e54e488c6 self: Drop support for Guix < 0.15 on Guile 2.0.
76832d3420 Remove most uses of the _IO*F constants.
c3d9bca48a download: Remove Guile 2.0 workaround.
a65177a657 maint: Remove 'cond-expand' forms for Guile 2.0.
0991fd5336 build: Require Guile 2.2.
Ludo’.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-01-09 14:45 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-07 10:47 [bug#34007] [PATCH 0/5] Drop Guile 2.0 support Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 1/5] build: Require Guile 2.2 Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 2/5] maint: Remove 'cond-expand' forms for Guile 2.0 Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 3/5] download: Remove Guile 2.0 workaround Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 4/5] Remove most uses of the _IO*F constants Ludovic Courtès
2019-01-07 10:48 ` [bug#34007] [PATCH 5/5] self: Drop support for Guix < 0.15 on Guile 2.0 Ludovic Courtès
2019-01-09 14:44 ` bug#34007: [PATCH 0/5] Drop Guile 2.0 support Ludovic Courtès
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).