~ chicken-core (chicken-5) 79d2479937fda0437497774b1858e1c98862b371


commit 79d2479937fda0437497774b1858e1c98862b371
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Jul 27 18:06:26 2018 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Jul 27 18:06:55 2018 +0200

    chicken-install doesn’t cleanup its temporary files in every cases
    
    (Submitted by Kooda)
    
    Signed-off-by: felix <felix@call-with-current-continuation.org>

diff --git a/chicken-install.scm b/chicken-install.scm
index b455f135..e500dc4a 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -462,7 +462,10 @@
                (if (null? srvs) 
                    (if lax
                        (print "no connection to server or egg not found remotely - will use cached version")
-                       (error "extension or version not found" name))
+                       (begin
+                         (delete-directory dest)
+                         (delete-directory tmpdir)
+                         (error "extension or version not found" name)))
                    (begin
                      (d "trying server ~a ...~%" (car srvs)) 
                      (receive (dir ver)
@@ -588,6 +591,7 @@
                 (let-values (((dir ver) (locate-egg name version)))
                   (when (or (not dir)
                             (null? (directory dir)))
+                    (when dir (delete-directory dir))
                     (error "extension or version not found" name))
                   (d retrieve-only "~a located at ~a~%" egg dir)
                   (set! canonical-eggs
@@ -971,7 +975,8 @@
           (lambda ()
             (for-each (lambda (x) (write x) (newline)) db)))
         (unless quiet (print "installing " +module-db+ " ..."))
-        (copy-file dbfile (make-pathname (install-path) +module-db+) #t))))
+        (copy-file dbfile (make-pathname (install-path) +module-db+) #t)
+        (delete-file dbfile))))
 
 
 ;; purge cache for given (or all) eggs
Trap