[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