Subject: [bug#54539] [PATCH v2 21/30] gnu: version-control: Autoload unless used by Guix.

From: Maxime Devos <[email-masked]>
Date: Sat, 3 Sep 2022 18:43:23 +0200

See first commit in the series for the procedure.
This helps with, but is not sufficient for, avoiding loading the Go-related
modules when only the guix package is required.
---
 gnu/packages/version-control.scm | 133 +++++++++++++++++--------------
 1 file changed, 75 insertions(+), 58 deletions(-)

diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 277ea2835b..2681929715 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -77,64 +77,81 @@ (define-module (gnu packages version-control)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
-  #:use-module (gnu packages apr)
-  #:use-module (gnu packages autotools)
-  #:use-module (gnu packages documentation)
-  #:use-module (gnu packages base)
-  #:use-module (gnu packages bash)
-  #:use-module (gnu packages bison)
-  #:use-module (gnu packages boost)
-  #:use-module (gnu packages check)
-  #:use-module (gnu packages cook)
-  #:use-module (gnu packages curl)
-  #:use-module (gnu packages docbook)
-  #:use-module (gnu packages ed)
-  #:use-module (gnu packages file)
-  #:use-module (gnu packages flex)
-  #:use-module (gnu packages freedesktop)
-  #:use-module (gnu packages gettext)
-  #:use-module (gnu packages gl)
-  #:use-module (gnu packages glib)
-  #:use-module (gnu packages gnome)
-  #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages golang)
-  #:use-module (gnu packages groff)
-  #:use-module (gnu packages guile)
-  #:use-module (gnu packages guile-xyz)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages linux)
-  #:use-module (gnu packages mail)
-  #:use-module (gnu packages maths)
-  #:use-module (gnu packages nano)
-  #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages ssh)
-  #:use-module (gnu packages web)
-  #:use-module (gnu packages openstack)
-  #:use-module (gnu packages pcre)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages perl-check)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages python)
-  #:use-module (gnu packages python-build)
-  #:use-module (gnu packages python-check)
-  #:use-module (gnu packages python-crypto)
-  #:use-module (gnu packages python-web)
-  #:use-module (gnu packages python-xyz)
-  #:use-module (gnu packages readline)
-  #:use-module (gnu packages rsync)
-  #:use-module (gnu packages sqlite)
-  #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages admin)
-  #:use-module (gnu packages xml)
-  #:use-module (gnu packages emacs)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages sdl)
-  #:use-module (gnu packages swig)
-  #:use-module (gnu packages sync)
-  #:use-module (gnu packages tcl)
-  #:use-module (gnu packages textutils)
-  #:use-module (gnu packages time)
-  #:use-module (gnu packages tls)
+  #:use-module (gnu packages apr) ; required by "guix build -d guix"
+  #:autoload (gnu packages autotools) (autoconf automake)
+  #:autoload (gnu packages documentation) (asciidoc)
+  #:autoload (gnu packages base) (coreutils findutils tzdata which)
+  #:use-module (gnu packages bash) ; required by "guix build -d guix"
+  #:autoload (gnu packages bison) (bison)
+  #:autoload (gnu packages boost) (boost)
+  #:autoload (gnu packages check)
+  (python-coverage python-nose python-pytest python-subunit python-testrepository)
+  #:autoload (gnu packages cook) (cook)
+  #:use-module (gnu packages curl) ; required by "guix build -d guix"
+  #:use-module (gnu packages docbook) ; required by "guix build -d guix"
+  #:autoload (gnu packages ed) (ed)
+  #:autoload (gnu packages file) (file)
+  #:autoload (gnu packages flex) (flex)
+  #:autoload (gnu packages freedesktop) (xdg-utils)
+  #:use-module (gnu packages gettext) ; required by "guix build -d guix"
+  #:autoload (gnu packages gl) (ftgl glew glu mesa)
+  #:use-module (gnu packages glib) ; required by "guix build -d guix"
+  #:use-module (gnu packages gnome) ; required by "guix build -d guix"
+  #:autoload (gnu packages gnupg) (gnupg guile-gcrypt python-pygpgme)
+  #:autoload (gnu packages golang)
+  (go-github-com-alcortesm-tgz
+   go-github-com-emirpasic-gods go-github-com-go-git-gcfg
+   go-github-com-go-git-go-billy go-github-com-go-git-go-git-fixtures
+   go-github-com-imdario-mergo go-github-com-jbenet-go-context
+   go-github-com-kevinburke-ssh-config go-github-com-mattn-go-isatty
+   go-github-com-mitchellh-go-homedir go-github-com-motemen-go-colorine
+   go-github-com-saracen-walker go-github-com-sergi-go-diff
+   go-github-com-songmu-gitconfig go-github-com-urfave-cli-v2
+   go-github-com-xanzy-ssh-agent go-golang-org-x-crypto go-golang-org-x-net
+   go-golang-org-x-net-html go-golang-org-x-text go-golang.org-x-sync-errgroup
+   go-gopkg-in-check-v1 go-gopkg-in-warnings)
+  #:autoload (gnu packages groff) (groff ronn-ng)
+  #:autoload (gnu packages guile) (guile-3.0 guile-git)
+  #:autoload (gnu packages guile-xyz)
+  (guile-commonmark guile-fibers guile-syntax-highlight-for-gitile)
+  #:autoload (gnu packages image) (libpng)
+  #:autoload (gnu packages linux) (e2fsprogs)
+  #:autoload (gnu packages mail) (python-dkimpy sendmail)
+  #:autoload (gnu packages maths) (glm)
+  #:autoload (gnu packages nano) (nano)
+  #:autoload (gnu packages ncurses) (ncurses)
+  #:use-module (gnu packages ssh) ; required by "guix build -d guix"
+  #:use-module (gnu packages web) ; required by "guix build -d guix"
+  #:use-module (gnu packages pcre) ; required by "guix build -d guix"
+  #:use-module (gnu packages perl) ; required by "guix build -d guix"
+  #:autoload (gnu packages perl-check) (perl-test-harness perl-test-most)
+  #:use-module (gnu packages pkg-config) ; required by "guix build -d guix"
+  #:use-module (gnu packages python) ; requiredby "guix build -d guix"
+  #:autoload (gnu packages python-build) (python-toml)
+  #:autoload (gnu packages python-check) (python-covdefaults python-pytest-env python-re-assert)
+  #:autoload (gnu packages python-crypto) (python-paramiko python-pynacl python-pycryptodome)
+  #:autoload (gnu packages python-web) (python-launchpadlib python-requests)
+  #:autoload (gnu packages python-xyz)
+  (python-cfgv
+   python-click python-clint python-configobj python-cython python-ddt
+   python-distlib python-dnspython python-docutils python-dulwich
+   python-fastbencode python-fastimport python-identify python-markdown
+   python-nodeenv python-packaging python-patiencediff python-pygit2
+   python-pygments python-pyyaml python-sh python-smmap python-typing-extensions
+   python-virtualenv)
+  #:autoload (gnu packages readline) (readline)
+  #:use-module (gnu packages sqlite) ; required by "guix build -d guix"
+  #:autoload (gnu packages admin) (inetutils)
+  #:use-module (gnu packages xml) ; required by "guix build -d guix"
+  #:autoload (gnu packages emacs) (emacs-minimal)
+  #:use-module (gnu packages compression) ; required by "guix build -d guix"
+  #:autoload (gnu packages sdl) (sdl-union sdl2 sdl2-image)
+  #:use-module (gnu packages swig) ; required by "guix build -d guix"
+  #:autoload (gnu packages sync) (rclone)
+  #:use-module (gnu packages tcl) ; required by "guix build -d guix"
+  #:use-module (gnu packages textutils) ; required by "guix build -d guix"
+  #:autoload (gnu packages time) (python-arrow python-dateutil)
+  #:use-module (gnu packages tls) ; required by "guix build -d guix"
   #:use-module (gnu packages)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
-- 
2.37.2