summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-01-06 15:14:09 +0100
committerLudovic Courtès <ludo@gnu.org>2020-01-06 16:31:54 +0100
commit6a7c4636d4dec47eefa03c95da5a1315bd0e0413 (patch)
tree78a0f28f2c7d4de31d3368ec6df399cc604f67b1
parent9961cde3835743643e562e0034a73356b1d1eb0f (diff)
downloadguix-6a7c4636d4dec47eefa03c95da5a1315bd0e0413.tar.gz
Adjust module autoloads.
In Guile < 2.9.7, autoloading a module would give you access to all its
bindings.  In future versions, autoloading a module gives access only to
the listed bindings, as per #:select (see <https://bugs.gnu.org/38895>).

This commit adjusts autoloads to the new semantics, allowing Guix to be
built with Guile 2.9.7/2.9.8.

* guix/build/download.scm <top level>: Remove call to 'module-autoload!'.
(load-gnutls): New procedure.
(tls-wrap): Call it.
* guix/git.scm <top level>: Remove call to 'module-autoload!'.
(load-git-submodules): New procedure.
(update-submodules): Call it instead of 'resolve-interface'.
* gnu/bootloader/grub.scm: Replace #:autoload with #:use-module.
* gnu/packages.scm: Likewise.
* gnu/packages/ssh.scm: Likewise.
* gnu/packages/tex.scm: Likewise.
* gnu/services/cuirass.scm: Likewise.
* gnu/services/mcron.scm: Likewise.
* guix/lint.scm: Augment list of bindings in #:autoload.
* guix/scripts/build.scm: Likewise.
* guix/scripts/gc.scm: Likewise.
* guix/scripts/pack.scm: Likewise.
* guix/scripts/publish.scm: Likewise.
* guix/scripts/pull.scm: Likewise.
* guix/utils.scm: Remove unnecessary #:autoload clauses; replace one
of them with #:use-module.
-rw-r--r--gnu/bootloader/grub.scm2
-rw-r--r--gnu/packages.scm6
-rw-r--r--gnu/packages/ssh.scm6
-rw-r--r--gnu/packages/tex.scm2
-rw-r--r--gnu/services/cuirass.scm6
-rw-r--r--gnu/services/mcron.scm4
-rw-r--r--guix/build/download.scm13
-rw-r--r--guix/git.scm21
-rw-r--r--guix/lint.scm3
-rw-r--r--guix/scripts/build.scm6
-rw-r--r--guix/scripts/gc.scm2
-rw-r--r--guix/scripts/pack.scm6
-rw-r--r--guix/scripts/publish.scm6
-rw-r--r--guix/scripts/pull.scm6
-rw-r--r--guix/utils.scm7
15 files changed, 54 insertions, 42 deletions
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm
index adcdbdbab0..f13685ac9d 100644
--- a/gnu/bootloader/grub.scm
+++ b/gnu/bootloader/grub.scm
@@ -28,7 +28,7 @@
   #:use-module (gnu system uuid)
   #:use-module (gnu system file-systems)
   #:use-module (gnu system keyboard)
-  #:autoload   (gnu packages bootloaders) (grub)
+  #:use-module (gnu packages bootloaders)
   #:autoload   (gnu packages gtk) (guile-cairo guile-rsvg)
   #:autoload   (gnu packages xorg) (xkeyboard-config)
   #:use-module (ice-9 match)
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 959777ff8f..143469b288 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
@@ -30,12 +30,12 @@
                 #:select ((package-name->name+version
                            . hyphen-separated-name->name+version)
                           mkdir-p))
-  #:autoload   (guix profiles) (packages->manifest)
+  #:use-module (guix profiles)
   #:use-module (guix describe)
   #:use-module (guix deprecation)
   #:use-module (ice-9 vlist)
   #:use-module (ice-9 match)
-  #:autoload   (ice-9 binary-ports) (put-bytevector)
+  #:use-module (ice-9 binary-ports)
   #:autoload   (system base compile) (compile)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 45b8f0db00..ec4f00d8e6 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -32,7 +32,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
-  #:autoload   (gnu packages boost) (boost)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages elf)
@@ -51,7 +51,7 @@
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
-  #:autoload   (gnu packages protobuf) (protobuf)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index d184d7616b..e4346d1232 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -71,7 +71,7 @@
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xdisorg)
-  #:autoload   (gnu packages texinfo) (texinfo)
+  #:use-module (gnu packages texinfo)
   #:use-module (ice-9 ftw)
   #:use-module (ice-9 match)
   #:use-module ((srfi srfi-1) #:hide (zip)))
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm
index d92421762a..7bfb021161 100644
--- a/gnu/services/cuirass.scm
+++ b/gnu/services/cuirass.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
-;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -25,8 +25,8 @@
   #:use-module (guix gexp)
   #:use-module (guix records)
   #:use-module (gnu packages admin)
-  #:autoload   (gnu packages ci) (cuirass)
-  #:autoload   (gnu packages version-control) (git)
+  #:use-module (gnu packages ci)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu services)
   #:use-module (gnu services base)
   #:use-module (gnu services shepherd)
diff --git a/gnu/services/mcron.scm b/gnu/services/mcron.scm
index 1327516b49..d9627c6bd0 100644
--- a/gnu/services/mcron.scm
+++ b/gnu/services/mcron.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,7 +19,7 @@
 (define-module (gnu services mcron)
   #:use-module (gnu services)
   #:use-module (gnu services shepherd)
-  #:autoload   (gnu packages guile-xyz) (mcron)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (guix deprecation)
   #:use-module (guix records)
   #:use-module (guix gexp)
diff --git a/guix/build/download.scm b/guix/build/download.scm
index a7bb3b0d6e..641dacefa1 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, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
@@ -155,11 +155,11 @@ out if the connection could not be established in less than TIMEOUT seconds."
 ;; be bound if we need them, because (guix download) adds GnuTLS as an
 ;; input in that case.
 
-;; XXX: Use this hack instead of #:autoload to avoid compilation errors.
-;; See <http://bugs.gnu.org/12202>.
-(module-autoload! (current-module)
-                  '(gnutls)
-                  '(make-session connection-end/client))
+(define (load-gnutls)
+  ;; XXX: Use this hack instead of #:autoload to avoid compilation errors.
+  ;; See <http://bugs.gnu.org/12202>.
+  (module-use! (current-module) (resolve-interface '(gnutls)))
+  (set! load-gnutls (const #t)))
 
 (define %x509-certificate-directory
   ;; The directory where X.509 authority PEM certificates are stored.
@@ -245,6 +245,7 @@ host name without trailing dot."
     (format (current-error-port)
             "gnutls: [~a|~a] ~a" (getpid) level str))
 
+  (load-gnutls)
   (let ((session  (make-session connection-end/client))
         (ca-certs (%x509-certificate-directory)))
 
diff --git a/guix/git.scm b/guix/git.scm
index 83af596ef5..15a0a6f9e5 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,11 +48,6 @@
             git-checkout-url
             git-checkout-branch))
 
-;; XXX: Use this hack instead of #:autoload to avoid compilation errors.
-;; See <http://bugs.gnu.org/12202>.
-(module-autoload! (current-module)
-                  '(git submodule) '(repository-submodules))
-
 (define %repository-cache-directory
   (make-parameter (string-append (cache-directory #:ensure? #f)
                                  "/checkouts")))
@@ -200,11 +195,23 @@ dynamic extent of EXP."
   (call-with-repository directory
                         (lambda (repository) exp ...)))
 
+(define (load-git-submodules)
+  "Attempt to load (git submodules), which was missing until Guile-Git 0.2.0.
+Return true on success, false on failure."
+  (match (false-if-exception (resolve-interface '(git submodule)))
+    (#f
+     (set! load-git-submodules (const #f))
+     #f)
+    (iface
+     (module-use! (current-module) iface)
+     (set! load-git-submodules (const #t))
+     #t)))
+
 (define* (update-submodules repository
                             #:key (log-port (current-error-port)))
   "Update the submodules of REPOSITORY, a Git repository object."
   ;; Guile-Git < 0.2.0 did not have (git submodule).
-  (if (false-if-exception (resolve-interface '(git submodule)))
+  (if (load-git-submodules)
       (for-each (lambda (name)
                   (let ((submodule (submodule-lookup repository name)))
                     (format log-port (G_ "updating submodule '~a'...~%")
diff --git a/guix/lint.scm b/guix/lint.scm
index 41ddff584d..e3544bd963 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -45,7 +45,8 @@
   #:use-module (guix gnu-maintenance)
   #:use-module (guix cve)
   #:use-module ((guix swh) #:hide (origin?))
-  #:autoload   (guix git-download) (git-reference?)
+  #:autoload   (guix git-download) (git-reference?
+                                    git-reference-url git-reference-commit)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 format)
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index a853ac6c7d..1ab3a80e66 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -45,8 +45,8 @@
   #:use-module (srfi srfi-37)
   #:autoload   (gnu packages) (specification->package %package-module-path)
   #:autoload   (guix download) (download-to-store)
-  #:autoload   (guix git-download) (git-reference?)
-  #:autoload   (guix git) (git-checkout?)
+  #:autoload   (guix git-download) (git-reference? git-reference-url)
+  #:autoload   (guix git) (git-checkout? git-checkout-url)
   #:use-module ((guix status) #:select (with-status-verbosity))
   #:use-module ((guix progress) #:select (current-terminal-columns))
   #:use-module ((guix build syscalls) #:select (terminal-columns))
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm
index 3f20a2e192..31a05075b5 100644
--- a/guix/scripts/gc.scm
+++ b/guix/scripts/gc.scm
@@ -22,7 +22,7 @@
   #:use-module (guix store)
   #:use-module (guix store roots)
   #:autoload   (guix build syscalls) (free-disk-space)
-  #:autoload   (guix profiles) (generation-profile)
+  #:autoload   (guix profiles) (generation-profile profile-generations)
   #:autoload   (guix scripts package) (delete-generations)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index b84e37cbf2..c8d8546e29 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, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2017, 2018, 2019, 2020 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>
@@ -29,7 +29,9 @@
   #:use-module ((guix status) #:select (with-status-verbosity))
   #:use-module ((guix self) #:select (make-config.scm))
   #:use-module (guix grafts)
-  #:autoload   (guix inferior) (inferior-package?)
+  #:autoload   (guix inferior) (inferior-package?
+                                inferior-package-name
+                                inferior-package-version)
   #:use-module (guix monads)
   #:use-module (guix modules)
   #:use-module (guix packages)
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 8fb67f9268..71a349d2fe 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,7 +51,9 @@
   #:use-module (guix store)
   #:use-module ((guix serialization) #:select (write-file))
   #:use-module (guix zlib)
-  #:autoload   (guix lzlib) (lzlib-available?)
+  #:autoload   (guix lzlib) (lzlib-available?
+                             call-with-lzip-output-port
+                             make-lzip-output-port)
   #:use-module (guix cache)
   #:use-module (guix ui)
   #:use-module (guix scripts)
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index 04cc51829d..cb1be989e1 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -33,7 +33,9 @@
   #:use-module (guix memoization)
   #:use-module (guix monads)
   #:use-module (guix channels)
-  #:autoload   (guix inferior) (open-inferior)
+  #:autoload   (guix inferior) (open-inferior
+                                inferior-available-packages
+                                close-inferior)
   #:use-module (guix scripts build)
   #:autoload   (guix build utils) (which)
   #:use-module ((guix build syscalls)
diff --git a/guix/utils.scm b/guix/utils.scm
index 728039fbf0..3e8e59b8dc 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
@@ -31,16 +31,13 @@
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-35)
   #:use-module (srfi srfi-39)
-  #:use-module (ice-9 binary-ports)
   #:use-module (ice-9 ftw)
-  #:autoload   (rnrs io ports) (make-custom-binary-input-port)
+  #:use-module (rnrs io ports)                    ;need 'port-position' etc.
   #:use-module ((rnrs bytevectors) #:select (bytevector-u8-set!))
   #:use-module (guix memoization)
   #:use-module ((guix build utils) #:select (dump-port mkdir-p delete-file-recursively))
   #:use-module ((guix build syscalls) #:select (mkdtemp! fdatasync))
   #:use-module (ice-9 format)
-  #:autoload   (ice-9 popen)  (open-pipe*)
-  #:autoload   (ice-9 rdelim) (read-line)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 match)
   #:use-module (ice-9 format)