[Openmcl-cvs-notifications] r12896 - /trunk/source/lib/compile-ccl.lisp

rme at clozure.com rme at clozure.com
Tue Sep 29 22:11:09 EDT 2009


Author: rme
Date: Tue Sep 29 22:11:08 2009
New Revision: 12896

Log:
In UPDATE-CCL, return a third value that indicates whether binaries
were updated.  When REBUILD-CCL is called with :UPDATE T, pay
attention to that value, and advise the user to restart the lisp and
run REBUILD-CCL again if there are new binaries.  (see ticket:317)

Modified:
    trunk/source/lib/compile-ccl.lisp

Modified: trunk/source/lib/compile-ccl.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lib/compile-ccl.lisp (original)
+++ trunk/source/lib/compile-ccl.lisp Tue Sep 29 22:11:08 2009
@@ -525,7 +525,14 @@
       (setq full t))
     (when full
       (setq clean t kernel t reload t))
-    (when update (update-ccl :verbose (not (eq update :quiet))))
+    (when update
+      (multiple-value-bind (changed conflicts new-binaries)
+	  (update-ccl :verbose (not (eq update :quiet)))
+	(declare (ignore changed conflicts))
+	(when new-binaries
+	  (format t "~&There are new bootstrapping binaries.  Please restart
+the lisp and run REBUILD-CCL again.")
+	  (return-from rebuild-ccl nil))))
     (when (or clean force)
       ;; for better bug reports...
       (format t "~&Rebuilding ~a using ~a"
@@ -642,6 +649,7 @@
 =

 (defun update-ccl (&key (verbose t))
   (let* ((changed ())
+	 (new-binaries ())
          (conflicts ()))
     (with-output-to-string (out)
       (with-preserved-working-directory ("ccl:")                     =

@@ -685,16 +693,20 @@
                 ;; to replace the working copies with the (just updated)
                 ;; repository versions.
                 (setq changed (if (or added deleted updated merged conflic=
ts) t))
-              =

                 (dolist (f binaries)
-                  (when (member f conflicts :test #'string=3D)
-                    (svn-revert f)))
+		  (cond ((member f conflicts :test #'string=3D)
+			 (svn-revert f)
+			 (setq new-binaries t))
+			((or (member f updated :test #'string=3D)
+			     (member f merged :test #'string=3D))
+			 (setq new-binaries t))))
+
                 ;; If there are any remaining conflicts, offer
                 ;; to revert them.
                 (when conflicts
                   (with-preserved-working-directory ()
-                    (cerror "Discard local changes to these files (using '=
svn revert'."
-                            "'svn update' was unable to merge local change=
s to the following file~p with the updated versions:~{~&~s~~}" (length conf=
licts) conflicts)
+                    (cerror "Discard local changes to these files (using '=
svn revert')."
+                            "'svn update' was unable to merge local change=
s to the following file~p with the updated versions:~{~&~s~}" (length confl=
icts) conflicts)
                     (dolist (c (copy-list conflicts))
                       (svn-revert c))))
                 ;; Report other changes, if verbose.
@@ -710,7 +722,7 @@
                     (show-changes "Deleted files/directories" deleted)
                     (show-changes "Updated files" updated)
                     (show-changes "Files with local changes, successfully =
merged" merged)))))))))
-    (values changed conflicts)))
+    (values changed conflicts new-binaries)))
 =

 (defmacro with-preserved-working-directory ((&optional dir) &body body)
   (let ((wd (gensym)))



More information about the Openmcl-cvs-notifications mailing list