diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-01-06 15:14:09 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-01-06 16:31:54 +0100 |
commit | 6a7c4636d4dec47eefa03c95da5a1315bd0e0413 (patch) | |
tree | 78a0f28f2c7d4de31d3368ec6df399cc604f67b1 /guix/git.scm | |
parent | 9961cde3835743643e562e0034a73356b1d1eb0f (diff) |
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.
Diffstat (limited to 'guix/git.scm')
-rw-r--r-- | guix/git.scm | 21 |
1 files changed, 14 insertions, 7 deletions
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'...~%") |