diff --git a/distro/packages/base.scm b/distro/packages/base.scm
index 7bd211577cad346e7476823b1b5650f6776a727c..9b881d7eb184965e82098be1b776fb0f4b55d13d 100644
--- a/distro/packages/base.scm
+++ b/distro/packages/base.scm
@@ -2062,11 +2062,18 @@ (define-public bash-final
                                  (current-source-location)
                                  #:guile %bootstrap-guile)))
 
+(define %boot4-inputs
+  ;; Now use the final Bash.
+  `(("bash" ,bash-final)
+    ,@(alist-delete "bash" %boot3-inputs)))
+
 (define-public guile-final
+  ;; FIXME: The Libtool used here, specifically its `bin/libtool' script,
+  ;; holds a dependency on the bootstrap Binutils.  Use multiple outputs for
+  ;; Libtool, so that that dependency is isolated in the "bin" output.
   (package-with-bootstrap-guile
    (package-with-explicit-inputs guile-2.0
-                                 `(("bash" ,bash-final)
-                                   ,@(alist-delete "bash" %boot3-inputs))
+                                 %boot4-inputs
                                  (current-source-location)
                                  #:guile %bootstrap-guile)))
 
@@ -2079,7 +2086,7 @@ (define-public ld-wrapper
 
 (define-public %final-inputs
   ;; Final derivations used as implicit inputs by `gnu-build-system'.
-  (let ((finalize (cut package-with-explicit-inputs <> %boot3-inputs
+  (let ((finalize (cut package-with-explicit-inputs <> %boot4-inputs
                        (current-source-location))))
     `(,@(map (match-lambda
               ((name package)