From 9a92203a9f58ae69a883811494716176b3b2a6eb Mon Sep 17 00:00:00 2001
From: "Robert P. Goldman" <rpgoldman@gmail.com>
Date: Sat, 5 Jul 2014 10:53:48 -0500
Subject: [PATCH] Tweak definition of and export
 REINITIALIZE-SOURCE-REGISTRY-AND-RETRY.

---
 find-system.lisp | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/find-system.lisp b/find-system.lisp
index b85c4f911..c2795b688 100644
--- a/find-system.lisp
+++ b/find-system.lisp
@@ -21,7 +21,9 @@
    #:clear-defined-system #:clear-defined-systems #:*defined-systems*
    #:*immutable-systems*
    ;; defined in source-registry, but specially mentioned here:
-   #:initialize-source-registry #:sysdef-source-registry-search))
+   #:initialize-source-registry #:sysdef-source-registry-search
+   #:reinitialize-source-registry-and-retry
+   ))
 (in-package :asdf/find-system)
 
 (with-upgradability ()
@@ -426,6 +428,11 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
           (reinitialize-source-registry-and-retry ()
             :report (lambda (s)
                       (format s (compatfmt "~@<Retry finding system ~A after reinitializing the source-registry.~@:>") name))
-            (unset-asdf-cache-entry `(locate-system ,name))
-            (initialize-source-registry)))))))
+            ;; since you're reinitializing the source registry, an arbitrary
+            ;; amount of the ASDF cache is invalidated, not just the entry
+            ;; for the current NAME.
+            (clear-asdf-cache)
+            ;; (unset-asdf-cache-entry `(locate-system ,name))
+            (initialize-source-registry)
+            (find-system name error-p)))))))
 
-- 
GitLab