Changeset 9758


Ignore:
Timestamp:
Jun 15, 2008, 12:58:15 AM (11 years ago)
Author:
mikel
Message:

added self-rebuild; added ide-self-update.lisp to IDE build

Location:
trunk/source/cocoa-ide
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/cocoa-ide/defsystem.lisp

    r9247 r9758  
    6565    "cocoa-window"
    6666    "cocoa-doc"
     67    "ide-self-update"
    6768    "compile-hemlock"
    6869    "hemlock"  ;; treated specially below, compile-hemlock must come before.
  • trunk/source/cocoa-ide/ide-self-update.lisp

    r9753 r9758  
    3030         (bundle (probe-file (merge-pathnames "Clozure CL.app" ccl-dir))))
    3131    (if bundle
    32         (let* ((lisp (merge-pathnames (standard-kernel-name) ccl-dir)))
    33           lisp)
     32        ;; found the bundle; proceed with rebuilding...
     33        (let* ((result-status nil)
     34               (lisp (merge-pathnames (standard-kernel-name) ccl-dir)))
     35          (gui::with-modal-progress-dialog "Rebuilding" "Rebuilding Clozure CL (please wait)..."
     36                                           (run-program lisp `("-e" "(rebuild-ccl :full t)")
     37                                                        ::status-hook (lambda (ep)
     38                                                                        (multiple-value-bind (status status-code)
     39                                                                            (external-process-status ep)
     40                                                                          (when (eql status :exited)
     41                                                                            (setf result-status status-code))))))
     42          (if (zerop result-status)
     43              ;; rebuild succeeded; continue...
     44              (let* ((old-bundle (merge-pathnames "Clozure CL-last.app" ccl-dir)))
     45                ;; if there is already an old bundle, delete it
     46                (when (probe-file old-bundle)
     47                  (recursive-delete-directory old-bundle))
     48                ;; rename the current bundle to the old-bundle
     49                (rename-file bundle old-bundle)
     50                ;; rebuild the IDE
     51                (setf result-status nil)
     52                (gui::with-modal-progress-dialog "Rebuilding" "Rebuilding the IDE (please wait)..."
     53                                                 (run-program lisp `("-e" "(require :cocoa-application)")
     54                                                              ::status-hook (lambda (ep)
     55                                                                              (multiple-value-bind (status status-code)
     56                                                                                  (external-process-status ep)
     57                                                                                (when (eql status :exited)
     58                                                                                  (setf result-status status-code))))))
     59                (if (zerop result-status)
     60                    ;; inform the user that the IDE is rebuilt and we will quit
     61                    (progn
     62                      (gui::alert-window :title "Rebuilding IDE Succeeded"
     63                                 :message (format nil
     64                                                  "Clozure CL is rebuilt; you can start the new IDE after this copy quits."))
     65                      (quit))
     66                    ;; warn the user that the IDE rebuild failed and we will quit
     67                    (progn
     68                      (gui::alert-window :title "Rebuilding IDE Failed"
     69                                 :message (format nil
     70                                                  "Rebuilding the IDE failed with error code ~A. The previous IDE has been moved to ~A."
     71                                                  result-status old-bundle))
     72                      (quit))))
     73              ;; warn the user that rebuilding failed and exit
     74              (gui::alert-window :title "Rebuilding CCL Failed"
     75                                 :message (format nil
     76                                                  "Clozure CL exited with error status = ~A"
     77                                                  result-status))))
    3478        ;; else: the bundle doesn't seem to be there
    3579        (gui::alert-window :title "Rebuilding CCL Failed"
     
    321365  (gui::with-modal-progress-dialog "Updating..."
    322366    "Getting changes from Subversion"
    323    (run-svn-update)))
     367   (run-svn-update))
     368  (ide-self-rebuild))
    324369
    325370(objc:defmethod (#/updateCCLCancel: :void) ((self update-ccl-window-controller) sender)
Note: See TracChangeset for help on using the changeset viewer.