;;; -*- Mode:LISP; Package:SYSTEM-INTERNALS; Base:10; Readtable:CL -*-

#|
This file is the last one loaded into the "System" system.
|#

(defun maybe-set-systems-released ()
  (let ((systems-to-release nil))
    (dolist (s patch-systems-list)
      (and (neq (patch-status s) :released)
	   (push s systems-to-release)))
    (dolist (s (nreverse systems-to-release))
      (when (yes-or-no-p-with-timeout (* 5 60 60) t "Release ~A version ~D.~D"
				      (patch-name s)
				      (patch-version s)
				      (version-number (first (patch-version-list s))))
	(set-system-status (patch-name s) :released))))
  (and (not (eq si:*release-status* :released))
       (yes-or-no-p-with-timeout (* 5 60 60) t "Current system status is ~S.  Make it ~S"
				 si:*release-status*
				 :released)
       (setq si:*release-status* :released))
  nil)

(add-initialization "Maybe Set Systems Released" '(maybe-set-systems-released) '(:gc-system-release :head-of-list))